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

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::DynamicLagrangeLocalFiniteElementCache< Domain, Range, dim >
     A cache that stores Lagrange finite elements for the given dimension and order. More...
     
    class  Dune::StaticLagrangeLocalFiniteElementCache< id, Domain, Range, dim, order >
     A cache that stores all available Pk/Qk like local finite elements for the given dimension and order for the case that the GeometryType is fixed and has the given Id. More...
     
    class  Dune::StaticLagrangeLocalFiniteElementCache< GeometryType::Id(~0u), Domain, Range, dim, order >
     A cache that stores all available Pk/Qk like local finite elements for the given dimension and order. More...
    class  Dune::BDFMCubeLocalFiniteElement< D, R, dim, order >
     Brezzi-Douglas-Fortin-Marini finite elements for cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,43 +1,26 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cache.hh File Reference\n-#include \n-#include \n-#include \n+bdfmcube.hh File Reference\n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bl_\bf_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/\n+_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/\n+_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bR_\ba_\bn_\bg_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 A cache that stores Lagrange finite elements for the given dimension\n- and order. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bi_\bd_\b,_\b _\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bR_\ba_\bn_\bg_\be_\b,_\b _\bd_\bi_\bm_\b,\n- _\bo_\br_\bd_\be_\br_\b _\b>\n- A cache that stores all available Pk/Qk like local finite elements for\n-\u00a0 the given dimension and order for the case that the GeometryType is\n- fixed and has the given Id. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be_\b:_\b:_\bI_\bd_\b(_\b~_\b0_\bu_\b)_\b,\n- _\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bR_\ba_\bn_\bg_\be_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b _\b>\n-\u00a0 A cache that stores all available Pk/Qk like local finite elements for\n- the given dimension and order. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b _\b>\n+\u00a0 Brezzi-Douglas-Fortin-Marini finite elements for cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00017_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00017_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: cache.hh Source File\n+dune-localfunctions: bdfmcube.hh Source File\n \n \n \n \n \n \n \n@@ -70,146 +70,95 @@\n
    \n
    \n \n \n \n
    \n \n+
  • dune
  • localfunctions
  • brezzidouglasfortinmarini
  • \n
    \n \n
    \n-
    cache.hh
    \n+
    bdfmcube.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
    \n
    7
    \n-
    8#include <map>
    \n-
    9#include <optional>
    \n-
    10#include <type_traits>
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n
    11
    \n-
    12#include <dune/geometry/type.hh>
    \n-
    13#include <dune/geometry/typeindex.hh>
    \n-
    14
    \n-\n-\n-\n-\n-\n-\n-\n-
    22
    \n-
    23
    \n-
    24namespace Dune {
    \n-
    25
    \n-
    37template <class Domain, class Range, int dim>
    \n-
    \n-\n-
    39{
    \n-
    40public:
    \n-\n-
    42
    \n-
    \n-
    44 explicit DynamicLagrangeLocalFiniteElementCache (unsigned int order)
    \n-
    45 : order_(order)
    \n-
    46 , data_()
    \n-
    47 {}
    \n-
    \n-
    48
    \n-
    \n-
    55 const FiniteElementType& get (GeometryType type) const
    \n-
    56 {
    \n-
    57 auto [it,_] = data_.try_emplace(type,type,order_);
    \n-
    58 return it->second;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    61private:
    \n-
    62 unsigned int order_;
    \n-
    63 mutable std::map<GeometryType, FiniteElementType> data_;
    \n-
    64};
    \n-
    \n-
    65
    \n-
    66
    \n-
    78template <GeometryType::Id id, class Domain, class Range, std::size_t dim, std::size_t order>
    \n-
    \n-\n-
    80{
    \n-
    81 struct UnknownToplogy {};
    \n-
    82
    \n-
    83 static constexpr bool isSimplex = GeometryType(id).isSimplex();
    \n-
    84 static constexpr bool isCube = GeometryType(id).isCube();
    \n-
    85 static constexpr bool isPrism = GeometryType(id).isPrism();
    \n-
    86 static constexpr bool isPyramid = GeometryType(id).isPyramid();
    \n-
    87
    \n-
    88public:
    \n-\n-
    90 = std::conditional_t<isSimplex, LagrangeSimplexLocalFiniteElement<Domain,Range,dim,order>,
    \n-
    91 std::conditional_t<isCube, LagrangeCubeLocalFiniteElement<Domain,Range,dim,order>,
    \n-
    92 std::conditional_t<isPrism, LagrangePrismLocalFiniteElement<Domain,Range,order>,
    \n-
    93 std::conditional_t<isPyramid, LagrangePyramidLocalFiniteElement<Domain,Range,order>, UnknownToplogy> > > >;
    \n-
    94
    \n-
    \n-
    96 explicit StaticLagrangeLocalFiniteElementCache (std::integral_constant<std::size_t,order> = {})
    \n-
    97 {
    \n-
    98 lfe_.emplace();
    \n-
    99 }
    \n-
    \n-
    100
    \n-
    \n-
    102 const FiniteElementType& get ([[maybe_unused]] GeometryType type) const
    \n-
    103 {
    \n-
    104 assert(GeometryType::Id(type) == id);
    \n-
    105 assert(!!lfe_);
    \n-
    106 return *lfe_;
    \n-
    107 }
    \n-
    \n-
    108
    \n-
    109private:
    \n-
    110 std::optional<FiniteElementType> lfe_{};
    \n-
    111};
    \n-
    \n-
    112
    \n-
    113
    \n-
    127template <class Domain, class Range, std::size_t dim, std::size_t order>
    \n-
    \n-
    128class StaticLagrangeLocalFiniteElementCache<GeometryType::Id(~0u), Domain, Range, dim, order>
    \n-
    129 : public LagrangeLocalFiniteElementCache<Domain,Range,dim,order>
    \n-
    130{
    \n-\n-
    132public:
    \n-
    133 using Base::Base;
    \n-
    134};
    \n-
    \n-
    135
    \n-
    136} // namespace Dune
    \n-
    137
    \n-
    138#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH
    \n-\n-\n-\n-\n-\n-\n-
    Convenience header that includes all implementations of Lagrange finite elements.
    \n+\n+\n+\n+
    15
    \n+
    16
    \n+
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    43 template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    \n+\n+
    45 {
    \n+\n+\n+\n+
    49
    \n+
    50 public:
    \n+\n+
    52
    \n+\n+
    55
    \n+
    \n+
    61 BDFMCubeLocalFiniteElement (std::bitset<2*dim> s)
    \n+
    62 : basis( s ), interpolation( s )
    \n+
    63 {}
    \n+
    \n+
    64
    \n+
    65 auto localBasis () const -> const LocalBasis& { return basis; }
    \n+
    66 auto localCoefficients () const -> const LocalCoefficients& { return coefficients; }
    \n+
    67 auto localInterpolation () const -> const LocalInterpolation& { return interpolation; }
    \n+
    68
    \n+
    70 unsigned int size () const { return basis.size(); }
    \n+
    71 static constexpr auto type () -> GeometryType { return GeometryTypes::cube(dim); }
    \n+
    72
    \n+
    73 private:
    \n+
    74 LocalBasis basis;
    \n+
    75 LocalCoefficients coefficients;
    \n+
    76 LocalInterpolation interpolation;
    \n+
    77 };
    \n+
    \n+
    78
    \n+
    79} // namespace Dune
    \n+
    \n+
    80
    \n+
    81#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \n-
    Lagrange local finite elements for a given set of interpolation points.
    Definition lagrange.hh:66
    \n-
    A cache that stores Lagrange finite elements for the given dimension and order.
    Definition cache.hh:39
    \n-
    DynamicLagrangeLocalFiniteElementCache(unsigned int order)
    Construct an empty cache.
    Definition cache.hh:44
    \n-
    const FiniteElementType & get(GeometryType type) const
    Obtain the cached local finite-element.
    Definition cache.hh:55
    \n-
    A cache that stores all available Pk/Qk like local finite elements for the given dimension and order ...
    Definition cache.hh:80
    \n-
    const FiniteElementType & get(GeometryType type) const
    Obtain the cached local finite-element.
    Definition cache.hh:102
    \n-
    std::conditional_t< isSimplex, LagrangeSimplexLocalFiniteElement< Domain, Range, dim, order >, std::conditional_t< isCube, LagrangeCubeLocalFiniteElement< Domain, Range, dim, order >, std::conditional_t< isPrism, LagrangePrismLocalFiniteElement< Domain, Range, order >, std::conditional_t< isPyramid, LagrangePyramidLocalFiniteElement< Domain, Range, order >, UnknownToplogy > > > > FiniteElementType
    Definition cache.hh:93
    \n-
    StaticLagrangeLocalFiniteElementCache(std::integral_constant< std::size_t, order >={})
    Construct the local-finite element for the order specified as template parameter.
    Definition cache.hh:96
    \n+
    Brezzi-Douglas-Fortin-Marini finite elements for cubes.
    Definition bdfmcube.hh:45
    \n+
    auto localCoefficients() const -> const LocalCoefficients &
    Definition bdfmcube.hh:66
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition bdfmcube.hh:70
    \n+
    BDFMCubeLocalFiniteElement()
    Standard constructor.
    Definition bdfmcube.hh:54
    \n+
    auto localBasis() const -> const LocalBasis &
    Definition bdfmcube.hh:65
    \n+
    static constexpr auto type() -> GeometryType
    Definition bdfmcube.hh:71
    \n+
    auto localInterpolation() const -> const LocalInterpolation &
    Definition bdfmcube.hh:67
    \n+
    BDFMCubeLocalFiniteElement(std::bitset< 2 *dim > s)
    Make set number s, where 0 <= s < 2^(2*dim)
    Definition bdfmcube.hh:61
    \n+
    Brezzi-Douglas-Fortin-Marini shape functions on a reference cube.
    Definition brezzidouglasfortinmarini/cube/localbasis.hh:37
    \n+
    Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:33
    \n+
    Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:36
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+\n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,167 +1,114 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-cache.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n+bdfmcube.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH\n-6#define DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH\n 7\n-8#include \n-9#include \n-10#include \n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n 11\n-12#include \n-13#include \n-14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bl_\bf_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-22\n-23\n-24namespace _\bD_\bu_\bn_\be {\n-25\n-37template \n-_\b3_\b8class _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-39{\n-40public:\n-_\b4_\b1 using _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b,\n-_\bd_\bi_\bm_\b,_\b _\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bR_\ba_\bn_\bg_\be_\b>;\n-42\n-_\b4_\b4 explicit _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be (unsigned int order)\n-45 : order_(order)\n-46 , data_()\n-47 {}\n-48\n-_\b5_\b5 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& _\bg_\be_\bt (GeometryType type) const\n-56 {\n-57 auto [it,_] = data_.try_emplace(type,type,order_);\n-58 return it->second;\n-59 }\n-60\n-61private:\n-62 unsigned int order_;\n-63 mutable std::map data_;\n-64};\n-65\n-66\n-78template \n-_\b7_\b9class _\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-80{\n-81 struct UnknownToplogy {};\n-82\n-83 static constexpr bool isSimplex = GeometryType(id).isSimplex();\n-84 static constexpr bool isCube = GeometryType(id).isCube();\n-85 static constexpr bool isPrism = GeometryType(id).isPrism();\n-86 static constexpr bool isPyramid = GeometryType(id).isPyramid();\n-87\n-88public:\n-_\b8_\b9 using _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-90 = std::conditional_t,\n-91 std::conditional_t,\n-92 std::conditional_t,\n-93 std::conditional_t, UnknownToplogy> > > >;\n-94\n-_\b9_\b6 explicit _\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be (std::integral_constant = {})\n-97 {\n-98 lfe_.emplace();\n-99 }\n-100\n-_\b1_\b0_\b2 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& _\bg_\be_\bt ([[maybe_unused]] GeometryType type) const\n-103 {\n-104 assert(GeometryType::Id(type) == id);\n-105 assert(!!lfe_);\n-106 return *lfe_;\n-107 }\n-108\n-109private:\n-110 std::optional lfe_{};\n-111};\n-112\n-113\n-127template \n-_\b1_\b2_\b8class _\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-129 : public _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-130{\n-131 using _\bB_\ba_\bs_\be = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\bR_\ba_\bn_\bg_\be_\b,_\bd_\bi_\bm_\b,_\bo_\br_\bd_\be_\br_\b>;\n-132public:\n-133 using Base::Base;\n-134};\n-135\n-136} // namespace Dune\n-137\n-138#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bl_\bf_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n-_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b._\bh_\bh\n-Convenience header that includes all implementations of Lagrange finite\n-elements.\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/\n+_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/\n+_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+15\n+16\n+_\b1_\b7namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+43 template\n+_\b4_\b4 class _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+45 {\n+46 using _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs = _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b>;\n+47 using _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs = _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b>;\n+48 using _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn = _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b>;\n+49\n+50 public:\n+_\b5_\b1 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b,\n+_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b _\b>;\n+52\n+_\b5_\b4 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt () {}\n+55\n+_\b6_\b1 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset<2*dim> s)\n+62 : basis( s ), interpolation( s )\n+63 {}\n+64\n+_\b6_\b5 auto _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const -> const _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs& { return basis; }\n+_\b6_\b6 auto _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const -> const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& { return\n+coefficients; }\n+_\b6_\b7 auto _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const -> const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& { return\n+interpolation; }\n+68\n+_\b7_\b0 unsigned int _\bs_\bi_\bz_\be () const { return basis.size(); }\n+_\b7_\b1 static constexpr auto _\bt_\by_\bp_\be () -> GeometryType { return GeometryTypes::cube\n+(dim); }\n+72\n+73 private:\n+74 LocalBasis basis;\n+75 LocalCoefficients coefficients;\n+76 LocalInterpolation interpolation;\n+77 };\n+78\n+79} // namespace Dune\n+80\n+81#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-A cache storing a compile time selection of local finite element\n-implementations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange local finite elements for a given set of interpolation points.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-A cache that stores Lagrange finite elements for the given dimension and order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:\n-_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-DynamicLagrangeLocalFiniteElementCache(unsigned int order)\n-Construct an empty cache.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n-const FiniteElementType & get(GeometryType type) const\n-Obtain the cached local finite-element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-A cache that stores all available Pk/Qk like local finite elements for the\n-given dimension and order ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n-const FiniteElementType & get(GeometryType type) const\n-Obtain the cached local finite-element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-std::conditional_t< isSimplex, LagrangeSimplexLocalFiniteElement< Domain,\n-Range, dim, order >, std::conditional_t< isCube,\n-LagrangeCubeLocalFiniteElement< Domain, Range, dim, order >, std::\n-conditional_t< isPrism, LagrangePrismLocalFiniteElement< Domain, Range, order\n->, std::conditional_t< isPyramid, LagrangePyramidLocalFiniteElement< Domain,\n-Range, order >, UnknownToplogy > > > > FiniteElementType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:\n-_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-StaticLagrangeLocalFiniteElementCache(std::integral_constant< std::size_t,\n-order >={})\n-Construct the local-finite element for the order specified as template\n-parameter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Brezzi-Douglas-Fortin-Marini finite elements for cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+auto localCoefficients() const -> const LocalCoefficients &\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDFMCubeLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+auto localBasis() const -> const LocalBasis &\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr auto type() -> GeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+auto localInterpolation() const -> const LocalInterpolation &\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDFMCubeLocalFiniteElement(std::bitset< 2 *dim > s)\n+Make set number s, where 0 <= s < 2^(2*dim)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Brezzi-Douglas-Fortin-Marini shape functions on a reference cube.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localbasis.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00020.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00020.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangebasis.hh File Reference\n+dune-localfunctions: brezzidouglasmarini.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,25 @@\n \n \n \n \n \n \n \n
    \n- \n-
    lagrangebasis.hh File Reference
    \n+
    brezzidouglasmarini.hh File Reference
    \n
    \n
    \n-\n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,13 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-lagrangebasis.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+brezzidouglasmarini.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00020_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00020_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangebasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini.hh Source File\n \n \n \n \n \n \n \n@@ -70,58 +70,35 @@\n
    \n \n \n \n \n \n \n
    \n-
    lagrangebasis.hh
    \n+
    brezzidouglasmarini.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LAGRANGEBASIS_HH
    \n-
    6#define DUNE_LAGRANGEBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <dune/common/exceptions.hh>
    \n-
    10
    \n-\n-\n-
    13
    \n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    19 template< template <class,unsigned int> class LP,
    \n-
    20 unsigned int dim, class SF, class CF >
    \n-
    \n-\n-
    22 : public DefaultBasisFactory< MonomialBasisFactory<dim,CF>,
    \n-
    23 LagrangeInterpolationFactory<LP,dim,CF>,
    \n-
    24 dim,1,SF,CF >
    \n-
    25 {};
    \n-
    \n-
    26
    \n-
    27}
    \n-
    28
    \n-
    29#endif // #ifndef DUNE_LAGRANGEBASIS_HH
    \n-\n-\n-
    Definition bdfmcube.hh:18
    \n-
    Definition lagrangebasis.hh:25
    \n-
    Definition defaultbasisfactory.hh:38
    \n-\n+
    8// BDM implementations with compile-time order
    \n+\n+\n+
    11
    \n+
    12#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,50 +1,26 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-lagrangebasis.hh\n+brezzidouglasmarini.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LAGRANGEBASIS_HH\n-6#define DUNE_LAGRANGEBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH\n 7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-19 template< template class LP,\n-20 unsigned int dim, class SF, class CF >\n-_\b2_\b1 struct _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-22 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< MonomialBasisFactory,\n-23 LagrangeInterpolationFactory,\n-24 dim,1,SF,CF >\n-25 {};\n-26\n-27}\n-28\n-29#endif // #ifndef DUNE_LAGRANGEBASIS_HH\n-_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n-_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangebasis.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:38\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+8// BDM implementations with compile-time order\n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+11\n+12#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bc_\bu_\bb_\be_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00023.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00023.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangecube.hh File Reference\n+dune-localfunctions: hierarchicalsimplexp2withelementbubble.hh File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,59 @@\n \n \n \n \n \n \n \n
    \n \n-
    lagrangecube.hh File Reference
    \n+
    hierarchicalsimplexp2withelementbubble.hh File Reference
    \n
    \n
    \n+\n+

    Hierarchical p2 shape functions for the simplex. \n+More...

    \n
    #include <array>
    \n+#include <cassert>
    \n #include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n+#include <stdexcept>
    \n+#include <vector>
    \n #include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n #include <dune/common/math.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/referenceelement.hh>
    \n #include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::LagrangeCubeLocalFiniteElement< D, R, dim, k >
     Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order. More...
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim >
     P1 basis in dim-d enriched by quadratic edge bubble functions and an element bubble function of order dim+1. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >
     The local keys of the hierarchical basis functions with element bubble. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LB, dim >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

    Hierarchical p2 shape functions for the simplex.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,42 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-lagrangecube.hh File Reference\n+hierarchicalsimplexp2withelementbubble.hh File Reference\n+Hierarchical p2 shape functions for the simplex. _\bM_\bo_\br_\be_\b._\b._\b.\n #include \n+#include \n #include \n-#include \n+#include \n+#include \n #include \n+#include \n #include \n-#include \n+#include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n-\u00a0 Lagrange finite element for cubes with arbitrary compile-time dimension\n- and polynomial order. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 P1 basis in dim-d enriched by quadratic edge bubble functions and an\n+ element bubble function of order dim+1. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 The local keys of the hierarchical basis functions with element bubble.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b,_\b _\bd_\bi_\bm\n+ _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Hierarchical p2 shape functions for the simplex.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00023_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00023_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangecube.hh Source File\n+dune-localfunctions: hierarchicalsimplexp2withelementbubble.hh Source File\n \n \n \n \n \n \n \n@@ -70,740 +70,339 @@\n \n \n \n \n \n \n \n
    \n-
    lagrangecube.hh
    \n+
    hierarchicalsimplexp2withelementbubble.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH
    \n+
    5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH
    \n+
    6#define DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <numeric>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12#include <dune/common/fvector.hh>
    \n-
    13#include <dune/common/math.hh>
    \n-
    14
    \n-
    15#include <dune/geometry/referenceelements.hh>
    \n-
    16
    \n-\n-\n-\n-
    20
    \n-
    21namespace Dune { namespace Impl
    \n-
    22{
    \n-
    23 // Forward declaration
    \n-
    24 template<class LocalBasis>
    \n-
    25 class LagrangeCubeLocalInterpolation;
    \n+
    12#include <array>
    \n+
    13#include <cassert>
    \n+
    14#include <numeric>
    \n+
    15#include <stdexcept>
    \n+
    16#include <vector>
    \n+
    17
    \n+
    18#include <dune/common/fvector.hh>
    \n+
    19#include <dune/common/fmatrix.hh>
    \n+
    20#include <dune/common/math.hh>
    \n+
    21
    \n+
    22#include <dune/geometry/referenceelement.hh>
    \n+
    23
    \n+\n+\n
    26
    \n-
    37 template<class D, class R, unsigned int dim, unsigned int k>
    \n-
    38 class LagrangeCubeLocalBasis
    \n-
    39 {
    \n-
    40 friend class LagrangeCubeLocalInterpolation<LagrangeCubeLocalBasis<D,R,dim,k> >;
    \n-
    41
    \n-
    42 // i-th Lagrange polynomial of degree k in one dimension
    \n-
    43 static R p(unsigned int i, D x)
    \n-
    44 {
    \n-
    45 R result(1.0);
    \n-
    46 for (unsigned int j=0; j<=k; j++)
    \n-
    47 if (j!=i) result *= (k*x-j)/((int)i-(int)j);
    \n-
    48 return result;
    \n-
    49 }
    \n-
    50
    \n-
    51 // derivative of ith Lagrange polynomial of degree k in one dimension
    \n-
    52 static R dp(unsigned int i, D x)
    \n-
    53 {
    \n-
    54 R result(0.0);
    \n-
    55
    \n-
    56 for (unsigned int j=0; j<=k; j++)
    \n-
    57 {
    \n-
    58 if (j!=i)
    \n-
    59 {
    \n-
    60 R prod( (k*1.0)/((int)i-(int)j) );
    \n-
    61 for (unsigned int l=0; l<=k; l++)
    \n-
    62 if (l!=i && l!=j)
    \n-
    63 prod *= (k*x-l)/((int)i-(int)l);
    \n-
    64 result += prod;
    \n-
    65 }
    \n-
    66 }
    \n-
    67 return result;
    \n-
    68 }
    \n-
    69
    \n-
    70 // Second derivative of j-th Lagrange polynomial of degree k in one dimension
    \n-
    71 // Formula and notation taken from https://en.wikipedia.org/wiki/Lagrange_polynomial#Derivatives
    \n-
    72 static R ddp(unsigned int j, D x)
    \n-
    73 {
    \n-
    74 R result(0.0);
    \n-
    75
    \n-
    76 for (unsigned int i=0; i<=k; i++)
    \n-
    77 {
    \n-
    78 if (i==j)
    \n-
    79 continue;
    \n-
    80
    \n-
    81 R sum(0);
    \n-
    82
    \n-
    83 for (unsigned int m=0; m<=k; m++)
    \n-
    84 {
    \n-
    85 if (m==i || m==j)
    \n-
    86 continue;
    \n-
    87
    \n-
    88 R prod( (k*1.0)/((int)j-(int)m) );
    \n-
    89 for (unsigned int l=0; l<=k; l++)
    \n-
    90 if (l!=i && l!=j && l!=m)
    \n-
    91 prod *= (k*x-l)/((int)j-(int)l);
    \n-
    92 sum += prod;
    \n-
    93 }
    \n-
    94
    \n-
    95 result += sum * ( (k*1.0)/((int)j-(int)i) );
    \n-
    96 }
    \n-
    97
    \n-
    98 return result;
    \n-
    99 }
    \n-
    100
    \n-
    101 // Return i as a d-digit number in the (k+1)-nary system
    \n-
    102 static std::array<unsigned int,dim> multiindex (unsigned int i)
    \n-
    103 {
    \n-
    104 std::array<unsigned int,dim> alpha;
    \n-
    105 for (unsigned int j=0; j<dim; j++)
    \n-
    106 {
    \n-
    107 alpha[j] = i % (k+1);
    \n-
    108 i = i/(k+1);
    \n-
    109 }
    \n-
    110 return alpha;
    \n-
    111 }
    \n-
    112
    \n-
    113 public:
    \n-
    114 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n-
    115
    \n-
    118 static constexpr unsigned int size ()
    \n-
    119 {
    \n-
    120 return power(k+1, dim);
    \n-
    121 }
    \n-
    122
    \n-
    124 void evaluateFunction(const typename Traits::DomainType& x,
    \n-
    125 std::vector<typename Traits::RangeType>& out) const
    \n-
    126 {
    \n-
    127 out.resize(size());
    \n-
    128
    \n-
    129 // Specialization for zero-order case
    \n-
    130 if (k==0)
    \n-
    131 {
    \n-
    132 out[0] = 1;
    \n-
    133 return;
    \n-
    134 }
    \n-
    135
    \n-
    136 if (k==1)
    \n-
    137 {
    \n-
    138 for (size_t i=0; i<size(); i++)
    \n-
    139 {
    \n-
    140 out[i] = 1;
    \n-
    141
    \n-
    142 for (unsigned int j=0; j<dim; j++)
    \n-
    143 // if j-th bit of i is set multiply with x[j], else with 1-x[j]
    \n-
    144 out[i] *= (i & (1<<j)) ? x[j] : 1-x[j];
    \n+
    27namespace Dune
    \n+
    28{
    \n+
    44 template<class D, class R, int dim>
    \n+
    \n+\n+
    46 {
    \n+\n+
    48
    \n+
    50 using DomainType = FieldVector<D,dim>;
    \n+
    51
    \n+
    53 using RangeType = FieldVector<R,1>;
    \n+
    54
    \n+
    56 using JacobianType = FieldMatrix<R,1,dim>;
    \n+
    57
    \n+
    58 // Number of vertices
    \n+
    59 static constexpr int numVertices = dim+1;
    \n+
    60
    \n+
    61 // Number of edges (or zero for dim==1)
    \n+
    62 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);
    \n+
    63
    \n+
    64 // helper function to evaluate the vertex basis functions
    \n+
    65 template <class It>
    \n+
    66 static constexpr It evaluateVertexFunctions (const DomainType& in, It outIt)
    \n+
    67 {
    \n+
    68 *outIt = 1;
    \n+
    69 for (int i = 0; i < dim; ++i)
    \n+
    70 *outIt -= in[i];
    \n+
    71 ++outIt;
    \n+
    72 for (int i = 0; i < dim; ++i)
    \n+
    73 *outIt++ = in[i];
    \n+
    74 return outIt;
    \n+
    75 }
    \n+
    76
    \n+
    77 // helper function to evaluate the basis functions
    \n+
    78 template <class It>
    \n+
    79 static constexpr It evaluateAllFunctions (const DomainType& in, It outIt)
    \n+
    80 {
    \n+
    81 It vertexValues = outIt;
    \n+
    82 outIt = evaluateVertexFunctions(in, outIt);
    \n+
    83
    \n+
    84 if constexpr(dim > 1) {
    \n+
    85 auto refElem = referenceElement<D,dim>(GeometryTypes::simplex(dim));
    \n+
    86 for (int i = 0; i < numEdges; ++i) {
    \n+
    87 const int v0 = refElem.subEntity(i,dim-1,0,dim);
    \n+
    88 const int v1 = refElem.subEntity(i,dim-1,1,dim);
    \n+
    89 *outIt++ = 4 * vertexValues[v0] * vertexValues[v1];
    \n+
    90 }
    \n+
    91 }
    \n+
    92
    \n+
    93 // element bubble function
    \n+
    94 *outIt = power(dim+1, dim+1);
    \n+
    95 for (int i = 0; i < numVertices; ++i)
    \n+
    96 *outIt *= vertexValues[i];
    \n+
    97 return outIt;
    \n+
    98 }
    \n+
    99
    \n+
    100 public:
    \n+\n+
    103
    \n+
    \n+
    105 static constexpr std::size_t size () noexcept
    \n+
    106 {
    \n+
    107 return numVertices + numEdges + 1;
    \n+
    108 }
    \n+
    \n+
    109
    \n+
    \n+
    111 static constexpr void evaluateFunction (const DomainType& in,
    \n+
    112 std::vector<RangeType>& out)
    \n+
    113 {
    \n+
    114 out.resize(size());
    \n+
    115 evaluateAllFunctions(in,out.begin());
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    \n+
    119 static constexpr void evaluateJacobian (const DomainType& in,
    \n+
    120 std::vector<JacobianType>& out)
    \n+
    121 {
    \n+
    122 out.resize(size());
    \n+
    123
    \n+
    124 // vertex basis functions
    \n+
    125 RangeType tmp = 1;
    \n+
    126 for (int i = 0; i < dim; ++i) {
    \n+
    127 out[0][0][i] = -1;
    \n+
    128 for (int j = 0; j < dim; ++j)
    \n+
    129 out[j+1][0][i] = (i == j);
    \n+
    130 tmp -= in[i];
    \n+
    131 }
    \n+
    132
    \n+
    133 int n = numVertices;
    \n+
    134 std::array<RangeType,numVertices> shapeValues;
    \n+
    135 evaluateVertexFunctions(in, shapeValues.begin());
    \n+
    136
    \n+
    137 // edge basis functions
    \n+
    138 if constexpr(dim > 1) {
    \n+
    139 auto refElem = referenceElement<D,dim>(GeometryTypes::simplex(dim));
    \n+
    140 for (int i = 0; i < numEdges; ++i,++n) {
    \n+
    141 const int v0 = refElem.subEntity(i,dim-1,0,dim);
    \n+
    142 const int v1 = refElem.subEntity(i,dim-1,1,dim);
    \n+
    143 for (int j = 0; j < dim; ++j)
    \n+
    144 out[n][0][j] = 4 * (out[v0][0][j] * shapeValues[v1] + shapeValues[v0] * out[v1][0][j]);
    \n
    145 }
    \n-
    146 return;
    \n-
    147 }
    \n-
    148
    \n-
    149 // General case
    \n-
    150 for (size_t i=0; i<size(); i++)
    \n-
    151 {
    \n-
    152 // convert index i to multiindex
    \n-
    153 std::array<unsigned int,dim> alpha(multiindex(i));
    \n-
    154
    \n-
    155 // initialize product
    \n-
    156 out[i] = 1.0;
    \n-
    157
    \n-
    158 // dimension by dimension
    \n-
    159 for (unsigned int j=0; j<dim; j++)
    \n-
    160 out[i] *= p(alpha[j],x[j]);
    \n-
    161 }
    \n-
    162 }
    \n-
    163
    \n-
    169 void evaluateJacobian(const typename Traits::DomainType& x,
    \n-
    170 std::vector<typename Traits::JacobianType>& out) const
    \n-
    171 {
    \n-
    172 out.resize(size());
    \n-
    173
    \n-
    174 // Specialization for k==0
    \n-
    175 if (k==0)
    \n-
    176 {
    \n-
    177 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n-
    178 return;
    \n-
    179 }
    \n-
    180
    \n-
    181 // Specialization for k==1
    \n-
    182 if (k==1)
    \n-
    183 {
    \n-
    184 // Loop over all shape functions
    \n-
    185 for (size_t i=0; i<size(); i++)
    \n-
    186 {
    \n-
    187 // Loop over all coordinate directions
    \n-
    188 for (unsigned int j=0; j<dim; j++)
    \n-
    189 {
    \n-
    190 // Initialize: the overall expression is a product
    \n-
    191 // if j-th bit of i is set to 1, else -11
    \n-
    192 out[i][0][j] = (i & (1<<j)) ? 1 : -1;
    \n-
    193
    \n-
    194 for (unsigned int l=0; l<dim; l++)
    \n-
    195 {
    \n-
    196 if (j!=l)
    \n-
    197 // if l-th bit of i is set multiply with x[l], else with 1-x[l]
    \n-
    198 out[i][0][j] *= (i & (1<<l)) ? x[l] : 1-x[l];
    \n-
    199 }
    \n-
    200 }
    \n-
    201 }
    \n-
    202 return;
    \n-
    203 }
    \n-
    204
    \n-
    205 // The general case
    \n-
    206
    \n-
    207 // Loop over all shape functions
    \n-
    208 for (size_t i=0; i<size(); i++)
    \n-
    209 {
    \n-
    210 // convert index i to multiindex
    \n-
    211 std::array<unsigned int,dim> alpha(multiindex(i));
    \n-
    212
    \n-
    213 // Loop over all coordinate directions
    \n-
    214 for (unsigned int j=0; j<dim; j++)
    \n-
    215 {
    \n-
    216 // Initialize: the overall expression is a product
    \n-
    217 // if j-th bit of i is set to -1, else 1
    \n-
    218 out[i][0][j] = dp(alpha[j],x[j]);
    \n-
    219
    \n-
    220 // rest of the product
    \n-
    221 for (unsigned int l=0; l<dim; l++)
    \n-
    222 if (l!=j)
    \n-
    223 out[i][0][j] *= p(alpha[l],x[l]);
    \n-
    224 }
    \n-
    225 }
    \n-
    226 }
    \n-
    227
    \n-
    234 void partial(const std::array<unsigned int,dim>& order,
    \n-
    235 const typename Traits::DomainType& in,
    \n-
    236 std::vector<typename Traits::RangeType>& out) const
    \n-
    237 {
    \n-
    238 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    239
    \n-
    240 out.resize(size());
    \n-
    241
    \n-
    242 if (k==0)
    \n-
    243 {
    \n-
    244 out[0] = (totalOrder==0);
    \n-
    245 return;
    \n+
    146 }
    \n+
    147
    \n+
    148 // element bubble function
    \n+
    149 for (int i = 0; i < dim; ++i) {
    \n+
    150 out[n][0][i] = power(dim+1, dim+1) * (tmp - in[i]);
    \n+
    151 for (int j = i+1; j < dim+i; ++j)
    \n+
    152 out[n][0][i] *= in[j % dim];
    \n+
    153 }
    \n+
    154 }
    \n+
    \n+
    155
    \n+
    \n+
    157 static constexpr void partial (const std::array<unsigned int, dim>& order,
    \n+
    158 const DomainType& in,
    \n+
    159 std::vector<RangeType>& out)
    \n+
    160 {
    \n+
    161 unsigned int totalOrder = 0;
    \n+
    162 for (int i = 0; i < dim; ++i)
    \n+
    163 totalOrder += order[i];
    \n+
    164
    \n+
    165 switch (totalOrder) {
    \n+
    166 case 0:
    \n+
    167 evaluateFunction(in,out);
    \n+
    168 break;
    \n+
    169 case 1: {
    \n+
    170 out.resize(size());
    \n+
    171 int d = 0; // the direction of differentiation
    \n+
    172 for (int i = 0; i < dim; ++i)
    \n+
    173 d += i * order[i];
    \n+
    174
    \n+
    175 // vertex basis functions
    \n+
    176 RangeType tmp = 1;
    \n+
    177 for (int i = 0; i < dim; ++i) {
    \n+
    178 out[0] = -1;
    \n+
    179 for (int j = 0; j < dim; ++j)
    \n+
    180 out[j+1] = (dim == j);
    \n+
    181 tmp -= in[i];
    \n+
    182 }
    \n+
    183
    \n+
    184 int n = numVertices;
    \n+
    185 std::array<RangeType,numVertices> shapeValues;
    \n+
    186 evaluateVertexFunctions(in, shapeValues.begin());
    \n+
    187
    \n+
    188 // edge basis functions
    \n+
    189 if constexpr(dim > 1) {
    \n+
    190 auto refElem = referenceElement<D,dim>(GeometryTypes::simplex(dim));
    \n+
    191 for (int i = 0; i < numEdges; ++i,++n) {
    \n+
    192 const int v0 = refElem.subEntity(i,dim-1,0,dim);
    \n+
    193 const int v1 = refElem.subEntity(i,dim-1,1,dim);
    \n+
    194 out[n] = 4 * (out[v0] * shapeValues[v1] + shapeValues[v0] * out[v1]);
    \n+
    195 }
    \n+
    196 }
    \n+
    197
    \n+
    198 // element bubble function
    \n+
    199 out[n] = power(dim+1, dim+1) * (tmp - in[d]);
    \n+
    200 for (int j = d+1; j < dim+d; ++j)
    \n+
    201 out[n] *= in[j % dim];
    \n+
    202 } break;
    \n+
    203 default:
    \n+
    204 throw std::runtime_error("Desired derivative order is not implemented");
    \n+
    205 }
    \n+
    206 }
    \n+
    \n+
    207
    \n+
    \n+
    209 static constexpr unsigned int order () noexcept
    \n+
    210 {
    \n+
    211 return dim+1;
    \n+
    212 }
    \n+
    \n+
    213 };
    \n+
    \n+
    214
    \n+
    215
    \n+
    227 template <int dim>
    \n+
    \n+\n+
    229 {
    \n+
    230 // Number of vertices
    \n+
    231 static constexpr int numVertices = dim+1;
    \n+
    232
    \n+
    233 // Number of edges (or zero for dim==1)
    \n+
    234 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);
    \n+
    235
    \n+
    236 public:
    \n+
    \n+\n+
    239 {
    \n+
    240 int n = 0;
    \n+
    241 for (int i = 0; i < numVertices; ++i)
    \n+
    242 li_[n++] = LocalKey(i,dim,0); // Vertex
    \n+
    243 if constexpr(dim > 1) {
    \n+
    244 for (int i = 0; i < numEdges; ++i)
    \n+
    245 li_[n++] = LocalKey(i,dim-1,0); // Edges
    \n
    246 }
    \n-
    247
    \n-
    248 if (k==1)
    \n-
    249 {
    \n-
    250 if (totalOrder == 0)
    \n-
    251 {
    \n-
    252 evaluateFunction(in, out);
    \n-
    253 }
    \n-
    254 else if (totalOrder == 1)
    \n-
    255 {
    \n-
    256 out.resize(size());
    \n-
    257
    \n-
    258 auto direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    259 if (direction >= dim)
    \n-
    260 DUNE_THROW(RangeError, "Direction of partial derivative not found!");
    \n+
    247 li_[n++] = LocalKey(0,0,0); // Element
    \n+
    248 }
    \n+
    \n+
    249
    \n+
    \n+
    251 static constexpr std::size_t size () noexcept
    \n+
    252 {
    \n+
    253 return numVertices + numEdges + 1;
    \n+
    254 }
    \n+
    \n+
    255
    \n+
    \n+
    257 const LocalKey& localKey (std::size_t i) const noexcept
    \n+
    258 {
    \n+
    259 return li_[i];
    \n+
    260 }
    \n+
    \n
    261
    \n-
    262 // Loop over all shape functions
    \n-
    263 for (std::size_t i = 0; i < size(); ++i)
    \n-
    264 {
    \n-
    265 // Initialize: the overall expression is a product
    \n-
    266 // if j-th bit of i is set to 1, otherwise to -1
    \n-
    267 out[i] = (i & (1<<direction)) ? 1 : -1;
    \n-
    268
    \n-
    269 for (unsigned int j = 0; j < dim; ++j)
    \n-
    270 {
    \n-
    271 if (direction != j)
    \n-
    272 // if j-th bit of i is set multiply with in[j], else with 1-in[j]
    \n-
    273 out[i] *= (i & (1<<j)) ? in[j] : 1-in[j];
    \n-
    274 }
    \n-
    275 }
    \n-
    276 }
    \n-
    277 else if (totalOrder == 2)
    \n-
    278 {
    \n-
    279
    \n-
    280 for (size_t i=0; i<size(); i++)
    \n-
    281 {
    \n-
    282 // convert index i to multiindex
    \n-
    283 std::array<unsigned int,dim> alpha(multiindex(i));
    \n-
    284
    \n-
    285 // Initialize: the overall expression is a product
    \n-
    286 out[i][0] = 1.0;
    \n-
    287
    \n-
    288 // rest of the product
    \n-
    289 for (std::size_t l=0; l<dim; l++)
    \n-
    290 {
    \n-
    291 switch (order[l])
    \n-
    292 {
    \n-
    293 case 0:
    \n-
    294 out[i][0] *= p(alpha[l],in[l]);
    \n-
    295 break;
    \n-
    296 case 1:
    \n-
    297 //std::cout << "dp: " << dp(alpha[l],in[l]) << std::endl;
    \n-
    298 out[i][0] *= dp(alpha[l],in[l]);
    \n-
    299 break;
    \n-
    300 case 2:
    \n-
    301 out[i][0] *= 0;
    \n-
    302 break;
    \n-
    303 default:
    \n-
    304 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    305 }
    \n-
    306 }
    \n-
    307 }
    \n-
    308 }
    \n-
    309 else
    \n-
    310 DUNE_THROW(NotImplemented, "Partial derivative of order " << totalOrder << " is not implemented!");
    \n-
    311
    \n-
    312 return;
    \n-
    313 }
    \n-
    314
    \n-
    315 // The case k>1
    \n-
    316
    \n-
    317 // Loop over all shape functions
    \n-
    318 for (size_t i=0; i<size(); i++)
    \n-
    319 {
    \n-
    320 // convert index i to multiindex
    \n-
    321 std::array<unsigned int,dim> alpha(multiindex(i));
    \n-
    322
    \n-
    323 // Initialize: the overall expression is a product
    \n-
    324 out[i][0] = 1.0;
    \n-
    325
    \n-
    326 // rest of the product
    \n-
    327 for (std::size_t l=0; l<dim; l++)
    \n-
    328 {
    \n-
    329 switch (order[l])
    \n-
    330 {
    \n-
    331 case 0:
    \n-
    332 out[i][0] *= p(alpha[l],in[l]);
    \n-
    333 break;
    \n-
    334 case 1:
    \n-
    335 out[i][0] *= dp(alpha[l],in[l]);
    \n-
    336 break;
    \n-
    337 case 2:
    \n-
    338 out[i][0] *= ddp(alpha[l],in[l]);
    \n-
    339 break;
    \n-
    340 default:
    \n-
    341 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    342 }
    \n-
    343 }
    \n-
    344 }
    \n-
    345 }
    \n-
    346
    \n-
    348 static constexpr unsigned int order ()
    \n-
    349 {
    \n-
    350 return k;
    \n-
    351 }
    \n-
    352 };
    \n-
    353
    \n-
    359 template<unsigned int dim, unsigned int k>
    \n-
    360 class LagrangeCubeLocalCoefficients
    \n-
    361 {
    \n-
    362 // Return i as a d-digit number in the (k+1)-nary system
    \n-
    363 static std::array<unsigned int,dim> multiindex (unsigned int i)
    \n-
    364 {
    \n-
    365 std::array<unsigned int,dim> alpha;
    \n-
    366 for (unsigned int j=0; j<dim; j++)
    \n-
    367 {
    \n-
    368 alpha[j] = i % (k+1);
    \n-
    369 i = i/(k+1);
    \n-
    370 }
    \n-
    371 return alpha;
    \n-
    372 }
    \n-
    373
    \n-
    375 void setup1d(std::vector<unsigned int>& subEntity)
    \n-
    376 {
    \n-
    377 assert(k>0);
    \n-
    378
    \n-
    379 unsigned lastIndex=0;
    \n-
    380
    \n-
    381 /* edge and vertex numbering
    \n-
    382 0----0----1
    \n-
    383 */
    \n-
    384
    \n-
    385 // edge (0)
    \n-
    386 subEntity[lastIndex++] = 0; // corner 0
    \n-
    387 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    388 subEntity[lastIndex++] = 0; // inner dofs of element (0)
    \n-
    389
    \n-
    390 subEntity[lastIndex++] = 1; // corner 1
    \n-
    391
    \n-
    392 assert(power(k+1,dim)==lastIndex);
    \n-
    393 }
    \n-
    394
    \n-
    395 void setup2d(std::vector<unsigned int>& subEntity)
    \n-
    396 {
    \n-
    397 assert(k>0);
    \n-
    398
    \n-
    399 unsigned lastIndex=0;
    \n-
    400
    \n-
    401 // LocalKey: entity number, entity codim, dof indices within each entity
    \n-
    402 /* edge and vertex numbering
    \n-
    403 2----3----3
    \n-
    404 | |
    \n-
    405 | |
    \n-
    406 0 1
    \n-
    407 | |
    \n-
    408 | |
    \n-
    409 0----2----1
    \n-
    410 */
    \n-
    411
    \n-
    412 // lower edge (2)
    \n-
    413 subEntity[lastIndex++] = 0; // corner 0
    \n-
    414 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    415 subEntity[lastIndex++] = 2; // inner dofs of lower edge (2)
    \n-
    416
    \n-
    417 subEntity[lastIndex++] = 1; // corner 1
    \n-
    418
    \n-
    419 // iterate from bottom to top over inner edge dofs
    \n-
    420 for (unsigned e = 0; e < k - 1; ++e) {
    \n-
    421 subEntity[lastIndex++] = 0; // left edge (0)
    \n-
    422 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    423 subEntity[lastIndex++] = 0; // face dofs
    \n-
    424 subEntity[lastIndex++] = 1; // right edge (1)
    \n-
    425 }
    \n-
    426
    \n-
    427 // upper edge (3)
    \n-
    428 subEntity[lastIndex++] = 2; // corner 2
    \n-
    429 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    430 subEntity[lastIndex++] = 3; // inner dofs of upper edge (3)
    \n-
    431
    \n-
    432 subEntity[lastIndex++] = 3; // corner 3
    \n-
    433
    \n-
    434 assert(power(k+1,dim)==lastIndex);
    \n-
    435 }
    \n-
    436
    \n-
    437 void setup3d(std::vector<unsigned int>& subEntity)
    \n-
    438 {
    \n-
    439 assert(k>0);
    \n-
    440
    \n-
    441 unsigned lastIndex=0;
    \n-
    442#ifndef NDEBUG
    \n-
    443 const unsigned numIndices = power(k+1,dim);
    \n-
    444 const unsigned numFaceIndices = power(k+1,dim-1);
    \n-
    445#endif
    \n-
    446 const unsigned numInnerEdgeDofs = k-1;
    \n-
    447
    \n-
    448 // LocalKey: entity number, entity codim, dof indices within each entity
    \n-
    449 /* edge and vertex numbering
    \n-
    450
    \n-
    451 6---(11)--7 6---------7
    \n-
    452 /| /| /| (5) /|
    \n-
    453 (8)| (9)| / | top / |
    \n-
    454 / (2) / (3) / |(3)bac/k |
    \n-
    455 4---(10)--5 | 4---------5 |
    \n-
    456 | | | | left|(0)| |(1)|right
    \n-
    457 | 2--(7)|---3 | 2-----|---3
    \n-
    458 (0) / (1) / |(2)front | /
    \n-
    459 |(4) |(5) | / (4) | /
    \n-
    460 |/ |/ |/ bottom |/
    \n-
    461 0---(6)---1 0---------1
    \n-
    462 */
    \n-
    463
    \n-
    464 // bottom face (4)
    \n-
    465 lastIndex=0;
    \n-
    466 // lower edge (6)
    \n-
    467 subEntity[lastIndex++] = 0; // corner 0
    \n-
    468 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    469 subEntity[lastIndex++] = 6; // inner dofs of lower edge (6)
    \n-
    470
    \n-
    471 subEntity[lastIndex++] = 1; // corner 1
    \n-
    472
    \n-
    473 // iterate from bottom to top over inner edge dofs
    \n-
    474 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {
    \n-
    475 subEntity[lastIndex++] = 4; // left edge (4)
    \n-
    476 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    477 subEntity[lastIndex++] = 4; // inner face dofs
    \n-
    478 subEntity[lastIndex++] = 5; // right edge (5)
    \n-
    479 }
    \n-
    480
    \n-
    481 // upper edge (7)
    \n-
    482 subEntity[lastIndex++] = 2; // corner 2
    \n-
    483 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    484 subEntity[lastIndex++] = 7; // inner dofs of upper edge (7)
    \n-
    485 subEntity[lastIndex++] = 3; // corner 3
    \n-
    486
    \n-
    487 assert(numFaceIndices==lastIndex); // added 1 face so far
    \n-
    489
    \n-
    491 for(unsigned f = 0; f < numInnerEdgeDofs; ++f) {
    \n-
    492
    \n-
    493 // lower edge (connecting edges 0 and 1)
    \n-
    494 subEntity[lastIndex++] = 0; // dof on edge 0
    \n-
    495 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    496 subEntity[lastIndex++] = 2; // dof in front face
    \n-
    497 subEntity[lastIndex++] = 1; // dof on edge 1
    \n-
    498
    \n-
    499 // iterate from bottom to top over inner edge dofs
    \n-
    500 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {
    \n-
    501 subEntity[lastIndex++] = 0; // on left face (0)
    \n-
    502 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    503 subEntity[lastIndex++] = 0; // volume dofs
    \n-
    504 subEntity[lastIndex++] = 1; // right face (1)
    \n-
    505 }
    \n-
    506
    \n-
    507 // upper edge (connecting edges 0 and 1)
    \n-
    508 subEntity[lastIndex++] = 2; // dof on edge 2
    \n-
    509 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    510 subEntity[lastIndex++] = 3; // dof on rear face (3)
    \n-
    511 subEntity[lastIndex++] = 3; // dof on edge 3
    \n-
    512
    \n-
    513 assert(lastIndex==(f+1+1)*numFaceIndices);
    \n-
    514 }
    \n-
    515
    \n-
    517 // lower edge (10)
    \n-
    518 subEntity[lastIndex++] = 4; // corner 4
    \n-
    519 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    520 subEntity[lastIndex++] = 10; // inner dofs on lower edge (10)
    \n-
    521 subEntity[lastIndex++] = 5; // corner 5
    \n-
    522
    \n-
    523 // iterate from bottom to top over inner edge dofs
    \n-
    524 for (unsigned e = 0; e < k - 1; ++e) {
    \n-
    525 subEntity[lastIndex++] = 8; // left edge (8)
    \n-
    526 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    527 subEntity[lastIndex++] = 5; // face dofs
    \n-
    528 subEntity[lastIndex++] = 9; // right edge (9)
    \n-
    529 }
    \n-
    530
    \n-
    531 // upper edge (11)
    \n-
    532 subEntity[lastIndex++] = 6; // corner 6
    \n-
    533 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    534 subEntity[lastIndex++] = 11; // inner dofs of upper edge (11)
    \n-
    535 subEntity[lastIndex++] = 7; // corner 7
    \n-
    536
    \n-
    537 assert(numIndices==lastIndex);
    \n-
    538 }
    \n-
    539
    \n-
    540 public:
    \n-
    542 LagrangeCubeLocalCoefficients ()
    \n-
    543 : localKeys_(size())
    \n-
    544 {
    \n-
    545 if (k==0)
    \n-
    546 {
    \n-
    547 localKeys_[0] = LocalKey(0,0,0);
    \n-
    548 return;
    \n-
    549 }
    \n-
    550
    \n-
    551 if (k==1)
    \n-
    552 {
    \n-
    553 for (std::size_t i=0; i<size(); i++)
    \n-
    554 localKeys_[i] = LocalKey(i,dim,0);
    \n-
    555 return;
    \n-
    556 }
    \n-
    557
    \n-
    558 // Now: the general case
    \n-
    559
    \n-
    560 // Set up array of codimension-per-dof-number
    \n-
    561 std::vector<unsigned int> codim(size());
    \n-
    562
    \n-
    563 for (std::size_t i=0; i<codim.size(); i++)
    \n-
    564 {
    \n-
    565 codim[i] = 0;
    \n-
    566
    \n-
    567 // Codimension gets increased by 1 for each coordinate direction
    \n-
    568 // where dof is on boundary
    \n-
    569 std::array<unsigned int,dim> mIdx = multiindex(i);
    \n-
    570 for (unsigned int j=0; j<dim; j++)
    \n-
    571 if (mIdx[j]==0 or mIdx[j]==k)
    \n-
    572 codim[i]++;
    \n-
    573 }
    \n-
    574
    \n-
    575 // Set up index vector (the index of the dof in the set of dofs of a given subentity)
    \n-
    576 // Algorithm: the 'index' has the same ordering as the dof number 'i'.
    \n-
    577 // To make it consecutive we interpret 'i' in the (k+1)-adic system, omit all digits
    \n-
    578 // that correspond to axes where the dof is on the element boundary, and transform the
    \n-
    579 // rest to the (k-1)-adic system.
    \n-
    580 std::vector<unsigned int> index(size());
    \n-
    581
    \n-
    582 for (std::size_t i=0; i<size(); i++)
    \n-
    583 {
    \n-
    584 index[i] = 0;
    \n-
    585
    \n-
    586 std::array<unsigned int,dim> mIdx = multiindex(i);
    \n-
    587
    \n-
    588 for (int j=dim-1; j>=0; j--)
    \n-
    589 if (mIdx[j]>0 && mIdx[j]<k)
    \n-
    590 index[i] = (k-1)*index[i] + (mIdx[j]-1);
    \n-
    591 }
    \n-
    592
    \n-
    593 // Set up entity and dof numbers for each (supported) dimension separately
    \n-
    594 std::vector<unsigned int> subEntity(size());
    \n-
    595
    \n-
    596 if (dim==1) {
    \n-
    597
    \n-
    598 setup1d(subEntity);
    \n-
    599
    \n-
    600 } else if (dim==2) {
    \n-
    601
    \n-
    602 setup2d(subEntity);
    \n-
    603
    \n-
    604 } else if (dim==3) {
    \n-
    605
    \n-
    606 setup3d(subEntity);
    \n-
    607
    \n-
    608 } else
    \n-
    609 DUNE_THROW(Dune::NotImplemented, "LagrangeCubeLocalCoefficients for order " << k << " and dim == " << dim);
    \n-
    610
    \n-
    611 for (size_t i=0; i<size(); i++)
    \n-
    612 localKeys_[i] = LocalKey(subEntity[i], codim[i], index[i]);
    \n-
    613 }
    \n-
    614
    \n-
    616 static constexpr std::size_t size ()
    \n-
    617 {
    \n-
    618 return power(k+1,dim);
    \n-
    619 }
    \n-
    620
    \n-
    622 const LocalKey& localKey (std::size_t i) const
    \n-
    623 {
    \n-
    624 return localKeys_[i];
    \n-
    625 }
    \n-
    626
    \n-
    627 private:
    \n-
    628 std::vector<LocalKey> localKeys_;
    \n-
    629 };
    \n-
    630
    \n-
    635 template<class LocalBasis>
    \n-
    636 class LagrangeCubeLocalInterpolation
    \n-
    637 {
    \n-
    638 public:
    \n-
    639
    \n-
    647 template<typename F, typename C>
    \n-
    648 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    649 {
    \n-
    650 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n-
    651 constexpr auto k = LocalBasis::order();
    \n-
    652 using D = typename LocalBasis::Traits::DomainFieldType;
    \n-
    653
    \n-
    654 typename LocalBasis::Traits::DomainType x;
    \n-
    655
    \n-
    656 out.resize(LocalBasis::size());
    \n-
    657
    \n-
    658 // Specialization for zero-order case
    \n-
    659 if (k==0)
    \n-
    660 {
    \n-
    661 auto center = ReferenceElements<D,dim>::cube().position(0,0);
    \n-
    662 out[0] = f(center);
    \n-
    663 return;
    \n-
    664 }
    \n-
    665
    \n-
    666 // Specialization for first-order case
    \n-
    667 if (k==1)
    \n-
    668 {
    \n-
    669 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n-
    670 {
    \n-
    671 // Generate coordinate of the i-th corner of the reference cube
    \n-
    672 for (int j=0; j<dim; j++)
    \n-
    673 x[j] = (i & (1<<j)) ? 1.0 : 0.0;
    \n-
    674
    \n-
    675 out[i] = f(x);
    \n-
    676 }
    \n-
    677 return;
    \n-
    678 }
    \n-
    679
    \n-
    680 // The general case
    \n-
    681 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n-
    682 {
    \n-
    683 // convert index i to multiindex
    \n-
    684 std::array<unsigned int,dim> alpha(LocalBasis::multiindex(i));
    \n-
    685
    \n-
    686 // Generate coordinate of the i-th Lagrange point
    \n-
    687 for (unsigned int j=0; j<dim; j++)
    \n-
    688 x[j] = (1.0*alpha[j])/k;
    \n-
    689
    \n-
    690 out[i] = f(x);
    \n-
    691 }
    \n-
    692 }
    \n-
    693
    \n-
    694 };
    \n-
    695
    \n-
    696} } // namespace Dune::Impl
    \n-
    697
    \n-
    698namespace Dune
    \n-
    699{
    \n-
    707 template<class D, class R, int dim, int k>
    \n-
    \n-\n-
    709 {
    \n-
    710 public:
    \n-\n-
    714 Impl::LagrangeCubeLocalCoefficients<dim,k>,
    \n-
    715 Impl::LagrangeCubeLocalInterpolation<Impl::LagrangeCubeLocalBasis<D,R,dim,k> > >;
    \n-
    716
    \n-
    \n-
    719 const typename Traits::LocalBasisType& localBasis () const
    \n-
    720 {
    \n-
    721 return basis_;
    \n-
    722 }
    \n-
    \n-
    723
    \n-
    \n-\n-
    727 {
    \n-
    728 return coefficients_;
    \n-
    729 }
    \n-
    \n-
    730
    \n-
    \n-\n-
    734 {
    \n-
    735 return interpolation_;
    \n-
    736 }
    \n-
    \n-
    737
    \n-
    \n-
    739 static constexpr std::size_t size ()
    \n-
    740 {
    \n-
    741 return power(k+1,dim);
    \n-
    742 }
    \n-
    \n-
    743
    \n-
    \n-
    746 static constexpr GeometryType type ()
    \n-
    747 {
    \n-
    748 return GeometryTypes::cube(dim);
    \n-
    749 }
    \n-
    \n-
    750
    \n-
    751 private:
    \n-
    752 Impl::LagrangeCubeLocalBasis<D,R,dim,k> basis_;
    \n-
    753 Impl::LagrangeCubeLocalCoefficients<dim,k> coefficients_;
    \n-
    754 Impl::LagrangeCubeLocalInterpolation<Impl::LagrangeCubeLocalBasis<D,R,dim,k> > interpolation_;
    \n-
    755 };
    \n-
    \n-
    756
    \n-
    757} // namespace Dune
    \n-
    758
    \n-
    759#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH
    \n-\n-\n+
    262 private:
    \n+
    263 std::array<LocalKey, numVertices+numEdges+1> li_;
    \n+
    264 };
    \n+
    \n+
    265
    \n+
    269 template<class LB, int dim>
    \n+
    \n+\n+
    271 {
    \n+
    272 using LocalBasis = LB;
    \n+
    273 using DomainType = typename LB::Traits::DomainType;
    \n+
    274 using RangeType = typename LB::Traits::RangeType;
    \n+
    275
    \n+
    276 // Number of vertices
    \n+
    277 static constexpr int numVertices = dim+1;
    \n+
    278
    \n+
    279 // Number of edges (or zero for dim==1)
    \n+
    280 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);
    \n+
    281
    \n+
    282 public:
    \n+
    290 template<class F, class C,
    \n+
    291 class R = std::invoke_result_t<F, DomainType>,
    \n+
    292 std::enable_if_t<std::is_convertible_v<R, C>, int> = 0>
    \n+
    \n+
    293 static constexpr void interpolate (const F& f, std::vector<C>& out)
    \n+
    294 {
    \n+
    295 auto refElem = referenceElement<typename LB::Traits::DomainFieldType,dim>(GeometryTypes::simplex(dim));
    \n+
    296
    \n+
    297 out.resize(LB::size());
    \n+
    298 int n = 0;
    \n+
    299
    \n+
    300 // vertices
    \n+
    301 assert(numVertices == refElem.size(dim));
    \n+
    302 for (int i = 0; i < numVertices; ++i)
    \n+
    303 out[n++] = f(refElem.position(i,dim));
    \n+
    304
    \n+
    305 std::array<RangeType,LB::size()> shapeValues;
    \n+
    306
    \n+
    307 // edge bubbles
    \n+
    308 if constexpr(dim > 1) {
    \n+
    309 assert(numEdges == refElem.size(dim-1));
    \n+
    310 for (int i = 0; i < numEdges; ++i) {
    \n+
    311 R y = f(refElem.position(i,dim-1));
    \n+
    312 LB::evaluateVertexFunctions(refElem.position(i,dim-1), shapeValues.begin());
    \n+
    313 for (int j = 0; j < numVertices; ++j)
    \n+
    314 y -= out[j]*shapeValues[j];
    \n+
    315 out[n++] = y;
    \n+
    316 }
    \n+
    317 }
    \n+
    318
    \n+
    319 // element bubble
    \n+
    320 R y = f(refElem.position(0,0));
    \n+
    321 LB::evaluateAllFunctions(refElem.position(0,0), shapeValues.begin());
    \n+
    322 for (int j = 0; j < numVertices+numEdges; ++j)
    \n+
    323 y -= out[j]*shapeValues[j];
    \n+
    324 out[n++] = y;
    \n+
    325 }
    \n+
    \n+
    326 };
    \n+
    \n+
    327
    \n+
    328} // end namespace Dune
    \n+
    329
    \n+
    330#endif // DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n-
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangecube.hh:719
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangecube.hh:733
    \n-
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangecube.hh:746
    \n-
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangecube.hh:739
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangecube.hh:726
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    P1 basis in dim-d enriched by quadratic edge bubble functions and an element bubble function of order...
    Definition hierarchicalsimplexp2withelementbubble.hh:46
    \n+
    static constexpr void evaluateFunction(const DomainType &in, std::vector< RangeType > &out)
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:111
    \n+
    static constexpr void partial(const std::array< unsigned int, dim > &order, const DomainType &in, std::vector< RangeType > &out)
    Evaluate partial derivatives of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:157
    \n+
    static constexpr unsigned int order() noexcept
    Polynomial order of the shape functions (4 in this case)
    Definition hierarchicalsimplexp2withelementbubble.hh:209
    \n+
    static constexpr void evaluateJacobian(const DomainType &in, std::vector< JacobianType > &out)
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:119
    \n+
    static constexpr std::size_t size() noexcept
    Returns number of shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:105
    \n+
    The local keys of the hierarchical basis functions with element bubble.
    Definition hierarchicalsimplexp2withelementbubble.hh:229
    \n+
    HierarchicalSimplexP2WithElementBubbleLocalCoefficients() noexcept
    Default constructor, initializes the local keys.
    Definition hierarchicalsimplexp2withelementbubble.hh:238
    \n+
    static constexpr std::size_t size() noexcept
    Returns number of coefficients.
    Definition hierarchicalsimplexp2withelementbubble.hh:251
    \n+
    const LocalKey & localKey(std::size_t i) const noexcept
    Returns the i'th local key.
    Definition hierarchicalsimplexp2withelementbubble.hh:257
    \n+
    Definition hierarchicalsimplexp2withelementbubble.hh:271
    \n+
    static constexpr void interpolate(const F &f, std::vector< C > &out)
    Local interpolation of the function f.
    Definition hierarchicalsimplexp2withelementbubble.hh:293
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,764 +1,355 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-lagrangecube.hh\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be\n+hierarchicalsimplexp2withelementbubble.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH\n-6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH\n+5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH\n+6#define DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n-13#include \n-14\n-15#include \n-16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-20\n-21namespace _\bD_\bu_\bn_\be { namespace Impl\n-22{\n-23 // Forward declaration\n-24 template\n-25 class LagrangeCubeLocalInterpolation;\n+12#include \n+13#include \n+14#include \n+15#include \n+16#include \n+17\n+18#include \n+19#include \n+20#include \n+21\n+22#include \n+23\n+24#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+25#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n 26\n-37 template\n-38 class LagrangeCubeLocalBasis\n-39 {\n-40 friend class\n-LagrangeCubeLocalInterpolation >;\n-41\n-42 // i-th Lagrange polynomial of degree k in one dimension\n-43 static R p(unsigned int i, D x)\n-44 {\n-45 R result(1.0);\n-46 for (unsigned int j=0; j<=k; j++)\n-47 if (j!=i) result *= (k*x-j)/((int)i-(int)j);\n-48 return result;\n-49 }\n-50\n-51 // derivative of ith Lagrange polynomial of degree k in one dimension\n-52 static R dp(unsigned int i, D x)\n-53 {\n-54 R result(0.0);\n-55\n-56 for (unsigned int j=0; j<=k; j++)\n-57 {\n-58 if (j!=i)\n-59 {\n-60 R prod( (k*1.0)/((int)i-(int)j) );\n-61 for (unsigned int l=0; l<=k; l++)\n-62 if (l!=i && l!=j)\n-63 prod *= (k*x-l)/((int)i-(int)l);\n-64 result += prod;\n-65 }\n-66 }\n-67 return result;\n-68 }\n-69\n-70 // Second derivative of j-th Lagrange polynomial of degree k in one\n-dimension\n-71 // Formula and notation taken from https://en.wikipedia.org/wiki/\n-Lagrange_polynomial#Derivatives\n-72 static R ddp(unsigned int j, D x)\n-73 {\n-74 R result(0.0);\n-75\n-76 for (unsigned int i=0; i<=k; i++)\n-77 {\n-78 if (i==j)\n-79 continue;\n-80\n-81 R sum(0);\n-82\n-83 for (unsigned int m=0; m<=k; m++)\n-84 {\n-85 if (m==i || m==j)\n-86 continue;\n-87\n-88 R prod( (k*1.0)/((int)j-(int)m) );\n-89 for (unsigned int l=0; l<=k; l++)\n-90 if (l!=i && l!=j && l!=m)\n-91 prod *= (k*x-l)/((int)j-(int)l);\n-92 sum += prod;\n-93 }\n-94\n-95 result += sum * ( (k*1.0)/((int)j-(int)i) );\n-96 }\n-97\n-98 return result;\n-99 }\n-100\n-101 // Return i as a d-digit number in the (k+1)-nary system\n-102 static std::array multiindex (unsigned int i)\n-103 {\n-104 std::array alpha;\n-105 for (unsigned int j=0; j\n+_\b4_\b5 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+46 {\n+_\b4_\b7 template friend class\n+_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+48\n+50 using DomainType = FieldVector;\n+51\n+53 using RangeType = FieldVector;\n+54\n+56 using JacobianType = FieldMatrix;\n+57\n+58 // Number of vertices\n+59 static constexpr int numVertices = dim+1;\n+60\n+61 // Number of edges (or zero for dim==1)\n+62 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);\n+63\n+64 // helper function to evaluate the vertex basis functions\n+65 template \n+66 static constexpr It evaluateVertexFunctions (const DomainType& in, It outIt)\n+67 {\n+68 *outIt = 1;\n+69 for (int i = 0; i < dim; ++i)\n+70 *outIt -= in[i];\n+71 ++outIt;\n+72 for (int i = 0; i < dim; ++i)\n+73 *outIt++ = in[i];\n+74 return outIt;\n+75 }\n+76\n+77 // helper function to evaluate the basis functions\n+78 template \n+79 static constexpr It evaluateAllFunctions (const DomainType& in, It outIt)\n+80 {\n+81 It vertexValues = outIt;\n+82 outIt = evaluateVertexFunctions(in, outIt);\n+83\n+84 if constexpr(dim > 1) {\n+85 auto refElem = referenceElement(GeometryTypes::simplex(dim));\n+86 for (int i = 0; i < numEdges; ++i) {\n+87 const int v0 = refElem.subEntity(i,dim-1,0,dim);\n+88 const int v1 = refElem.subEntity(i,dim-1,1,dim);\n+89 *outIt++ = 4 * vertexValues[v0] * vertexValues[v1];\n+90 }\n+91 }\n+92\n+93 // element bubble function\n+94 *outIt = power(dim+1, dim+1);\n+95 for (int i = 0; i < numVertices; ++i)\n+96 *outIt *= vertexValues[i];\n+97 return outIt;\n+98 }\n+99\n+100 public:\n+_\b1_\b0_\b2 using _\bT_\br_\ba_\bi_\bt_\bs =\n+_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\b,_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\bR_\b,_\b1_\b,_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b,_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\by_\bp_\be_\b>;\n+103\n+_\b1_\b0_\b5 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n 106 {\n-107 alpha[j] = i % (k+1);\n-108 i = i/(k+1);\n-109 }\n-110 return alpha;\n-111 }\n-112\n-113 public:\n-114 using Traits =\n-LocalBasisTraits,R,1,FieldVector,FieldMatrix\n->;\n-115\n-118 static constexpr unsigned int size ()\n-119 {\n-120 return power(k+1, dim);\n-121 }\n-122\n-124 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n-125 std::vector& out) const\n-126 {\n-127 out.resize(size());\n-128\n-129 // Specialization for zero-order case\n-130 if (k==0)\n-131 {\n-132 out[0] = 1;\n-133 return;\n-134 }\n-135\n-136 if (k==1)\n-137 {\n-138 for (size_t i=0; i& out)\n+113 {\n+114 out.resize(_\bs_\bi_\bz_\be());\n+115 evaluateAllFunctions(in,out.begin());\n+116 }\n+117\n+_\b1_\b1_\b9 static constexpr void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const DomainType& in,\n+120 std::vector& out)\n+121 {\n+122 out.resize(_\bs_\bi_\bz_\be());\n+123\n+124 // vertex basis functions\n+125 RangeType tmp = 1;\n+126 for (int i = 0; i < dim; ++i) {\n+127 out[0][0][i] = -1;\n+128 for (int j = 0; j < dim; ++j)\n+129 out[j+1][0][i] = (i == j);\n+130 tmp -= in[i];\n+131 }\n+132\n+133 int n = numVertices;\n+134 std::array shapeValues;\n+135 evaluateVertexFunctions(in, shapeValues.begin());\n+136\n+137 // edge basis functions\n+138 if constexpr(dim > 1) {\n+139 auto refElem = referenceElement(GeometryTypes::simplex(dim));\n+140 for (int i = 0; i < numEdges; ++i,++n) {\n+141 const int v0 = refElem.subEntity(i,dim-1,0,dim);\n+142 const int v1 = refElem.subEntity(i,dim-1,1,dim);\n+143 for (int j = 0; j < dim; ++j)\n+144 out[n][0][j] = 4 * (out[v0][0][j] * shapeValues[v1] + shapeValues[v0] * out\n+[v1][0][j]);\n 145 }\n-146 return;\n-147 }\n-148\n-149 // General case\n-150 for (size_t i=0; i alpha(multiindex(i));\n-154\n-155 // initialize product\n-156 out[i] = 1.0;\n-157\n-158 // dimension by dimension\n-159 for (unsigned int j=0; j& out) const\n-171 {\n-172 out.resize(size());\n-173\n-174 // Specialization for k==0\n-175 if (k==0)\n-176 {\n-177 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n-178 return;\n-179 }\n-180\n-181 // Specialization for k==1\n-182 if (k==1)\n-183 {\n-184 // Loop over all shape functions\n-185 for (size_t i=0; i alpha(multiindex(i));\n-212\n-213 // Loop over all coordinate directions\n-214 for (unsigned int j=0; j& order,\n-235 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-236 std::vector& out) const\n-237 {\n-238 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-239\n-240 out.resize(size());\n-241\n-242 if (k==0)\n-243 {\n-244 out[0] = (totalOrder==0);\n-245 return;\n+146 }\n+147\n+148 // element bubble function\n+149 for (int i = 0; i < dim; ++i) {\n+150 out[n][0][i] = power(dim+1, dim+1) * (tmp - in[i]);\n+151 for (int j = i+1; j < dim+i; ++j)\n+152 out[n][0][i] *= in[j % dim];\n+153 }\n+154 }\n+155\n+_\b1_\b5_\b7 static constexpr void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+158 const DomainType& in,\n+159 std::vector& out)\n+160 {\n+161 unsigned int totalOrder = 0;\n+162 for (int i = 0; i < dim; ++i)\n+163 totalOrder += _\bo_\br_\bd_\be_\br[i];\n+164\n+165 switch (totalOrder) {\n+166 case 0:\n+167 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in,out);\n+168 break;\n+169 case 1: {\n+170 out.resize(_\bs_\bi_\bz_\be());\n+171 int d = 0; // the direction of differentiation\n+172 for (int i = 0; i < dim; ++i)\n+173 d += i * _\bo_\br_\bd_\be_\br[i];\n+174\n+175 // vertex basis functions\n+176 RangeType tmp = 1;\n+177 for (int i = 0; i < dim; ++i) {\n+178 out[0] = -1;\n+179 for (int j = 0; j < dim; ++j)\n+180 out[j+1] = (dim == j);\n+181 tmp -= in[i];\n+182 }\n+183\n+184 int n = numVertices;\n+185 std::array shapeValues;\n+186 evaluateVertexFunctions(in, shapeValues.begin());\n+187\n+188 // edge basis functions\n+189 if constexpr(dim > 1) {\n+190 auto refElem = referenceElement(GeometryTypes::simplex(dim));\n+191 for (int i = 0; i < numEdges; ++i,++n) {\n+192 const int v0 = refElem.subEntity(i,dim-1,0,dim);\n+193 const int v1 = refElem.subEntity(i,dim-1,1,dim);\n+194 out[n] = 4 * (out[v0] * shapeValues[v1] + shapeValues[v0] * out[v1]);\n+195 }\n+196 }\n+197\n+198 // element bubble function\n+199 out[n] = power(dim+1, dim+1) * (tmp - in[d]);\n+200 for (int j = d+1; j < dim+d; ++j)\n+201 out[n] *= in[j % dim];\n+202 } break;\n+203 default:\n+204 throw std::runtime_error(\"Desired derivative order is not implemented\");\n+205 }\n+206 }\n+207\n+_\b2_\b0_\b9 static constexpr unsigned int _\bo_\br_\bd_\be_\br () noexcept\n+210 {\n+211 return dim+1;\n+212 }\n+213 };\n+214\n+215\n+227 template \n+_\b2_\b2_\b8 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+229 {\n+230 // Number of vertices\n+231 static constexpr int numVertices = dim+1;\n+232\n+233 // Number of edges (or zero for dim==1)\n+234 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);\n+235\n+236 public:\n+_\b2_\b3_\b8 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () noexcept\n+239 {\n+240 int n = 0;\n+241 for (int i = 0; i < numVertices; ++i)\n+242 li_[n++] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim,0); // Vertex\n+243 if constexpr(dim > 1) {\n+244 for (int i = 0; i < numEdges; ++i)\n+245 li_[n++] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim-1,0); // Edges\n 246 }\n-247\n-248 if (k==1)\n-249 {\n-250 if (totalOrder == 0)\n-251 {\n-252 evaluateFunction(in, out);\n-253 }\n-254 else if (totalOrder == 1)\n-255 {\n-256 out.resize(size());\n-257\n-258 auto direction = std::distance(order.begin(), std::find(order.begin(),\n-order.end(), 1));\n-259 if (direction >= dim)\n-260 DUNE_THROW(RangeError, \"Direction of partial derivative not found!\");\n+247 li_[n++] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0); // Element\n+248 }\n+249\n+_\b2_\b5_\b1 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n+252 {\n+253 return numVertices + numEdges + 1;\n+254 }\n+255\n+_\b2_\b5_\b7 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const noexcept\n+258 {\n+259 return li_[i];\n+260 }\n 261\n-262 // Loop over all shape functions\n-263 for (std::size_t i = 0; i < size(); ++i)\n-264 {\n-265 // Initialize: the overall expression is a product\n-266 // if j-th bit of i is set to 1, otherwise to -1\n-267 out[i] = (i & (1< alpha(multiindex(i));\n-284\n-285 // Initialize: the overall expression is a product\n-286 out[i][0] = 1.0;\n-287\n-288 // rest of the product\n-289 for (std::size_t l=0; l1\n-316\n-317 // Loop over all shape functions\n-318 for (size_t i=0; i alpha(multiindex(i));\n-322\n-323 // Initialize: the overall expression is a product\n-324 out[i][0] = 1.0;\n-325\n-326 // rest of the product\n-327 for (std::size_t l=0; l\n-360 class LagrangeCubeLocalCoefficients\n-361 {\n-362 // Return i as a d-digit number in the (k+1)-nary system\n-363 static std::array multiindex (unsigned int i)\n-364 {\n-365 std::array alpha;\n-366 for (unsigned int j=0; j& subEntity)\n-376 {\n-377 assert(k>0);\n-378\n-379 unsigned lastIndex=0;\n-380\n-381 /* edge and vertex numbering\n-382 0----0----1\n-383 */\n-384\n-385 // edge (0)\n-386 subEntity[lastIndex++] = 0; // corner 0\n-387 for (unsigned i = 0; i < k - 1; ++i)\n-388 subEntity[lastIndex++] = 0; // inner dofs of element (0)\n-389\n-390 subEntity[lastIndex++] = 1; // corner 1\n-391\n-392 assert(power(k+1,dim)==lastIndex);\n-393 }\n-394\n-395 void setup2d(std::vector& subEntity)\n-396 {\n-397 assert(k>0);\n-398\n-399 unsigned lastIndex=0;\n-400\n-401 // LocalKey: entity number, entity codim, dof indices within each entity\n-402 /* edge and vertex numbering\n-403 2----3----3\n-404 | |\n-405 | |\n-406 0 1\n-407 | |\n-408 | |\n-409 0----2----1\n-410 */\n-411\n-412 // lower edge (2)\n-413 subEntity[lastIndex++] = 0; // corner 0\n-414 for (unsigned i = 0; i < k - 1; ++i)\n-415 subEntity[lastIndex++] = 2; // inner dofs of lower edge (2)\n-416\n-417 subEntity[lastIndex++] = 1; // corner 1\n-418\n-419 // iterate from bottom to top over inner edge dofs\n-420 for (unsigned e = 0; e < k - 1; ++e) {\n-421 subEntity[lastIndex++] = 0; // left edge (0)\n-422 for (unsigned i = 0; i < k - 1; ++i)\n-423 subEntity[lastIndex++] = 0; // face dofs\n-424 subEntity[lastIndex++] = 1; // right edge (1)\n-425 }\n-426\n-427 // upper edge (3)\n-428 subEntity[lastIndex++] = 2; // corner 2\n-429 for (unsigned i = 0; i < k - 1; ++i)\n-430 subEntity[lastIndex++] = 3; // inner dofs of upper edge (3)\n-431\n-432 subEntity[lastIndex++] = 3; // corner 3\n-433\n-434 assert(power(k+1,dim)==lastIndex);\n-435 }\n-436\n-437 void setup3d(std::vector& subEntity)\n-438 {\n-439 assert(k>0);\n-440\n-441 unsigned lastIndex=0;\n-442#ifndef NDEBUG\n-443 const unsigned numIndices = power(k+1,dim);\n-444 const unsigned numFaceIndices = power(k+1,dim-1);\n-445#endif\n-446 const unsigned numInnerEdgeDofs = k-1;\n-447\n-448 // LocalKey: entity number, entity codim, dof indices within each entity\n-449 /* edge and vertex numbering\n-450\n-451 6---(11)--7 6---------7\n-452 /| /| /| (5) /|\n-453 (8)| (9)| / | top / |\n-454 / (2) / (3) / |(3)bac/k |\n-455 4---(10)--5 | 4---------5 |\n-456 | | | | left|(0)| |(1)|right\n-457 | 2--(7)|---3 | 2-----|---3\n-458 (0) / (1) / |(2)front | /\n-459 |(4) |(5) | / (4) | /\n-460 |/ |/ |/ bottom |/\n-461 0---(6)---1 0---------1\n-462 */\n-463\n-464 // bottom face (4)\n-465 lastIndex=0;\n-466 // lower edge (6)\n-467 subEntity[lastIndex++] = 0; // corner 0\n-468 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-469 subEntity[lastIndex++] = 6; // inner dofs of lower edge (6)\n-470\n-471 subEntity[lastIndex++] = 1; // corner 1\n-472\n-473 // iterate from bottom to top over inner edge dofs\n-474 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {\n-475 subEntity[lastIndex++] = 4; // left edge (4)\n-476 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-477 subEntity[lastIndex++] = 4; // inner face dofs\n-478 subEntity[lastIndex++] = 5; // right edge (5)\n-479 }\n-480\n-481 // upper edge (7)\n-482 subEntity[lastIndex++] = 2; // corner 2\n-483 for (unsigned i = 0; i < k - 1; ++i)\n-484 subEntity[lastIndex++] = 7; // inner dofs of upper edge (7)\n-485 subEntity[lastIndex++] = 3; // corner 3\n-486\n-487 assert(numFaceIndices==lastIndex); // added 1 face so far\n-489\n-491 for(unsigned f = 0; f < numInnerEdgeDofs; ++f) {\n-492\n-493 // lower edge (connecting edges 0 and 1)\n-494 subEntity[lastIndex++] = 0; // dof on edge 0\n-495 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-496 subEntity[lastIndex++] = 2; // dof in front face\n-497 subEntity[lastIndex++] = 1; // dof on edge 1\n-498\n-499 // iterate from bottom to top over inner edge dofs\n-500 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {\n-501 subEntity[lastIndex++] = 0; // on left face (0)\n-502 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-503 subEntity[lastIndex++] = 0; // volume dofs\n-504 subEntity[lastIndex++] = 1; // right face (1)\n-505 }\n-506\n-507 // upper edge (connecting edges 0 and 1)\n-508 subEntity[lastIndex++] = 2; // dof on edge 2\n-509 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-510 subEntity[lastIndex++] = 3; // dof on rear face (3)\n-511 subEntity[lastIndex++] = 3; // dof on edge 3\n-512\n-513 assert(lastIndex==(f+1+1)*numFaceIndices);\n-514 }\n-515\n-517 // lower edge (10)\n-518 subEntity[lastIndex++] = 4; // corner 4\n-519 for (unsigned i = 0; i < k - 1; ++i)\n-520 subEntity[lastIndex++] = 10; // inner dofs on lower edge (10)\n-521 subEntity[lastIndex++] = 5; // corner 5\n-522\n-523 // iterate from bottom to top over inner edge dofs\n-524 for (unsigned e = 0; e < k - 1; ++e) {\n-525 subEntity[lastIndex++] = 8; // left edge (8)\n-526 for (unsigned i = 0; i < k - 1; ++i)\n-527 subEntity[lastIndex++] = 5; // face dofs\n-528 subEntity[lastIndex++] = 9; // right edge (9)\n-529 }\n-530\n-531 // upper edge (11)\n-532 subEntity[lastIndex++] = 6; // corner 6\n-533 for (unsigned i = 0; i < k - 1; ++i)\n-534 subEntity[lastIndex++] = 11; // inner dofs of upper edge (11)\n-535 subEntity[lastIndex++] = 7; // corner 7\n-536\n-537 assert(numIndices==lastIndex);\n-538 }\n-539\n-540 public:\n-542 LagrangeCubeLocalCoefficients ()\n-543 : localKeys_(size())\n-544 {\n-545 if (k==0)\n-546 {\n-547 localKeys_[0] = LocalKey(0,0,0);\n-548 return;\n-549 }\n-550\n-551 if (k==1)\n-552 {\n-553 for (std::size_t i=0; i codim(size());\n-562\n-563 for (std::size_t i=0; i mIdx = multiindex(i);\n-570 for (unsigned int j=0; j index(size());\n-581\n-582 for (std::size_t i=0; i mIdx = multiindex(i);\n-587\n-588 for (int j=dim-1; j>=0; j--)\n-589 if (mIdx[j]>0 && mIdx[j] subEntity(size());\n-595\n-596 if (dim==1) {\n-597\n-598 setup1d(subEntity);\n-599\n-600 } else if (dim==2) {\n-601\n-602 setup2d(subEntity);\n-603\n-604 } else if (dim==3) {\n-605\n-606 setup3d(subEntity);\n-607\n-608 } else\n-609 DUNE_THROW(Dune::NotImplemented, \"LagrangeCubeLocalCoefficients for order \"\n-<< k << \" and dim == \" << dim);\n-610\n-611 for (size_t i=0; i localKeys_;\n-629 };\n-630\n-635 template\n-636 class LagrangeCubeLocalInterpolation\n-637 {\n-638 public:\n-639\n-647 template\n-648 void interpolate (const F& f, std::vector& out) const\n-649 {\n-650 constexpr auto dim = LocalBasis::Traits::dimDomain;\n-651 constexpr auto k = LocalBasis::order();\n-652 using D = typename LocalBasis::Traits::DomainFieldType;\n-653\n-654 typename LocalBasis::Traits::DomainType x;\n-655\n-656 out.resize(LocalBasis::size());\n-657\n-658 // Specialization for zero-order case\n-659 if (k==0)\n-660 {\n-661 auto center = ReferenceElements::cube().position(0,0);\n-662 out[0] = f(center);\n-663 return;\n-664 }\n-665\n-666 // Specialization for first-order case\n-667 if (k==1)\n-668 {\n-669 for (unsigned int i=0; i alpha(LocalBasis::multiindex(i));\n-685\n-686 // Generate coordinate of the i-th Lagrange point\n-687 for (unsigned int j=0; j\n-_\b7_\b0_\b8 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-709 {\n-710 public:\n-_\b7_\b1_\b3 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n-_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>,\n-714 Impl::LagrangeCubeLocalCoefficients,\n-715 Impl::LagrangeCubeLocalInterpolation > >;\n-716\n-_\b7_\b1_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-720 {\n-721 return basis_;\n-722 }\n-723\n-_\b7_\b2_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-727 {\n-728 return coefficients_;\n-729 }\n-730\n-_\b7_\b3_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-734 {\n-735 return interpolation_;\n-736 }\n-737\n-_\b7_\b3_\b9 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n-740 {\n-741 return power(k+1,dim);\n-742 }\n-743\n-_\b7_\b4_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-747 {\n-748 return GeometryTypes::cube(dim);\n-749 }\n-750\n-751 private:\n-752 Impl::LagrangeCubeLocalBasis basis_;\n-753 Impl::LagrangeCubeLocalCoefficients coefficients_;\n-754 Impl::LagrangeCubeLocalInterpolation > interpolation_;\n-755 };\n-756\n-757} // namespace Dune\n-758\n-759#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH\n+262 private:\n+263 std::array li_;\n+264 };\n+265\n+269 template\n+_\b2_\b7_\b0 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+271 {\n+272 using LocalBasis = LB;\n+273 using DomainType = typename LB::Traits::DomainType;\n+274 using RangeType = typename LB::Traits::RangeType;\n+275\n+276 // Number of vertices\n+277 static constexpr int numVertices = dim+1;\n+278\n+279 // Number of edges (or zero for dim==1)\n+280 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);\n+281\n+282 public:\n+290 template,\n+292 std::enable_if_t, int> = 0>\n+_\b2_\b9_\b3 static constexpr void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out)\n+294 {\n+295 auto refElem = referenceElement\n+(GeometryTypes::simplex(dim));\n+296\n+297 out.resize(LB::size());\n+298 int n = 0;\n+299\n+300 // vertices\n+301 assert(numVertices == refElem.size(dim));\n+302 for (int i = 0; i < numVertices; ++i)\n+303 out[n++] = f(refElem.position(i,dim));\n+304\n+305 std::array shapeValues;\n+306\n+307 // edge bubbles\n+308 if constexpr(dim > 1) {\n+309 assert(numEdges == refElem.size(dim-1));\n+310 for (int i = 0; i < numEdges; ++i) {\n+311 R y = f(refElem.position(i,dim-1));\n+312 LB::evaluateVertexFunctions(refElem.position(i,dim-1), shapeValues.begin\n+());\n+313 for (int j = 0; j < numVertices; ++j)\n+314 y -= out[j]*shapeValues[j];\n+315 out[n++] = y;\n+316 }\n+317 }\n+318\n+319 // element bubble\n+320 R y = f(refElem.position(0,0));\n+321 LB::evaluateAllFunctions(refElem.position(0,0), shapeValues.begin());\n+322 for (int j = 0; j < numVertices+numEdges; ++j)\n+323 y -= out[j]*shapeValues[j];\n+324 out[n++] = y;\n+325 }\n+326 };\n+327\n+328} // end namespace Dune\n+329\n+330#endif // DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH\n _\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for cubes with arbitrary compile-time dimension and\n-polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-Returns the local basis, i.e., the set of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:719\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-Returns object that evaluates degrees of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:733\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-The reference element that the local finite element is defined on.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:746\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size()\n-The number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:739\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-Returns the assignment of the degrees of freedom to the element subentities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:726\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+P1 basis in dim-d enriched by quadratic edge bubble functions and an element\n+bubble function of order...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+static constexpr void evaluateFunction(const DomainType &in, std::vector<\n+RangeType > &out)\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+static constexpr void partial(const std::array< unsigned int, dim > &order,\n+const DomainType &in, std::vector< RangeType > &out)\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:157\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+static constexpr unsigned int order() noexcept\n+Polynomial order of the shape functions (4 in this case)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:209\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+static constexpr void evaluateJacobian(const DomainType &in, std::vector<\n+JacobianType > &out)\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size() noexcept\n+Returns number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+The local keys of the hierarchical basis functions with element bubble.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:229\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:\n+_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+HierarchicalSimplexP2WithElementBubbleLocalCoefficients() noexcept\n+Default constructor, initializes the local keys.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size() noexcept\n+Returns number of coefficients.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:251\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const noexcept\n+Returns the i'th local key.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:257\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+static constexpr void interpolate(const F &f, std::vector< C > &out)\n+Local interpolation of the function f.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:293\n _\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangepyramid.hh File Reference\n+dune-localfunctions: hierarchicalsimplexp2localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,55 @@\n \n \n \n \n \n \n \n
    \n \n-
    lagrangepyramid.hh File Reference
    \n+
    hierarchicalsimplexp2localbasis.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n+\n+

    Hierarchical p2 shape functions for the simplex. \n+More...

    \n+
    #include <numeric>
    \n #include <dune/common/fvector.hh>
    \n-#include <dune/common/math.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n #include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::LagrangePyramidLocalFiniteElement< D, R, k >
     Lagrange finite element for 3d pyramids with compile-time polynomial order. More...
    class  Dune::HierarchicalSimplexP2LocalBasis< D, R, dim >
     
    class  Dune::HierarchicalSimplexP2LocalBasis< D, R, 1 >
     Hierarchical P2 basis in 1d. More...
     
    class  Dune::HierarchicalSimplexP2LocalBasis< D, R, 2 >
     Hierarchical P2 basis in 2d. More...
     
    class  Dune::HierarchicalSimplexP2LocalBasis< D, R, 3 >
     Hierarchical P2 basis in 3d. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

    Hierarchical p2 shape functions for the simplex.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,35 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-lagrangepyramid.hh File Reference\n-#include \n+hierarchicalsimplexp2localbasis.hh File Reference\n+Hierarchical p2 shape functions for the simplex. _\bM_\bo_\br_\be_\b._\b._\b.\n #include \n-#include \n #include \n-#include \n-#include \n+#include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bk_\b _\b>\n-\u00a0 Lagrange finite element for 3d pyramids with compile-time polynomial\n- order. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>\n+\u00a0 Hierarchical P2 basis in 1d. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>\n+\u00a0 Hierarchical P2 basis in 2d. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>\n+\u00a0 Hierarchical P2 basis in 3d. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Hierarchical p2 shape functions for the simplex.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangepyramid.hh Source File\n+dune-localfunctions: hierarchicalsimplexp2localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,823 +70,366 @@\n \n \n \n \n \n \n \n
    \n-
    lagrangepyramid.hh
    \n+
    hierarchicalsimplexp2localbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH
    \n+
    5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH
    \n+
    6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <numeric>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12#include <dune/common/fvector.hh>
    \n-
    13#include <dune/common/math.hh>
    \n-
    14
    \n-
    15#include <dune/geometry/referenceelements.hh>
    \n+
    12#include <numeric>
    \n+
    13
    \n+
    14#include <dune/common/fvector.hh>
    \n+
    15#include <dune/common/fmatrix.hh>
    \n
    16
    \n \n-\n-\n-
    20
    \n-
    21namespace Dune { namespace Impl
    \n-
    22{
    \n-
    32 template<class D, class R, unsigned int k>
    \n-
    33 class LagrangePyramidLocalBasis
    \n-
    34 {
    \n-
    35 public:
    \n-
    36 using Traits = LocalBasisTraits<D,3,FieldVector<D,3>,R,1,FieldVector<R,1>,FieldMatrix<R,1,3> >;
    \n-
    37
    \n-
    40 static constexpr std::size_t size ()
    \n-
    41 {
    \n-
    42 std::size_t result = 0;
    \n-
    43 for (unsigned int i=0; i<=k; i++)
    \n-
    44 result += power(i+1,2);
    \n-
    45 return result;
    \n-
    46 }
    \n-
    47
    \n-
    49 void evaluateFunction(const typename Traits::DomainType& in,
    \n-
    50 std::vector<typename Traits::RangeType>& out) const
    \n-
    51 {
    \n-
    52 out.resize(size());
    \n+
    18
    \n+
    19namespace Dune
    \n+
    20{
    \n+
    21 template<class D, class R, int dim>
    \n+
    \n+\n+
    23 {
    \n+
    24 public:
    \n+
    \n+\n+
    26 {
    \n+
    27 DUNE_THROW(Dune::NotImplemented,"HierarchicalSimplexP2LocalBasis not implemented for dim > 3.");
    \n+
    28 }
    \n+
    \n+
    29 };
    \n+
    \n+
    30
    \n+
    46 template<class D, class R>
    \n+
    \n+\n+
    48 {
    \n+
    49 public:
    \n+
    51 typedef LocalBasisTraits<D,1,Dune::FieldVector<D,1>,R,1,Dune::FieldVector<R,1>,
    \n+
    52 Dune::FieldMatrix<R,1,1> > Traits;
    \n
    53
    \n-
    54 // Specialization for zero-order case
    \n-
    55 if (k==0)
    \n-
    56 {
    \n-
    57 out[0] = 1;
    \n-
    58 return;
    \n-
    59 }
    \n-
    60
    \n-
    61 if (k==1)
    \n-
    62 {
    \n-
    63 if(in[0] > in[1])
    \n-
    64 {
    \n-
    65 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[1]);
    \n-
    66 out[1] = in[0]*(1-in[1])-in[2]*in[1];
    \n-
    67 out[2] = (1-in[0])*in[1]-in[2]*in[1];
    \n-
    68 out[3] = in[0]*in[1]+in[2]*in[1];
    \n-
    69 }
    \n-
    70 else
    \n-
    71 {
    \n-
    72 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[0]);
    \n-
    73 out[1] = in[0]*(1-in[1])-in[2]*in[0];
    \n-
    74 out[2] = (1-in[0])*in[1]-in[2]*in[0];
    \n-
    75 out[3] = in[0]*in[1]+in[2]*in[0];
    \n-
    76 }
    \n+
    \n+
    55 unsigned int size () const
    \n+
    56 {
    \n+
    57 return 3;
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+
    61 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    62 std::vector<typename Traits::RangeType>& out) const
    \n+
    63 {
    \n+
    64 out.resize(3);
    \n+
    65
    \n+
    66 out[0] = 1-in[0];
    \n+
    67 out[1] = 1-4*(in[0]-0.5)*(in[0]-0.5);
    \n+
    68 out[2] = in[0];
    \n+
    69 }
    \n+
    \n+
    70
    \n+
    72 inline void
    \n+
    \n+
    73 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    74 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    75 {
    \n+
    76 out.resize(3);
    \n
    77
    \n-
    78 out[4] = in[2];
    \n-
    79
    \n-
    80 return;
    \n-
    81 }
    \n+
    78 out[0][0][0] = -1;
    \n+
    79 out[1][0][0] = 4-8*in[0];
    \n+
    80 out[2][0][0] = 1;
    \n+
    81 }
    \n+
    \n
    82
    \n-
    83 if (k==2)
    \n-
    84 {
    \n-
    85 // transform to reference element with base [-1,1]^2
    \n-
    86 const R x = 2.0*in[0] + in[2] - 1.0;
    \n-
    87 const R y = 2.0*in[1] + in[2] - 1.0;
    \n-
    88 const R z = in[2];
    \n-
    89
    \n-
    90 if (x > y)
    \n-
    91 {
    \n-
    92 // vertices
    \n-
    93 out[0] = 0.25*(x + z)*(x + z - 1)*(y - z - 1)*(y - z);
    \n-
    94 out[1] = -0.25*(x + z)*(y - z)*((x + z + 1)*(-y + z + 1) - 4*z) - z*(x - y);
    \n-
    95 out[2] = 0.25*(x + z)*(y - z)*(y - z + 1)*(x + z - 1);
    \n-
    96 out[3] = 0.25*(y - z)*(x + z)*(y - z + 1)*(x + z + 1);
    \n-
    97 out[4] = z*(2*z - 1);
    \n-
    98
    \n-
    99 // lower edges
    \n-
    100 out[5] = -0.5*(y - z + 1)*(x + z - 1)*(y - 1)*x;
    \n-
    101 out[6] = -0.5*(y - z + 1)*(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1));
    \n-
    102 out[7] = -0.5*(x + z - 1)*(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1));
    \n-
    103 out[8] = -0.5*(y - z + 1)*(x + z - 1)*(x + 1)*y;
    \n-
    104
    \n-
    105 // upper edges
    \n-
    106 out[9] = z*(x + z - 1)*(y - z - 1);
    \n-
    107 out[10] = -z*((x + z + 1)*(y - z - 1) + 4*z);
    \n-
    108 out[11] = -z*(y - z + 1)*(x + z - 1);
    \n-
    109 out[12] = z*(y - z + 1)*(x + z + 1);
    \n-
    110
    \n-
    111 // base face
    \n-
    112 out[13] = (y - z + 1)*(x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1));
    \n-
    113 }
    \n-
    114 else
    \n-
    115 {
    \n-
    116 // vertices
    \n-
    117 out[0] = 0.25*(y + z)*(y + z - 1)*(x - z - 1)*(x - z);
    \n-
    118 out[1] = -0.25*(x - z)*(y + z)*(x - z + 1)*(-y - z + 1);
    \n-
    119 out[2] = 0.25*(x - z)*(y + z)*((x - z - 1)*(y + z + 1) + 4*z) + z*(x - y);
    \n-
    120 out[3] = 0.25*(y + z)*(x - z)*(x - z + 1)*(y + z + 1);
    \n-
    121 out[4] = z*(2*z - 1);
    \n-
    122
    \n-
    123 // lower edges
    \n-
    124 out[5] = -0.5*(y + z - 1)*(((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1));
    \n-
    125 out[6] = -0.5*(x - z + 1)*(y + z - 1)*(y + 1)*x;
    \n-
    126 out[7] = -0.5*(x - z + 1)*(y + z - 1)*(x - 1)*y;
    \n-
    127 out[8] = -0.5*(x - z + 1)*(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1));
    \n-
    128
    \n-
    129 // upper edges
    \n-
    130 out[9] = z*(y + z - 1)*(x - z - 1);
    \n-
    131 out[10] = -z*(x - z + 1)*(y + z - 1);
    \n-
    132 out[11] = -z*((y + z + 1)*(x - z - 1) + 4*z);
    \n-
    133 out[12] = z*(x - z + 1)*(y + z + 1);
    \n-
    134
    \n-
    135 // base face
    \n-
    136 out[13] = (x - z + 1)*(y + z - 1)*((y + 1)*(x - 1) - z*(x - y - z - 1));
    \n-
    137 }
    \n-
    138
    \n-
    139 return;
    \n-
    140 }
    \n-
    141
    \n-
    142 DUNE_THROW(NotImplemented, "LagrangePyramidLocalBasis::evaluateFunction for order " << k);
    \n-
    143 }
    \n-
    144
    \n-
    150 void evaluateJacobian(const typename Traits::DomainType& in,
    \n-
    151 std::vector<typename Traits::JacobianType>& out) const
    \n-
    152 {
    \n-
    153 out.resize(size());
    \n-
    154
    \n-
    155 // Specialization for k==0
    \n-
    156 if (k==0)
    \n-
    157 {
    \n-
    158 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n-
    159 return;
    \n-
    160 }
    \n-
    161
    \n-
    162 if (k==1)
    \n-
    163 {
    \n-
    164 if(in[0] > in[1])
    \n-
    165 {
    \n-
    166 out[0][0] = {-1 + in[1], -1 + in[0] + in[2], -1 + in[1]};
    \n-
    167 out[1][0] = { 1 - in[1], -in[0] - in[2], -in[1]};
    \n-
    168 out[2][0] = { -in[1], 1 - in[0] - in[2], -in[1]};
    \n-
    169 out[3][0] = { in[1], in[0] + in[2], in[1]};
    \n-
    170 }
    \n-
    171 else
    \n-
    172 {
    \n-
    173 out[0][0] = {-1 + in[1] + in[2], -1 + in[0], -1 + in[0]};
    \n-
    174 out[1][0] = { 1 - in[1] - in[2], -in[0], -in[0]};
    \n-
    175 out[2][0] = { -in[1] - in[2], 1 - in[0], -in[0]};
    \n-
    176 out[3][0] = { in[1] + in[2], in[0], in[0]};
    \n-
    177 }
    \n-
    178
    \n-
    179 out[4][0] = {0, 0, 1};
    \n-
    180 return;
    \n-
    181 }
    \n-
    182
    \n-
    183 if (k==2)
    \n-
    184 {
    \n-
    185 // transform to reference element with base [-1,1]^2
    \n-
    186 const R x = 2.0*in[0] + in[2] - 1.0;
    \n-
    187 const R y = 2.0*in[1] + in[2] - 1.0;
    \n-
    188 const R z = in[2];
    \n-
    189
    \n-
    190 // transformation of the gradient leads to a multiplication
    \n-
    191 // with the Jacobian [2 0 0; 0 2 0; 1 1 1]
    \n-
    192 if (x > y)
    \n-
    193 {
    \n-
    194 // vertices
    \n-
    195 out[0][0][0] = 0.5*(y - z - 1)*(y - z)*(2*x + 2*z - 1);
    \n-
    196 out[0][0][1] = 0.5*(x + z)*(x + z - 1)*(2*y - 2*z - 1);
    \n-
    197 out[0][0][2] = 0.5*(out[0][0][0] + out[0][0][1])
    \n-
    198 + 0.25*((2*x + 2*z - 1)*(y - z - 1)*(y - z)
    \n-
    199 + (x + z)*(x + z - 1)*(-2*y + 2*z + 1));
    \n-
    200
    \n-
    201 out[1][0][0] = 2*(-0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z)
    \n-
    202 + (x + z)*(y - z)*(-y + z + 1)) - z);
    \n-
    203 out[1][0][1] = 2*(-0.25*((x + z)*((x + z + 1)*(-y + z + 1) - 4*z)
    \n-
    204 + (x + z)*(y - z)*(-(x + z + 1))) + z);
    \n-
    205 out[1][0][2] = 0.5*(out[1][0][0] + out[1][0][1])
    \n-
    206 - 0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z)
    \n-
    207 - (x + z)*((x + z + 1)*(-y + z + 1) - 4*z)
    \n-
    208 + (x + z)*(y - z)*(x - y + 2*z - 2))
    \n-
    209 - (x - y);
    \n-
    210
    \n-
    211 out[2][0][0] = 0.5*(y - z)*(y - z + 1)*(2*x + 2*z - 1);
    \n-
    212 out[2][0][1] = 0.5*(x + z)*(2*y - 2*z + 1)*(x + z - 1);
    \n-
    213 out[2][0][2] = 0.5*(out[2][0][0] + out[2][0][1])
    \n-
    214 + 0.25*((y - x - 2*z)*(y - z + 1)*(x + z - 1)
    \n-
    215 + (x + z)*(y - z)*(y - x - 2*z + 2));
    \n+
    \n+
    84 void partial (const std::array<unsigned int, 1>& order,
    \n+
    85 const typename Traits::DomainType& in, // position
    \n+
    86 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    87 {
    \n+
    88 auto totalOrder = order[0];
    \n+
    89 if (totalOrder == 0) {
    \n+
    90 evaluateFunction(in, out);
    \n+
    91 } else if (totalOrder == 1) {
    \n+
    92 out.resize(size());
    \n+
    93 out[0] = -1;
    \n+
    94 out[1] = 4-8*in[0];
    \n+
    95 out[2] = 1;
    \n+
    96 } else if (totalOrder == 2) {
    \n+
    97 out.resize(size());
    \n+
    98 out[0] = 0;
    \n+
    99 out[1] = -8;
    \n+
    100 out[2] = 0;
    \n+
    101 } else {
    \n+
    102 out.resize(size());
    \n+
    103 out[0] = out[1] = out[2] = 0;
    \n+
    104 }
    \n+
    105 }
    \n+
    \n+
    106
    \n+
    \n+
    109 unsigned int order () const
    \n+
    110 {
    \n+
    111 return 2;
    \n+
    112 }
    \n+
    \n+
    113
    \n+
    114 };
    \n+
    \n+
    115
    \n+
    136 template<class D, class R>
    \n+
    \n+\n+
    138 {
    \n+
    139 public:
    \n+
    141 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,1,Dune::FieldVector<R,1>,
    \n+
    142 Dune::FieldMatrix<R,1,2> > Traits;
    \n+
    143
    \n+
    \n+
    145 unsigned int size () const
    \n+
    146 {
    \n+
    147 return 6;
    \n+
    148 }
    \n+
    \n+
    149
    \n+
    \n+
    151 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    152 std::vector<typename Traits::RangeType>& out) const
    \n+
    153 {
    \n+
    154 out.resize(6);
    \n+
    155
    \n+
    156 out[0] = 1 - in[0] - in[1];
    \n+
    157 out[1] = 4*in[0]*(1-in[0]-in[1]);
    \n+
    158 out[2] = in[0];
    \n+
    159 out[3] = 4*in[1]*(1-in[0]-in[1]);
    \n+
    160 out[4] = 4*in[0]*in[1];
    \n+
    161 out[5] = in[1];
    \n+
    162
    \n+
    163 }
    \n+
    \n+
    164
    \n+
    166 inline void
    \n+
    \n+
    167 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    168 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    169 {
    \n+
    170 out.resize(6);
    \n+
    171
    \n+
    172 out[0][0][0] = -1; out[0][0][1] = -1;
    \n+
    173 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];
    \n+
    174 out[2][0][0] = 1; out[2][0][1] = 0;
    \n+
    175 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];
    \n+
    176 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];
    \n+
    177 out[5][0][0] = 0; out[5][0][1] = 1;
    \n+
    178 }
    \n+
    \n+
    179
    \n+
    \n+
    181 void partial (const std::array<unsigned int, 2>& order,
    \n+
    182 const typename Traits::DomainType& in, // position
    \n+
    183 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    184 {
    \n+
    185 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    186 if (totalOrder == 0) {
    \n+
    187 evaluateFunction(in, out);
    \n+
    188 } else if (totalOrder == 1) {
    \n+
    189 out.resize(size());
    \n+
    190 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    191
    \n+
    192 switch (direction) {
    \n+
    193 case 0:
    \n+
    194 out[0] = -1;
    \n+
    195 out[1] = 4-8*in[0]-4*in[1];
    \n+
    196 out[2] = 1;
    \n+
    197 out[3] = -4*in[1];
    \n+
    198 out[4] = 4*in[1];
    \n+
    199 out[5] = 0;
    \n+
    200 break;
    \n+
    201 case 1:
    \n+
    202 out[0] = -1;
    \n+
    203 out[1] = -4*in[0];
    \n+
    204 out[2] = 0;
    \n+
    205 out[3] = 4-4*in[0]-8*in[1];
    \n+
    206 out[4] = 4*in[0];
    \n+
    207 out[5] = 1;
    \n+
    208 break;
    \n+
    209 default:
    \n+
    210 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    211 }
    \n+
    212 } else {
    \n+
    213 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    214 }
    \n+
    215 }
    \n+
    \n
    216
    \n-
    217 out[3][0][0] = 0.5*(y - z)*(2*x + 2*z + 1)*(y - z + 1);
    \n-
    218 out[3][0][1] = 0.5*(2*y - 2*z + 1)*(x + z)*(x + z + 1);
    \n-
    219 out[3][0][2] = 0.5*(out[3][0][0] + out[3][0][1])
    \n-
    220 + 0.25*((y - x - 2*z)*(y - z + 1)*(x + z + 1)
    \n-
    221 + (y - z)*(x + z)*(y - x - 2*z));
    \n-
    222
    \n-
    223 out[4][0][0] = 0;
    \n-
    224 out[4][0][1] = 0;
    \n-
    225 out[4][0][2] = 4*z - 1;
    \n-
    226
    \n-
    227 // lower edges
    \n-
    228 out[5][0][0] = -(y - z + 1)*(y - 1)*(2*x + z - 1);
    \n-
    229 out[5][0][1] = -(x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x;
    \n-
    230 out[5][0][2] = 0.5*(out[5][0][0] + out[5][0][1])
    \n-
    231 + 0.5*(x + z - 1)*(y - 1)*x - 0.5*(y - z + 1)*(y - 1)*x;
    \n-
    232
    \n-
    233 out[6][0][0] = -(y - z + 1)*(2*x + z + 1)*(y - 1);
    \n-
    234 out[6][0][1] = -(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1)
    \n-
    235 + (y - z + 1)*((x + z + 1)*x + 2*z));
    \n-
    236 out[6][0][2] = 0.5*(out[6][0][0] + out[6][0][1])
    \n-
    237 - 0.5*(-(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1))
    \n-
    238 + (y - z + 1)*(((y - 1)*x - 1) + 2*y + 1));
    \n-
    239
    \n-
    240 out[7][0][0] = -(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1)
    \n-
    241 + (x + z - 1)*((y - z - 1)*y + 2*z));
    \n-
    242 out[7][0][1] = -(x + z - 1)*(2*y - z - 1)*(x + 1);
    \n-
    243 out[7][0][2] = 0.5*(out[7][0][0] + out[7][0][1])
    \n-
    244 - 0.5*(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1)
    \n-
    245 + (x + z - 1)*((-(x + 1)*y - 1) + 2*x + 1));
    \n-
    246
    \n-
    247 out[8][0][0] = -(y - z + 1)*(2*x + z)*y;
    \n-
    248 out[8][0][1] = -(2*y - z + 1)*(x + z - 1)*(x + 1);
    \n-
    249 out[8][0][2] = 0.5*(out[8][0][0] + out[8][0][1])
    \n-
    250 - 0.5*(-x + y - 2*z + 2)*(x + 1)*y;
    \n-
    251
    \n-
    252 // upper edges
    \n-
    253 out[9][0][0] = 2*z*(y - z - 1);
    \n-
    254 out[9][0][1] = 2*z*(x + z - 1);
    \n-
    255 out[9][0][2] = 0.5*(out[9][0][0] + out[9][0][1])
    \n-
    256 + (x + z - 1)*(y - z - 1) + z*(-x + y - 2*z);
    \n+
    \n+
    219 unsigned int order () const
    \n+
    220 {
    \n+
    221 return 2;
    \n+
    222 }
    \n+
    \n+
    223
    \n+
    224 };
    \n+
    \n+
    225
    \n+
    250 template<class D, class R>
    \n+
    \n+\n+
    252 {
    \n+
    253 public:
    \n+
    255 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
    \n+
    256 Dune::FieldMatrix<R,1,3> > Traits;
    \n
    257
    \n-
    258 out[10][0][0] = -2*z*(y - z - 1);
    \n-
    259 out[10][0][1] = -2*z*(x + z + 1);
    \n-
    260 out[10][0][2] = 0.5*(out[10][0][0] + out[10][0][1])
    \n-
    261 - ((x + z + 1)*(y - z - 1) + 4*z)
    \n-
    262 - z*(-x + y - 2*z + 2);
    \n+
    \n+
    259 unsigned int size () const
    \n+
    260 {
    \n+
    261 return 10;
    \n+
    262 }
    \n+
    \n
    263
    \n-
    264 out[11][0][0] = -2*z*(y - z + 1);
    \n-
    265 out[11][0][1] = -2*z*(x + z - 1);
    \n-
    266 out[11][0][2] = 0.5*(out[11][0][0] + out[11][0][1])
    \n-
    267 - (y - z + 1)*(x + z - 1) - z*(-x + y - 2*z + 2);
    \n-
    268
    \n-
    269 out[12][0][0] = 2*z*(y - z + 1);
    \n-
    270 out[12][0][1] = 2*z*(x + z + 1);
    \n-
    271 out[12][0][2] = 0.5*(out[12][0][0] + out[12][0][1])
    \n-
    272 + (y - z + 1)*(x + z + 1) + z*(-x + y - 2*z);
    \n-
    273
    \n-
    274 // base face
    \n-
    275 out[13][0][0] = 2*((y - z + 1)*((y - 1)*(x + 1) + z*(x - y + z + 1))
    \n-
    276 + (y - z + 1)*(x + z - 1)*(y - 1 + z));
    \n-
    277 out[13][0][1] = 2*((x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1))
    \n-
    278 + (y - z + 1)*(x + z - 1)*(x + 1 - z));
    \n-
    279 out[13][0][2] = 0.5*(out[13][0][0] + out[13][0][1])
    \n-
    280 + ((-x + y - 2*z + 2)*((y - 1)*(x + 1) + z*(x - y + z + 1))
    \n-
    281 + (y - z + 1)*(x + z - 1)*(x - y + 2*z + 1));
    \n-
    282 }
    \n-
    283 else
    \n-
    284 {
    \n-
    285 // vertices
    \n-
    286 out[0][0][0] = 0.5*(y + z)*(y + z - 1)*(2*x - 2*z - 1);
    \n-
    287 out[0][0][1] = 0.5*(2*y + 2*z - 1)*(x - z - 1)*(x - z);
    \n-
    288 out[0][0][2] = 0.5*(out[0][0][0] + out[0][0][1])
    \n-
    289 + 0.25*((2*y + 2*z - 1)*(x - z - 1)*(x - z)
    \n-
    290 + (y + z)*(y + z - 1)*(-2*x + 2*z + 1));
    \n-
    291
    \n-
    292 out[1][0][0] = -0.5*(y + z)*(2*x - 2*z + 1)*(-y - z + 1);
    \n-
    293 out[1][0][1] = -0.5*(x - z)*(x - z + 1)*(-2*y - 2*z + 1);
    \n-
    294 out[1][0][2] = 0.5*(out[1][0][0] + out[1][0][1])
    \n-
    295 - 0.25*((x - y - 2*z)*(x - z + 1)*(-y - z + 1)
    \n-
    296 + (x - z)*(y + z)*(-x + y + 2*z - 2));
    \n-
    297
    \n-
    298 out[2][0][0] = 0.5*((y + z)*((x - z - 1)*(y + z + 1) + 4*z)
    \n-
    299 + (x - z)*(y + z)*(y + z + 1) + 4*z);
    \n-
    300 out[2][0][1] = 0.5*((x - z)*((x - z - 1)*(y + z + 1) + 4*z)
    \n-
    301 + (x - z)*(y + z)*(x - z - 1) - 4*z);
    \n-
    302 out[2][0][2] = 0.5*(out[2][0][0] + out[2][0][1])
    \n-
    303 + 0.25*((x - y - 2*z)*((x - z - 1)*(y + z + 1) + 4*z)
    \n-
    304 + (x - z)*(y + z)*(x - y - 2*z + 2) + 4*(x - y));
    \n-
    305
    \n-
    306 out[3][0][0] = 0.5*(y + z)*(2*x - 2*z + 1)*(y + z + 1);
    \n-
    307 out[3][0][1] = 0.5*(x - z)*(x - z + 1)*(2*y + 2*z + 1);
    \n-
    308 out[3][0][2] = 0.5*(out[3][0][0] + out[3][0][1])
    \n-
    309 + 0.25*((x - y - 2*z)*(x - z + 1)*(y + z + 1)
    \n-
    310 + (y + z)*(x - z)*(x - y - 2*z));
    \n+
    \n+
    265 void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    266 std::vector<typename Traits::RangeType>& out) const
    \n+
    267 {
    \n+
    268 out.resize(10);
    \n+
    269
    \n+
    270 out[0] = 1 - in[0] - in[1] - in[2];
    \n+
    271 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);
    \n+
    272 out[2] = in[0];
    \n+
    273 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);
    \n+
    274 out[4] = 4 * in[0] * in[1];
    \n+
    275 out[5] = in[1];
    \n+
    276 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);
    \n+
    277 out[7] = 4 * in[0] * in[2];
    \n+
    278 out[8] = 4 * in[1] * in[2];
    \n+
    279 out[9] = in[2];
    \n+
    280 }
    \n+
    \n+
    281
    \n+
    \n+
    283 void evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    284 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    285 {
    \n+
    286 out.resize(10);
    \n+
    287
    \n+
    288 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;
    \n+
    289 out[1][0][0] = 4-8*in[0]-4*in[1]-4*in[2]; out[1][0][1] = -4*in[0]; out[1][0][2] = -4*in[0];
    \n+
    290 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    291 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1]-4*in[2]; out[3][0][2] = -4*in[1];
    \n+
    292 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;
    \n+
    293 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;
    \n+
    294 out[6][0][0] = -4*in[2]; out[6][0][1] = -4*in[2]; out[6][0][2] = 4-4*in[0]-4*in[1]-8*in[2];
    \n+
    295 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];
    \n+
    296 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];
    \n+
    297 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;
    \n+
    298 }
    \n+
    \n+
    299
    \n+
    \n+
    301 void partial (const std::array<unsigned int, 3>& order,
    \n+
    302 const typename Traits::DomainType& in, // position
    \n+
    303 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    304 {
    \n+
    305 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    306 if (totalOrder == 0) {
    \n+
    307 evaluateFunction(in, out);
    \n+
    308 } else if (totalOrder == 1) {
    \n+
    309 out.resize(size());
    \n+
    310 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n
    311
    \n-
    312 out[4][0][0] = 0;
    \n-
    313 out[4][0][1] = 0;
    \n-
    314 out[4][0][2] = 4*z - 1;
    \n-
    315
    \n-
    316 // lower edges
    \n-
    317 out[5][0][0] = -(y + z - 1)*(2*x - z - 1)*(y + 1);
    \n-
    318 out[5][0][1] = -(((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1)
    \n-
    319 + (y + z - 1)*((x - z - 1)*x + 2*z));
    \n-
    320 out[5][0][2] = 0.5*(out[5][0][0] + out[5][0][1])
    \n-
    321 - 0.5*((((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1))
    \n-
    322 + (y + z - 1)*((-(y + 1)*x - 1) + 2*y + 1));
    \n-
    323
    \n-
    324 out[6][0][0] = -(2*x - z + 1)*(y + z - 1)*(y + 1);
    \n-
    325 out[6][0][1] = -(x - z + 1)*(2*y + z)*x;
    \n-
    326 out[6][0][2] = 0.5*(out[6][0][0] + out[6][0][1])
    \n-
    327 - 0.5*(x - y - 2*z + 2)*(y + 1)*x;
    \n-
    328
    \n-
    329 out[7][0][0] = -(2*x - z)*(y + z - 1)*y;
    \n-
    330 out[7][0][1] = -(x - z + 1)*(2*y + z - 1)*(x - 1);
    \n-
    331 out[7][0][2] = 0.5*(out[7][0][0] + out[7][0][1])
    \n-
    332 - 0.5*(x - y - 2*z + 2)*(x - 1)*y;
    \n-
    333
    \n-
    334 out[8][0][0] = -(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1)
    \n-
    335 + (x - z + 1)*((y + z + 1)*y + 2*z));
    \n-
    336 out[8][0][1] = -(x - z + 1)*(2*y + z + 1)*(x - 1);
    \n-
    337 out[8][0][2] = 0.5*(out[8][0][0] + out[8][0][1])
    \n-
    338 - 0.5*(-(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1))
    \n-
    339 + (x - z + 1)*(((x - 1)*y - 1) + 2*x + 1));
    \n-
    340
    \n-
    341 // upper edges
    \n-
    342 out[9][0][0] = 2*z*(y + z - 1);
    \n-
    343 out[9][0][1] = 2*z*(x - z - 1);
    \n-
    344 out[9][0][2] = 0.5*(out[9][0][0] + out[9][0][1])
    \n-
    345 + (y + z - 1)*(x - z - 1) + z*(x - y - 2*z);
    \n-
    346
    \n-
    347 out[10][0][0] = -2*z*(y + z - 1);
    \n-
    348 out[10][0][1] = -2*z*(x - z + 1);
    \n-
    349 out[10][0][2] = 0.5*(out[10][0][0] + out[10][0][1])
    \n-
    350 - (x - z + 1)*(y + z - 1) - z*(x - y - 2*z + 2);
    \n-
    351
    \n-
    352 out[11][0][0] = -2*z*(y + z + 1);
    \n-
    353 out[11][0][1] = -2*z*(x - z - 1);
    \n-
    354 out[11][0][2] = 0.5*(out[11][0][0] + out[11][0][1])
    \n-
    355 - ((y + z + 1)*(x - z - 1) + 4*z) - z*(x - y - 2*z + 2);
    \n+
    312 switch (direction) {
    \n+
    313 case 0:
    \n+
    314 out[0] = -1;
    \n+
    315 out[1] = 4-8*in[0]-4*in[1]-4*in[2];
    \n+
    316 out[2] = 1;
    \n+
    317 out[3] = -4*in[1];
    \n+
    318 out[4] = 4*in[1];
    \n+
    319 out[5] = 0;
    \n+
    320 out[6] = -4*in[2];
    \n+
    321 out[7] = 4*in[2];
    \n+
    322 out[8] = 0;
    \n+
    323 out[9] = 0;
    \n+
    324 break;
    \n+
    325 case 1:
    \n+
    326 out[0] = -1;
    \n+
    327 out[1] = -4*in[0];
    \n+
    328 out[2] = 0;
    \n+
    329 out[3] = 4-4*in[0]-8*in[1]-4*in[2];
    \n+
    330 out[4] = 4*in[0];
    \n+
    331 out[5] = 1;
    \n+
    332 out[6] = -4*in[2];
    \n+
    333 out[7] = 0;
    \n+
    334 out[8] = 4*in[2];
    \n+
    335 out[9] = 0;
    \n+
    336 break;
    \n+
    337 case 2:
    \n+
    338 out[0] = -1;
    \n+
    339 out[1] = -4*in[0];
    \n+
    340 out[2] = 0;
    \n+
    341 out[3] = -4*in[1];
    \n+
    342 out[4] = 0;
    \n+
    343 out[5] = 0;
    \n+
    344 out[6] = 4-4*in[0]-4*in[1]-8*in[2];
    \n+
    345 out[7] = 4*in[0];
    \n+
    346 out[8] = 4*in[1];
    \n+
    347 out[9] = 1;
    \n+
    348 break;
    \n+
    349 default:
    \n+
    350 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    351 }
    \n+
    352 } else {
    \n+
    353 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    354 }
    \n+
    355 }
    \n+
    \n
    356
    \n-
    357 out[12][0][0] = 2*z*(y + z + 1);
    \n-
    358 out[12][0][1] = 2*z*(x - z + 1);
    \n-
    359 out[12][0][2] = 0.5*(out[12][0][0] + out[12][0][1])
    \n-
    360 + (x - z + 1)*(y + z + 1) + z*(x - y - 2*z);
    \n-
    361
    \n-
    362 // base face
    \n-
    363 out[13][0][0] = 2*((y + z - 1)*((y + 1)*(x - 1) - z*(x - y - z - 1))
    \n-
    364 + (x - z + 1)*(y + z - 1)*(y + 1 - z));
    \n-
    365 out[13][0][1] = 2*((x - z + 1)*((y + 1)*(x - 1) - z*(x - y - z - 1))
    \n-
    366 + (x - z + 1)*(y + z - 1)*(x - 1 + z));
    \n-
    367 out[13][0][2] = 0.5*(out[13][0][0] + out[13][0][1])
    \n-
    368 + (x - y - 2*z + 2)*((y + 1)*(x - 1) - z*(x - y - z - 1))
    \n-
    369 + (x - z + 1)*(y + z - 1)*(-(x - y - 2*z - 1));
    \n-
    370 }
    \n-
    371
    \n-
    372 return;
    \n-
    373 }
    \n-
    374
    \n-
    375 DUNE_THROW(NotImplemented, "LagrangePyramidLocalBasis::evaluateJacobian for order " << k);
    \n-
    376 }
    \n-
    377
    \n-
    384 void partial(const std::array<unsigned int,3>& order,
    \n-
    385 const typename Traits::DomainType& in,
    \n-
    386 std::vector<typename Traits::RangeType>& out) const
    \n-
    387 {
    \n-
    388 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    389
    \n-
    390 out.resize(size());
    \n-
    391
    \n-
    392 if (totalOrder == 0)
    \n-
    393 {
    \n-
    394 evaluateFunction(in, out);
    \n-
    395 return;
    \n-
    396 }
    \n-
    397
    \n-
    398 if (k==0)
    \n-
    399 {
    \n-
    400 out[0] = 0;
    \n-
    401 return;
    \n-
    402 }
    \n-
    403
    \n-
    404 if (k==1)
    \n-
    405 {
    \n-
    406 if (totalOrder == 1)
    \n-
    407 {
    \n-
    408 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    409 if (in[0] > in[1])
    \n-
    410 {
    \n-
    411 switch (direction)
    \n-
    412 {
    \n-
    413 case 0:
    \n-
    414 out[0] = -1 + in[1];
    \n-
    415 out[1] = 1 - in[1];
    \n-
    416 out[2] = -in[1];
    \n-
    417 out[3] = in[1];
    \n-
    418 out[4] = 0;
    \n-
    419 break;
    \n-
    420 case 1:
    \n-
    421 out[0] = -1 + in[0] + in[2];
    \n-
    422 out[1] = -in[0] - in[2];
    \n-
    423 out[2] = 1 - in[0] - in[2];
    \n-
    424 out[3] = in[0]+in[2];
    \n-
    425 out[4] = 0;
    \n-
    426 break;
    \n-
    427 case 2:
    \n-
    428 out[0] = -1 + in[1];
    \n-
    429 out[1] = -in[1];
    \n-
    430 out[2] = -in[1];
    \n-
    431 out[3] = in[1];
    \n-
    432 out[4] = 1;
    \n-
    433 break;
    \n-
    434 default:
    \n-
    435 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    436 }
    \n-
    437 }
    \n-
    438 else /* (in[0] <= in[1]) */
    \n-
    439 {
    \n-
    440 switch (direction)
    \n-
    441 {
    \n-
    442 case 0:
    \n-
    443 out[0] = -1 + in[1] + in[2];
    \n-
    444 out[1] = 1 - in[1] - in[2];
    \n-
    445 out[2] = -in[1] - in[2];
    \n-
    446 out[3] = in[1] + in[2];
    \n-
    447 out[4] = 0;
    \n-
    448 break;
    \n-
    449 case 1:
    \n-
    450 out[0] = -1 + in[0];
    \n-
    451 out[1] = -in[0];
    \n-
    452 out[2] = 1 - in[0];
    \n-
    453 out[3] = in[0];
    \n-
    454 out[4] = 0;
    \n-
    455 break;
    \n-
    456 case 2:
    \n-
    457 out[0] = -1 + in[0];
    \n-
    458 out[1] = -in[0];
    \n-
    459 out[2] = -in[0];
    \n-
    460 out[3] = in[0];
    \n-
    461 out[4] = 1;
    \n-
    462 break;
    \n-
    463 default:
    \n-
    464 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    465 }
    \n-
    466 }
    \n-
    467 } else if (totalOrder == 2)
    \n-
    468 {
    \n-
    469 if ((order[0] == 1 && order[1] == 1) ||
    \n-
    470 (order[1] == 1 && order[2] == 1 && in[0] > in[1]) ||
    \n-
    471 (order[0] == 1 && order[2] == 1 && in[0] <=in[1]))
    \n-
    472 {
    \n-
    473 out = {1, -1, -1, 1, 0};
    \n-
    474 } else
    \n-
    475 {
    \n-
    476 out = {0, 0, 0, 0, 0};
    \n-
    477 }
    \n-
    478
    \n-
    479 } else
    \n-
    480 {
    \n-
    481 out = {0, 0, 0, 0, 0};
    \n-
    482 }
    \n-
    483
    \n-
    484 return;
    \n-
    485 }
    \n-
    486
    \n-
    487 if (k==2)
    \n-
    488 {
    \n-
    489 if (totalOrder == 1)
    \n-
    490 {
    \n-
    491 // transform to reference element with base [-1,1]^2
    \n-
    492 const R x = 2.0*in[0] + in[2] - 1.0;
    \n-
    493 const R y = 2.0*in[1] + in[2] - 1.0;
    \n-
    494 const R z = in[2];
    \n-
    495
    \n-
    496 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    497
    \n-
    498 // transformation of the gradient leads to a multiplication
    \n-
    499 // with the Jacobian [2 0 0; 0 2 0; 1 1 1]
    \n-
    500 if (x > y)
    \n-
    501 {
    \n-
    502 switch (direction)
    \n-
    503 {
    \n-
    504 case 0:
    \n-
    505 out[0] = 0.5*(y - z - 1)*(y - z)*(2*x + 2*z - 1);
    \n-
    506 out[1] = 2*(-0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z) + (x + z)*(y - z)*(-y + z + 1)) - z);
    \n-
    507 out[2] = 0.5*(y - z)*(y - z + 1)*(2*x + 2*z - 1);
    \n-
    508 out[3] = 0.5*(y - z)*(2*x + 2*z + 1)*(y - z + 1);
    \n-
    509 out[4] = 0;
    \n-
    510 out[5] = -(y - z + 1)*(2*x + z - 1)*(y - 1);
    \n-
    511 out[6] = -(y - z + 1)*(2*x + z + 1)*(y - 1);
    \n-
    512 out[7] = -(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1) + (x + z - 1)*((y - z - 1)*y + 2*z));
    \n-
    513 out[8] = -(y - z + 1)*(2*x + z)*y;
    \n-
    514 out[9] = 2*z*(y - z - 1);
    \n-
    515 out[10] = -2*z*(y - z - 1);
    \n-
    516 out[11] = -2*z*(y - z + 1);
    \n-
    517 out[12] = 2*z*(y - z + 1);
    \n-
    518 out[13] = 2*((y - z + 1)*((y - 1)*(x + 1) + z*(x - y + z + 1)) + (y - z + 1)*(x + z - 1)*(y - 1 + z));
    \n-
    519 break;
    \n-
    520 case 1:
    \n-
    521 out[0] = 0.5*(x + z)*(x + z - 1)*(2*y - 2*z - 1);
    \n-
    522 out[1] = 2*(-0.25*((x + z)*((x + z + 1)*(-y + z + 1) - 4*z) + (x + z)*(y - z)*(-(x + z + 1))) + z);
    \n-
    523 out[2] = 0.5*(x + z)*(2*y - 2*z + 1)*(x + z - 1);
    \n-
    524 out[3] = 0.5*(2*y - 2*z + 1)*(x + z)*(x + z + 1);
    \n-
    525 out[4] = 0;
    \n-
    526 out[5] = -(x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x;
    \n-
    527 out[6] = -(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1) + (y - z + 1)*((x + z + 1)*x + 2*z));
    \n-
    528 out[7] = -(x + z - 1)*(2*y - z - 1)*(x + 1);
    \n-
    529 out[8] = -(2*y - z + 1)*(x + z - 1)*(x + 1);
    \n-
    530 out[9] = 2*z*(x + z - 1);
    \n-
    531 out[10] = -2*z*(x + z + 1);
    \n-
    532 out[11] = -2*z*(x + z - 1);
    \n-
    533 out[12] = 2*z*(x + z + 1);
    \n-
    534 out[13] = 2*((x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1)) + (y - z + 1)*(x + z - 1)*(x + 1 - z));
    \n-
    535 break;
    \n-
    536 case 2:
    \n-
    537 out[0] = -((y - z)*(2*x + 2*z - 1)*(z - y + 1))/2;
    \n-
    538 out[1] = ((y - z + 1)*(y - 2*x + z + 2*x*y - 2*x*z + 2*y*z - 2*z*z))/2;
    \n-
    539 out[2] = ((y - z)*(2*x + 2*z - 1)*(y - z + 1))/2;
    \n-
    540 out[3] = ((y - z)*(2*x + 2*z + 1)*(y - z + 1))/2;
    \n-
    541 out[4] = 4*z - 1;
    \n-
    542 out[5] = (-(y - z + 1)*(2*x + z - 1)*(y - 1) - (x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x + (x + z - 1)*(y - 1)*x - (y - z + 1)*(y - 1)*x)/2;
    \n-
    543 out[6] = -((y - z + 1)*(3*y - 2*x + z + 3*x*y + x*z + y*z + x*x - 1))/2;
    \n-
    544 out[7] = z - z*(2*x + 1) - ((2*z - y*(z - y + 1))*(x + z - 1))/2 - ((2*x - y*(x + 1))*(x + z - 1))/2 + ((x + 1)*(x + z - 1)*(z - 2*y + 1))/2 + y*(x + 1)*(z - y + 1);
    \n-
    545 out[8] = -((y - z + 1)*(y + z + 3*x*y + x*z + y*z + x*x - 1))/2;
    \n-
    546 out[9] = -(x + 3*z - 1)*(z - y + 1);
    \n-
    547 out[10] = (x + z + 1)*(z - y + 1) - 2*y*z - 6*z + 2*z*z;
    \n-
    548 out[11] = -(x + 3*z - 1)*(y - z + 1);
    \n-
    549 out[12] = (x + 3*z + 1)*(y - z + 1);
    \n-
    550 out[13] = (y - z + 1)*(2*y - 3*x + z + 2*x*y + 6*x*z - 2*y*z + 2*x*x + 4*z*z - 3);
    \n-
    551 break;
    \n-
    552 default:
    \n-
    553 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    554 }
    \n-
    555 }
    \n-
    556 else // x <= y
    \n-
    557 {
    \n-
    558 switch (direction)
    \n-
    559 {
    \n-
    560 case 0:
    \n-
    561 out[0] = -((y + z)*(2*z - 2*x + 1)*(y + z - 1))/2;
    \n-
    562 out[1] = ((y + z)*(2*x - 2*z + 1)*(y + z - 1))/2;
    \n-
    563 out[2] = -((y + z + 1)*(y - 3*z - 2*x*y - 2*x*z + 2*y*z + 2*z*z))/2;
    \n-
    564 out[3] = ((y + z)*(2*x - 2*z + 1)*(y + z + 1))/2;
    \n-
    565 out[4] = 0;
    \n-
    566 out[5] = (y + 1)*(y + z - 1)*(z - 2*x + 1);
    \n-
    567 out[6] = -(y + 1)*(2*x - z + 1)*(y + z - 1);
    \n-
    568 out[7] = -y*(2*x - z)*(y + z - 1);
    \n-
    569 out[8] = z - z*(2*x + 1) - (2*z + y*(y + z + 1))*(x - z + 1) - y*(x - 1)*(y + z + 1);
    \n-
    570 out[9] = 2*z*(y + z - 1);
    \n-
    571 out[10] = -2*z*(y + z - 1);
    \n-
    572 out[11] = -2*z*(y + z + 1);
    \n-
    573 out[12] = 2*z*(y + z + 1);
    \n-
    574 out[13] = 2*(y + z - 1)*(2*x - z + 2*x*y - 2*x*z + 2*z*z);
    \n-
    575 break;
    \n-
    576 case 1:
    \n-
    577 out[0] = -(x - z)*(y + z - 0.5)*(z - x + 1);
    \n-
    578 out[1] = ((x - z)*(2*y + 2*z - 1)*(x - z + 1))/2;
    \n-
    579 out[2] = -((z - x + 1)*(x + 3*z + 2*x*y + 2*x*z - 2*y*z - 2*z*z))/2;
    \n-
    580 out[3] = ((x - z)*(2*y + 2*z + 1)*(x - z + 1))/2;
    \n-
    581 out[4] = 0;
    \n-
    582 out[5] = z - z*(2*y + 1) - (2*z - x*(z - x + 1))*(y + z - 1) + x*(y + 1)*(z - x + 1);
    \n-
    583 out[6] = -x*(2*y + z)*(x - z + 1);
    \n-
    584 out[7] = -(x - 1)*(x - z + 1)*(2*y + z - 1);
    \n-
    585 out[8] = -(x - 1)*(x - z + 1)*(2*y + z + 1);
    \n-
    586 out[9] = -2*z*(z - x + 1);
    \n-
    587 out[10] = -2*z*(x - z + 1);
    \n-
    588 out[11] = 2*z*(z - x + 1);
    \n-
    589 out[12] = 2*z*(x - z + 1);
    \n-
    590 out[13] = 2*(x - z + 1)*(2*x*y - z - 2*y + 2*y*z + 2*z*z);
    \n-
    591 break;
    \n-
    592 case 2:
    \n-
    593 out[0] = -((x - z)*(2*y + 2*z - 1)*(z - x + 1))/2;
    \n-
    594 out[1] = ((x - z)*(2*y + 2*z - 1)*(x - z + 1))/2;
    \n-
    595 out[2] = ((x - z + 1)*(x - 2*y + z + 2*x*y + 2*x*z - 2*y*z - 2*z*z))/2;
    \n-
    596 out[3] = ((x - z)*(2*y + 2*z + 1)*(x - z + 1))/2;
    \n-
    597 out[4] = 4*z - 1;
    \n-
    598 out[5] = z - z*(2*y + 1) - ((2*z - x*(z - x + 1))*(y + z - 1))/2 - ((2*y - x*(y + 1))*(y + z - 1))/2 + ((y + 1)*(y + z - 1)*(z - 2*x + 1))/2 + x*(y + 1)*(z - x + 1);
    \n-
    599 out[6] = -((x - z + 1)*(x + z + 3*x*y + x*z + y*z + y*y - 1))/2;
    \n-
    600 out[7] = -((x - z + 1)*(3*x*y - 4*y - z - x + x*z + y*z + y*y + 1))/2;
    \n-
    601 out[8] = -((x - z + 1)*(3*x - 2*y + z + 3*x*y + x*z + y*z + y*y - 1))/2;
    \n-
    602 out[9] = -(z - x + 1)*(y + 3*z - 1);
    \n-
    603 out[10] = -(x - z + 1)*(y + 3*z - 1);
    \n-
    604 out[11] = (y + z + 1)*(z - x + 1) - 2*x*z - 6*z + 2*z*z;
    \n-
    605 out[12] = (x - z + 1)*(y + 3*z + 1);
    \n-
    606 out[13] = (x - z + 1)*(2*x - 3*y + z + 2*x*y - 2*x*z + 6*y*z + 2*y*y + 4*z*z - 3);
    \n-
    607 break;
    \n-
    608 default:
    \n-
    609 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    610 }
    \n-
    611 }
    \n-
    612 } else {
    \n-
    613 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    614 }
    \n-
    615
    \n-
    616 return;
    \n-
    617 }
    \n-
    618
    \n-
    619 DUNE_THROW(NotImplemented, "LagrangePyramidLocalBasis::partial for order " << k);
    \n-
    620 }
    \n-
    621
    \n-
    623 static constexpr unsigned int order ()
    \n-
    624 {
    \n-
    625 return k;
    \n-
    626 }
    \n-
    627 };
    \n-
    628
    \n-
    633 template<unsigned int k>
    \n-
    634 class LagrangePyramidLocalCoefficients
    \n-
    635 {
    \n-
    636 public:
    \n-
    638 LagrangePyramidLocalCoefficients ()
    \n-
    639 : localKeys_(size())
    \n-
    640 {
    \n-
    641 if (k==0)
    \n-
    642 {
    \n-
    643 localKeys_[0] = LocalKey(0,0,0);
    \n-
    644 return;
    \n-
    645 }
    \n-
    646
    \n-
    647 if (k==1)
    \n-
    648 {
    \n-
    649 for (std::size_t i=0; i<size(); i++)
    \n-
    650 localKeys_[i] = LocalKey(i,3,0);
    \n-
    651 return;
    \n-
    652 }
    \n-
    653
    \n-
    654 if (k==2)
    \n-
    655 {
    \n-
    656 // Vertex shape functions
    \n-
    657 localKeys_[0] = LocalKey(0,3,0);
    \n-
    658 localKeys_[1] = LocalKey(1,3,0);
    \n-
    659 localKeys_[2] = LocalKey(2,3,0);
    \n-
    660 localKeys_[3] = LocalKey(3,3,0);
    \n-
    661 localKeys_[4] = LocalKey(4,3,0);
    \n-
    662
    \n-
    663 // Edge shape functions
    \n-
    664 localKeys_[5] = LocalKey(0,2,0);
    \n-
    665 localKeys_[6] = LocalKey(1,2,0);
    \n-
    666 localKeys_[7] = LocalKey(2,2,0);
    \n-
    667 localKeys_[8] = LocalKey(3,2,0);
    \n-
    668 localKeys_[9] = LocalKey(4,2,0);
    \n-
    669 localKeys_[10] = LocalKey(5,2,0);
    \n-
    670 localKeys_[11] = LocalKey(6,2,0);
    \n-
    671 localKeys_[12] = LocalKey(7,2,0);
    \n-
    672
    \n-
    673 // base face shape function
    \n-
    674 localKeys_[13] = LocalKey(0,1,0);
    \n-
    675
    \n-
    676 return;
    \n-
    677 }
    \n-
    678
    \n-
    679 // No general case
    \n-
    680 DUNE_THROW(NotImplemented, "LagrangePyramidLocalCoefficients for order " << k);
    \n-
    681
    \n-
    682 }
    \n-
    683
    \n-
    685 static constexpr std::size_t size ()
    \n-
    686 {
    \n-
    687 std::size_t result = 0;
    \n-
    688 for (unsigned int i=0; i<=k; i++)
    \n-
    689 result += power(i+1,2);
    \n-
    690 return result;
    \n-
    691 }
    \n-
    692
    \n-
    694 const LocalKey& localKey (std::size_t i) const
    \n-
    695 {
    \n-
    696 return localKeys_[i];
    \n-
    697 }
    \n-
    698
    \n-
    699 private:
    \n-
    700 std::vector<LocalKey> localKeys_;
    \n-
    701 };
    \n-
    702
    \n-
    707 template<class LocalBasis>
    \n-
    708 class LagrangePyramidLocalInterpolation
    \n-
    709 {
    \n-
    710 public:
    \n-
    711
    \n-
    719 template<typename F, typename C>
    \n-
    720 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    721 {
    \n-
    722 constexpr auto k = LocalBasis::order();
    \n-
    723 using D = typename LocalBasis::Traits::DomainType;
    \n-
    724 using DF = typename LocalBasis::Traits::DomainFieldType;
    \n-
    725
    \n-
    726 out.resize(LocalBasis::size());
    \n-
    727
    \n-
    728 // Specialization for zero-order case
    \n-
    729 if (k==0)
    \n-
    730 {
    \n-
    731 auto center = ReferenceElements<DF,3>::general(GeometryTypes::pyramid).position(0,0);
    \n-
    732 out[0] = f(center);
    \n-
    733 return;
    \n-
    734 }
    \n-
    735
    \n-
    736 // Specialization for first-order case
    \n-
    737 if (k==1)
    \n-
    738 {
    \n-
    739 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n-
    740 {
    \n-
    741 auto vertex = ReferenceElements<DF,3>::general(GeometryTypes::pyramid).position(i,3);
    \n-
    742 out[i] = f(vertex);
    \n-
    743 }
    \n-
    744 return;
    \n-
    745 }
    \n-
    746
    \n-
    747 // Specialization for second-order case
    \n-
    748 if (k==2)
    \n-
    749 {
    \n-
    750 out[0] = f( D( {0.0, 0.0, 0.0} ) );
    \n-
    751 out[1] = f( D( {1.0, 0.0, 0.0} ) );
    \n-
    752 out[2] = f( D( {0.0, 1.0, 0.0} ) );
    \n-
    753 out[3] = f( D( {1.0, 1.0, 0.0} ) );
    \n-
    754 out[4] = f( D( {0.0, 0.0, 1.0} ) );
    \n-
    755 out[5] = f( D( {0.0, 0.5, 0.0} ) );
    \n-
    756 out[6] = f( D( {1.0, 0.5, 0.0} ) );
    \n-
    757 out[7] = f( D( {0.5, 0.0, 0.0} ) );
    \n-
    758 out[8] = f( D( {0.5, 1.0, 0.0} ) );
    \n-
    759 out[9] = f( D( {0.0, 0.0, 0.5} ) );
    \n-
    760 out[10] = f( D( {0.5, 0.0, 0.5} ) );
    \n-
    761 out[11] = f( D( {0.0, 0.5, 0.5} ) );
    \n-
    762 out[12] = f( D( {0.5, 0.5, 0.5} ) );
    \n-
    763 out[13] = f( D( {0.5, 0.5, 0.0} ) );
    \n-
    764
    \n-
    765 return;
    \n-
    766 }
    \n-
    767
    \n-
    768 DUNE_THROW(NotImplemented, "LagrangePyramidLocalInterpolation not implemented for order " << k);
    \n-
    769 }
    \n-
    770
    \n-
    771 };
    \n-
    772
    \n-
    773} } // namespace Dune::Impl
    \n-
    774
    \n-
    775namespace Dune
    \n-
    776{
    \n-
    807 template<class D, class R, int k>
    \n-
    \n-\n-
    809 {
    \n-
    810 public:
    \n-\n-
    814 Impl::LagrangePyramidLocalCoefficients<k>,
    \n-
    815 Impl::LagrangePyramidLocalInterpolation<Impl::LagrangePyramidLocalBasis<D,R,k> > >;
    \n-
    816
    \n-
    \n-
    819 const typename Traits::LocalBasisType& localBasis () const
    \n-
    820 {
    \n-
    821 return basis_;
    \n-
    822 }
    \n-
    \n-
    823
    \n-
    \n-\n-
    827 {
    \n-
    828 return coefficients_;
    \n-
    829 }
    \n-
    \n-
    830
    \n-
    \n-\n-
    834 {
    \n-
    835 return interpolation_;
    \n-
    836 }
    \n-
    \n-
    837
    \n-
    \n-
    839 static constexpr std::size_t size ()
    \n-
    840 {
    \n-
    841 return Impl::LagrangePyramidLocalBasis<D,R,k>::size();
    \n-
    842 }
    \n-
    \n-
    843
    \n-
    \n-
    846 static constexpr GeometryType type ()
    \n-
    847 {
    \n-
    848 return GeometryTypes::pyramid;
    \n-
    849 }
    \n-
    \n-
    850
    \n-
    851 private:
    \n-
    852 Impl::LagrangePyramidLocalBasis<D,R,k> basis_;
    \n-
    853 Impl::LagrangePyramidLocalCoefficients<k> coefficients_;
    \n-
    854 Impl::LagrangePyramidLocalInterpolation<Impl::LagrangePyramidLocalBasis<D,R,k> > interpolation_;
    \n-
    855 };
    \n-
    \n-
    856
    \n-
    857} // namespace Dune
    \n-
    858
    \n-
    859#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH
    \n-\n-\n+
    \n+
    359 unsigned int order () const
    \n+
    360 {
    \n+
    361 return 2;
    \n+
    362 }
    \n+
    \n+
    363
    \n+
    364 };
    \n+
    \n+
    365}
    \n+
    366#endif
    \n
    Definition bdfmcube.hh:18
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:809
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangepyramid.hh:826
    \n-
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangepyramid.hh:839
    \n-
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangepyramid.hh:846
    \n-
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangepyramid.hh:819
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangepyramid.hh:833
    \n+
    Definition hierarchicalsimplexp2localbasis.hh:23
    \n+
    HierarchicalSimplexP2LocalBasis()
    Definition hierarchicalsimplexp2localbasis.hh:25
    \n+
    unsigned int order() const
    Polynomial order of the shape functions (2, in this case)
    Definition hierarchicalsimplexp2localbasis.hh:109
    \n+
    LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 1 > > Traits
    export type traits for function signature
    Definition hierarchicalsimplexp2localbasis.hh:52
    \n+
    void partial(const std::array< unsigned int, 1 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:84
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:55
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:73
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:61
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 2 > > Traits
    export type traits for function signature
    Definition hierarchicalsimplexp2localbasis.hh:142
    \n+
    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 hierarchicalsimplexp2localbasis.hh:181
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:145
    \n+
    unsigned int order() const
    Polynomial order of the shape functions (2 in this case)
    Definition hierarchicalsimplexp2localbasis.hh:219
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:167
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:151
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
    export type traits for function signature
    Definition hierarchicalsimplexp2localbasis.hh:256
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:265
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:283
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:259
    \n+
    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 hierarchicalsimplexp2localbasis.hh:301
    \n+
    unsigned int order() const
    Polynomial order of the shape functions (2 in this case)
    Definition hierarchicalsimplexp2localbasis.hh:359
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,861 +1,403 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-lagrangepyramid.hh\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2\n+hierarchicalsimplexp2localbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH\n-6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH\n+5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH\n+6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n-13#include \n-14\n-15#include \n+12#include \n+13\n+14#include \n+15#include \n 16\n 17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-20\n-21namespace _\bD_\bu_\bn_\be { namespace Impl\n-22{\n-32 template\n-33 class LagrangePyramidLocalBasis\n-34 {\n-35 public:\n-36 using Traits =\n-LocalBasisTraits,R,1,FieldVector,FieldMatrix\n->;\n-37\n-40 static constexpr std::size_t size ()\n-41 {\n-42 std::size_t result = 0;\n-43 for (unsigned int i=0; i<=k; i++)\n-44 result += power(i+1,2);\n-45 return result;\n-46 }\n-47\n-49 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-50 std::vector& out) const\n-51 {\n-52 out.resize(size());\n+18\n+19namespace _\bD_\bu_\bn_\be\n+20{\n+21 template\n+_\b2_\b2 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+23 {\n+24 public:\n+_\b2_\b5 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n+26 {\n+27 DUNE_THROW(Dune::NotImplemented,\"HierarchicalSimplexP2LocalBasis not\n+implemented for dim > 3.\");\n+28 }\n+29 };\n+30\n+46 template\n+_\b4_\b7 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+48 {\n+49 public:\n+51 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b1_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b1_\b>,R,1,Dune::\n+FieldVector,\n+_\b5_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n 53\n-54 // Specialization for zero-order case\n-55 if (k==0)\n+_\b5_\b5 unsigned int _\bs_\bi_\bz_\be () const\n 56 {\n-57 out[0] = 1;\n-58 return;\n-59 }\n-60\n-61 if (k==1)\n-62 {\n-63 if(in[0] > in[1])\n-64 {\n-65 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[1]);\n-66 out[1] = in[0]*(1-in[1])-in[2]*in[1];\n-67 out[2] = (1-in[0])*in[1]-in[2]*in[1];\n-68 out[3] = in[0]*in[1]+in[2]*in[1];\n+57 return 3;\n+58 }\n+59\n+_\b6_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+62 std::vector& out) const\n+63 {\n+64 out.resize(3);\n+65\n+66 out[0] = 1-in[0];\n+67 out[1] = 1-4*(in[0]-0.5)*(in[0]-0.5);\n+68 out[2] = in[0];\n 69 }\n-70 else\n-71 {\n-72 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[0]);\n-73 out[1] = in[0]*(1-in[1])-in[2]*in[0];\n-74 out[2] = (1-in[0])*in[1]-in[2]*in[0];\n-75 out[3] = in[0]*in[1]+in[2]*in[0];\n-76 }\n+70\n+72 inline void\n+_\b7_\b3 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+74 std::vector& out) const // return value\n+75 {\n+76 out.resize(3);\n 77\n-78 out[4] = in[2];\n-79\n-80 return;\n+78 out[0][0][0] = -1;\n+79 out[1][0][0] = 4-8*in[0];\n+80 out[2][0][0] = 1;\n 81 }\n 82\n-83 if (k==2)\n-84 {\n-85 // transform to reference element with base [-1,1]^2\n-86 const R x = 2.0*in[0] + in[2] - 1.0;\n-87 const R y = 2.0*in[1] + in[2] - 1.0;\n-88 const R z = in[2];\n-89\n-90 if (x > y)\n-91 {\n-92 // vertices\n-93 out[0] = 0.25*(x + z)*(x + z - 1)*(y - z - 1)*(y - z);\n-94 out[1] = -0.25*(x + z)*(y - z)*((x + z + 1)*(-y + z + 1) - 4*z) - z*(x - y);\n-95 out[2] = 0.25*(x + z)*(y - z)*(y - z + 1)*(x + z - 1);\n-96 out[3] = 0.25*(y - z)*(x + z)*(y - z + 1)*(x + z + 1);\n-97 out[4] = z*(2*z - 1);\n-98\n-99 // lower edges\n-100 out[5] = -0.5*(y - z + 1)*(x + z - 1)*(y - 1)*x;\n-101 out[6] = -0.5*(y - z + 1)*(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1));\n-102 out[7] = -0.5*(x + z - 1)*(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1));\n-103 out[8] = -0.5*(y - z + 1)*(x + z - 1)*(x + 1)*y;\n-104\n-105 // upper edges\n-106 out[9] = z*(x + z - 1)*(y - z - 1);\n-107 out[10] = -z*((x + z + 1)*(y - z - 1) + 4*z);\n-108 out[11] = -z*(y - z + 1)*(x + z - 1);\n-109 out[12] = z*(y - z + 1)*(x + z + 1);\n-110\n-111 // base face\n-112 out[13] = (y - z + 1)*(x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1));\n-113 }\n-114 else\n-115 {\n-116 // vertices\n-117 out[0] = 0.25*(y + z)*(y + z - 1)*(x - z - 1)*(x - z);\n-118 out[1] = -0.25*(x - z)*(y + z)*(x - z + 1)*(-y - z + 1);\n-119 out[2] = 0.25*(x - z)*(y + z)*((x - z - 1)*(y + z + 1) + 4*z) + z*(x - y);\n-120 out[3] = 0.25*(y + z)*(x - z)*(x - z + 1)*(y + z + 1);\n-121 out[4] = z*(2*z - 1);\n-122\n-123 // lower edges\n-124 out[5] = -0.5*(y + z - 1)*(((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1));\n-125 out[6] = -0.5*(x - z + 1)*(y + z - 1)*(y + 1)*x;\n-126 out[7] = -0.5*(x - z + 1)*(y + z - 1)*(x - 1)*y;\n-127 out[8] = -0.5*(x - z + 1)*(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1));\n-128\n-129 // upper edges\n-130 out[9] = z*(y + z - 1)*(x - z - 1);\n-131 out[10] = -z*(x - z + 1)*(y + z - 1);\n-132 out[11] = -z*((y + z + 1)*(x - z - 1) + 4*z);\n-133 out[12] = z*(x - z + 1)*(y + z + 1);\n-134\n-135 // base face\n-136 out[13] = (x - z + 1)*(y + z - 1)*((y + 1)*(x - 1) - z*(x - y - z - 1));\n-137 }\n-138\n-139 return;\n-140 }\n-141\n-142 DUNE_THROW(NotImplemented, \"LagrangePyramidLocalBasis::evaluateFunction for\n-order \" << k);\n-143 }\n-144\n-150 void evaluateJacobian(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-151 std::vector& out) const\n-152 {\n-153 out.resize(size());\n-154\n-155 // Specialization for k==0\n-156 if (k==0)\n-157 {\n-158 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n-159 return;\n-160 }\n-161\n-162 if (k==1)\n-163 {\n-164 if(in[0] > in[1])\n-165 {\n-166 out[0][0] = {-1 + in[1], -1 + in[0] + in[2], -1 + in[1]};\n-167 out[1][0] = { 1 - in[1], -in[0] - in[2], -in[1]};\n-168 out[2][0] = { -in[1], 1 - in[0] - in[2], -in[1]};\n-169 out[3][0] = { in[1], in[0] + in[2], in[1]};\n-170 }\n-171 else\n-172 {\n-173 out[0][0] = {-1 + in[1] + in[2], -1 + in[0], -1 + in[0]};\n-174 out[1][0] = { 1 - in[1] - in[2], -in[0], -in[0]};\n-175 out[2][0] = { -in[1] - in[2], 1 - in[0], -in[0]};\n-176 out[3][0] = { in[1] + in[2], in[0], in[0]};\n-177 }\n-178\n-179 out[4][0] = {0, 0, 1};\n-180 return;\n-181 }\n-182\n-183 if (k==2)\n+_\b8_\b4 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+85 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+86 std::vector& out) const // return value\n+87 {\n+88 auto totalOrder = order[0];\n+89 if (totalOrder == 0) {\n+90 evaluateFunction(in, out);\n+91 } else if (totalOrder == 1) {\n+92 out.resize(size());\n+93 out[0] = -1;\n+94 out[1] = 4-8*in[0];\n+95 out[2] = 1;\n+96 } else if (totalOrder == 2) {\n+97 out.resize(size());\n+98 out[0] = 0;\n+99 out[1] = -8;\n+100 out[2] = 0;\n+101 } else {\n+102 out.resize(size());\n+103 out[0] = out[1] = out[2] = 0;\n+104 }\n+105 }\n+106\n+_\b1_\b0_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+110 {\n+111 return 2;\n+112 }\n+113\n+114 };\n+115\n+136 template\n+_\b1_\b3_\b7 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+138 {\n+139 public:\n+141 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,1,Dune::\n+FieldVector,\n+_\b1_\b4_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+143\n+_\b1_\b4_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+146 {\n+147 return 6;\n+148 }\n+149\n+_\b1_\b5_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+152 std::vector& out) const\n+153 {\n+154 out.resize(6);\n+155\n+156 out[0] = 1 - in[0] - in[1];\n+157 out[1] = 4*in[0]*(1-in[0]-in[1]);\n+158 out[2] = in[0];\n+159 out[3] = 4*in[1]*(1-in[0]-in[1]);\n+160 out[4] = 4*in[0]*in[1];\n+161 out[5] = in[1];\n+162\n+163 }\n+164\n+166 inline void\n+_\b1_\b6_\b7 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+168 std::vector& out) const // return value\n+169 {\n+170 out.resize(6);\n+171\n+172 out[0][0][0] = -1; out[0][0][1] = -1;\n+173 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];\n+174 out[2][0][0] = 1; out[2][0][1] = 0;\n+175 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];\n+176 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];\n+177 out[5][0][0] = 0; out[5][0][1] = 1;\n+178 }\n+179\n+_\b1_\b8_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+182 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+183 std::vector& out) const // return value\n 184 {\n-185 // transform to reference element with base [-1,1]^2\n-186 const R x = 2.0*in[0] + in[2] - 1.0;\n-187 const R y = 2.0*in[1] + in[2] - 1.0;\n-188 const R z = in[2];\n-189\n-190 // transformation of the gradient leads to a multiplication\n-191 // with the Jacobian [2 0 0; 0 2 0; 1 1 1]\n-192 if (x > y)\n-193 {\n-194 // vertices\n-195 out[0][0][0] = 0.5*(y - z - 1)*(y - z)*(2*x + 2*z - 1);\n-196 out[0][0][1] = 0.5*(x + z)*(x + z - 1)*(2*y - 2*z - 1);\n-197 out[0][0][2] = 0.5*(out[0][0][0] + out[0][0][1])\n-198 + 0.25*((2*x + 2*z - 1)*(y - z - 1)*(y - z)\n-199 + (x + z)*(x + z - 1)*(-2*y + 2*z + 1));\n-200\n-201 out[1][0][0] = 2*(-0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z)\n-202 + (x + z)*(y - z)*(-y + z + 1)) - z);\n-203 out[1][0][1] = 2*(-0.25*((x + z)*((x + z + 1)*(-y + z + 1) - 4*z)\n-204 + (x + z)*(y - z)*(-(x + z + 1))) + z);\n-205 out[1][0][2] = 0.5*(out[1][0][0] + out[1][0][1])\n-206 - 0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z)\n-207 - (x + z)*((x + z + 1)*(-y + z + 1) - 4*z)\n-208 + (x + z)*(y - z)*(x - y + 2*z - 2))\n-209 - (x - y);\n-210\n-211 out[2][0][0] = 0.5*(y - z)*(y - z + 1)*(2*x + 2*z - 1);\n-212 out[2][0][1] = 0.5*(x + z)*(2*y - 2*z + 1)*(x + z - 1);\n-213 out[2][0][2] = 0.5*(out[2][0][0] + out[2][0][1])\n-214 + 0.25*((y - x - 2*z)*(y - z + 1)*(x + z - 1)\n-215 + (x + z)*(y - z)*(y - x - 2*z + 2));\n+185 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+186 if (totalOrder == 0) {\n+187 evaluateFunction(in, out);\n+188 } else if (totalOrder == 1) {\n+189 out.resize(size());\n+190 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+191\n+192 switch (direction) {\n+193 case 0:\n+194 out[0] = -1;\n+195 out[1] = 4-8*in[0]-4*in[1];\n+196 out[2] = 1;\n+197 out[3] = -4*in[1];\n+198 out[4] = 4*in[1];\n+199 out[5] = 0;\n+200 break;\n+201 case 1:\n+202 out[0] = -1;\n+203 out[1] = -4*in[0];\n+204 out[2] = 0;\n+205 out[3] = 4-4*in[0]-8*in[1];\n+206 out[4] = 4*in[0];\n+207 out[5] = 1;\n+208 break;\n+209 default:\n+210 DUNE_THROW(RangeError, \"Component out of range.\");\n+211 }\n+212 } else {\n+213 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+214 }\n+215 }\n 216\n-217 out[3][0][0] = 0.5*(y - z)*(2*x + 2*z + 1)*(y - z + 1);\n-218 out[3][0][1] = 0.5*(2*y - 2*z + 1)*(x + z)*(x + z + 1);\n-219 out[3][0][2] = 0.5*(out[3][0][0] + out[3][0][1])\n-220 + 0.25*((y - x - 2*z)*(y - z + 1)*(x + z + 1)\n-221 + (y - z)*(x + z)*(y - x - 2*z));\n-222\n-223 out[4][0][0] = 0;\n-224 out[4][0][1] = 0;\n-225 out[4][0][2] = 4*z - 1;\n-226\n-227 // lower edges\n-228 out[5][0][0] = -(y - z + 1)*(y - 1)*(2*x + z - 1);\n-229 out[5][0][1] = -(x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x;\n-230 out[5][0][2] = 0.5*(out[5][0][0] + out[5][0][1])\n-231 + 0.5*(x + z - 1)*(y - 1)*x - 0.5*(y - z + 1)*(y - 1)*x;\n-232\n-233 out[6][0][0] = -(y - z + 1)*(2*x + z + 1)*(y - 1);\n-234 out[6][0][1] = -(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1)\n-235 + (y - z + 1)*((x + z + 1)*x + 2*z));\n-236 out[6][0][2] = 0.5*(out[6][0][0] + out[6][0][1])\n-237 - 0.5*(-(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1))\n-238 + (y - z + 1)*(((y - 1)*x - 1) + 2*y + 1));\n-239\n-240 out[7][0][0] = -(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1)\n-241 + (x + z - 1)*((y - z - 1)*y + 2*z));\n-242 out[7][0][1] = -(x + z - 1)*(2*y - z - 1)*(x + 1);\n-243 out[7][0][2] = 0.5*(out[7][0][0] + out[7][0][1])\n-244 - 0.5*(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1)\n-245 + (x + z - 1)*((-(x + 1)*y - 1) + 2*x + 1));\n-246\n-247 out[8][0][0] = -(y - z + 1)*(2*x + z)*y;\n-248 out[8][0][1] = -(2*y - z + 1)*(x + z - 1)*(x + 1);\n-249 out[8][0][2] = 0.5*(out[8][0][0] + out[8][0][1])\n-250 - 0.5*(-x + y - 2*z + 2)*(x + 1)*y;\n-251\n-252 // upper edges\n-253 out[9][0][0] = 2*z*(y - z - 1);\n-254 out[9][0][1] = 2*z*(x + z - 1);\n-255 out[9][0][2] = 0.5*(out[9][0][0] + out[9][0][1])\n-256 + (x + z - 1)*(y - z - 1) + z*(-x + y - 2*z);\n+_\b2_\b1_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+220 {\n+221 return 2;\n+222 }\n+223\n+224 };\n+225\n+250 template\n+_\b2_\b5_\b1 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+252 {\n+253 public:\n+255 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,1,Dune::\n+FieldVector,\n+_\b2_\b5_\b6 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n 257\n-258 out[10][0][0] = -2*z*(y - z - 1);\n-259 out[10][0][1] = -2*z*(x + z + 1);\n-260 out[10][0][2] = 0.5*(out[10][0][0] + out[10][0][1])\n-261 - ((x + z + 1)*(y - z - 1) + 4*z)\n-262 - z*(-x + y - 2*z + 2);\n+_\b2_\b5_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+260 {\n+261 return 10;\n+262 }\n 263\n-264 out[11][0][0] = -2*z*(y - z + 1);\n-265 out[11][0][1] = -2*z*(x + z - 1);\n-266 out[11][0][2] = 0.5*(out[11][0][0] + out[11][0][1])\n-267 - (y - z + 1)*(x + z - 1) - z*(-x + y - 2*z + 2);\n-268\n-269 out[12][0][0] = 2*z*(y - z + 1);\n-270 out[12][0][1] = 2*z*(x + z + 1);\n-271 out[12][0][2] = 0.5*(out[12][0][0] + out[12][0][1])\n-272 + (y - z + 1)*(x + z + 1) + z*(-x + y - 2*z);\n-273\n-274 // base face\n-275 out[13][0][0] = 2*((y - z + 1)*((y - 1)*(x + 1) + z*(x - y + z + 1))\n-276 + (y - z + 1)*(x + z - 1)*(y - 1 + z));\n-277 out[13][0][1] = 2*((x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1))\n-278 + (y - z + 1)*(x + z - 1)*(x + 1 - z));\n-279 out[13][0][2] = 0.5*(out[13][0][0] + out[13][0][1])\n-280 + ((-x + y - 2*z + 2)*((y - 1)*(x + 1) + z*(x - y + z + 1))\n-281 + (y - z + 1)*(x + z - 1)*(x - y + 2*z + 1));\n-282 }\n-283 else\n-284 {\n-285 // vertices\n-286 out[0][0][0] = 0.5*(y + z)*(y + z - 1)*(2*x - 2*z - 1);\n-287 out[0][0][1] = 0.5*(2*y + 2*z - 1)*(x - z - 1)*(x - z);\n-288 out[0][0][2] = 0.5*(out[0][0][0] + out[0][0][1])\n-289 + 0.25*((2*y + 2*z - 1)*(x - z - 1)*(x - z)\n-290 + (y + z)*(y + z - 1)*(-2*x + 2*z + 1));\n-291\n-292 out[1][0][0] = -0.5*(y + z)*(2*x - 2*z + 1)*(-y - z + 1);\n-293 out[1][0][1] = -0.5*(x - z)*(x - z + 1)*(-2*y - 2*z + 1);\n-294 out[1][0][2] = 0.5*(out[1][0][0] + out[1][0][1])\n-295 - 0.25*((x - y - 2*z)*(x - z + 1)*(-y - z + 1)\n-296 + (x - z)*(y + z)*(-x + y + 2*z - 2));\n-297\n-298 out[2][0][0] = 0.5*((y + z)*((x - z - 1)*(y + z + 1) + 4*z)\n-299 + (x - z)*(y + z)*(y + z + 1) + 4*z);\n-300 out[2][0][1] = 0.5*((x - z)*((x - z - 1)*(y + z + 1) + 4*z)\n-301 + (x - z)*(y + z)*(x - z - 1) - 4*z);\n-302 out[2][0][2] = 0.5*(out[2][0][0] + out[2][0][1])\n-303 + 0.25*((x - y - 2*z)*((x - z - 1)*(y + z + 1) + 4*z)\n-304 + (x - z)*(y + z)*(x - y - 2*z + 2) + 4*(x - y));\n-305\n-306 out[3][0][0] = 0.5*(y + z)*(2*x - 2*z + 1)*(y + z + 1);\n-307 out[3][0][1] = 0.5*(x - z)*(x - z + 1)*(2*y + 2*z + 1);\n-308 out[3][0][2] = 0.5*(out[3][0][0] + out[3][0][1])\n-309 + 0.25*((x - y - 2*z)*(x - z + 1)*(y + z + 1)\n-310 + (y + z)*(x - z)*(x - y - 2*z));\n+_\b2_\b6_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+266 std::vector& out) const\n+267 {\n+268 out.resize(10);\n+269\n+270 out[0] = 1 - in[0] - in[1] - in[2];\n+271 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);\n+272 out[2] = in[0];\n+273 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);\n+274 out[4] = 4 * in[0] * in[1];\n+275 out[5] = in[1];\n+276 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);\n+277 out[7] = 4 * in[0] * in[2];\n+278 out[8] = 4 * in[1] * in[2];\n+279 out[9] = in[2];\n+280 }\n+281\n+_\b2_\b8_\b3 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+284 std::vector& out) const // return value\n+285 {\n+286 out.resize(10);\n+287\n+288 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;\n+289 out[1][0][0] = 4-8*in[0]-4*in[1]-4*in[2]; out[1][0][1] = -4*in[0]; out[1]\n+[0][2] = -4*in[0];\n+290 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;\n+291 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1]-4*in[2]; out[3]\n+[0][2] = -4*in[1];\n+292 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;\n+293 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;\n+294 out[6][0][0] = -4*in[2]; out[6][0][1] = -4*in[2]; out[6][0][2] = 4-4*in[0]-\n+4*in[1]-8*in[2];\n+295 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];\n+296 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];\n+297 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;\n+298 }\n+299\n+_\b3_\b0_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+302 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+303 std::vector& out) const // return value\n+304 {\n+305 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+306 if (totalOrder == 0) {\n+307 evaluateFunction(in, out);\n+308 } else if (totalOrder == 1) {\n+309 out.resize(size());\n+310 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n 311\n-312 out[4][0][0] = 0;\n-313 out[4][0][1] = 0;\n-314 out[4][0][2] = 4*z - 1;\n-315\n-316 // lower edges\n-317 out[5][0][0] = -(y + z - 1)*(2*x - z - 1)*(y + 1);\n-318 out[5][0][1] = -(((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1)\n-319 + (y + z - 1)*((x - z - 1)*x + 2*z));\n-320 out[5][0][2] = 0.5*(out[5][0][0] + out[5][0][1])\n-321 - 0.5*((((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1))\n-322 + (y + z - 1)*((-(y + 1)*x - 1) + 2*y + 1));\n-323\n-324 out[6][0][0] = -(2*x - z + 1)*(y + z - 1)*(y + 1);\n-325 out[6][0][1] = -(x - z + 1)*(2*y + z)*x;\n-326 out[6][0][2] = 0.5*(out[6][0][0] + out[6][0][1])\n-327 - 0.5*(x - y - 2*z + 2)*(y + 1)*x;\n-328\n-329 out[7][0][0] = -(2*x - z)*(y + z - 1)*y;\n-330 out[7][0][1] = -(x - z + 1)*(2*y + z - 1)*(x - 1);\n-331 out[7][0][2] = 0.5*(out[7][0][0] + out[7][0][1])\n-332 - 0.5*(x - y - 2*z + 2)*(x - 1)*y;\n-333\n-334 out[8][0][0] = -(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1)\n-335 + (x - z + 1)*((y + z + 1)*y + 2*z));\n-336 out[8][0][1] = -(x - z + 1)*(2*y + z + 1)*(x - 1);\n-337 out[8][0][2] = 0.5*(out[8][0][0] + out[8][0][1])\n-338 - 0.5*(-(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1))\n-339 + (x - z + 1)*(((x - 1)*y - 1) + 2*x + 1));\n-340\n-341 // upper edges\n-342 out[9][0][0] = 2*z*(y + z - 1);\n-343 out[9][0][1] = 2*z*(x - z - 1);\n-344 out[9][0][2] = 0.5*(out[9][0][0] + out[9][0][1])\n-345 + (y + z - 1)*(x - z - 1) + z*(x - y - 2*z);\n-346\n-347 out[10][0][0] = -2*z*(y + z - 1);\n-348 out[10][0][1] = -2*z*(x - z + 1);\n-349 out[10][0][2] = 0.5*(out[10][0][0] + out[10][0][1])\n-350 - (x - z + 1)*(y + z - 1) - z*(x - y - 2*z + 2);\n-351\n-352 out[11][0][0] = -2*z*(y + z + 1);\n-353 out[11][0][1] = -2*z*(x - z - 1);\n-354 out[11][0][2] = 0.5*(out[11][0][0] + out[11][0][1])\n-355 - ((y + z + 1)*(x - z - 1) + 4*z) - z*(x - y - 2*z + 2);\n+312 switch (direction) {\n+313 case 0:\n+314 out[0] = -1;\n+315 out[1] = 4-8*in[0]-4*in[1]-4*in[2];\n+316 out[2] = 1;\n+317 out[3] = -4*in[1];\n+318 out[4] = 4*in[1];\n+319 out[5] = 0;\n+320 out[6] = -4*in[2];\n+321 out[7] = 4*in[2];\n+322 out[8] = 0;\n+323 out[9] = 0;\n+324 break;\n+325 case 1:\n+326 out[0] = -1;\n+327 out[1] = -4*in[0];\n+328 out[2] = 0;\n+329 out[3] = 4-4*in[0]-8*in[1]-4*in[2];\n+330 out[4] = 4*in[0];\n+331 out[5] = 1;\n+332 out[6] = -4*in[2];\n+333 out[7] = 0;\n+334 out[8] = 4*in[2];\n+335 out[9] = 0;\n+336 break;\n+337 case 2:\n+338 out[0] = -1;\n+339 out[1] = -4*in[0];\n+340 out[2] = 0;\n+341 out[3] = -4*in[1];\n+342 out[4] = 0;\n+343 out[5] = 0;\n+344 out[6] = 4-4*in[0]-4*in[1]-8*in[2];\n+345 out[7] = 4*in[0];\n+346 out[8] = 4*in[1];\n+347 out[9] = 1;\n+348 break;\n+349 default:\n+350 DUNE_THROW(RangeError, \"Component out of range.\");\n+351 }\n+352 } else {\n+353 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+354 }\n+355 }\n 356\n-357 out[12][0][0] = 2*z*(y + z + 1);\n-358 out[12][0][1] = 2*z*(x - z + 1);\n-359 out[12][0][2] = 0.5*(out[12][0][0] + out[12][0][1])\n-360 + (x - z + 1)*(y + z + 1) + z*(x - y - 2*z);\n-361\n-362 // base face\n-363 out[13][0][0] = 2*((y + z - 1)*((y + 1)*(x - 1) - z*(x - y - z - 1))\n-364 + (x - z + 1)*(y + z - 1)*(y + 1 - z));\n-365 out[13][0][1] = 2*((x - z + 1)*((y + 1)*(x - 1) - z*(x - y - z - 1))\n-366 + (x - z + 1)*(y + z - 1)*(x - 1 + z));\n-367 out[13][0][2] = 0.5*(out[13][0][0] + out[13][0][1])\n-368 + (x - y - 2*z + 2)*((y + 1)*(x - 1) - z*(x - y - z - 1))\n-369 + (x - z + 1)*(y + z - 1)*(-(x - y - 2*z - 1));\n-370 }\n-371\n-372 return;\n-373 }\n-374\n-375 DUNE_THROW(NotImplemented, \"LagrangePyramidLocalBasis::evaluateJacobian for\n-order \" << k);\n-376 }\n-377\n-384 void partial(const std::array& order,\n-385 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-386 std::vector& out) const\n-387 {\n-388 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-389\n-390 out.resize(size());\n-391\n-392 if (totalOrder == 0)\n-393 {\n-394 evaluateFunction(in, out);\n-395 return;\n-396 }\n-397\n-398 if (k==0)\n-399 {\n-400 out[0] = 0;\n-401 return;\n-402 }\n-403\n-404 if (k==1)\n-405 {\n-406 if (totalOrder == 1)\n-407 {\n-408 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-409 if (in[0] > in[1])\n-410 {\n-411 switch (direction)\n-412 {\n-413 case 0:\n-414 out[0] = -1 + in[1];\n-415 out[1] = 1 - in[1];\n-416 out[2] = -in[1];\n-417 out[3] = in[1];\n-418 out[4] = 0;\n-419 break;\n-420 case 1:\n-421 out[0] = -1 + in[0] + in[2];\n-422 out[1] = -in[0] - in[2];\n-423 out[2] = 1 - in[0] - in[2];\n-424 out[3] = in[0]+in[2];\n-425 out[4] = 0;\n-426 break;\n-427 case 2:\n-428 out[0] = -1 + in[1];\n-429 out[1] = -in[1];\n-430 out[2] = -in[1];\n-431 out[3] = in[1];\n-432 out[4] = 1;\n-433 break;\n-434 default:\n-435 DUNE_THROW(RangeError, \"Component out of range.\");\n-436 }\n-437 }\n-438 else /* (in[0] <= in[1]) */\n-439 {\n-440 switch (direction)\n-441 {\n-442 case 0:\n-443 out[0] = -1 + in[1] + in[2];\n-444 out[1] = 1 - in[1] - in[2];\n-445 out[2] = -in[1] - in[2];\n-446 out[3] = in[1] + in[2];\n-447 out[4] = 0;\n-448 break;\n-449 case 1:\n-450 out[0] = -1 + in[0];\n-451 out[1] = -in[0];\n-452 out[2] = 1 - in[0];\n-453 out[3] = in[0];\n-454 out[4] = 0;\n-455 break;\n-456 case 2:\n-457 out[0] = -1 + in[0];\n-458 out[1] = -in[0];\n-459 out[2] = -in[0];\n-460 out[3] = in[0];\n-461 out[4] = 1;\n-462 break;\n-463 default:\n-464 DUNE_THROW(RangeError, \"Component out of range.\");\n-465 }\n-466 }\n-467 } else if (totalOrder == 2)\n-468 {\n-469 if ((order[0] == 1 && order[1] == 1) ||\n-470 (order[1] == 1 && order[2] == 1 && in[0] > in[1]) ||\n-471 (order[0] == 1 && order[2] == 1 && in[0] <=in[1]))\n-472 {\n-473 out = {1, -1, -1, 1, 0};\n-474 } else\n-475 {\n-476 out = {0, 0, 0, 0, 0};\n-477 }\n-478\n-479 } else\n-480 {\n-481 out = {0, 0, 0, 0, 0};\n-482 }\n-483\n-484 return;\n-485 }\n-486\n-487 if (k==2)\n-488 {\n-489 if (totalOrder == 1)\n-490 {\n-491 // transform to reference element with base [-1,1]^2\n-492 const R x = 2.0*in[0] + in[2] - 1.0;\n-493 const R y = 2.0*in[1] + in[2] - 1.0;\n-494 const R z = in[2];\n-495\n-496 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-497\n-498 // transformation of the gradient leads to a multiplication\n-499 // with the Jacobian [2 0 0; 0 2 0; 1 1 1]\n-500 if (x > y)\n-501 {\n-502 switch (direction)\n-503 {\n-504 case 0:\n-505 out[0] = 0.5*(y - z - 1)*(y - z)*(2*x + 2*z - 1);\n-506 out[1] = 2*(-0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z) + (x + z)*(y -\n-z)*(-y + z + 1)) - z);\n-507 out[2] = 0.5*(y - z)*(y - z + 1)*(2*x + 2*z - 1);\n-508 out[3] = 0.5*(y - z)*(2*x + 2*z + 1)*(y - z + 1);\n-509 out[4] = 0;\n-510 out[5] = -(y - z + 1)*(2*x + z - 1)*(y - 1);\n-511 out[6] = -(y - z + 1)*(2*x + z + 1)*(y - 1);\n-512 out[7] = -(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1) + (x + z - 1)*((y - z\n-- 1)*y + 2*z));\n-513 out[8] = -(y - z + 1)*(2*x + z)*y;\n-514 out[9] = 2*z*(y - z - 1);\n-515 out[10] = -2*z*(y - z - 1);\n-516 out[11] = -2*z*(y - z + 1);\n-517 out[12] = 2*z*(y - z + 1);\n-518 out[13] = 2*((y - z + 1)*((y - 1)*(x + 1) + z*(x - y + z + 1)) + (y - z +\n-1)*(x + z - 1)*(y - 1 + z));\n-519 break;\n-520 case 1:\n-521 out[0] = 0.5*(x + z)*(x + z - 1)*(2*y - 2*z - 1);\n-522 out[1] = 2*(-0.25*((x + z)*((x + z + 1)*(-y + z + 1) - 4*z) + (x + z)*(y -\n-z)*(-(x + z + 1))) + z);\n-523 out[2] = 0.5*(x + z)*(2*y - 2*z + 1)*(x + z - 1);\n-524 out[3] = 0.5*(2*y - 2*z + 1)*(x + z)*(x + z + 1);\n-525 out[4] = 0;\n-526 out[5] = -(x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x;\n-527 out[6] = -(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1) + (y - z + 1)*((x + z\n-+ 1)*x + 2*z));\n-528 out[7] = -(x + z - 1)*(2*y - z - 1)*(x + 1);\n-529 out[8] = -(2*y - z + 1)*(x + z - 1)*(x + 1);\n-530 out[9] = 2*z*(x + z - 1);\n-531 out[10] = -2*z*(x + z + 1);\n-532 out[11] = -2*z*(x + z - 1);\n-533 out[12] = 2*z*(x + z + 1);\n-534 out[13] = 2*((x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1)) + (y - z +\n-1)*(x + z - 1)*(x + 1 - z));\n-535 break;\n-536 case 2:\n-537 out[0] = -((y - z)*(2*x + 2*z - 1)*(z - y + 1))/2;\n-538 out[1] = ((y - z + 1)*(y - 2*x + z + 2*x*y - 2*x*z + 2*y*z - 2*z*z))/2;\n-539 out[2] = ((y - z)*(2*x + 2*z - 1)*(y - z + 1))/2;\n-540 out[3] = ((y - z)*(2*x + 2*z + 1)*(y - z + 1))/2;\n-541 out[4] = 4*z - 1;\n-542 out[5] = (-(y - z + 1)*(2*x + z - 1)*(y - 1) - (x + z - 1)*(y - 1)*x - (y -\n-z + 1)*(x + z - 1)*x + (x + z - 1)*(y - 1)*x - (y - z + 1)*(y - 1)*x)/2;\n-543 out[6] = -((y - z + 1)*(3*y - 2*x + z + 3*x*y + x*z + y*z + x*x - 1))/2;\n-544 out[7] = z - z*(2*x + 1) - ((2*z - y*(z - y + 1))*(x + z - 1))/2 - ((2*x -\n-y*(x + 1))*(x + z - 1))/2 + ((x + 1)*(x + z - 1)*(z - 2*y + 1))/2 + y*(x + 1)*\n-(z - y + 1);\n-545 out[8] = -((y - z + 1)*(y + z + 3*x*y + x*z + y*z + x*x - 1))/2;\n-546 out[9] = -(x + 3*z - 1)*(z - y + 1);\n-547 out[10] = (x + z + 1)*(z - y + 1) - 2*y*z - 6*z + 2*z*z;\n-548 out[11] = -(x + 3*z - 1)*(y - z + 1);\n-549 out[12] = (x + 3*z + 1)*(y - z + 1);\n-550 out[13] = (y - z + 1)*(2*y - 3*x + z + 2*x*y + 6*x*z - 2*y*z + 2*x*x +\n-4*z*z - 3);\n-551 break;\n-552 default:\n-553 DUNE_THROW(RangeError, \"Component out of range.\");\n-554 }\n-555 }\n-556 else // x <= y\n-557 {\n-558 switch (direction)\n-559 {\n-560 case 0:\n-561 out[0] = -((y + z)*(2*z - 2*x + 1)*(y + z - 1))/2;\n-562 out[1] = ((y + z)*(2*x - 2*z + 1)*(y + z - 1))/2;\n-563 out[2] = -((y + z + 1)*(y - 3*z - 2*x*y - 2*x*z + 2*y*z + 2*z*z))/2;\n-564 out[3] = ((y + z)*(2*x - 2*z + 1)*(y + z + 1))/2;\n-565 out[4] = 0;\n-566 out[5] = (y + 1)*(y + z - 1)*(z - 2*x + 1);\n-567 out[6] = -(y + 1)*(2*x - z + 1)*(y + z - 1);\n-568 out[7] = -y*(2*x - z)*(y + z - 1);\n-569 out[8] = z - z*(2*x + 1) - (2*z + y*(y + z + 1))*(x - z + 1) - y*(x - 1)*(y\n-+ z + 1);\n-570 out[9] = 2*z*(y + z - 1);\n-571 out[10] = -2*z*(y + z - 1);\n-572 out[11] = -2*z*(y + z + 1);\n-573 out[12] = 2*z*(y + z + 1);\n-574 out[13] = 2*(y + z - 1)*(2*x - z + 2*x*y - 2*x*z + 2*z*z);\n-575 break;\n-576 case 1:\n-577 out[0] = -(x - z)*(y + z - 0.5)*(z - x + 1);\n-578 out[1] = ((x - z)*(2*y + 2*z - 1)*(x - z + 1))/2;\n-579 out[2] = -((z - x + 1)*(x + 3*z + 2*x*y + 2*x*z - 2*y*z - 2*z*z))/2;\n-580 out[3] = ((x - z)*(2*y + 2*z + 1)*(x - z + 1))/2;\n-581 out[4] = 0;\n-582 out[5] = z - z*(2*y + 1) - (2*z - x*(z - x + 1))*(y + z - 1) + x*(y + 1)*(z\n-- x + 1);\n-583 out[6] = -x*(2*y + z)*(x - z + 1);\n-584 out[7] = -(x - 1)*(x - z + 1)*(2*y + z - 1);\n-585 out[8] = -(x - 1)*(x - z + 1)*(2*y + z + 1);\n-586 out[9] = -2*z*(z - x + 1);\n-587 out[10] = -2*z*(x - z + 1);\n-588 out[11] = 2*z*(z - x + 1);\n-589 out[12] = 2*z*(x - z + 1);\n-590 out[13] = 2*(x - z + 1)*(2*x*y - z - 2*y + 2*y*z + 2*z*z);\n-591 break;\n-592 case 2:\n-593 out[0] = -((x - z)*(2*y + 2*z - 1)*(z - x + 1))/2;\n-594 out[1] = ((x - z)*(2*y + 2*z - 1)*(x - z + 1))/2;\n-595 out[2] = ((x - z + 1)*(x - 2*y + z + 2*x*y + 2*x*z - 2*y*z - 2*z*z))/2;\n-596 out[3] = ((x - z)*(2*y + 2*z + 1)*(x - z + 1))/2;\n-597 out[4] = 4*z - 1;\n-598 out[5] = z - z*(2*y + 1) - ((2*z - x*(z - x + 1))*(y + z - 1))/2 - ((2*y -\n-x*(y + 1))*(y + z - 1))/2 + ((y + 1)*(y + z - 1)*(z - 2*x + 1))/2 + x*(y + 1)*\n-(z - x + 1);\n-599 out[6] = -((x - z + 1)*(x + z + 3*x*y + x*z + y*z + y*y - 1))/2;\n-600 out[7] = -((x - z + 1)*(3*x*y - 4*y - z - x + x*z + y*z + y*y + 1))/2;\n-601 out[8] = -((x - z + 1)*(3*x - 2*y + z + 3*x*y + x*z + y*z + y*y - 1))/2;\n-602 out[9] = -(z - x + 1)*(y + 3*z - 1);\n-603 out[10] = -(x - z + 1)*(y + 3*z - 1);\n-604 out[11] = (y + z + 1)*(z - x + 1) - 2*x*z - 6*z + 2*z*z;\n-605 out[12] = (x - z + 1)*(y + 3*z + 1);\n-606 out[13] = (x - z + 1)*(2*x - 3*y + z + 2*x*y - 2*x*z + 6*y*z + 2*y*y +\n-4*z*z - 3);\n-607 break;\n-608 default:\n-609 DUNE_THROW(RangeError, \"Component out of range.\");\n-610 }\n-611 }\n-612 } else {\n-613 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-614 }\n-615\n-616 return;\n-617 }\n-618\n-619 DUNE_THROW(NotImplemented, \"LagrangePyramidLocalBasis::partial for order \"\n-<< k);\n-620 }\n-621\n-623 static constexpr unsigned int order ()\n-624 {\n-625 return k;\n-626 }\n-627 };\n-628\n-633 template\n-634 class LagrangePyramidLocalCoefficients\n-635 {\n-636 public:\n-638 LagrangePyramidLocalCoefficients ()\n-639 : localKeys_(size())\n-640 {\n-641 if (k==0)\n-642 {\n-643 localKeys_[0] = LocalKey(0,0,0);\n-644 return;\n-645 }\n-646\n-647 if (k==1)\n-648 {\n-649 for (std::size_t i=0; i localKeys_;\n-701 };\n-702\n-707 template\n-708 class LagrangePyramidLocalInterpolation\n-709 {\n-710 public:\n-711\n-719 template\n-720 void interpolate (const F& f, std::vector& out) const\n-721 {\n-722 constexpr auto k = LocalBasis::order();\n-723 using D = typename LocalBasis::Traits::DomainType;\n-724 using DF = typename LocalBasis::Traits::DomainFieldType;\n-725\n-726 out.resize(LocalBasis::size());\n-727\n-728 // Specialization for zero-order case\n-729 if (k==0)\n-730 {\n-731 auto center = ReferenceElements::general(GeometryTypes::\n-pyramid).position(0,0);\n-732 out[0] = f(center);\n-733 return;\n-734 }\n-735\n-736 // Specialization for first-order case\n-737 if (k==1)\n-738 {\n-739 for (unsigned int i=0; i::general(GeometryTypes::\n-pyramid).position(i,3);\n-742 out[i] = f(vertex);\n-743 }\n-744 return;\n-745 }\n-746\n-747 // Specialization for second-order case\n-748 if (k==2)\n-749 {\n-750 out[0] = f( D( {0.0, 0.0, 0.0} ) );\n-751 out[1] = f( D( {1.0, 0.0, 0.0} ) );\n-752 out[2] = f( D( {0.0, 1.0, 0.0} ) );\n-753 out[3] = f( D( {1.0, 1.0, 0.0} ) );\n-754 out[4] = f( D( {0.0, 0.0, 1.0} ) );\n-755 out[5] = f( D( {0.0, 0.5, 0.0} ) );\n-756 out[6] = f( D( {1.0, 0.5, 0.0} ) );\n-757 out[7] = f( D( {0.5, 0.0, 0.0} ) );\n-758 out[8] = f( D( {0.5, 1.0, 0.0} ) );\n-759 out[9] = f( D( {0.0, 0.0, 0.5} ) );\n-760 out[10] = f( D( {0.5, 0.0, 0.5} ) );\n-761 out[11] = f( D( {0.0, 0.5, 0.5} ) );\n-762 out[12] = f( D( {0.5, 0.5, 0.5} ) );\n-763 out[13] = f( D( {0.5, 0.5, 0.0} ) );\n-764\n-765 return;\n-766 }\n-767\n-768 DUNE_THROW(NotImplemented, \"LagrangePyramidLocalInterpolation not\n-implemented for order \" << k);\n-769 }\n-770\n-771 };\n-772\n-773} } // namespace Dune::Impl\n-774\n-775namespace _\bD_\bu_\bn_\be\n-776{\n-807 template\n-_\b8_\b0_\b8 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-809 {\n-810 public:\n-_\b8_\b1_\b3 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n-_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bk_\b>,\n-814 Impl::LagrangePyramidLocalCoefficients,\n-815 Impl::LagrangePyramidLocalInterpolation > >;\n-816\n-_\b8_\b1_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-820 {\n-821 return basis_;\n-822 }\n-823\n-_\b8_\b2_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-827 {\n-828 return coefficients_;\n-829 }\n-830\n-_\b8_\b3_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-834 {\n-835 return interpolation_;\n-836 }\n-837\n-_\b8_\b3_\b9 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n-840 {\n-841 return Impl::LagrangePyramidLocalBasis::size();\n-842 }\n-843\n-_\b8_\b4_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-847 {\n-848 return GeometryTypes::pyramid;\n-849 }\n-850\n-851 private:\n-852 Impl::LagrangePyramidLocalBasis basis_;\n-853 Impl::LagrangePyramidLocalCoefficients coefficients_;\n-854 Impl::LagrangePyramidLocalInterpolation > interpolation_;\n-855 };\n-856\n-857} // namespace Dune\n-858\n-859#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\b3_\b5_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+360 {\n+361 return 2;\n+362 }\n+363\n+364 };\n+365}\n+366#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for 3d pyramids with compile-time polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:809\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-Returns the assignment of the degrees of freedom to the element subentities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:826\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size()\n-The number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:839\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-The reference element that the local finite element is defined on.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:846\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-Returns the local basis, i.e., the set of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:819\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-Returns object that evaluates degrees of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:833\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+HierarchicalSimplexP2LocalBasis()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions (2, in this case)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R,\n+1 >, Dune::FieldMatrix< R, 1, 1 > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 1 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R,\n+1 >, Dune::FieldMatrix< R, 1, 2 > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:181\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions (2 in this case)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:219\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R,\n+1 >, Dune::FieldMatrix< R, 1, 3 > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:256\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:265\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:283\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:259\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:301\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions (2 in this case)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:359\n _\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: emptypoints.hh File Reference\n+dune-localfunctions: hierarchicalsimplexp2localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,31 @@\n \n \n \n \n \n \n \n
    \n \n-
    emptypoints.hh File Reference
    \n+
    hierarchicalsimplexp2localinterpolation.hh File Reference
    \n
    \n
    \n
    #include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n+\n \n

    \n Classes

    class  Dune::LagrangePoint< F, dim >
     
    class  Dune::EmptyPointSet< F, dim >
    class  Dune::HierarchicalSimplexP2LocalInterpolation< LB >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,20 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-emptypoints.hh File Reference\n+hierarchicalsimplexp2localinterpolation.hh File Reference\n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: emptypoints.hh Source File\n+dune-localfunctions: hierarchicalsimplexp2localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,185 +70,130 @@\n
    \n \n \n \n \n \n \n
    \n-
    emptypoints.hh
    \n+
    hierarchicalsimplexp2localinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LAGRANGE_EMPTYPOINTS_HH
    \n-
    6#define DUNE_LAGRANGE_EMPTYPOINTS_HH
    \n+
    5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH
    \n
    7
    \n
    8#include <vector>
    \n
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    16 template< class F, unsigned int dim >
    \n-
    \n-\n-
    18 {
    \n-\n-
    20
    \n-
    21 template< class, class >
    \n-\n-
    23
    \n-
    24 public:
    \n-
    25 static const int dimension = dim;
    \n-
    26
    \n-
    27 typedef F Field;
    \n-
    28
    \n-
    29 typedef FieldVector< Field, dimension > Vector;
    \n-
    30
    \n-
    \n-
    31 const Vector &point () const
    \n-
    32 {
    \n-
    33 return point_;
    \n-
    34 }
    \n-
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    15 template<class LB>
    \n+
    \n+\n+
    17 {
    \n+
    18 public:
    \n+
    19
    \n+
    20 template<typename F, typename C>
    \n+
    \n+
    21 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    22 {
    \n+
    23 typename LB::Traits::DomainType x;
    \n+
    24 typename LB::Traits::RangeType y;
    \n+
    25
    \n+
    26 static_assert(LB::Traits::dimDomain <= 3,
    \n+
    27 "LocalInterpolation for HierarchicalSimplexP2 finite elements"
    \n+
    28 " is only implemented for dimDomain <=3!");
    \n+
    29
    \n+
    30 switch ( int(LB::Traits::dimDomain)) {
    \n+
    31
    \n+
    32 case 1 :
    \n+
    33
    \n+
    34 out.resize(3);
    \n
    35
    \n-
    \n-
    36 const LocalKey &localKey () const
    \n-
    37 {
    \n-
    38 return localKey_;
    \n-
    39 }
    \n-
    \n-
    40
    \n-
    \n-
    41 const Field weight () const
    \n-
    42 {
    \n-
    43 return weight_;
    \n-
    44 }
    \n-
    \n+
    36 // First: the two vertex dofs
    \n+
    37 x[0] = 0.0; out[0] = f(x);
    \n+
    38 x[0] = 1.0; out[2] = f(x);
    \n+
    39
    \n+
    40 // Then: the edge dof
    \n+
    41 x[0] = 0.5; y = f(x);
    \n+
    42 out[1] = y - 0.5*(out[0] + out[2]);
    \n+
    43
    \n+
    44 break;
    \n
    45
    \n-\n-\n-\n-
    49 };
    \n-
    \n+
    46
    \n+
    47 case 2 :
    \n+
    48
    \n+
    49 out.resize(6);
    \n
    50
    \n-
    51 // EmptyPointSet
    \n-
    52 // --------------
    \n-
    53
    \n-
    54 template< class F, unsigned int dim >
    \n-
    \n-\n-
    56 {
    \n-\n-
    58
    \n-
    59 public:
    \n-
    60 typedef F Field;
    \n-
    61
    \n-
    62 static const unsigned int dimension = dim;
    \n-
    63
    \n-\n+
    51 // First: the three vertex dofs
    \n+
    52 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);
    \n+
    53 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);
    \n+
    54 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);
    \n+
    55
    \n+
    56 // Then: the three edge dofs
    \n+
    57 x[0] = 0.5; x[1] = 0.0; y = f(x);
    \n+
    58 out[1] = y - 0.5*(out[0] + out[2]);
    \n+
    59
    \n+
    60 x[0] = 0.0; x[1] = 0.5; y = f(x);
    \n+
    61 out[3] = y - 0.5*(out[0] + out[5]);
    \n+
    62
    \n+
    63 x[0] = 0.5; x[1] = 0.5; y = f(x);
    \n+
    64 out[4] = y - 0.5*(out[2] + out[5]);
    \n
    65
    \n-
    66 typedef typename std::vector< LagrangePoint >::const_iterator iterator;
    \n+
    66 break;
    \n
    67
    \n-
    68 protected:
    \n-
    \n-
    69 EmptyPointSet ( const std::size_t order )
    \n-
    70 : order_( order )
    \n-
    71 {}
    \n-
    \n-
    72
    \n-
    73 public:
    \n-
    \n-
    74 const LagrangePoint &operator[] ( const unsigned int i ) const
    \n-
    75 {
    \n-
    76 assert( i < size() );
    \n-
    77 return points_[ i ];
    \n-
    78 }
    \n-
    \n-
    79
    \n-
    \n-
    80 iterator begin () const
    \n-
    81 {
    \n-
    82 return points_.begin();
    \n-
    83 }
    \n-
    \n+
    68 case 3 :
    \n+
    69
    \n+
    70 out.resize(10);
    \n+
    71
    \n+
    72 // First: the four vertex dofs
    \n+
    73 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);
    \n+
    74 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[2] = f(x);
    \n+
    75 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[5] = f(x);
    \n+
    76 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[9] = f(x);
    \n+
    77
    \n+
    78 // Then: the six edge dofs
    \n+
    79 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);
    \n+
    80 out[1] = y - 0.5*(out[0] + out[2]);
    \n+
    81
    \n+
    82 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n+
    83 out[3] = y - 0.5*(out[0] + out[5]);
    \n
    84
    \n-
    \n-
    85 iterator end () const
    \n-
    86 {
    \n-
    87 return points_.end();
    \n-
    88 }
    \n-
    \n-
    89
    \n-
    \n-
    90 const LocalKey &localKey ( const unsigned int i ) const
    \n-
    91 {
    \n-
    92 return (*this)[ i ].localKey();
    \n-
    93 }
    \n-
    \n-
    94
    \n-
    \n-
    95 std::size_t order () const
    \n-
    96 {
    \n-
    97 return order_;
    \n-
    98 }
    \n-
    \n-
    99
    \n-
    \n-
    100 std::size_t size () const
    \n-
    101 {
    \n-
    102 return points_.size();
    \n-
    103 }
    \n+
    85 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n+
    86 out[4] = y - 0.5*(out[2] + out[5]);
    \n+
    87
    \n+
    88 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    89 out[6] = y - 0.5*(out[0] + out[9]);
    \n+
    90
    \n+
    91 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    92 out[7] = y - 0.5*(out[2] + out[9]);
    \n+
    93
    \n+
    94 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n+
    95 out[8] = y - 0.5*(out[5] + out[9]);
    \n+
    96
    \n+
    97 break;
    \n+
    98
    \n+
    99 }
    \n+
    100 }
    \n+
    \n+
    101
    \n+
    102 };
    \n
    \n+
    103}
    \n
    104
    \n-
    105 protected:
    \n-
    106 std::size_t order_;
    \n-
    107 std::vector< LagrangePoint > points_;
    \n-
    108 };
    \n-
    \n-
    109
    \n-
    110}
    \n-
    111
    \n-
    112#endif // DUNE_LAGRANGE_EMPTYPOINTS_HH
    \n-\n+
    105#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Definition emptypoints.hh:18
    \n-
    const LocalKey & localKey() const
    Definition emptypoints.hh:36
    \n-
    Field weight_
    Definition emptypoints.hh:48
    \n-
    static const int dimension
    Definition emptypoints.hh:25
    \n-
    friend class LagrangePointSetImpl
    Definition emptypoints.hh:22
    \n-
    Vector point_
    Definition emptypoints.hh:46
    \n-
    const Field weight() const
    Definition emptypoints.hh:41
    \n-
    FieldVector< Field, dimension > Vector
    Definition emptypoints.hh:29
    \n-
    F Field
    Definition emptypoints.hh:27
    \n-
    const Vector & point() const
    Definition emptypoints.hh:31
    \n-
    LocalKey localKey_
    Definition emptypoints.hh:47
    \n-
    Definition emptypoints.hh:56
    \n-
    std::size_t order() const
    Definition emptypoints.hh:95
    \n-
    std::size_t order_
    Definition emptypoints.hh:106
    \n-
    static const unsigned int dimension
    Definition emptypoints.hh:62
    \n-
    EmptyPointSet(const std::size_t order)
    Definition emptypoints.hh:69
    \n-
    const LagrangePoint & operator[](const unsigned int i) const
    Definition emptypoints.hh:74
    \n-
    std::size_t size() const
    Definition emptypoints.hh:100
    \n-
    Dune::LagrangePoint< Field, dimension > LagrangePoint
    Definition emptypoints.hh:64
    \n-
    const LocalKey & localKey(const unsigned int i) const
    Definition emptypoints.hh:90
    \n-
    iterator begin() const
    Definition emptypoints.hh:80
    \n-
    iterator end() const
    Definition emptypoints.hh:85
    \n-
    F Field
    Definition emptypoints.hh:60
    \n-
    std::vector< LagrangePoint > points_
    Definition emptypoints.hh:107
    \n-
    std::vector< LagrangePoint >::const_iterator iterator
    Definition emptypoints.hh:66
    \n+
    Definition hierarchicalsimplexp2localinterpolation.hh:17
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition hierarchicalsimplexp2localinterpolation.hh:21
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,203 +1,122 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-emptypoints.hh\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2\n+hierarchicalsimplexp2localinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LAGRANGE_EMPTYPOINTS_HH\n-6#define DUNE_LAGRANGE_EMPTYPOINTS_HH\n+5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH\n+6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH\n 7\n 8#include \n 9\n-10#include \n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-16 template< class F, unsigned int dim >\n-_\b1_\b7 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt\n-18 {\n-19 typedef _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n-20\n-21 template< class, class >\n-_\b2_\b2 friend class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bI_\bm_\bp_\bl;\n-23\n-24 public:\n-_\b2_\b5 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-26\n-_\b2_\b7 typedef F _\bF_\bi_\be_\bl_\bd;\n-28\n-_\b2_\b9 typedef FieldVector< Field, dimension > _\bV_\be_\bc_\bt_\bo_\br;\n-30\n-_\b3_\b1 const _\bV_\be_\bc_\bt_\bo_\br &_\bp_\bo_\bi_\bn_\bt () const\n-32 {\n-33 return _\bp_\bo_\bi_\bn_\bt_\b_;\n-34 }\n+10namespace _\bD_\bu_\bn_\be\n+11{\n+15 template\n+_\b1_\b6 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+17 {\n+18 public:\n+19\n+20 template\n+_\b2_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+22 {\n+23 typename LB::Traits::DomainType x;\n+24 typename LB::Traits::RangeType y;\n+25\n+26 static_assert(LB::Traits::dimDomain <= 3,\n+27 \"LocalInterpolation for HierarchicalSimplexP2 finite elements\"\n+28 \" is only implemented for dimDomain <=3!\");\n+29\n+30 switch ( int(LB::Traits::dimDomain)) {\n+31\n+32 case 1 :\n+33\n+34 out.resize(3);\n 35\n-_\b3_\b6 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by () const\n-37 {\n-38 return _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_;\n-39 }\n-40\n-_\b4_\b1 const _\bF_\bi_\be_\bl_\bd _\bw_\be_\bi_\bg_\bh_\bt () const\n-42 {\n-43 return _\bw_\be_\bi_\bg_\bh_\bt_\b_;\n-44 }\n+36 // First: the two vertex dofs\n+37 x[0] = 0.0; out[0] = f(x);\n+38 x[0] = 1.0; out[2] = f(x);\n+39\n+40 // Then: the edge dof\n+41 x[0] = 0.5; y = f(x);\n+42 out[1] = y - 0.5*(out[0] + out[2]);\n+43\n+44 break;\n 45\n-_\b4_\b6 _\bV_\be_\bc_\bt_\bo_\br _\bp_\bo_\bi_\bn_\bt_\b_ = {};\n-_\b4_\b7 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = {};\n-_\b4_\b8 _\bF_\bi_\be_\bl_\bd _\bw_\be_\bi_\bg_\bh_\bt_\b_ = {};\n-49 };\n+46\n+47 case 2 :\n+48\n+49 out.resize(6);\n 50\n-51 // EmptyPointSet\n-52 // --------------\n-53\n-54 template< class F, unsigned int dim >\n-_\b5_\b5 class _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-56 {\n-57 typedef _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n-58\n-59 public:\n-_\b6_\b0 typedef F _\bF_\bi_\be_\bl_\bd;\n-61\n-_\b6_\b2 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-63\n-_\b6_\b4 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b> _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt;\n+51 // First: the three vertex dofs\n+52 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);\n+53 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);\n+54 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);\n+55\n+56 // Then: the three edge dofs\n+57 x[0] = 0.5; x[1] = 0.0; y = f(x);\n+58 out[1] = y - 0.5*(out[0] + out[2]);\n+59\n+60 x[0] = 0.0; x[1] = 0.5; y = f(x);\n+61 out[3] = y - 0.5*(out[0] + out[5]);\n+62\n+63 x[0] = 0.5; x[1] = 0.5; y = f(x);\n+64 out[4] = y - 0.5*(out[2] + out[5]);\n 65\n-_\b6_\b6 typedef typename std::vector< LagrangePoint >::const_iterator _\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n+66 break;\n 67\n-68 protected:\n-_\b6_\b9 _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt ( const std::size_t _\bo_\br_\bd_\be_\br )\n-70 : _\bo_\br_\bd_\be_\br_\b_( _\bo_\br_\bd_\be_\br )\n-71 {}\n-72\n-73 public:\n-_\b7_\b4 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i ) const\n-75 {\n-76 assert( i < _\bs_\bi_\bz_\be() );\n-77 return _\bp_\bo_\bi_\bn_\bt_\bs_\b_[ i ];\n-78 }\n-79\n-_\b8_\b0 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const\n-81 {\n-82 return _\bp_\bo_\bi_\bn_\bt_\bs_\b_.begin();\n-83 }\n+68 case 3 :\n+69\n+70 out.resize(10);\n+71\n+72 // First: the four vertex dofs\n+73 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);\n+74 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[2] = f(x);\n+75 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[5] = f(x);\n+76 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[9] = f(x);\n+77\n+78 // Then: the six edge dofs\n+79 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);\n+80 out[1] = y - 0.5*(out[0] + out[2]);\n+81\n+82 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);\n+83 out[3] = y - 0.5*(out[0] + out[5]);\n 84\n-_\b8_\b5 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const\n-86 {\n-87 return _\bp_\bo_\bi_\bn_\bt_\bs_\b_.end();\n-88 }\n-89\n-_\b9_\b0 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by ( const unsigned int i ) const\n-91 {\n-92 return (*this)[ i ].localKey();\n-93 }\n-94\n-_\b9_\b5 std::size_t _\bo_\br_\bd_\be_\br () const\n-96 {\n-97 return _\bo_\br_\bd_\be_\br_\b_;\n-98 }\n-99\n-_\b1_\b0_\b0 std::size_t _\bs_\bi_\bz_\be () const\n-101 {\n-102 return _\bp_\bo_\bi_\bn_\bt_\bs_\b_.size();\n-103 }\n+85 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);\n+86 out[4] = y - 0.5*(out[2] + out[5]);\n+87\n+88 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+89 out[6] = y - 0.5*(out[0] + out[9]);\n+90\n+91 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+92 out[7] = y - 0.5*(out[2] + out[9]);\n+93\n+94 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);\n+95 out[8] = y - 0.5*(out[5] + out[9]);\n+96\n+97 break;\n+98\n+99 }\n+100 }\n+101\n+102 };\n+103}\n 104\n-105 protected:\n-_\b1_\b0_\b6 std::size_t _\bo_\br_\bd_\be_\br_\b_;\n-_\b1_\b0_\b7 std::vector< LagrangePoint > _\bp_\bo_\bi_\bn_\bt_\bs_\b_;\n-108 };\n-109\n-110}\n-111\n-112#endif // DUNE_LAGRANGE_EMPTYPOINTS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+105#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bw_\be_\bi_\bg_\bh_\bt_\b_\n-Field weight_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bI_\bm_\bp_\bl\n-friend class LagrangePointSetImpl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\b_\n-Vector point_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bw_\be_\bi_\bg_\bh_\bt\n-const Field weight() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< Field, dimension > Vector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt\n-const Vector & point() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_\n-LocalKey localKey_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n-std::size_t order_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-EmptyPointSet(const std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const LagrangePoint & operator[](const unsigned int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt\n-Dune::LagrangePoint< Field, dimension > LagrangePoint\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(const unsigned int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-iterator begin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\be_\bn_\bd\n-iterator end() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\bs_\b_\n-std::vector< LagrangePoint > points_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-std::vector< LagrangePoint >::const_iterator iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localinterpolation.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localinterpolation.hh:21\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: pq22d.hh File Reference\n+dune-localfunctions: hierarchicalprismp2localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,31 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    pq22d.hh File Reference
    \n+
    hierarchicalprismp2localinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementvariant.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n+
    #include <vector>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n \n

    \n Classes

    class  Dune::PQ22DLocalFiniteElement< D, R >
    class  Dune::HierarchicalPrismP2LocalInterpolation< LB >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,20 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-pq22d.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+hierarchicalprismp2localinterpolation.hh File Reference\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: pq22d.hh Source File\n+dune-localfunctions: hierarchicalprismp2localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,132 +70,104 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    pq22d.hh
    \n+
    hierarchicalprismp2localinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_PQ22DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_PQ22DLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <dune/common/fmatrix.hh>
    \n+
    8#include <vector>
    \n
    9
    \n-\n-
    11
    \n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17 template<class D, class R>
    \n-
    \n-\n-
    19 {
    \n-\n-\n-
    22 public:
    \n-
    23 using Traits = typename LFEVariant::Traits;
    \n-
    24
    \n-
    \n-
    25 PQ22DLocalFiniteElement ( const GeometryType &gt )
    \n-
    26 {
    \n-
    27 if ( gt.isTriangle() )
    \n-\n-
    29 else if ( gt.isQuadrilateral() )
    \n-\n-
    31 }
    \n-
    \n-
    32
    \n-
    \n-
    33 PQ22DLocalFiniteElement ( const GeometryType &gt, const std::vector<unsigned int> vertexmap )
    \n-
    34 {
    \n-
    35 if ( gt.isTriangle() )
    \n-
    36 lfeVariant_ = LagrangeSimplexLocalFiniteElement<D,R,2,2>(vertexmap);
    \n-
    37 else if ( gt.isQuadrilateral() )
    \n-\n-
    39 }
    \n-
    \n-
    40
    \n-
    \n-
    41 const typename Traits::LocalBasisType& localBasis () const
    \n-
    42 {
    \n-
    43 return lfeVariant_.localBasis();
    \n-
    44 }
    \n-
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    15 template<class LB>
    \n+
    \n+\n+
    17 {
    \n+
    18 public:
    \n+
    19
    \n+
    20 template<typename F, typename C>
    \n+
    \n+
    21 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    22 {
    \n+
    23 typename LB::Traits::DomainType x;
    \n+
    24 typename LB::Traits::RangeType y;
    \n+
    25 out.resize(18);
    \n+
    26
    \n+
    27 //First the vertex dofs
    \n+
    28 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);
    \n+
    29 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[1] = f(x);
    \n+
    30 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[2] = f(x);
    \n+
    31 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[3] = f(x);
    \n+
    32 x[0] = 1.0; x[1] = 0.0; x[2] = 1.0; out[4] = f(x);
    \n+
    33 x[0] = 0.0; x[1] = 1.0; x[2] = 1.0; out[5] = f(x);
    \n+
    34
    \n+
    35
    \n+
    36 // Then: the 9 edge dofs and the 3 face dofs
    \n+
    37 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    38 out[6] = y - 0.5*(out[0] + out[3]);
    \n+
    39
    \n+
    40 x[0] = 1.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    41 out[7] = y - 0.5*(out[1] + out[4]);
    \n+
    42
    \n+
    43 x[0] = 0.0; x[1] = 1.0; x[2] = 0.5; y = f(x);
    \n+
    44 out[8] = y - 0.5*(out[2] + out[5]);
    \n
    45
    \n-
    \n-
    46 const typename Traits::LocalCoefficientsType& localCoefficients () const
    \n-
    47 {
    \n-
    48 return lfeVariant_.localCoefficients();
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    51 const typename Traits::LocalInterpolationType& localInterpolation () const
    \n-
    52 {
    \n-
    53 return lfeVariant_.localInterpolation();
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    \n-
    57 unsigned int size () const
    \n-
    58 {
    \n-
    59 return lfeVariant_.size();
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    \n-
    62 GeometryType type () const
    \n-
    63 {
    \n-
    64 return lfeVariant_.type();
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    67 private:
    \n+
    46 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);
    \n+
    47 out[9] = y - 0.5*(out[0] + out[1]);
    \n+
    48
    \n+
    49 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n+
    50 out[10] = y - 0.5*(out[2] + out[0]);
    \n+
    51
    \n+
    52 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n+
    53 out[11] = y - 0.5*(out[2] + out[1]);
    \n+
    54
    \n+
    55 x[0] = 0.5; x[1] = 0.0; x[2] = 1.0; y = f(x);
    \n+
    56 out[12] = y - 0.5*(out[3] + out[4]);
    \n+
    57
    \n+
    58 x[0] = 0.0; x[1] = 0.5; x[2] = 1.0; y = f(x);
    \n+
    59 out[13] = y - 0.5*(out[3] + out[5]);
    \n+
    60
    \n+
    61 x[0] = 0.5; x[1] = 0.5; x[2] = 1.0; y = f(x);
    \n+
    62 out[14] = y - 0.5*(out[4] + out[5]);
    \n+
    63
    \n+
    64
    \n+
    65 //faces
    \n+
    66 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    67 out[15] = y - 0.25*(out[4] + out[1] + out[0] + out[3] );
    \n
    68
    \n-
    69 LFEVariant lfeVariant_;
    \n-
    70 };
    \n-
    \n+
    69 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n+
    70 out[16] = y - 0.25*(out[2] + out[0] + out[3] + out[5] );
    \n
    71
    \n-
    72}
    \n-
    73
    \n-
    74#endif
    \n-\n-\n-\n+
    72 x[0] = 0.5; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n+
    73 out[17] = y - 0.25*(out[2] + out[1] + out[4] + out[5] );
    \n+
    74
    \n+
    75 }
    \n+
    \n+
    76 };
    \n+
    \n+
    77}
    \n+
    78
    \n+
    79#endif
    \n
    Definition bdfmcube.hh:18
    \n-\n-
    typename Dune::LocalFiniteElementTraits< LocalBasis, LocalCoefficients, LocalInterpolation > Traits
    Export LocalFiniteElementTraits.
    Definition localfiniteelementvariant.hh:269
    \n-
    unsigned int size() const
    Number of shape functions.
    Definition localfiniteelementvariant.hh:374
    \n-
    constexpr GeometryType type() const
    Number of shape functions.
    Definition localfiniteelementvariant.hh:382
    \n-
    const Traits::LocalBasisType & localBasis() const
    Provide access to LocalBasis implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:350
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Provide access to LocalCoefficients implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:358
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Provide access to LocalInterpolation implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:366
    \n-
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:836
    \n-
    Definition pq22d.hh:19
    \n-
    typename LFEVariant::Traits Traits
    Definition pq22d.hh:23
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition pq22d.hh:46
    \n-
    PQ22DLocalFiniteElement(const GeometryType &gt, const std::vector< unsigned int > vertexmap)
    Definition pq22d.hh:33
    \n-
    PQ22DLocalFiniteElement(const GeometryType &gt)
    Definition pq22d.hh:25
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition pq22d.hh:57
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition pq22d.hh:51
    \n-
    GeometryType type() const
    Definition pq22d.hh:62
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition pq22d.hh:41
    \n+
    Definition hierarchicalprismp2localinterpolation.hh:17
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition hierarchicalprismp2localinterpolation.hh:21
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,156 +1,96 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-pq22d.hh\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2\n+hierarchicalprismp2localinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_PQ22DLOCALFINITEELEMENT_HH\n-6#define DUNE_PQ22DLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH\n+6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH\n 7\n-8#include \n+8#include \n 9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh>\n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17 template\n-_\b1_\b8 class _\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-19 {\n-20 using _\bL_\bF_\bE_\bV_\ba_\br_\bi_\ba_\bn_\bt =\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b<_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>,\n-21 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b> >;\n-22 public:\n-_\b2_\b3 using _\bT_\br_\ba_\bi_\bt_\bs = typename _\bL_\bF_\bE_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs;\n-24\n-_\b2_\b5 _\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( const GeometryType > )\n-26 {\n-27 if ( gt.isTriangle() )\n-28 lfeVariant_ = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>();\n-29 else if ( gt.isQuadrilateral() )\n-30 lfeVariant_ = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>();\n-31 }\n-32\n-_\b3_\b3 _\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( const GeometryType >, const std::vector vertexmap )\n-34 {\n-35 if ( gt.isTriangle() )\n-36 lfeVariant_ = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>(vertexmap);\n-37 else if ( gt.isQuadrilateral() )\n-38 lfeVariant_ = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>();\n-39 }\n-40\n-_\b4_\b1 const typename Traits::LocalBasisType& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-42 {\n-43 return lfeVariant_._\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs();\n-44 }\n+10namespace _\bD_\bu_\bn_\be\n+11{\n+15 template\n+_\b1_\b6 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+17 {\n+18 public:\n+19\n+20 template\n+_\b2_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+22 {\n+23 typename LB::Traits::DomainType x;\n+24 typename LB::Traits::RangeType y;\n+25 out.resize(18);\n+26\n+27 //First the vertex dofs\n+28 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);\n+29 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[1] = f(x);\n+30 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[2] = f(x);\n+31 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[3] = f(x);\n+32 x[0] = 1.0; x[1] = 0.0; x[2] = 1.0; out[4] = f(x);\n+33 x[0] = 0.0; x[1] = 1.0; x[2] = 1.0; out[5] = f(x);\n+34\n+35\n+36 // Then: the 9 edge dofs and the 3 face dofs\n+37 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+38 out[6] = y - 0.5*(out[0] + out[3]);\n+39\n+40 x[0] = 1.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+41 out[7] = y - 0.5*(out[1] + out[4]);\n+42\n+43 x[0] = 0.0; x[1] = 1.0; x[2] = 0.5; y = f(x);\n+44 out[8] = y - 0.5*(out[2] + out[5]);\n 45\n-_\b4_\b6 const typename Traits::LocalCoefficientsType& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-47 {\n-48 return lfeVariant_._\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs();\n-49 }\n-50\n-_\b5_\b1 const typename Traits::LocalInterpolationType& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-52 {\n-53 return lfeVariant_._\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn();\n-54 }\n-55\n-_\b5_\b7 unsigned int _\bs_\bi_\bz_\be () const\n-58 {\n-59 return lfeVariant_._\bs_\bi_\bz_\be();\n-60 }\n-61\n-_\b6_\b2 GeometryType _\bt_\by_\bp_\be () const\n-63 {\n-64 return lfeVariant_._\bt_\by_\bp_\be();\n-65 }\n-66\n-67 private:\n+46 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);\n+47 out[9] = y - 0.5*(out[0] + out[1]);\n+48\n+49 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);\n+50 out[10] = y - 0.5*(out[2] + out[0]);\n+51\n+52 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);\n+53 out[11] = y - 0.5*(out[2] + out[1]);\n+54\n+55 x[0] = 0.5; x[1] = 0.0; x[2] = 1.0; y = f(x);\n+56 out[12] = y - 0.5*(out[3] + out[4]);\n+57\n+58 x[0] = 0.0; x[1] = 0.5; x[2] = 1.0; y = f(x);\n+59 out[13] = y - 0.5*(out[3] + out[5]);\n+60\n+61 x[0] = 0.5; x[1] = 0.5; x[2] = 1.0; y = f(x);\n+62 out[14] = y - 0.5*(out[4] + out[5]);\n+63\n+64\n+65 //faces\n+66 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+67 out[15] = y - 0.25*(out[4] + out[1] + out[0] + out[3] );\n 68\n-69 LFEVariant lfeVariant_;\n-70 };\n+69 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);\n+70 out[16] = y - 0.25*(out[2] + out[0] + out[3] + out[5] );\n 71\n-72}\n-73\n-74#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh\n+72 x[0] = 0.5; x[1] = 0.5; x[2] = 0.5; y = f(x);\n+73 out[17] = y - 0.25*(out[2] + out[1] + out[4] + out[5] );\n+74\n+75 }\n+76 };\n+77}\n+78\n+79#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b<_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2\n-_\b>_\b,_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b _\b>\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b<_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2\n-_\b>_\b,_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-typename Dune::LocalFiniteElementTraits< LocalBasis, LocalCoefficients,\n-LocalInterpolation > Traits\n-Export LocalFiniteElementTraits.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:269\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:374\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-constexpr GeometryType type() const\n-Number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:382\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-Provide access to LocalBasis implementation of this LocalFiniteElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:350\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-Provide access to LocalCoefficients implementation of this LocalFiniteElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:358\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-Provide access to LocalInterpolation implementation of this LocalFiniteElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:366\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for cubes with arbitrary compile-time dimension and\n-polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for simplices with arbitrary compile-time dimension and\n-polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:836\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:19\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-typename LFEVariant::Traits Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-PQ22DLocalFiniteElement(const GeometryType >, const std::vector< unsigned int\n-> vertexmap)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-PQ22DLocalFiniteElement(const GeometryType >)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localinterpolation.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localinterpolation.hh:21\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: p0.hh File Reference\n+dune-localfunctions: hierarchicalprismp2localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,46 @@\n \n \n \n \n \n \n \n
    \n \n-
    p0.hh File Reference
    \n+
    hierarchicalprismp2localbasis.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include "p0/p0localbasis.hh"
    \n-#include "p0/p0localcoefficients.hh"
    \n-#include "p0/p0localinterpolation.hh"
    \n+\n+

    Hierarchical prism p2 shape functions for the simplex. \n+More...

    \n+
    #include <numeric>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::P0LocalFiniteElement< D, R, d >
     The local p0 finite element on all types of reference elements. More...
    class  Dune::HierarchicalPrismP2LocalBasis< D, R >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

    Hierarchical prism p2 shape functions for the simplex.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,26 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-p0.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+hierarchicalprismp2localbasis.hh File Reference\n+Hierarchical prism p2 shape functions for the simplex. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n-\u00a0 The local p0 finite element on all types of reference elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Hierarchical prism p2 shape functions for the simplex.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: p0.hh Source File\n+dune-localfunctions: hierarchicalprismp2localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,118 +70,271 @@\n \n \n \n \n \n \n \n
    \n-
    p0.hh
    \n+
    hierarchicalprismp2localbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_P0LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_P0LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALBASIS_HH
    \n+
    6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-
    11#include "p0/p0localbasis.hh"
    \n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17
    \n-
    23 template<class D, class R, int d>
    \n-
    \n-\n-
    25 {
    \n-
    26 public:
    \n-\n-\n-
    31
    \n-
    \n-
    34 P0LocalFiniteElement (const GeometryType& type)
    \n-
    35 : interpolation(type), gt(type)
    \n-
    36 {}
    \n-
    \n-
    37
    \n-
    \n-
    40 const typename Traits::LocalBasisType& localBasis () const
    \n-
    41 {
    \n-
    42 return basis;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-\n-
    48 {
    \n-
    49 return coefficients;
    \n-
    50 }
    \n-
    \n-
    51
    \n-
    \n-\n-
    55 {
    \n-
    56 return interpolation;
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-
    60 unsigned int size () const
    \n-
    61 {
    \n-
    62 return 1;
    \n-
    63 }
    \n+
    12#include <numeric>
    \n+
    13
    \n+
    14#include <dune/common/fvector.hh>
    \n+
    15#include <dune/common/fmatrix.hh>
    \n+
    16
    \n+\n+
    18
    \n+
    19namespace Dune
    \n+
    20{
    \n+
    21 template<class D, class R>
    \n+
    \n+\n+
    23 {
    \n+
    24 public:
    \n+
    26 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,3> > Traits;
    \n+
    27
    \n+
    \n+
    29 unsigned int size () const
    \n+
    30 {
    \n+
    31 return 18;
    \n+
    32 }
    \n+
    \n+
    33
    \n+
    \n+
    35 void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    36 std::vector<typename Traits::RangeType> & out) const
    \n+
    37 {
    \n+
    38 out.resize(18);
    \n+
    39
    \n+
    40 out[0]=(1.0-in[0]-in[1])*(1.0-in[2]);
    \n+
    41 out[1]= in[0]*(1-in[2]);
    \n+
    42 out[2]=in[1]*(1-in[2]);
    \n+
    43 out[3]=in[2]*(1.0-in[0]-in[1]);
    \n+
    44 out[4]=in[0]*in[2];
    \n+
    45 out[5]=in[1]*in[2];
    \n+
    46
    \n+
    47 //edges
    \n+
    48 out[6]=2*(1.0-in[0]-in[1])*(0.5-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    49 out[7]=2*in[0]*(-0.5+in[0])*(4*in[2]-4*in[2]*in[2]);
    \n+
    50 out[8]=2*in[1]*(-0.5+in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    51 out[9]=4*in[0]*(1-in[0]-in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    52 out[10]=4*in[1]*(1-in[0]-in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    53 out[11]=4*in[0]*in[1]*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    54 out[12]=4*in[0]*(1-in[0]-in[1])*(-in[2]+2*in[2]*in[2]);
    \n+
    55 out[13]=4*in[1]*(1-in[0]-in[1])*(-in[2]+2*in[2]*in[2]);
    \n+
    56 out[14]=4*in[0]*in[1]*(-in[2]+2*in[2]*in[2]);
    \n+
    57
    \n+
    58 //faces
    \n+
    59 out[15]=4*in[0]*(1-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    60 out[16]=4*in[1]*(1-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    61 out[17]=4*in[0]*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n+
    62 }
    \n
    \n+
    63
    \n
    64
    \n+
    65
    \n
    \n-
    67 GeometryType type () const
    \n-
    68 {
    \n-
    69 return gt;
    \n-
    70 }
    \n-
    \n+
    67 void evaluateJacobian (const typename Traits::DomainType& in, //position
    \n+
    68 std::vector<typename Traits::JacobianType>& out) const //return value
    \n+
    69 {
    \n+
    70 out.resize(18);
    \n
    71
    \n-
    72 private:
    \n-\n-
    74 P0LocalCoefficients coefficients;
    \n-\n-
    76 GeometryType gt;
    \n-
    77 };
    \n-
    \n-
    78
    \n-
    79}
    \n+
    72 //vertices
    \n+
    73 out[0][0][0] = in[2]-1;
    \n+
    74 out[0][0][1] = in[2]-1;
    \n+
    75 out[0][0][2] = in[0]+in[1]-1;
    \n+
    76
    \n+
    77 out[1][0][0] = 1-in[2];
    \n+
    78 out[1][0][1] = 0;
    \n+
    79 out[1][0][2] =-in[0];
    \n
    80
    \n-
    81#endif
    \n-\n-\n-\n-\n+
    81 out[2][0][0] = 0;
    \n+
    82 out[2][0][1] = 1-in[2];
    \n+
    83 out[2][0][2] = -in[1];
    \n+
    84
    \n+
    85 out[3][0][0] = -in[2];
    \n+
    86 out[3][0][1] = -in[2];
    \n+
    87 out[3][0][2] = 1-in[0]-in[1];
    \n+
    88
    \n+
    89 out[4][0][0] = in[2];
    \n+
    90 out[4][0][1] = 0;
    \n+
    91 out[4][0][2] = in[0];
    \n+
    92
    \n+
    93 out[5][0][0] = 0;
    \n+
    94 out[5][0][1] = in[2];
    \n+
    95 out[5][0][2] = in[1];
    \n+
    96
    \n+
    97 //edges
    \n+
    98 out[6][0][0] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    99 out[6][0][1] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    100 out[6][0][2] = 2*(1-in[0]-in[1])*(0.5-in[0]-in[1])*(4-8*in[2]);
    \n+
    101
    \n+
    102 out[7][0][0] = (-1+4*in[0])*(4*in[2]-4*in[2]*in[2]);
    \n+
    103 out[7][0][1] = 0;
    \n+
    104 out[7][0][2] = 2*in[0]*(-0.5+in[0])*(4-8*in[2]);
    \n+
    105
    \n+
    106 out[8][0][0] = 0;
    \n+
    107 out[8][0][1] = (-1+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    108 out[8][0][2] = 2*in[1]*(-0.5+in[1])*(4-8*in[2]);
    \n+
    109
    \n+
    110 out[9][0][0] = (4-8*in[0]-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    111 out[9][0][1] = -4*in[0]*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    112 out[9][0][2] = 4*in[0]*(1-in[0]-in[1])*(-3+4*in[2]);
    \n+
    113
    \n+
    114 out[10][0][0] = (-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    115 out[10][0][1] = (4-4*in[0]-8*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    116 out[10][0][2] = 4*in[1]*(1-in[0]-in[1])*(-3+4*in[2]);
    \n+
    117
    \n+
    118 out[11][0][0] = 4*in[1]*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    119 out[11][0][1] = 4*in[0]*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    120 out[11][0][2] = 4*in[0]*in[1]*(-3+4*in[2]);
    \n+
    121
    \n+
    122 out[12][0][0] = (4-8*in[0]-4*in[1])*(-in[2]+2*in[2]*in[2]);
    \n+
    123 out[12][0][1] = (-4*in[0])*(-in[2]+2*in[2]*in[2]);
    \n+
    124 out[12][0][2] = 4*in[0]*(1-in[0]-in[1])*(-1+4*in[2]);
    \n+
    125
    \n+
    126 out[13][0][0] = -4*in[1]*(-in[2]+2*in[2]*in[2]);
    \n+
    127 out[13][0][1] = (4-4*in[0]-8*in[1])*(-in[2]+2*in[2]*in[2]);
    \n+
    128 out[13][0][2] = 4*in[1]*(1-in[0]-in[1])*(-1+4*in[2]);
    \n+
    129
    \n+
    130 out[14][0][0] = 4*in[1]*(-in[2]+2*in[2]*in[2]);
    \n+
    131 out[14][0][1] = 4*in[0]*(-in[2]+2*in[2]*in[2]);
    \n+
    132 out[14][0][2] = 4*in[0]*in[1]*(-1+4*in[2]);
    \n+
    133
    \n+
    134 //faces
    \n+
    135 out[15][0][0] = (4-8*in[0]-4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    136 out[15][0][1] = -4*in[0]*(4*in[2]-4*in[2]*in[2]);
    \n+
    137 out[15][0][2] = 4*in[0]*(1-in[0]-in[1])*(4-8*in[2]);
    \n+
    138
    \n+
    139 out[16][0][0] = -4*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n+
    140 out[16][0][1] = (4-4*in[0]-8*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    141 out[16][0][2] = 4*in[1]*(1-in[0]-in[1])*(4-8*in[2]);
    \n+
    142
    \n+
    143 out[17][0][0] = 4*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n+
    144 out[17][0][1] = 4*in[0]*(4*in[2]-4*in[2]*in[2]);
    \n+
    145 out[17][0][2] = 4*in[0]*in[1]*(4-8*in[2]);
    \n+
    146 }
    \n+
    \n+
    147
    \n+
    \n+
    149 void partial (const std::array<unsigned int, 3>& order,
    \n+
    150 const typename Traits::DomainType& in, // position
    \n+
    151 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    152 {
    \n+
    153 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    154 if (totalOrder == 0) {
    \n+
    155 evaluateFunction(in, out);
    \n+
    156 } else if (totalOrder == 1) {
    \n+
    157 out.resize(size());
    \n+
    158 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    159
    \n+
    160 switch (direction) {
    \n+
    161 case 0:
    \n+
    162 out[0] = in[2]-1;
    \n+
    163 out[1] = 1-in[2];
    \n+
    164 out[2] = 0;
    \n+
    165 out[3] = -in[2];
    \n+
    166 out[4] = in[2];
    \n+
    167 out[5] = 0;
    \n+
    168 out[6] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    169 out[7] = (-1+4*in[0])*(4*in[2]-4*in[2]*in[2]);
    \n+
    170 out[8] = 0;
    \n+
    171 out[9] = (4-8*in[0]-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    172 out[10] = (-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    173 out[11] = 4*in[1]*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    174 out[12] = (4-8*in[0]-4*in[1])*(-in[2]+2*in[2]*in[2]);
    \n+
    175 out[13] = -4*in[1]*(-in[2]+2*in[2]*in[2]);
    \n+
    176 out[14] = 4*in[1]*(-in[2]+2*in[2]*in[2]);
    \n+
    177 out[15] = (4-8*in[0]-4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    178 out[16] = -4*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n+
    179 out[17] = 4*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n+
    180 break;
    \n+
    181 case 1:
    \n+
    182 out[0] = in[2]-1;
    \n+
    183 out[1] = 0;
    \n+
    184 out[2] = 1-in[2];
    \n+
    185 out[3] = -in[2];
    \n+
    186 out[4] = 0;
    \n+
    187 out[5] = in[2];
    \n+
    188 out[6] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    189 out[7] = 0;
    \n+
    190 out[8] = (-1+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    191 out[9] = -4*in[0]*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    192 out[10] = (4-4*in[0]-8*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    193 out[11] = 4*in[0]*(1-3*in[2]+2*in[2]*in[2]);
    \n+
    194 out[12] = (-4*in[0])*(-in[2]+2*in[2]*in[2]);
    \n+
    195 out[13] = (4-4*in[0]-8*in[1])*(-in[2]+2*in[2]*in[2]);
    \n+
    196 out[14] = 4*in[0]*(-in[2]+2*in[2]*in[2]);
    \n+
    197 out[15] = -4*in[0]*(4*in[2]-4*in[2]*in[2]);
    \n+
    198 out[16] = (4-4*in[0]-8*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n+
    199 out[17] = 4*in[0]*(4*in[2]-4*in[2]*in[2]);
    \n+
    200 break;
    \n+
    201 case 2:
    \n+
    202 out[0] = in[0]+in[1]-1;
    \n+
    203 out[1] =-in[0];
    \n+
    204 out[2] = -in[1];
    \n+
    205 out[3] = 1-in[0]-in[1];
    \n+
    206 out[4] = in[0];
    \n+
    207 out[5] = in[1];
    \n+
    208 out[6] = 2*(1-in[0]-in[1])*(0.5-in[0]-in[1])*(4-8*in[2]);
    \n+
    209 out[7] = 2*in[0]*(-0.5+in[0])*(4-8*in[2]);
    \n+
    210 out[8] = 2*in[1]*(-0.5+in[1])*(4-8*in[2]);
    \n+
    211 out[9] = 4*in[0]*(1-in[0]-in[1])*(-3+4*in[2]);
    \n+
    212 out[10] = 4*in[1]*(1-in[0]-in[1])*(-3+4*in[2]);
    \n+
    213 out[11] = 4*in[0]*in[1]*(-3+4*in[2]);
    \n+
    214 out[12] = 4*in[0]*(1-in[0]-in[1])*(-1+4*in[2]);
    \n+
    215 out[13] = 4*in[1]*(1-in[0]-in[1])*(-1+4*in[2]);
    \n+
    216 out[14] = 4*in[0]*in[1]*(-1+4*in[2]);
    \n+
    217 out[15] = 4*in[0]*(1-in[0]-in[1])*(4-8*in[2]);
    \n+
    218 out[16] = 4*in[1]*(1-in[0]-in[1])*(4-8*in[2]);
    \n+
    219 out[17] = 4*in[0]*in[1]*(4-8*in[2]);
    \n+
    220 break;
    \n+
    221 default:
    \n+
    222 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    223 }
    \n+
    224 } else {
    \n+
    225 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    226 }
    \n+
    227 }
    \n+
    \n+
    228
    \n+
    \n+
    231 unsigned int order() const
    \n+
    232 {
    \n+
    233 return 2;
    \n+
    234 }
    \n+
    \n+
    235
    \n+
    236 };
    \n+
    \n+
    237}
    \n+
    238#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    The local p0 finite element on all types of reference elements.
    Definition p0.hh:25
    \n-
    P0LocalFiniteElement(const GeometryType &type)
    Definition p0.hh:34
    \n-
    unsigned int size() const
    The number of shape functions \u2013 here: 1.
    Definition p0.hh:60
    \n-
    GeometryType type() const
    Definition p0.hh:67
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition p0.hh:40
    \n-
    LocalFiniteElementTraits< P0LocalBasis< D, R, d >, P0LocalCoefficients, P0LocalInterpolation< P0LocalBasis< D, R, d > > > Traits
    Definition p0.hh:30
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition p0.hh:47
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition p0.hh:54
    \n-
    Definition p0localbasis.hh:31
    \n-
    Definition p0localcoefficients.hh:25
    \n-
    Definition p0localinterpolation.hh:20
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Definition hierarchicalprismp2localbasis.hh:23
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
    export type traits for function signature
    Definition hierarchicalprismp2localbasis.hh:26
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalprismp2localbasis.hh:29
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition hierarchicalprismp2localbasis.hh:231
    \n+
    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 hierarchicalprismp2localbasis.hh:149
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalprismp2localbasis.hh:35
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalprismp2localbasis.hh:67
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,125 +1,282 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-p0.hh\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2\n+hierarchicalprismp2localbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_P0LOCALFINITEELEMENT_HH\n-6#define DUNE_P0LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALBASIS_HH\n+6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALBASIS_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17\n-23 template\n-_\b2_\b4 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-25 {\n-26 public:\n-29 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b>, _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b0 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-31\n-_\b3_\b4 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (const GeometryType& _\bt_\by_\bp_\be)\n-35 : interpolation(_\bt_\by_\bp_\be), gt(_\bt_\by_\bp_\be)\n-36 {}\n-37\n-_\b4_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-41 {\n-42 return basis;\n-43 }\n-44\n-_\b4_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-48 {\n-49 return coefficients;\n-50 }\n-51\n-_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-55 {\n-56 return interpolation;\n-57 }\n-58\n-_\b6_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-61 {\n-62 return 1;\n-63 }\n+12#include \n+13\n+14#include \n+15#include \n+16\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+18\n+19namespace _\bD_\bu_\bn_\be\n+20{\n+21 template\n+_\b2_\b2 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+23 {\n+24 public:\n+_\b2_\b6 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,1,Dune::\n+FieldVector, Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+27\n+_\b2_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+30 {\n+31 return 18;\n+32 }\n+33\n+_\b3_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+36 std::vector & out) const\n+37 {\n+38 out.resize(18);\n+39\n+40 out[0]=(1.0-in[0]-in[1])*(1.0-in[2]);\n+41 out[1]= in[0]*(1-in[2]);\n+42 out[2]=in[1]*(1-in[2]);\n+43 out[3]=in[2]*(1.0-in[0]-in[1]);\n+44 out[4]=in[0]*in[2];\n+45 out[5]=in[1]*in[2];\n+46\n+47 //edges\n+48 out[6]=2*(1.0-in[0]-in[1])*(0.5-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);\n+49 out[7]=2*in[0]*(-0.5+in[0])*(4*in[2]-4*in[2]*in[2]);\n+50 out[8]=2*in[1]*(-0.5+in[1])*(4*in[2]-4*in[2]*in[2]);\n+51 out[9]=4*in[0]*(1-in[0]-in[1])*(1-3*in[2]+2*in[2]*in[2]);\n+52 out[10]=4*in[1]*(1-in[0]-in[1])*(1-3*in[2]+2*in[2]*in[2]);\n+53 out[11]=4*in[0]*in[1]*(1-3*in[2]+2*in[2]*in[2]);\n+54 out[12]=4*in[0]*(1-in[0]-in[1])*(-in[2]+2*in[2]*in[2]);\n+55 out[13]=4*in[1]*(1-in[0]-in[1])*(-in[2]+2*in[2]*in[2]);\n+56 out[14]=4*in[0]*in[1]*(-in[2]+2*in[2]*in[2]);\n+57\n+58 //faces\n+59 out[15]=4*in[0]*(1-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);\n+60 out[16]=4*in[1]*(1-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);\n+61 out[17]=4*in[0]*in[1]*(4*in[2]-4*in[2]*in[2]);\n+62 }\n+63\n 64\n-_\b6_\b7 GeometryType _\bt_\by_\bp_\be () const\n-68 {\n-69 return gt;\n-70 }\n+65\n+_\b6_\b7 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, //position\n+68 std::vector& out) const //return value\n+69 {\n+70 out.resize(18);\n 71\n-72 private:\n-73 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b> basis;\n-74 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-75 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b> > interpolation;\n-76 GeometryType gt;\n-77 };\n-78\n-79}\n+72 //vertices\n+73 out[0][0][0] = in[2]-1;\n+74 out[0][0][1] = in[2]-1;\n+75 out[0][0][2] = in[0]+in[1]-1;\n+76\n+77 out[1][0][0] = 1-in[2];\n+78 out[1][0][1] = 0;\n+79 out[1][0][2] =-in[0];\n 80\n-81#endif\n-_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+81 out[2][0][0] = 0;\n+82 out[2][0][1] = 1-in[2];\n+83 out[2][0][2] = -in[1];\n+84\n+85 out[3][0][0] = -in[2];\n+86 out[3][0][1] = -in[2];\n+87 out[3][0][2] = 1-in[0]-in[1];\n+88\n+89 out[4][0][0] = in[2];\n+90 out[4][0][1] = 0;\n+91 out[4][0][2] = in[0];\n+92\n+93 out[5][0][0] = 0;\n+94 out[5][0][1] = in[2];\n+95 out[5][0][2] = in[1];\n+96\n+97 //edges\n+98 out[6][0][0] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n+99 out[6][0][1] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n+100 out[6][0][2] = 2*(1-in[0]-in[1])*(0.5-in[0]-in[1])*(4-8*in[2]);\n+101\n+102 out[7][0][0] = (-1+4*in[0])*(4*in[2]-4*in[2]*in[2]);\n+103 out[7][0][1] = 0;\n+104 out[7][0][2] = 2*in[0]*(-0.5+in[0])*(4-8*in[2]);\n+105\n+106 out[8][0][0] = 0;\n+107 out[8][0][1] = (-1+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n+108 out[8][0][2] = 2*in[1]*(-0.5+in[1])*(4-8*in[2]);\n+109\n+110 out[9][0][0] = (4-8*in[0]-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n+111 out[9][0][1] = -4*in[0]*(1-3*in[2]+2*in[2]*in[2]);\n+112 out[9][0][2] = 4*in[0]*(1-in[0]-in[1])*(-3+4*in[2]);\n+113\n+114 out[10][0][0] = (-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n+115 out[10][0][1] = (4-4*in[0]-8*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n+116 out[10][0][2] = 4*in[1]*(1-in[0]-in[1])*(-3+4*in[2]);\n+117\n+118 out[11][0][0] = 4*in[1]*(1-3*in[2]+2*in[2]*in[2]);\n+119 out[11][0][1] = 4*in[0]*(1-3*in[2]+2*in[2]*in[2]);\n+120 out[11][0][2] = 4*in[0]*in[1]*(-3+4*in[2]);\n+121\n+122 out[12][0][0] = (4-8*in[0]-4*in[1])*(-in[2]+2*in[2]*in[2]);\n+123 out[12][0][1] = (-4*in[0])*(-in[2]+2*in[2]*in[2]);\n+124 out[12][0][2] = 4*in[0]*(1-in[0]-in[1])*(-1+4*in[2]);\n+125\n+126 out[13][0][0] = -4*in[1]*(-in[2]+2*in[2]*in[2]);\n+127 out[13][0][1] = (4-4*in[0]-8*in[1])*(-in[2]+2*in[2]*in[2]);\n+128 out[13][0][2] = 4*in[1]*(1-in[0]-in[1])*(-1+4*in[2]);\n+129\n+130 out[14][0][0] = 4*in[1]*(-in[2]+2*in[2]*in[2]);\n+131 out[14][0][1] = 4*in[0]*(-in[2]+2*in[2]*in[2]);\n+132 out[14][0][2] = 4*in[0]*in[1]*(-1+4*in[2]);\n+133\n+134 //faces\n+135 out[15][0][0] = (4-8*in[0]-4*in[1])*(4*in[2]-4*in[2]*in[2]);\n+136 out[15][0][1] = -4*in[0]*(4*in[2]-4*in[2]*in[2]);\n+137 out[15][0][2] = 4*in[0]*(1-in[0]-in[1])*(4-8*in[2]);\n+138\n+139 out[16][0][0] = -4*in[1]*(4*in[2]-4*in[2]*in[2]);\n+140 out[16][0][1] = (4-4*in[0]-8*in[1])*(4*in[2]-4*in[2]*in[2]);\n+141 out[16][0][2] = 4*in[1]*(1-in[0]-in[1])*(4-8*in[2]);\n+142\n+143 out[17][0][0] = 4*in[1]*(4*in[2]-4*in[2]*in[2]);\n+144 out[17][0][1] = 4*in[0]*(4*in[2]-4*in[2]*in[2]);\n+145 out[17][0][2] = 4*in[0]*in[1]*(4-8*in[2]);\n+146 }\n+147\n+_\b1_\b4_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+150 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+151 std::vector& out) const // return value\n+152 {\n+153 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+154 if (totalOrder == 0) {\n+155 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+156 } else if (totalOrder == 1) {\n+157 out.resize(_\bs_\bi_\bz_\be());\n+158 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n+159\n+160 switch (direction) {\n+161 case 0:\n+162 out[0] = in[2]-1;\n+163 out[1] = 1-in[2];\n+164 out[2] = 0;\n+165 out[3] = -in[2];\n+166 out[4] = in[2];\n+167 out[5] = 0;\n+168 out[6] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n+169 out[7] = (-1+4*in[0])*(4*in[2]-4*in[2]*in[2]);\n+170 out[8] = 0;\n+171 out[9] = (4-8*in[0]-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n+172 out[10] = (-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n+173 out[11] = 4*in[1]*(1-3*in[2]+2*in[2]*in[2]);\n+174 out[12] = (4-8*in[0]-4*in[1])*(-in[2]+2*in[2]*in[2]);\n+175 out[13] = -4*in[1]*(-in[2]+2*in[2]*in[2]);\n+176 out[14] = 4*in[1]*(-in[2]+2*in[2]*in[2]);\n+177 out[15] = (4-8*in[0]-4*in[1])*(4*in[2]-4*in[2]*in[2]);\n+178 out[16] = -4*in[1]*(4*in[2]-4*in[2]*in[2]);\n+179 out[17] = 4*in[1]*(4*in[2]-4*in[2]*in[2]);\n+180 break;\n+181 case 1:\n+182 out[0] = in[2]-1;\n+183 out[1] = 0;\n+184 out[2] = 1-in[2];\n+185 out[3] = -in[2];\n+186 out[4] = 0;\n+187 out[5] = in[2];\n+188 out[6] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n+189 out[7] = 0;\n+190 out[8] = (-1+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n+191 out[9] = -4*in[0]*(1-3*in[2]+2*in[2]*in[2]);\n+192 out[10] = (4-4*in[0]-8*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n+193 out[11] = 4*in[0]*(1-3*in[2]+2*in[2]*in[2]);\n+194 out[12] = (-4*in[0])*(-in[2]+2*in[2]*in[2]);\n+195 out[13] = (4-4*in[0]-8*in[1])*(-in[2]+2*in[2]*in[2]);\n+196 out[14] = 4*in[0]*(-in[2]+2*in[2]*in[2]);\n+197 out[15] = -4*in[0]*(4*in[2]-4*in[2]*in[2]);\n+198 out[16] = (4-4*in[0]-8*in[1])*(4*in[2]-4*in[2]*in[2]);\n+199 out[17] = 4*in[0]*(4*in[2]-4*in[2]*in[2]);\n+200 break;\n+201 case 2:\n+202 out[0] = in[0]+in[1]-1;\n+203 out[1] =-in[0];\n+204 out[2] = -in[1];\n+205 out[3] = 1-in[0]-in[1];\n+206 out[4] = in[0];\n+207 out[5] = in[1];\n+208 out[6] = 2*(1-in[0]-in[1])*(0.5-in[0]-in[1])*(4-8*in[2]);\n+209 out[7] = 2*in[0]*(-0.5+in[0])*(4-8*in[2]);\n+210 out[8] = 2*in[1]*(-0.5+in[1])*(4-8*in[2]);\n+211 out[9] = 4*in[0]*(1-in[0]-in[1])*(-3+4*in[2]);\n+212 out[10] = 4*in[1]*(1-in[0]-in[1])*(-3+4*in[2]);\n+213 out[11] = 4*in[0]*in[1]*(-3+4*in[2]);\n+214 out[12] = 4*in[0]*(1-in[0]-in[1])*(-1+4*in[2]);\n+215 out[13] = 4*in[1]*(1-in[0]-in[1])*(-1+4*in[2]);\n+216 out[14] = 4*in[0]*in[1]*(-1+4*in[2]);\n+217 out[15] = 4*in[0]*(1-in[0]-in[1])*(4-8*in[2]);\n+218 out[16] = 4*in[1]*(1-in[0]-in[1])*(4-8*in[2]);\n+219 out[17] = 4*in[0]*in[1]*(4-8*in[2]);\n+220 break;\n+221 default:\n+222 DUNE_THROW(RangeError, \"Component out of range.\");\n+223 }\n+224 } else {\n+225 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+226 }\n+227 }\n+228\n+_\b2_\b3_\b1 unsigned int _\bo_\br_\bd_\be_\br() const\n+232 {\n+233 return 2;\n+234 }\n+235\n+236 };\n+237}\n+238#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-The local p0 finite element on all types of reference elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-P0LocalFiniteElement(const GeometryType &type)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R,\n+1 >, Dune::FieldMatrix< R, 1, 3 > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-The number of shape functions \u00e2\u0080\u0093 here: 1.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< P0LocalBasis< D, R, d >, P0LocalCoefficients,\n-P0LocalInterpolation< P0LocalBasis< D, R, d > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localinterpolation.hh:20\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:231\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:67\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangelfecache.hh File Reference\n+dune-localfunctions: hierarchicalp1withelementbubble.hh File Reference\n \n \n \n \n \n \n \n@@ -65,48 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    lagrangelfecache.hh File Reference
    \n+
    hierarchicalp1withelementbubble.hh File Reference
    \n
    \n
    \n-
    #include <tuple>
    \n-#include <utility>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/typeindex.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangeprism.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangepyramid.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n-#include <dune/localfunctions/lagrange/p0.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementvariantcache.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n \n-\n-\n-\n-\n+\n+\n+\n+\n

    \n Typedefs

    template<class D , class R , std::size_t dim, std::size_t order>
    using Dune::LagrangeLocalFiniteElementCache = LocalFiniteElementVariantCache< Impl::ImplementedLagrangeFiniteElements< D, R, dim, order > >
     A cache that stores all available Pk/Qk like local finite elements for the given dimension and order.
     
    template<class D , class R , int dim>
    using Dune::HierarchicalP1WithElementBubbleLocalFiniteElement = SimplexP1BubbleLocalFiniteElement< D, R, dim >
     Linear Lagrange functions enriched with an element bubble function.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,32 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-lagrangelfecache.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+hierarchicalp1withelementbubble.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be<\n- Impl::ImplementedLagrangeFiniteElements< D, R, dim, order > >\n-\u00a0 A cache that stores all available Pk/Qk like local finite elements for\n- the given dimension and order.\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b1_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt =\n+ _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt< D, R, dim >\n+\u00a0 Linear Lagrange functions enriched with an element bubble function.\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangelfecache.hh Source File\n+dune-localfunctions: hierarchicalp1withelementbubble.hh Source File\n \n \n \n \n \n \n \n@@ -70,145 +70,41 @@\n
    \n \n \n \n \n \n \n
    \n-
    lagrangelfecache.hh
    \n+
    hierarchicalp1withelementbubble.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
    \n+
    5#ifndef DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <tuple>
    \n-
    9#include <utility>
    \n-
    10
    \n-
    11#include <dune/geometry/type.hh>
    \n-
    12#include <dune/geometry/typeindex.hh>
    \n-
    13
    \n-\n-\n-\n-\n-\n-\n+\n+
    9
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    16 template<class D, class R, int dim>
    \n+\n+\n+
    19}
    \n
    20
    \n-
    21
    \n-
    22namespace Dune {
    \n-
    23
    \n-
    24
    \n-
    25
    \n-
    26namespace Impl {
    \n-
    27
    \n-
    28 // Provide implemented Lagrange local finite elements
    \n-
    29
    \n-
    30 template<class D, class R, std::size_t dim, std::size_t order>
    \n-
    31 struct ImplementedLagrangeFiniteElements : public FixedDimLocalGeometryTypeIndex<dim>
    \n-
    32 {
    \n-
    33 using FixedDimLocalGeometryTypeIndex<dim>::index;
    \n-
    34 static auto getImplementations()
    \n-
    35 {
    \n-
    36 return std::make_tuple(
    \n-
    37 std::make_pair(index(GeometryTypes::simplex(dim)), []() { return LagrangeSimplexLocalFiniteElement<D,R,dim,order>(); }),
    \n-
    38 std::make_pair(index(GeometryTypes::cube(dim)), []() { return LagrangeCubeLocalFiniteElement<D,R,dim,order>(); })
    \n-
    39 );
    \n-
    40 }
    \n-
    41 };
    \n-
    42
    \n-
    43 template<class D, class R, std::size_t dim>
    \n-
    44 struct ImplementedLagrangeFiniteElements<D,R,dim,0> : public FixedDimLocalGeometryTypeIndex<dim>
    \n-
    45 {
    \n-
    46 using FixedDimLocalGeometryTypeIndex<dim>::index;
    \n-
    47 static auto getImplementations()
    \n-
    48 {
    \n-
    49 return std::make_tuple(
    \n-
    50 std::make_pair(index(GeometryTypes::simplex(dim)), []() { return P0LocalFiniteElement<D,R,dim>(GeometryTypes::simplex(dim)); }),
    \n-
    51 std::make_pair(index(GeometryTypes::cube(dim)), []() { return P0LocalFiniteElement<D,R,dim>(GeometryTypes::cube(dim)); }),
    \n-
    52 std::make_pair(index(GeometryTypes::none(dim)), []() { return P0LocalFiniteElement<D,R,dim>(GeometryTypes::none(dim)); })
    \n-
    53 );
    \n-
    54 }
    \n-
    55 };
    \n-
    56
    \n-
    57 template<class D, class R>
    \n-
    58 struct ImplementedLagrangeFiniteElements<D,R,3,0> : public FixedDimLocalGeometryTypeIndex<3>
    \n-
    59 {
    \n-
    60 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n-
    61 static auto getImplementations()
    \n-
    62 {
    \n-
    63 return std::make_tuple(
    \n-
    64 std::make_pair(index(GeometryTypes::tetrahedron), []() { return P0LocalFiniteElement<D,R,3>(GeometryTypes::tetrahedron); }),
    \n-
    65 std::make_pair(index(GeometryTypes::hexahedron), []() { return P0LocalFiniteElement<D,R,3>(GeometryTypes::hexahedron); }),
    \n-
    66 std::make_pair(index(GeometryTypes::prism), []() { return P0LocalFiniteElement<D,R,3>(GeometryTypes::prism); }),
    \n-
    67 std::make_pair(index(GeometryTypes::pyramid), []() { return P0LocalFiniteElement<D,R,3>(GeometryTypes::pyramid); })
    \n-
    68 );
    \n-
    69 }
    \n-
    70 };
    \n-
    71
    \n-
    72 template<class D, class R>
    \n-
    73 struct ImplementedLagrangeFiniteElements<D,R,3,1> : public FixedDimLocalGeometryTypeIndex<3>
    \n-
    74 {
    \n-
    75 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n-
    76 static auto getImplementations()
    \n-
    77 {
    \n-
    78 return std::make_tuple(
    \n-
    79 std::make_pair(index(GeometryTypes::tetrahedron), []() { return LagrangeSimplexLocalFiniteElement<D,R,3,1>(); }),
    \n-
    80 std::make_pair(index(GeometryTypes::hexahedron), []() { return LagrangeCubeLocalFiniteElement<D,R,3,1>(); }),
    \n-
    81 std::make_pair(index(GeometryTypes::prism), []() { return LagrangePrismLocalFiniteElement<D,R,1>(); }),
    \n-
    82 std::make_pair(index(GeometryTypes::pyramid), []() { return LagrangePyramidLocalFiniteElement<D,R,1>(); })
    \n-
    83 );
    \n-
    84 }
    \n-
    85 };
    \n-
    86
    \n-
    87 template<class D, class R>
    \n-
    88 struct ImplementedLagrangeFiniteElements<D,R,3,2> : public FixedDimLocalGeometryTypeIndex<3>
    \n-
    89 {
    \n-
    90 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n-
    91 static auto getImplementations()
    \n-
    92 {
    \n-
    93 return std::make_tuple(
    \n-
    94 std::make_pair(index(GeometryTypes::tetrahedron), []() { return LagrangeSimplexLocalFiniteElement<D,R,3,2>(); }),
    \n-
    95 std::make_pair(index(GeometryTypes::hexahedron), []() { return LagrangeCubeLocalFiniteElement<D,R,3,2>(); }),
    \n-
    96 std::make_pair(index(GeometryTypes::prism), []() { return LagrangePrismLocalFiniteElement<D,R,2>(); }),
    \n-
    97 std::make_pair(index(GeometryTypes::pyramid), []() { return LagrangePyramidLocalFiniteElement<D,R,2>(); })
    \n-
    98 );
    \n-
    99 }
    \n-
    100 };
    \n-
    101
    \n-
    102} // namespace Impl
    \n-
    103
    \n-
    104
    \n-
    105
    \n-
    117template<class D, class R, std::size_t dim, std::size_t order>
    \n-\n-
    119
    \n-
    120
    \n-
    121
    \n-
    122} // namespace Dune
    \n-
    123
    \n-
    124
    \n-
    125
    \n-
    126
    \n-
    127#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
    \n-\n-\n-\n-\n-\n-\n+
    21#endif // DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \n+
    Linear Lagrange functions enriched with an element bubble function.
    Definition simplexp1bubble.hh:45
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,164 +1,35 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-lagrangelfecache.hh\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+hierarchicalp1withelementbubble.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH\n-6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH\n+5#ifndef DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n+6#define DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n+9\n+10namespace _\bD_\bu_\bn_\be\n+11{\n+16 template\n+_\b1_\b7 using _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b1_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+18 = _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>;\n+19}\n 20\n-21\n-22namespace _\bD_\bu_\bn_\be {\n-23\n-24\n-25\n-26namespace Impl {\n-27\n-28 // Provide implemented Lagrange local finite elements\n-29\n-30 template\n-31 struct ImplementedLagrangeFiniteElements : public\n-FixedDimLocalGeometryTypeIndex\n-32 {\n-33 using FixedDimLocalGeometryTypeIndex::index;\n-34 static auto getImplementations()\n-35 {\n-36 return std::make_tuple(\n-37 std::make_pair(index(GeometryTypes::simplex(dim)), []() { return\n-LagrangeSimplexLocalFiniteElement(); }),\n-38 std::make_pair(index(GeometryTypes::cube(dim)), []() { return\n-LagrangeCubeLocalFiniteElement(); })\n-39 );\n-40 }\n-41 };\n-42\n-43 template\n-44 struct ImplementedLagrangeFiniteElements : public\n-FixedDimLocalGeometryTypeIndex\n-45 {\n-46 using FixedDimLocalGeometryTypeIndex::index;\n-47 static auto getImplementations()\n-48 {\n-49 return std::make_tuple(\n-50 std::make_pair(index(GeometryTypes::simplex(dim)), []() { return\n-P0LocalFiniteElement(GeometryTypes::simplex(dim)); }),\n-51 std::make_pair(index(GeometryTypes::cube(dim)), []() { return\n-P0LocalFiniteElement(GeometryTypes::cube(dim)); }),\n-52 std::make_pair(index(GeometryTypes::none(dim)), []() { return\n-P0LocalFiniteElement(GeometryTypes::none(dim)); })\n-53 );\n-54 }\n-55 };\n-56\n-57 template\n-58 struct ImplementedLagrangeFiniteElements : public\n-FixedDimLocalGeometryTypeIndex<3>\n-59 {\n-60 using FixedDimLocalGeometryTypeIndex<3>::index;\n-61 static auto getImplementations()\n-62 {\n-63 return std::make_tuple(\n-64 std::make_pair(index(GeometryTypes::tetrahedron), []() { return\n-P0LocalFiniteElement(GeometryTypes::tetrahedron); }),\n-65 std::make_pair(index(GeometryTypes::hexahedron), []() { return\n-P0LocalFiniteElement(GeometryTypes::hexahedron); }),\n-66 std::make_pair(index(GeometryTypes::prism), []() { return\n-P0LocalFiniteElement(GeometryTypes::prism); }),\n-67 std::make_pair(index(GeometryTypes::pyramid), []() { return\n-P0LocalFiniteElement(GeometryTypes::pyramid); })\n-68 );\n-69 }\n-70 };\n-71\n-72 template\n-73 struct ImplementedLagrangeFiniteElements : public\n-FixedDimLocalGeometryTypeIndex<3>\n-74 {\n-75 using FixedDimLocalGeometryTypeIndex<3>::index;\n-76 static auto getImplementations()\n-77 {\n-78 return std::make_tuple(\n-79 std::make_pair(index(GeometryTypes::tetrahedron), []() { return\n-LagrangeSimplexLocalFiniteElement(); }),\n-80 std::make_pair(index(GeometryTypes::hexahedron), []() { return\n-LagrangeCubeLocalFiniteElement(); }),\n-81 std::make_pair(index(GeometryTypes::prism), []() { return\n-LagrangePrismLocalFiniteElement(); }),\n-82 std::make_pair(index(GeometryTypes::pyramid), []() { return\n-LagrangePyramidLocalFiniteElement(); })\n-83 );\n-84 }\n-85 };\n-86\n-87 template\n-88 struct ImplementedLagrangeFiniteElements : public\n-FixedDimLocalGeometryTypeIndex<3>\n-89 {\n-90 using FixedDimLocalGeometryTypeIndex<3>::index;\n-91 static auto getImplementations()\n-92 {\n-93 return std::make_tuple(\n-94 std::make_pair(index(GeometryTypes::tetrahedron), []() { return\n-LagrangeSimplexLocalFiniteElement(); }),\n-95 std::make_pair(index(GeometryTypes::hexahedron), []() { return\n-LagrangeCubeLocalFiniteElement(); }),\n-96 std::make_pair(index(GeometryTypes::prism), []() { return\n-LagrangePrismLocalFiniteElement(); }),\n-97 std::make_pair(index(GeometryTypes::pyramid), []() { return\n-LagrangePyramidLocalFiniteElement(); })\n-98 );\n-99 }\n-100 };\n-101\n-102} // namespace Impl\n-103\n-104\n-105\n-117template\n-_\b1_\b1_\b8using _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be =\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n-_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\be_\bd_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bo_\br_\bd_\be_\br_\b>>;\n-119\n-120\n-121\n-122} // namespace Dune\n-123\n-124\n-125\n-126\n-127#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n-_\bp_\b0_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n+21#endif // DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n+_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-A cache storing a compile time selection of local finite element\n-implementations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Linear Lagrange functions enriched with an element bubble function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:45\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: pqkfactory.hh File Reference\n+dune-localfunctions: hierarchicalprismp2.hh File Reference\n \n \n \n \n \n \n \n@@ -65,49 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    pqkfactory.hh File Reference
    \n+
    hierarchicalprismp2.hh File Reference
    \n
    \n
    \n-
    #include <map>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/virtualinterface.hh>
    \n-#include <dune/localfunctions/common/virtualwrappers.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangeprism.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangepyramid.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n-#include <dune/localfunctions/lagrange/p0.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n \n

    \n Classes

    struct  Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, d, k >
     Factory that only creates dimension specific local finite elements. More...
     
    struct  Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, 3, k >
     Factory that only creates dimension specific local finite elements. More...
     
    struct  Dune::PQkLocalFiniteElementFactory< D, R, dim, k >
     Factory to create any kind of Pk/Qk like element wrapped for the virtual interface. More...
     
    class  Dune::PQkLocalFiniteElementCache< D, R, dim, k >
     A cache that stores all available Pk/Qk like local finite elements for the given dimension and order. More...
    class  Dune::HierarchicalPrismP2LocalFiniteElement< D, R >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,41 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-pqkfactory.hh File Reference\n-#include \n+hierarchicalprismp2.hh File Reference\n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n+#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b,_\b _\bk_\b _\b>\n-\u00a0 Factory that only creates dimension specific local finite elements.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\bk_\b _\b>\n-\u00a0 Factory that only creates dimension specific local finite elements.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n-\u00a0 Factory to create any kind of Pk/Qk like element wrapped for the\n- virtual interface. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n-\u00a0 A cache that stores all available Pk/Qk like local finite elements for\n- the given dimension and order. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: pqkfactory.hh Source File\n+dune-localfunctions: hierarchicalprismp2.hh Source File\n \n \n \n \n \n \n \n@@ -70,217 +70,122 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    pqkfactory.hh
    \n+
    hierarchicalprismp2.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH
    \n+
    5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <map>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include <dune/geometry/type.hh>
    \n-
    11
    \n-\n-\n-
    14
    \n-\n-\n-\n-\n-\n-
    20
    \n-
    21namespace Dune
    \n-
    22{
    \n-
    23
    \n-
    28 template<class D, class R, int d, int k>
    \n-
    \n-\n-
    30 {
    \n-\n-
    32
    \n-
    \n-
    34 static LocalFiniteElementVirtualInterface<T>* create(const GeometryType&)
    \n-
    35 {
    \n-
    36 return nullptr;
    \n-
    37 }
    \n-
    \n-
    38 };
    \n-
    \n-
    39
    \n-
    44 template<class D, class R, int k>
    \n-
    \n-\n-
    46 {
    \n-\n-\n-\n-\n-\n+\n+\n+
    12
    \n+\n+\n+
    15
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    22 template<class D, class R>
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26
    \n+
    27 public:
    \n+\n+
    31 Impl::LagrangePrismLocalCoefficients<2>,
    \n+\n+
    33
    \n+\n+
    38
    \n+
    \n+
    41 const typename Traits::LocalBasisType& localBasis () const
    \n+
    42 {
    \n+
    43 return basis;
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    \n+\n+
    49 {
    \n+
    50 return coefficients;
    \n+
    51 }
    \n+
    \n
    52
    \n-
    \n-
    54 static LocalFiniteElementVirtualInterface<T>* create(const GeometryType& gt)
    \n-
    55 {
    \n-
    56 if ((gt.isPrism())and (k==1))
    \n-\n-
    58 if ((gt.isPrism())and (k==2))
    \n-\n-
    60 if ((gt.isPyramid())and (k==1))
    \n-\n-
    62 if ((gt.isPyramid())and (k==2))
    \n-\n-
    64 return nullptr;
    \n-
    65 }
    \n-
    \n-
    66 };
    \n-
    \n-
    67
    \n-
    68
    \n-
    72 template<class D, class R, int dim, int k>
    \n-
    \n-\n-
    74 {
    \n-\n-\n-\n-\n-\n-
    80
    \n+
    \n+\n+
    56 {
    \n+
    57 return interpolation;
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+
    61 unsigned int size () const
    \n+
    62 {
    \n+
    63 return basis.size();
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    \n+
    68 static constexpr GeometryType type ()
    \n+
    69 {
    \n+
    70 return GeometryTypes::prism;
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    73 private:
    \n+\n+
    75
    \n+
    77 Impl::LagrangePrismLocalCoefficients<2> coefficients;
    \n+
    78
    \n+\n+
    80 };
    \n+
    \n
    81
    \n-
    \n-
    83 static FiniteElementType* create(const GeometryType& gt)
    \n-
    84 {
    \n-
    85 if (k==0)
    \n-\n-
    87
    \n-
    88 if (gt.isSimplex())
    \n-\n-
    90
    \n-
    91 if (gt.isCube())
    \n-\n-
    93
    \n-\n-
    95 }
    \n-
    \n-
    96 };
    \n-
    \n-
    97
    \n-
    98
    \n-
    99
    \n-
    110 template<class D, class R, int dim, int k>
    \n-
    \n-
    111 class
    \n-
    112 [[deprecated("Use LagrangeLocalFiniteElementCache<D,R,dim,k> from lagrangelfecache.hh. This will be removed after release 2.10.")]]
    \n-\n-
    114 {
    \n-
    115 protected:
    \n-\n-\n-
    118 typedef typename std::map<GeometryType,FE*> FEMap;
    \n-
    119
    \n-
    120 public:
    \n-\n-
    123
    \n-\n-
    126
    \n-
    \n-\n-
    129 {
    \n-
    130 typename FEMap::iterator it = other.cache_.begin();
    \n-
    131 typename FEMap::iterator end = other.cache_.end();
    \n-
    132 for(; it!=end; ++it)
    \n-
    133 cache_[it->first] = (it->second)->clone();
    \n-
    134 }
    \n-
    \n-
    135
    \n-
    \n-\n-
    137 {
    \n-
    138 typename FEMap::iterator it = cache_.begin();
    \n-
    139 typename FEMap::iterator end = cache_.end();
    \n-
    140 for(; it!=end; ++it)
    \n-
    141 delete it->second;
    \n-
    142 }
    \n-
    \n-
    143
    \n-
    \n-
    145 const FiniteElementType& get(const GeometryType& gt) const
    \n-
    146 {
    \n-
    147 typename FEMap::const_iterator it = cache_.find(gt);
    \n-
    148 if (it==cache_.end())
    \n-
    149 {
    \n-\n-
    151 if (fe==0)
    \n-
    152 DUNE_THROW(Dune::NotImplemented,"No Pk/Qk like local finite element available for geometry type " << gt << " and order " << k);
    \n-
    153
    \n-
    154 cache_[gt] = fe;
    \n-
    155 return *fe;
    \n-
    156 }
    \n-
    157 return *(it->second);
    \n-
    158 }
    \n-
    \n-
    159
    \n-
    160 protected:
    \n-
    161 mutable FEMap cache_;
    \n-
    162
    \n-
    163 };
    \n-
    \n-
    164
    \n-
    165}
    \n-
    166
    \n-
    167#endif
    \n-\n-\n-\n-\n-\n-\n-\n+
    82}
    \n+
    83
    \n+
    84#endif
    \n+\n+
    Hierarchical prism p2 shape functions for the simplex.
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:225
    \n-
    class for wrapping a finite element using the virtual interface
    Definition virtualwrappers.hh:240
    \n-
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n-
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:649
    \n-
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:809
    \n-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:836
    \n-
    The local p0 finite element on all types of reference elements.
    Definition p0.hh:25
    \n-
    Factory that only creates dimension specific local finite elements.
    Definition pqkfactory.hh:30
    \n-
    P0LocalFiniteElement< D, R, d >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:31
    \n-
    static LocalFiniteElementVirtualInterface< T > * create(const GeometryType &)
    create finite element for given GeometryType
    Definition pqkfactory.hh:34
    \n-
    static LocalFiniteElementVirtualInterface< T > * create(const GeometryType &gt)
    create finite element for given GeometryType
    Definition pqkfactory.hh:54
    \n-
    P0LocalFiniteElement< D, R, 3 >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:47
    \n-
    Factory to create any kind of Pk/Qk like element wrapped for the virtual interface.
    Definition pqkfactory.hh:74
    \n-
    LagrangeCubeLocalFiniteElement< D, R, dim, k > Qk
    Definition pqkfactory.hh:79
    \n-
    LagrangeSimplexLocalFiniteElement< D, R, dim, k > Pk
    Definition pqkfactory.hh:78
    \n-
    LocalFiniteElementVirtualInterface< T > FiniteElementType
    Definition pqkfactory.hh:76
    \n-
    static FiniteElementType * create(const GeometryType &gt)
    create finite element for given GeometryType
    Definition pqkfactory.hh:83
    \n-
    P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:75
    \n-
    P0LocalFiniteElement< D, R, dim > P0
    Definition pqkfactory.hh:77
    \n-
    A cache that stores all available Pk/Qk like local finite elements for the given dimension and order.
    Definition pqkfactory.hh:114
    \n-
    P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:116
    \n-
    LocalFiniteElementVirtualInterface< T > FE
    Definition pqkfactory.hh:117
    \n-
    PQkLocalFiniteElementCache()
    Default constructor.
    Definition pqkfactory.hh:125
    \n-
    FE FiniteElementType
    Type of the finite elements stored in this cache.
    Definition pqkfactory.hh:122
    \n-
    std::map< GeometryType, FE * > FEMap
    Definition pqkfactory.hh:118
    \n-
    const FiniteElementType & get(const GeometryType &gt) const
    Get local finite element for given GeometryType.
    Definition pqkfactory.hh:145
    \n-
    FEMap cache_
    Definition pqkfactory.hh:161
    \n-
    ~PQkLocalFiniteElementCache()
    Definition pqkfactory.hh:136
    \n-
    PQkLocalFiniteElementCache(const PQkLocalFiniteElementCache &other)
    Copy constructor.
    Definition pqkfactory.hh:128
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Definition hierarchicalprismp2.hh:24
    \n+
    static constexpr GeometryType type()
    Definition hierarchicalprismp2.hh:68
    \n+
    HierarchicalPrismP2LocalFiniteElement()
    Definition hierarchicalprismp2.hh:36
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition hierarchicalprismp2.hh:55
    \n+
    LocalFiniteElementTraits< HierarchicalPrismP2LocalBasis< D, R >, Impl::LagrangePrismLocalCoefficients< 2 >, HierarchicalPrismP2LocalInterpolation< HierarchicalPrismP2LocalBasis< D, R > > > Traits
    Definition hierarchicalprismp2.hh:32
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition hierarchicalprismp2.hh:41
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition hierarchicalprismp2.hh:61
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition hierarchicalprismp2.hh:48
    \n+
    Definition hierarchicalprismp2localbasis.hh:23
    \n+
    Definition hierarchicalprismp2localinterpolation.hh:17
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,266 +1,132 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-pqkfactory.hh\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+hierarchicalprismp2.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH\n-6#define DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH\n+5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH\n+6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh>\n-14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n-20\n-21namespace _\bD_\bu_\bn_\be\n-22{\n-23\n-28 template\n-_\b2_\b9 struct _\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-30 {\n-_\b3_\b1 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-_\bT;\n-32\n-_\b3_\b4 static _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b>* _\bc_\br_\be_\ba_\bt_\be(const GeometryType&)\n-35 {\n-36 return nullptr;\n-37 }\n-38 };\n-39\n-44 template\n-_\b4_\b5 struct _\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-46 {\n-_\b4_\b7 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b3_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-_\bT;\n-_\b4_\b8 using _\bP_\br_\bi_\bs_\bm_\bP_\b1 = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b1_\b>;\n-_\b4_\b9 using _\bP_\br_\bi_\bs_\bm_\bP_\b2 = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b>;\n-_\b5_\b0 using _\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1 = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b1_\b>;\n-_\b5_\b1 using _\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2 = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b>;\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+12\n+13#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+14#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+15\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+22 template\n+_\b2_\b3 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+24 {\n+25\n+26\n+27 public:\n+30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+31 Impl::LagrangePrismLocalCoefficients<2>,\n+_\b3_\b2 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > >\n+_\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b6 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+37 {}\n+38\n+_\b4_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+42 {\n+43 return basis;\n+44 }\n+45\n+_\b4_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+49 {\n+50 return coefficients;\n+51 }\n 52\n-_\b5_\b4 static _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b>* _\bc_\br_\be_\ba_\bt_\be(const GeometryType& gt)\n-55 {\n-56 if ((gt.isPrism())and (k==1))\n-57 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\br_\bi_\bs_\bm_\bP_\b1_\b>(_\bP_\br_\bi_\bs_\bm_\bP_\b1());\n-58 if ((gt.isPrism())and (k==2))\n-59 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\br_\bi_\bs_\bm_\bP_\b2_\b>(_\bP_\br_\bi_\bs_\bm_\bP_\b2());\n-60 if ((gt.isPyramid())and (k==1))\n-61 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1_\b>(_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1());\n-62 if ((gt.isPyramid())and (k==2))\n-63 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2_\b>(_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2());\n-64 return nullptr;\n-65 }\n-66 };\n-67\n-68\n-72 template\n-_\b7_\b3 struct _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-74 {\n-_\b7_\b5 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:\n-_\bT_\br_\ba_\bi_\bt_\bs _\bT;\n-_\b7_\b6 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n-_\b7_\b7 using _\bP_\b0 = _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>;\n-_\b7_\b8 using _\bP_\bk = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>;\n-_\b7_\b9 using _\bQ_\bk = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>;\n-80\n+_\b5_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+56 {\n+57 return interpolation;\n+58 }\n+59\n+_\b6_\b1 unsigned int _\bs_\bi_\bz_\be () const\n+62 {\n+63 return basis.size();\n+64 }\n+65\n+_\b6_\b8 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+69 {\n+70 return GeometryTypes::prism;\n+71 }\n+72\n+73 private:\n+74 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+75\n+77 Impl::LagrangePrismLocalCoefficients<2> coefficients;\n+78\n+79 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> >\n+interpolation;\n+80 };\n 81\n-_\b8_\b3 static _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be* _\bc_\br_\be_\ba_\bt_\be(const GeometryType& gt)\n-84 {\n-85 if (k==0)\n-86 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\b0_\b>(_\bP_\b0(gt));\n-87\n-88 if (gt.isSimplex())\n-89 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\bk_\b>(_\bP_\bk());\n-90\n-91 if (gt.isCube())\n-92 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bQ_\bk_\b>(_\bQ_\bk());\n-93\n-94 return _\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be(gt);\n-95 }\n-96 };\n-97\n-98\n-99\n-110 template\n-_\b1_\b1_\b1 class\n-112 [[deprecated(\"Use LagrangeLocalFiniteElementCache from\n-lagrangelfecache.hh. This will be removed after release 2.10.\")]]\n-113 _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-114 {\n-115 protected:\n-_\b1_\b1_\b6 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:\n-_\bT_\br_\ba_\bi_\bt_\bs _\bT;\n-_\b1_\b1_\b7 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b> _\bF_\bE;\n-_\b1_\b1_\b8 typedef typename std::map _\bF_\bE_\bM_\ba_\bp;\n-119\n-120 public:\n-_\b1_\b2_\b2 typedef _\bF_\bE _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n-123\n-_\b1_\b2_\b5 _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be() {}\n-126\n-_\b1_\b2_\b8 _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be(const _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be& other)\n-129 {\n-130 typename FEMap::iterator it = other._\bc_\ba_\bc_\bh_\be_\b_.begin();\n-131 typename FEMap::iterator end = other._\bc_\ba_\bc_\bh_\be_\b_.end();\n-132 for(; it!=end; ++it)\n-133 cache_[it->first] = (it->second)->clone();\n-134 }\n-135\n-_\b1_\b3_\b6 _\b~_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be()\n-137 {\n-138 typename FEMap::iterator it = cache_.begin();\n-139 typename FEMap::iterator end = cache_.end();\n-140 for(; it!=end; ++it)\n-141 delete it->second;\n-142 }\n-143\n-_\b1_\b4_\b5 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& _\bg_\be_\bt(const GeometryType& gt) const\n-146 {\n-147 typename FEMap::const_iterator it = cache_.find(gt);\n-148 if (it==cache_.end())\n-149 {\n-150 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be* fe = _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-(gt);\n-151 if (fe==0)\n-152 DUNE_THROW(Dune::NotImplemented,\"No Pk/Qk like local finite element\n-available for geometry type \" << gt << \" and order \" << k);\n-153\n-154 cache_[gt] = fe;\n-155 return *fe;\n-156 }\n-157 return *(it->second);\n-158 }\n-159\n-160 protected:\n-_\b1_\b6_\b1 mutable _\bF_\bE_\bM_\ba_\bp _\bc_\ba_\bc_\bh_\be_\b_;\n-162\n-163 };\n-164\n-165}\n-166\n-167#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n-_\bp_\b0_\b._\bh_\bh\n+82}\n+83\n+84#endif\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+Hierarchical prism p2 shape functions for the simplex.\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n-_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for local finite elements with functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-class for wrapping a finite element using the virtual interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for cubes with arbitrary compile-time dimension and\n-polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for 3d prisms with arbitrary compile-time polynomial\n-order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:649\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for 3d pyramids with compile-time polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:809\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for simplices with arbitrary compile-time dimension and\n-polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:836\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-The local p0 finite element on all types of reference elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory that only creates dimension specific local finite elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT\n-P0LocalFiniteElement< D, R, d >::Traits::LocalBasisType::Traits T\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static LocalFiniteElementVirtualInterface< T > * create(const GeometryType &)\n-create finite element for given GeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\bk_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static LocalFiniteElementVirtualInterface< T > * create(const GeometryType >)\n-create finite element for given GeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\bk_\b _\b>_\b:_\b:_\bT\n-P0LocalFiniteElement< D, R, 3 >::Traits::LocalBasisType::Traits T\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory to create any kind of Pk/Qk like element wrapped for the virtual\n-interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\bk\n-LagrangeCubeLocalFiniteElement< D, R, dim, k > Qk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bk\n-LagrangeSimplexLocalFiniteElement< D, R, dim, k > Pk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-LocalFiniteElementVirtualInterface< T > FiniteElementType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static FiniteElementType * create(const GeometryType >)\n-create finite element for given GeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT\n-P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\b0\n-P0LocalFiniteElement< D, R, dim > P0\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-A cache that stores all available Pk/Qk like local finite elements for the\n-given dimension and order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bT\n-P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:116\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bE\n-LocalFiniteElementVirtualInterface< T > FE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-PQkLocalFiniteElementCache()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-FE FiniteElementType\n-Type of the finite elements stored in this cache.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bE_\bM_\ba_\bp\n-std::map< GeometryType, FE * > FEMap\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n-const FiniteElementType & get(const GeometryType >) const\n-Get local finite element for given GeometryType.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bc_\ba_\bc_\bh_\be_\b_\n-FEMap cache_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:161\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\b~_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-~PQkLocalFiniteElementCache()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-PQkLocalFiniteElementCache(const PQkLocalFiniteElementCache &other)\n-Copy constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n+_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+HierarchicalPrismP2LocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< HierarchicalPrismP2LocalBasis< D, R >, Impl::\n+LagrangePrismLocalCoefficients< 2 >, HierarchicalPrismP2LocalInterpolation<\n+HierarchicalPrismP2LocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localinterpolation.hh:17\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: q1.hh File Reference\n+dune-localfunctions: hierarchicalp2.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    q1.hh File Reference
    \n+
    hierarchicalp2.hh File Reference
    \n
    \n
    \n \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::Q1FiniteElementFactory< Geometry, RF >
     Factory for global-valued Q1 elements. More...
    class  Dune::HierarchicalP2LocalFiniteElement< D, R, dim >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-q1.hh File Reference\n+hierarchicalp2.hh File Reference\n #include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n-\u00a0 Factory for global-valued Q1 elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: q1.hh Source File\n+dune-localfunctions: hierarchicalp2.hh Source File\n \n \n \n \n \n \n \n@@ -70,75 +70,124 @@\n
    \n \n \n \n \n \n \n
    \n-
    q1.hh
    \n+
    hierarchicalp2.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_Q1_LOCALFINITEELEMENT_HH
    \n-
    7#define DUNE_Q1_LOCALFINITEELEMENT_HH
    \n-
    8
    \n-
    9#include <dune/geometry/type.hh>
    \n-
    10
    \n-\n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17
    \n-
    19
    \n-
    24 template<class Geometry, class RF>
    \n-
    \n-\n-\n-
    27 LagrangeCubeLocalFiniteElement<
    \n-
    28 typename Geometry::ctype, RF, Geometry::mydimension, 1
    \n-
    29 >,
    \n-
    30 Geometry
    \n-
    31 >
    \n-
    32 {
    \n-\n-
    34 typename Geometry::ctype, RF, Geometry::mydimension, 1
    \n-
    35 > LFE;
    \n-\n-
    37
    \n-
    38 static const LFE lfe;
    \n-
    39
    \n-
    40 public:
    \n-\n-
    43 };
    \n-
    \n-
    44
    \n-
    45 template<class Geometry, class RF>
    \n-
    46 const typename Q1FiniteElementFactory<Geometry, RF>::LFE
    \n-
    47 Q1FiniteElementFactory<Geometry, RF>::lfe;
    \n-
    48}
    \n-
    49
    \n-
    50#endif
    \n-\n-\n-\n+
    5#ifndef DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH
    \n+
    7
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n+\n+
    12
    \n+\n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    21 template<class D, class R, int dim>
    \n+
    \n+\n+
    23 {
    \n+
    24
    \n+
    25 static_assert(1 <= dim && dim <= 3,
    \n+
    26 "HierarchicalP2LocalFiniteElement only implemented for dim==1, 2, 3.");
    \n+
    27
    \n+
    28 public:
    \n+\n+\n+\n+\n+
    35
    \n+\n+
    40
    \n+
    \n+
    43 const typename Traits::LocalBasisType& localBasis () const
    \n+
    44 {
    \n+
    45 return basis;
    \n+
    46 }
    \n+
    \n+
    47
    \n+
    \n+\n+
    51 {
    \n+
    52 return coefficients;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+\n+
    58 {
    \n+
    59 return interpolation;
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+
    63 unsigned int size () const
    \n+
    64 {
    \n+
    65 return basis.size();
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    \n+
    70 static constexpr GeometryType type ()
    \n+
    71 {
    \n+
    72 return GeometryTypes::simplex(dim);
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75 private:
    \n+\n+
    77
    \n+
    78 typename Traits::LocalCoefficientsType coefficients;
    \n+
    79
    \n+\n+
    81 };
    \n+
    \n+
    82
    \n+
    83}
    \n+
    84
    \n+
    85#endif
    \n+
    Hierarchical p2 shape functions for the simplex.
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.
    Definition localtoglobaladaptors.hh:244
    \n-
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n-
    Factory for global-valued Q1 elements.
    Definition q1.hh:32
    \n-
    Q1FiniteElementFactory()
    default constructor
    Definition q1.hh:42
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Definition hierarchicalp2.hh:23
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition hierarchicalp2.hh:43
    \n+
    HierarchicalP2LocalFiniteElement()
    Definition hierarchicalp2.hh:38
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition hierarchicalp2.hh:63
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition hierarchicalp2.hh:50
    \n+
    LocalFiniteElementTraits< HierarchicalSimplexP2LocalBasis< D, R, dim >, typename LagrangeSimplexLocalFiniteElement< D, R, dim, 2 >::Traits::LocalCoefficientsType, HierarchicalSimplexP2LocalInterpolation< HierarchicalSimplexP2LocalBasis< D, R, dim > > > Traits
    Definition hierarchicalp2.hh:34
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition hierarchicalp2.hh:57
    \n+
    static constexpr GeometryType type()
    Definition hierarchicalp2.hh:70
    \n+
    Definition hierarchicalsimplexp2localbasis.hh:23
    \n+
    Definition hierarchicalsimplexp2localinterpolation.hh:17
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,75 +1,137 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-q1.hh\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+hierarchicalp2.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_Q1_LOCALFINITEELEMENT_HH\n-7#define DUNE_Q1_LOCALFINITEELEMENT_HH\n-8\n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17\n-19\n-24 template\n-_\b2_\b5 class _\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by :\n-26 public _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by<\n-27 LagrangeCubeLocalFiniteElement<\n-28 typename Geometry::ctype, RF, Geometry::mydimension, 1\n-29 >,\n-30 Geometry\n-31 >\n-32 {\n-33 typedef _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt<\n-34 typename Geometry::ctype, RF, Geometry::mydimension, 1\n-35 > _\bL_\bF_\bE;\n-36 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bL_\bF_\bE_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bB_\ba_\bs_\be;\n-37\n-38 static const _\bL_\bF_\bE lfe;\n-39\n-40 public:\n-_\b4_\b2 _\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by() : _\bB_\ba_\bs_\be(lfe) {}\n-43 };\n-44\n-45 template\n-46 const typename Q1FiniteElementFactory::LFE\n-47 Q1FiniteElementFactory::lfe;\n-48}\n-49\n-50#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n+5#ifndef DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH\n+6#define DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH\n+7\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+12\n+13#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+14#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+21 template\n+_\b2_\b2 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+23 {\n+24\n+25 static_assert(1 <= dim && dim <= 3,\n+26 \"HierarchicalP2LocalFiniteElement only implemented for dim==1, 2, 3.\");\n+27\n+28 public:\n+31 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+32 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,\n+33 typename _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\b2_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be,\n+_\b3_\b4\n+_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>\n+> > _\bT_\br_\ba_\bi_\bt_\bs;\n+35\n+_\b3_\b8 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+39 {}\n+40\n+_\b4_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+44 {\n+45 return basis;\n+46 }\n+47\n+_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+51 {\n+52 return coefficients;\n+53 }\n+54\n+_\b5_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+58 {\n+59 return interpolation;\n+60 }\n+61\n+_\b6_\b3 unsigned int _\bs_\bi_\bz_\be () const\n+64 {\n+65 return basis.size();\n+66 }\n+67\n+_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+71 {\n+72 return GeometryTypes::simplex(dim);\n+73 }\n+74\n+75 private:\n+76 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> basis;\n+77\n+78 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients;\n+79\n+80\n+_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>\n+> interpolation;\n+81 };\n+82\n+83}\n+84\n+85#endif\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+Hierarchical p2 shape functions for the simplex.\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:244\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for cubes with arbitrary compile-time dimension and\n-polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n-_\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for global-valued Q1 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn q1.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Q1FiniteElementFactory()\n-default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn q1.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+HierarchicalP2LocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< HierarchicalSimplexP2LocalBasis< D, R, dim >,\n+typename LagrangeSimplexLocalFiniteElement< D, R, dim, 2 >::Traits::\n+LocalCoefficientsType, HierarchicalSimplexP2LocalInterpolation<\n+HierarchicalSimplexP2LocalBasis< D, R, dim > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localinterpolation.hh:17\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: pk2d.hh File Reference\n+dune-localfunctions: hierarchicalp2withelementbubble.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    pk2d.hh File Reference
    \n+
    hierarchicalp2withelementbubble.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localtoglobaladaptors.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::Pk2DFiniteElement< Geometry, RF, k >
     Langrange finite element of arbitrary order on triangles. More...
     
    struct  Dune::Pk2DFiniteElement< Geometry, RF, k >::Traits
     
    struct  Dune::Pk2DFiniteElementFactory< Geometry, RF, k >
     Factory for Pk2DFiniteElement objects. More...
    class  Dune::HierarchicalP2WithElementBubbleLocalFiniteElement< D, R, dim >
     Linear Lagrange functions enriched with quadratic edge bubble functions and an element bubble function. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-pk2d.hh File Reference\n-#include \n+hierarchicalp2withelementbubble.hh File Reference\n #include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b/\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>\n-\u00a0 Langrange finite element of arbitrary order on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>\n-\u00a0 Factory for _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt objects. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Linear Lagrange functions enriched with quadratic edge bubble functions\n+ and an element bubble function. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: pk2d.hh Source File\n+dune-localfunctions: hierarchicalp2withelementbubble.hh Source File\n \n \n \n \n \n \n \n@@ -70,144 +70,112 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    pk2d.hh
    \n+
    hierarchicalp2withelementbubble.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_PK2DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_PK2DLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include <dune/geometry/type.hh>
    \n-
    11
    \n-\n-\n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    19
    \n-
    21
    \n-
    28 template<class Geometry, class RF, std::size_t k>
    \n-
    \n-\n-
    30 typedef typename Geometry::ctype DF;
    \n-
    31 typedef Impl::LagrangeSimplexLocalBasis<DF,RF,2,k> LocalBasis;
    \n-
    32 typedef Impl::LagrangeSimplexLocalInterpolation<LocalBasis> LocalInterpolation;
    \n-
    33
    \n-
    34 public:
    \n-
    \n-
    38 struct Traits {
    \n-\n-\n-
    41 LocalInterpolation,
    \n-
    42 typename Basis::Traits
    \n-\n-
    44 typedef Impl::LagrangeSimplexLocalCoefficients<2,k> Coefficients;
    \n-
    45 };
    \n-
    \n-
    46
    \n-
    47 private:
    \n-
    48 static const GeometryType gt;
    \n-
    49 static const LocalBasis localBasis;
    \n-
    50 static const LocalInterpolation localInterpolation;
    \n-
    51
    \n-
    52 typename Traits::Basis basis_;
    \n-
    53 typename Traits::Interpolation interpolation_;
    \n-
    54 typename Traits::Coefficients coefficients_;
    \n-
    55
    \n-
    56 public:
    \n-
    58
    \n-
    71 template<class VertexOrder>
    \n-
    \n-
    72 Pk2DFiniteElement(const Geometry &geometry,
    \n-
    73 const VertexOrder& vertexOrder) :
    \n-
    74 basis_(localBasis, geometry), interpolation_(localInterpolation),
    \n-
    75 coefficients_(vertexOrder.begin(0, 0))
    \n-
    76 { }
    \n-
    \n-
    77
    \n-
    78 const typename Traits::Basis& basis() const { return basis_; }
    \n-
    \n-
    79 const typename Traits::Interpolation& interpolation() const
    \n-
    80 { return interpolation_; }
    \n-
    \n-
    \n-
    81 const typename Traits::Coefficients& coefficients() const
    \n-
    82 { return coefficients_; }
    \n-
    \n-
    83 const GeometryType &type() const { return gt; }
    \n-
    84 };
    \n-
    \n-
    85
    \n-
    86 template<class Geometry, class RF, std::size_t k>
    \n-
    87 const GeometryType
    \n-
    88 Pk2DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
    \n-
    89
    \n-
    90 template<class Geometry, class RF, std::size_t k>
    \n-
    91 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalBasis
    \n-
    92 Pk2DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
    \n-
    93
    \n-
    94 template<class Geometry, class RF, std::size_t k>
    \n-
    95 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalInterpolation
    \n-
    96 Pk2DFiniteElement<Geometry, RF, k>::localInterpolation =
    \n-
    97 LocalInterpolation();
    \n-
    98
    \n-
    100
    \n-
    110 template<class Geometry, class RF, std::size_t k>
    \n-
    \n-\n-\n-
    113
    \n-
    115
    \n-
    129 template<class VertexOrder>
    \n-
    \n-
    130 const FiniteElement make(const Geometry& geometry,
    \n-
    131 const VertexOrder& vertexOrder)
    \n-
    132 { return FiniteElement(geometry, vertexOrder); }
    \n-
    \n-
    133 };
    \n-
    \n-
    134}
    \n-
    135
    \n-
    136#endif
    \n-\n-\n-\n+\n+\n+
    12
    \n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    32 template<class D, class R, int dim>
    \n+
    \n+\n+
    34 {
    \n+
    35 public:
    \n+\n+
    38
    \n+\n+
    41
    \n+\n+
    44
    \n+\n+
    47
    \n+
    48
    \n+
    \n+
    50 const LocalBasisType& localBasis () const
    \n+
    51 {
    \n+
    52 return basis_;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+\n+
    57 {
    \n+
    58 return coefficients_;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+\n+
    63 {
    \n+
    64 return interpolation_;
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    \n+
    68 static constexpr std::size_t size () noexcept
    \n+
    69 {
    \n+
    70 return LocalBasisType::size();
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    \n+
    74 static constexpr GeometryType type () noexcept
    \n+
    75 {
    \n+
    76 return GeometryTypes::simplex(dim);
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    79 private:
    \n+
    80 LocalCoefficientsType coefficients_{};
    \n+
    81 [[no_unique_address]] LocalBasisType basis_{};
    \n+
    82 [[no_unique_address]] LocalInterpolationType interpolation_{};
    \n+
    83 };
    \n+
    \n+
    84
    \n+
    85}
    \n+
    86
    \n+
    87#endif
    \n+
    Hierarchical p2 shape functions for the simplex.
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Traits class for local-to-global basis adaptors.
    Definition localtoglobaladaptors.hh:30
    \n-
    Convert a simple scalar local basis into a global basis.
    Definition localtoglobaladaptors.hh:65
    \n-
    Convert a local interpolation into a global interpolation.
    Definition localtoglobaladaptors.hh:149
    \n-
    Langrange finite element of arbitrary order on triangles.
    Definition pk2d.hh:29
    \n-
    Pk2DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct a Pk2DFiniteElement
    Definition pk2d.hh:72
    \n-
    const Traits::Interpolation & interpolation() const
    Definition pk2d.hh:79
    \n-
    const Traits::Basis & basis() const
    Definition pk2d.hh:78
    \n-
    const Traits::Coefficients & coefficients() const
    Definition pk2d.hh:81
    \n-
    const GeometryType & type() const
    Definition pk2d.hh:83
    \n-
    Definition pk2d.hh:38
    \n-
    ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
    Definition pk2d.hh:39
    \n-
    Impl::LagrangeSimplexLocalCoefficients< 2, k > Coefficients
    Definition pk2d.hh:44
    \n-
    LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
    Definition pk2d.hh:43
    \n-
    Factory for Pk2DFiniteElement objects.
    Definition pk2d.hh:111
    \n-
    Pk2DFiniteElement< Geometry, RF, k > FiniteElement
    Definition pk2d.hh:112
    \n-
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct Pk2DFiniteElementFactory
    Definition pk2d.hh:130
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    Linear Lagrange functions enriched with quadratic edge bubble functions and an element bubble functio...
    Definition hierarchicalp2withelementbubble.hh:34
    \n+
    HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > LocalBasisType
    Type of the local basis.
    Definition hierarchicalp2withelementbubble.hh:37
    \n+
    static constexpr std::size_t size() noexcept
    Returns the number of shape functions in this finite-element.
    Definition hierarchicalp2withelementbubble.hh:68
    \n+
    static constexpr GeometryType type() noexcept
    Returns the type of the geometry the finite-element is attached to.
    Definition hierarchicalp2withelementbubble.hh:74
    \n+
    const LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition hierarchicalp2withelementbubble.hh:50
    \n+
    const LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition hierarchicalp2withelementbubble.hh:62
    \n+
    HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim > LocalCoefficientsType
    Type of the local coefficients.
    Definition hierarchicalp2withelementbubble.hh:40
    \n+
    const LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition hierarchicalp2withelementbubble.hh:56
    \n+
    HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LocalBasisType, dim > LocalInterpolationType
    Type of the local interpolation.
    Definition hierarchicalp2withelementbubble.hh:43
    \n+
    P1 basis in dim-d enriched by quadratic edge bubble functions and an element bubble function of order...
    Definition hierarchicalsimplexp2withelementbubble.hh:46
    \n+
    static constexpr std::size_t size() noexcept
    Returns number of shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:105
    \n+
    The local keys of the hierarchical basis functions with element bubble.
    Definition hierarchicalsimplexp2withelementbubble.hh:229
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,158 +1,138 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-pk2d.hh\n+ * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+hierarchicalp2withelementbubble.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_PK2DLOCALFINITEELEMENT_HH\n-6#define DUNE_PK2DLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n+6#define DUNE_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-19\n-21\n-28 template\n-_\b2_\b9 class _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n-30 typedef typename Geometry::ctype DF;\n-31 typedef Impl::LagrangeSimplexLocalBasis LocalBasis;\n-32 typedef Impl::LagrangeSimplexLocalInterpolation\n-LocalInterpolation;\n-33\n-34 public:\n-_\b3_\b8 struct _\bT_\br_\ba_\bi_\bt_\bs {\n-_\b3_\b9 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bB_\ba_\bs_\bi_\bs;\n-40 typedef _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br<\n-41 LocalInterpolation,\n-42 typename _\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-_\b4_\b3 > _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-_\b4_\b4 typedef Impl::LagrangeSimplexLocalCoefficients<2,k> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-45 };\n-46\n-47 private:\n-48 static const GeometryType gt;\n-49 static const LocalBasis localBasis;\n-50 static const LocalInterpolation localInterpolation;\n-51\n-52 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n-53 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n-54 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n-55\n-56 public:\n-58\n-71 template\n-_\b7_\b2 _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry &geometry,\n-73 const VertexOrder& vertexOrder) :\n-74 basis_(localBasis, geometry), interpolation_(localInterpolation),\n-75 coefficients_(vertexOrder.begin(0, 0))\n-76 { }\n-77\n-_\b7_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\n-_\b7_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n-80 { return interpolation_; }\n-_\b8_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n-82 { return coefficients_; }\n-_\b8_\b3 const GeometryType &_\bt_\by_\bp_\be() const { return gt; }\n-84 };\n-85\n-86 template\n-87 const GeometryType\n-88 Pk2DFiniteElement::gt(GeometryTypes::simplex(2));\n-89\n-90 template\n-91 const typename Pk2DFiniteElement::LocalBasis\n-92 Pk2DFiniteElement::localBasis = LocalBasis();\n-93\n-94 template\n-95 const typename Pk2DFiniteElement::LocalInterpolation\n-96 Pk2DFiniteElement::localInterpolation =\n-97 LocalInterpolation();\n-98\n-100\n-110 template\n-_\b1_\b1_\b1 struct _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-_\b1_\b1_\b2 typedef _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-113\n-115\n-129 template\n-_\b1_\b3_\b0 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n-131 const VertexOrder& vertexOrder)\n-132 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n-133 };\n-134}\n-135\n-136#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b/\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n+12\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+32 template\n+_\b3_\b3 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+34 {\n+35 public:\n+_\b3_\b7 using _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be =\n+_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>;\n+38\n+_\b4_\b0 using _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be =\n+_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b>;\n+41\n+_\b4_\b3 using _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be =\n+_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b,_\bd_\bi_\bm_\b>;\n+44\n+_\b4_\b6 using _\bT_\br_\ba_\bi_\bt_\bs =\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b,_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be_\b,_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\b>;\n+47\n+48\n+_\b5_\b0 const _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+51 {\n+52 return basis_;\n+53 }\n+54\n+_\b5_\b6 const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+57 {\n+58 return coefficients_;\n+59 }\n+60\n+_\b6_\b2 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+63 {\n+64 return interpolation_;\n+65 }\n+66\n+_\b6_\b8 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n+69 {\n+70 return _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bs_\bi_\bz_\be();\n+71 }\n+72\n+_\b7_\b4 static constexpr GeometryType _\bt_\by_\bp_\be () noexcept\n+75 {\n+76 return GeometryTypes::simplex(dim);\n+77 }\n+78\n+79 private:\n+80 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients_{};\n+81 [[no_unique_address]] _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be basis_{};\n+82 [[no_unique_address]] _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be interpolation_{};\n+83 };\n+84\n+85}\n+86\n+87#endif\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh\n+Hierarchical p2 shape functions for the simplex.\n _\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs\n-Traits class for local-to-global basis adaptors.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-Convert a simple scalar local basis into a global basis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-Convert a local interpolation into a global interpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Langrange finite element of arbitrary order on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Pk2DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)\n-construct a Pk2DFiniteElement\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::Interpolation & interpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n-const Traits::Basis & basis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::Coefficients & coefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-const GeometryType & type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Impl::LagrangeSimplexLocalCoefficients< 2, k > Coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits >\n-Interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for Pk2DFiniteElement objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Pk2DFiniteElement< Geometry, RF, k > FiniteElement\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const Geometry &geometry, const VertexOrder\n-&vertexOrder)\n-construct Pk2DFiniteElementFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Linear Lagrange functions enriched with quadratic edge bubble functions and an\n+element bubble functio...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > LocalBasisType\n+Type of the local basis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size() noexcept\n+Returns the number of shape functions in this finite-element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type() noexcept\n+Returns the type of the geometry the finite-element is attached to.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const LocalBasisType & localBasis() const\n+Returns the local basis, i.e., the set of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const LocalInterpolationType & localInterpolation() const\n+Returns object that evaluates degrees of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >\n+LocalCoefficientsType\n+Type of the local coefficients.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const LocalCoefficientsType & localCoefficients() const\n+Returns the assignment of the degrees of freedom to the element subentities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LocalBasisType, dim >\n+LocalInterpolationType\n+Type of the local interpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+P1 basis in dim-d enriched by quadratic edge bubble functions and an element\n+bubble function of order...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size() noexcept\n+Returns number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+The local keys of the hierarchical basis functions with element bubble.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:229\n+_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b,\n+_\bd_\bi_\bm_\b _\b>\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangecoefficients.hh File Reference\n+dune-localfunctions: orthonormalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    lagrangecoefficients.hh File Reference
    \n+
    orthonormalbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n \n

    \n Classes

    struct  Dune::LagrangeCoefficientsFactory< LP, dim, F >
    struct  Dune::OrthonormalBasisFactory< dim, SF, CF >
     
    struct  Dune::OrthonormalBasisFactory< dim, SF, CF >::EvaluationBasisFactory< dd, FF >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-lagrangecoefficients.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+orthonormalbasis.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bc_\bo_\bm_\bp_\bu_\bt_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<\n+ _\bd_\bd_\b,_\b _\bF_\bF_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangecoefficients.hh Source File\n+dune-localfunctions: orthonormalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,81 +70,115 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    lagrangecoefficients.hh
    \n+
    orthonormalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LAGRANGECOEFFICIENTS_HH
    \n-
    6#define DUNE_LAGRANGECOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_ORTHONORMALBASIS_HH
    \n+
    6#define DUNE_ORTHONORMALBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8#include <sstream>
    \n
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11
    \n-
    12#include <dune/geometry/type.hh>
    \n-
    13
    \n-\n-\n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    20 template< template <class,unsigned int> class LP,
    \n-
    21 unsigned int dim, class F>
    \n-
    \n-\n-
    23 {
    \n-
    24 static const unsigned int dimension = dim;
    \n-
    25 const typedef LP<F,dim> Object;
    \n-
    26 typedef std::size_t Key;
    \n-
    27
    \n-
    28 template< GeometryType::Id geometryId >
    \n-
    \n-
    29 static Object *create ( const Key &order )
    \n-
    30 {
    \n-
    31 if (order == 0 || !Object::template supports<geometryId>(order))
    \n-
    32 return 0;
    \n-
    33 typedef typename std::remove_const<Object>::type LagrangeCoefficients;
    \n-
    34 LagrangeCoefficients *object = new LagrangeCoefficients(order);
    \n-
    35 if ( !object->template build<geometryId>() )
    \n-
    36 {
    \n-
    37 delete object;
    \n-
    38 object = nullptr;
    \n-
    39 }
    \n-
    40 return object;
    \n-
    41 }
    \n-
    \n-
    42 static void release( Object *object ) { delete object; }
    \n-
    43 };
    \n-
    \n-
    44
    \n-
    45}
    \n-
    46
    \n-
    47#endif // DUNE_LAGRANGECOEFFICIENTS_HH
    \n-\n-\n+\n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    16 // OrthonormalBasisFactory
    \n+
    17 // -----------------------
    \n+
    18 template< int dim, class SF, class CF = typename ComputeField< SF, 512 >::Type >
    \n+
    \n+\n+
    20 {
    \n+
    21 static const unsigned int dimension = dim;
    \n+
    22 typedef SF StorageField;
    \n+
    23 typedef CF ComputeField;
    \n+
    24
    \n+
    25 template <unsigned int dd, class FF>
    \n+
    \n+\n+
    27 {
    \n+\n+
    29 };
    \n+
    \n+
    30
    \n+\n+
    32 typedef typename MonomialBasisProviderType::Object MonomialBasisType;
    \n+
    33
    \n+\n+\n+\n+
    37
    \n+
    38 typedef unsigned int Key;
    \n+
    39 typedef const Basis Object;
    \n+
    40
    \n+
    41 static constexpr GeometryType SimplexGeometry = GeometryTypes::simplex(dim);
    \n+
    42
    \n+
    43 template< GeometryType::Id geometryId >
    \n+
    \n+
    44 static Object *create ( const unsigned int order )
    \n+
    45 {
    \n+
    46 const MonomialBasisType &monomialBasis = *MonomialBasisProviderType::template create< SimplexGeometry >( order );
    \n+
    47
    \n+
    48 static CoefficientMatrix _coeffs;
    \n+
    49 if( _coeffs.size() <= monomialBasis.size() )
    \n+
    50 {
    \n+\n+
    52 _coeffs.fill( matrix );
    \n+
    53 }
    \n+
    54
    \n+
    55 return new Basis( monomialBasis, _coeffs, monomialBasis.size() );
    \n+
    56 }
    \n+
    \n+
    57 static void release( Object *object ) { delete object; }
    \n+
    58 };
    \n+
    \n+
    59
    \n+
    60}
    \n+
    61
    \n+
    62#endif // #ifndef DUNE_ORTHONORMALBASIS_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition lagrangecoefficients.hh:23
    \n-
    static const unsigned int dimension
    Definition lagrangecoefficients.hh:24
    \n-
    static void release(Object *object)
    Definition lagrangecoefficients.hh:42
    \n-
    const typedef LP< F, dim > Object
    Definition lagrangecoefficients.hh:25
    \n-
    static Object * create(const Key &order)
    Definition lagrangecoefficients.hh:29
    \n-
    std::size_t Key
    Definition lagrangecoefficients.hh:26
    \n+
    Definition orthonormalbasis.hh:20
    \n+
    SparseCoeffMatrix< StorageField, 1 > CoefficientMatrix
    Definition orthonormalbasis.hh:34
    \n+
    static Object * create(const unsigned int order)
    Definition orthonormalbasis.hh:44
    \n+
    StandardEvaluator< MonomialBasisType > Evaluator
    Definition orthonormalbasis.hh:35
    \n+
    SF StorageField
    Definition orthonormalbasis.hh:22
    \n+
    static constexpr GeometryType SimplexGeometry
    Definition orthonormalbasis.hh:41
    \n+
    PolynomialBasis< Evaluator, CoefficientMatrix > Basis
    Definition orthonormalbasis.hh:36
    \n+
    EvaluationBasisFactory< dimension, StorageField >::Type MonomialBasisProviderType
    Definition orthonormalbasis.hh:31
    \n+
    CF ComputeField
    Definition orthonormalbasis.hh:23
    \n+
    const Basis Object
    Definition orthonormalbasis.hh:39
    \n+
    unsigned int Key
    Definition orthonormalbasis.hh:38
    \n+
    static void release(Object *object)
    Definition orthonormalbasis.hh:57
    \n+
    static const unsigned int dimension
    Definition orthonormalbasis.hh:21
    \n+
    MonomialBasisProviderType::Object MonomialBasisType
    Definition orthonormalbasis.hh:32
    \n+\n+
    MonomialBasisProvider< dd, FF > Type
    Definition orthonormalbasis.hh:28
    \n+
    Definition orthonormalcompute.hh:95
    \n+
    Definition basisevaluator.hh:131
    \n+
    Definition coeffmatrix.hh:48
    \n+
    unsigned int size() const
    Definition coeffmatrix.hh:69
    \n+
    void fill(const RowMatrix &mat, bool verbose=false)
    Definition coeffmatrix.hh:160
    \n+
    Definition monomialbasis.hh:780
    \n+
    Definition polynomialbasis.hh:65
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,80 +1,144 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-lagrangecoefficients.hh\n+ * _\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl\n+orthonormalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LAGRANGECOEFFICIENTS_HH\n-6#define DUNE_LAGRANGECOEFFICIENTS_HH\n+5#ifndef DUNE_ORTHONORMALBASIS_HH\n+6#define DUNE_ORTHONORMALBASIS_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11\n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-19\n-20 template< template class LP,\n-21 unsigned int dim, class F>\n-_\b2_\b2 struct _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-23 {\n-_\b2_\b4 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-_\b2_\b5 const typedef LP _\bO_\bb_\bj_\be_\bc_\bt;\n-_\b2_\b6 typedef std::size_t _\bK_\be_\by;\n-27\n-28 template< GeometryType::Id geometryId >\n-_\b2_\b9 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &order )\n-30 {\n-31 if (order == 0 || !Object::template supports(order))\n-32 return 0;\n-33 typedef typename std::remove_const::type LagrangeCoefficients;\n-34 LagrangeCoefficients *object = new LagrangeCoefficients(order);\n-35 if ( !object->template build() )\n-36 {\n-37 delete object;\n-38 object = nullptr;\n-39 }\n-40 return object;\n-41 }\n-_\b4_\b2 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-43 };\n-44\n-45}\n-46\n-47#endif // DUNE_LAGRANGECOEFFICIENTS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bc_\bo_\bm_\bp_\bu_\bt_\be_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+16 // OrthonormalBasisFactory\n+17 // -----------------------\n+18 template< int dim, class SF, class CF = typename ComputeField< SF, 512 >::\n+Type >\n+_\b1_\b9 struct _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+20 {\n+_\b2_\b1 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+_\b2_\b2 typedef SF _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+_\b2_\b3 typedef CF _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd;\n+24\n+25 template \n+_\b2_\b6 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+27 {\n+_\b2_\b8 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n+29 };\n+30\n+_\b3_\b1 typedef typename _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bT_\by_\bp_\be\n+_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\bT_\by_\bp_\be;\n+_\b3_\b2 typedef typename MonomialBasisProviderType::Object _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be;\n+33\n+_\b3_\b4 typedef _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd_\b,_\b _\b1_\b _\b> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx;\n+_\b3_\b5 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b _\b> _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br;\n+_\b3_\b6 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b,_\b _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx_\b _\b> _\bB_\ba_\bs_\bi_\bs;\n+37\n+_\b3_\b8 typedef unsigned int _\bK_\be_\by;\n+_\b3_\b9 typedef const _\bB_\ba_\bs_\bi_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n+40\n+_\b4_\b1 static constexpr GeometryType _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bo_\bm_\be_\bt_\br_\by = GeometryTypes::simplex(dim);\n+42\n+43 template< GeometryType::Id geometryId >\n+_\b4_\b4 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const unsigned int order )\n+45 {\n+46 const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be &monomialBasis = *MonomialBasisProviderType::\n+template create< SimplexGeometry >( order );\n+47\n+48 static _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx _coeffs;\n+49 if( _coeffs._\bs_\bi_\bz_\be() <= monomialBasis.size() )\n+50 {\n+51 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd_\b _\b> matrix( order );\n+52 _coeffs._\bf_\bi_\bl_\bl( matrix );\n+53 }\n+54\n+55 return new _\bB_\ba_\bs_\bi_\bs( monomialBasis, _coeffs, monomialBasis._\bs_\bi_\bz_\be() );\n+56 }\n+_\b5_\b7 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+58 };\n+59\n+60}\n+61\n+62#endif // #ifndef DUNE_ORTHONORMALBASIS_HH\n+_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bc_\bo_\bm_\bp_\bu_\bt_\be_\b._\bh_\bh\n+_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx\n+SparseCoeffMatrix< StorageField, 1 > CoefficientMatrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+StandardEvaluator< MonomialBasisType > Evaluator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n+SF StorageField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n+static constexpr GeometryType SimplexGeometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+PolynomialBasis< Evaluator, CoefficientMatrix > Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\bT_\by_\bp_\be\n+EvaluationBasisFactory< dimension, StorageField >::Type\n+MonomialBasisProviderType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd\n+CF ComputeField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const Basis Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+unsigned int Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const typedef LP< F, dim > Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-std::size_t Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:26\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+MonomialBasisProviderType::Object MonomialBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n+MonomialBasisProvider< dd, FF > Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:28\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n+void fill(const RowMatrix &mat, bool verbose=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:780\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangeprism.hh File Reference\n+dune-localfunctions: orthonormalcompute.hh File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,57 @@\n \n \n \n \n \n \n \n
    \n \n-
    lagrangeprism.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    orthonormalcompute.hh File Reference
    \n \n
    \n-
    #include <array>
    \n-#include <numeric>
    \n+
    #include <cassert>
    \n+#include <iostream>
    \n+#include <fstream>
    \n+#include <iomanip>
    \n+#include <utility>
    \n+#include <map>
    \n+#include <dune/common/dynmatrix.hh>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/math.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n+#include <dune/localfunctions/utility/monomialbasis.hh>
    \n+#include <dune/localfunctions/utility/multiindex.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n \n

    \n Classes

    class  Dune::LagrangePrismLocalFiniteElement< D, R, k >
     Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order. More...
    struct  ONBCompute::Integral< geometryId >
     
    class  ONBCompute::ONBMatrix< geometryId, scalar_t >
     
    \n \n-\n+\n \n+

    \n Namespaces

    namespace  Dune
    namespace  ONBCompute
     
    \n+\n+\n+\n+\n

    \n+Functions

    template<class scalar_t >
    scalar_t ONBCompute::factorial (int start, int end)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,36 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-lagrangeprism.hh File Reference\n-#include \n-#include \n+ * _\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+orthonormalcompute.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n #include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bk_\b _\b>\n-\u00a0 Lagrange finite element for 3d prisms with arbitrary compile-time\n- polynomial order. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b _\b>\n+\u00a0\n+ class \u00a0 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n+namespace \u00a0 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+scalar_t\u00a0 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bf_\ba_\bc_\bt_\bo_\br_\bi_\ba_\bl (int start, int end)\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangeprism.hh Source File\n+dune-localfunctions: orthonormalcompute.hh Source File\n \n \n \n \n \n \n \n@@ -70,688 +70,264 @@\n
    \n \n \n \n \n \n \n
    \n-
    lagrangeprism.hh
    \n+
    orthonormalcompute.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH
    \n+
    5#ifndef DUNE_ORTHONORMALCOMPUTE_HH
    \n+
    6#define DUNE_ORTHONORMALCOMPUTE_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <numeric>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12#include <dune/common/fvector.hh>
    \n-
    13#include <dune/common/math.hh>
    \n+
    8#include <cassert>
    \n+
    9#include <iostream>
    \n+
    10#include <fstream>
    \n+
    11#include <iomanip>
    \n+
    12#include <utility>
    \n+
    13#include <map>
    \n
    14
    \n-
    15#include <dune/geometry/referenceelements.hh>
    \n-
    16
    \n-\n-\n-\n-
    20
    \n-
    21namespace Dune { namespace Impl
    \n-
    22{
    \n-
    32 template<class D, class R, unsigned int k>
    \n-
    33 class LagrangePrismLocalBasis
    \n-
    34 {
    \n-
    35 static constexpr std::size_t dim = 3;
    \n-
    36 public:
    \n-
    37 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n-
    38
    \n-
    41 static constexpr unsigned int size ()
    \n-
    42 {
    \n-
    43 return binomial(k+2,2u) * (k+1);
    \n-
    44 }
    \n-
    45
    \n-
    47 void evaluateFunction(const typename Traits::DomainType& in,
    \n-
    48 std::vector<typename Traits::RangeType>& out) const
    \n-
    49 {
    \n-
    50 out.resize(size());
    \n-
    51
    \n-
    52 // Specialization for zero-order case
    \n-
    53 if (k==0)
    \n-
    54 {
    \n-
    55 out[0] = 1;
    \n-
    56 return;
    \n-
    57 }
    \n-
    58
    \n-
    59 if (k==1)
    \n-
    60 {
    \n-
    61 out[0] = (1.0-in[0]-in[1])*(1.0-in[2]);
    \n-
    62 out[1] = in[0]*(1-in[2]);
    \n-
    63 out[2] = in[1]*(1-in[2]);
    \n-
    64 out[3] = in[2]*(1.0-in[0]-in[1]);
    \n-
    65 out[4] = in[0]*in[2];
    \n-
    66 out[5] = in[1]*in[2];
    \n-
    67
    \n-
    68 return;
    \n-
    69 }
    \n-
    70
    \n-
    71 if (k==2)
    \n-
    72 {
    \n-
    73 FieldVector<R,k+1> segmentShapeFunction;
    \n-
    74 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n-
    75 segmentShapeFunction[1] = in[2] * (4 - 4*in[2]);
    \n-
    76 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n-
    77
    \n-
    78 FieldVector<R, 6> triangleShapeFunction;
    \n-
    79 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);
    \n-
    80 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);
    \n-
    81 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);
    \n-
    82 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);
    \n-
    83 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);
    \n-
    84 triangleShapeFunction[5] = 4*in[0]*in[1];
    \n+
    15#include <dune/common/dynmatrix.hh>
    \n+
    16#include <dune/common/fmatrix.hh>
    \n+
    17
    \n+
    18#include <dune/geometry/type.hh>
    \n+
    19
    \n+\n+\n+\n+
    23
    \n+
    \n+
    24namespace ONBCompute
    \n+
    25{
    \n+
    26
    \n+
    27 template< class scalar_t >
    \n+
    \n+
    28 scalar_t factorial( int start, int end )
    \n+
    29 {
    \n+
    30 scalar_t ret( 1 );
    \n+
    31 for( int j = start; j <= end; ++j )
    \n+
    32 ret *= scalar_t( j );
    \n+
    33 return ret;
    \n+
    34 }
    \n+
    \n+
    35
    \n+
    36
    \n+
    37
    \n+
    38 // Integral
    \n+
    39 // --------
    \n+
    40
    \n+
    41 template< Dune::GeometryType::Id geometryId >
    \n+
    \n+
    42 struct Integral
    \n+
    43 {
    \n+
    44 static constexpr Dune::GeometryType geometry = geometryId;
    \n+
    45 static constexpr int dimension = geometry.dim();
    \n+
    46
    \n+
    47 template< int dim, class scalar_t >
    \n+
    \n+
    48 static int compute ( const Dune::MultiIndex< dim, scalar_t > &alpha,
    \n+
    49 scalar_t &p, scalar_t &q )
    \n+
    50 {
    \n+
    51 return compute(alpha, p, q, std::make_integer_sequence<int,dimension>{});
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    54 template< int dim, class scalar_t , int ...ints>
    \n+
    \n+
    55 static int compute ( const Dune::MultiIndex< dim, scalar_t > &alpha,
    \n+
    56 scalar_t &p, scalar_t &q, std::integer_sequence<int,ints...> intS)
    \n+
    57 {
    \n+
    58 p = scalar_t( 1 );
    \n+
    59 q = scalar_t( 1 );
    \n+
    60
    \n+
    61 int ord = 0;
    \n+
    62 ((computeIntegral<ints>(alpha,p,q,ord)),...);
    \n+
    63
    \n+
    64 return ord;
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    67 template< int step, int dim, class scalar_t >
    \n+
    \n+\n+
    69 scalar_t &p, scalar_t &q, int& ord)
    \n+
    70 {
    \n+
    71 int i = alpha.z( step );
    \n+
    72
    \n+
    73 if constexpr ( geometry.isPrismatic(step))
    \n+
    74 {
    \n+
    75 //p *= scalar_t( 1 );
    \n+
    76 q *= scalar_t( i+1 );
    \n+
    77 }
    \n+
    78 else
    \n+
    79 {
    \n+
    80 p *= factorial< scalar_t >( 1, i );
    \n+
    81 q *= factorial< scalar_t >( step+1 + ord, step+1 + ord + i );
    \n+
    82 }
    \n+
    83 ord +=i;
    \n+
    84 }
    \n+
    \n
    85
    \n-
    86 // lower triangle:
    \n-
    87 out[0] = triangleShapeFunction[0] * segmentShapeFunction[0];
    \n-
    88 out[1] = triangleShapeFunction[1] * segmentShapeFunction[0];
    \n-
    89 out[2] = triangleShapeFunction[2] * segmentShapeFunction[0];
    \n-
    90
    \n-
    91 //upper triangle
    \n-
    92 out[3] = triangleShapeFunction[0] * segmentShapeFunction[2];
    \n-
    93 out[4] = triangleShapeFunction[1] * segmentShapeFunction[2];
    \n-
    94 out[5] = triangleShapeFunction[2] * segmentShapeFunction[2];
    \n-
    95
    \n-
    96 // vertical edges
    \n-
    97 out[6] = triangleShapeFunction[0] * segmentShapeFunction[1];
    \n-
    98 out[7] = triangleShapeFunction[1] * segmentShapeFunction[1];
    \n-
    99 out[8] = triangleShapeFunction[2] * segmentShapeFunction[1];
    \n-
    100
    \n-
    101 // lower triangle edges
    \n-
    102 out[9] = triangleShapeFunction[3] * segmentShapeFunction[0];
    \n-
    103 out[10] = triangleShapeFunction[4] * segmentShapeFunction[0];
    \n-
    104 out[11] = triangleShapeFunction[5] * segmentShapeFunction[0];
    \n-
    105
    \n-
    106 // upper triangle edges
    \n-
    107 out[12] = triangleShapeFunction[3] * segmentShapeFunction[2];
    \n-
    108 out[13] = triangleShapeFunction[4] * segmentShapeFunction[2];
    \n-
    109 out[14] = triangleShapeFunction[5] * segmentShapeFunction[2];
    \n-
    110
    \n-
    111 // quadrilateral sides
    \n-
    112 out[15] = triangleShapeFunction[3] * segmentShapeFunction[1];
    \n-
    113 out[16] = triangleShapeFunction[4] * segmentShapeFunction[1];
    \n-
    114 out[17] = triangleShapeFunction[5] * segmentShapeFunction[1];
    \n-
    115
    \n-
    116 return;
    \n-
    117 }
    \n-
    118
    \n-
    119 DUNE_THROW(NotImplemented, "LagrangePrismLocalBasis::evaluateFunction for order " << k);
    \n-
    120 }
    \n+
    86 };
    \n+
    \n+
    87
    \n+
    88
    \n+
    89 // ONBMatrix
    \n+
    90 // ---------
    \n+
    91
    \n+
    92 template< Dune::GeometryType::Id geometryId, class scalar_t >
    \n+
    \n+\n+
    94 : public Dune::DynamicMatrix< scalar_t >
    \n+
    95 {
    \n+\n+
    97 typedef Dune::DynamicMatrix< scalar_t > Base;
    \n+
    98
    \n+
    99 public:
    \n+
    100 typedef std::vector< scalar_t > vec_t;
    \n+
    101 typedef Dune::DynamicMatrix< scalar_t > mat_t;
    \n+
    102
    \n+
    \n+
    103 explicit ONBMatrix ( unsigned int order )
    \n+
    104 {
    \n+
    105 // get all multiindecies for monomial basis
    \n+
    106 constexpr Dune::GeometryType geometry = geometryId;
    \n+
    107 constexpr unsigned int dim = geometry.dim();
    \n+\n+\n+
    110 const std::size_t size = basis.size();
    \n+
    111 std::vector< Dune::FieldVector< MI, 1 > > y( size );
    \n+
    112 Dune::FieldVector< MI, dim > x;
    \n+
    113 for( unsigned int i = 0; i < dim; ++i )
    \n+
    114 x[ i ].set( i );
    \n+
    115 basis.evaluate( x, y );
    \n+
    116
    \n+
    117 // set bounds of data
    \n+
    118 Base::resize( size, size );
    \n+
    119 S.resize( size, size );
    \n+
    120 d.resize( size );
    \n
    121
    \n-
    127 void evaluateJacobian(const typename Traits::DomainType& in,
    \n-
    128 std::vector<typename Traits::JacobianType>& out) const
    \n-
    129 {
    \n-
    130 out.resize(size());
    \n-
    131
    \n-
    132 // Specialization for k==0
    \n-
    133 if (k==0)
    \n-
    134 {
    \n-
    135 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n-
    136 return;
    \n-
    137 }
    \n-
    138
    \n-
    139 if (k==1)
    \n-
    140 {
    \n-
    141 out[0][0] = {in[2]-1, in[2]-1, in[0]+in[1]-1};
    \n-
    142 out[1][0] = {1-in[2], 0, -in[0]};
    \n-
    143 out[2][0] = { 0, 1-in[2], -in[1]};
    \n-
    144 out[3][0] = { -in[2], -in[2], 1-in[0]-in[1]};
    \n-
    145 out[4][0] = { in[2], 0, in[0]};
    \n-
    146 out[5][0] = { 0, in[2], in[1]};
    \n-
    147
    \n-
    148 return;
    \n-
    149 }
    \n-
    150
    \n-
    151 if (k==2)
    \n+
    122 // setup matrix for bilinear form x^T S y: S_ij = int_A x^(i+j)
    \n+
    123 scalar_t p, q;
    \n+
    124 for( std::size_t i = 0; i < size; ++i )
    \n+
    125 {
    \n+
    126 for( std::size_t j = 0; j < size; ++j )
    \n+
    127 {
    \n+
    128 Integral< geometryId >::compute( y[ i ][ 0 ] * y[ j ][ 0 ], p, q );
    \n+
    129 S[i][j] = p;
    \n+
    130 S[i][j] /= q;
    \n+
    131 }
    \n+
    132 }
    \n+
    133
    \n+
    134 // orthonormalize
    \n+
    135 gramSchmidt();
    \n+
    136 }
    \n+
    \n+
    137
    \n+
    138 template< class Vector >
    \n+
    \n+
    139 void row ( unsigned int row, Vector &vec ) const
    \n+
    140 {
    \n+
    141 // transposed matrix is required
    \n+
    142 assert( row < Base::cols() );
    \n+
    143 for( std::size_t i = 0; i < Base::rows(); ++i )
    \n+
    144 Dune::field_cast( (*this)[i][row], vec[ i ] );
    \n+
    145 }
    \n+
    \n+
    146
    \n+
    147 private:
    \n+
    148 void sprod ( int col1, int col2, scalar_t &ret )
    \n+
    149 {
    \n+
    150 ret = 0;
    \n+
    151 for( int k = 0; k <= col1; ++k )
    \n
    152 {
    \n-
    153 // Second-order shape functions on a triangle, and the first derivatives
    \n-
    154 FieldVector<R, 6> triangleShapeFunction;
    \n-
    155 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);
    \n-
    156 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);
    \n-
    157 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);
    \n-
    158 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);
    \n-
    159 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);
    \n-
    160 triangleShapeFunction[5] = 4*in[0]*in[1];
    \n-
    161
    \n-
    162 std::array<std::array<R,2>,6> triangleShapeFunctionDer;
    \n-
    163 triangleShapeFunctionDer[0] = {-3 + 4*(in[0] + in[1]), -3 + 4*(in[0] + in[1])};
    \n-
    164 triangleShapeFunctionDer[1] = { -1 + 4*in[0], 0};
    \n-
    165 triangleShapeFunctionDer[2] = { 0, -1 + 4*in[1]};
    \n-
    166 triangleShapeFunctionDer[3] = { 4 - 8*in[0] - 4*in[1], -4*in[0]};
    \n-
    167 triangleShapeFunctionDer[4] = { -4*in[1], 4 - 4*in[0] - 8*in[1]};
    \n-
    168 triangleShapeFunctionDer[5] = { 4*in[1], 4*in[0]};
    \n+
    153 for( int l = 0; l <=col2; ++l )
    \n+
    154 ret += (*this)[l][col2] * S[l][k] * (*this)[k][col1];
    \n+
    155 }
    \n+
    156 }
    \n+
    157
    \n+
    158 void vmul ( std::size_t col, std::size_t rowEnd, const scalar_t &s )
    \n+
    159 {
    \n+
    160 for( std::size_t i = 0; i <= rowEnd; ++i )
    \n+
    161 (*this)[i][col] *= s;
    \n+
    162 }
    \n+
    163
    \n+
    164 void vsub ( std::size_t coldest, std::size_t colsrc, std::size_t rowEnd, const scalar_t &s )
    \n+
    165 {
    \n+
    166 for( std::size_t i = 0; i <= rowEnd; ++i )
    \n+
    167 (*this)[i][coldest] -= s * (*this)[i][colsrc];
    \n+
    168 }
    \n
    169
    \n-
    170 // Second-order shape functions on a line, and the first derivatives
    \n-
    171 FieldVector<R,k+1> segmentShapeFunction;
    \n-
    172 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n-
    173 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);
    \n-
    174 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n-
    175
    \n-
    176 FieldVector<R,k+1> segmentShapeFunctionDer;
    \n-
    177 segmentShapeFunctionDer[0] = -3 + 4*in[2];
    \n-
    178 segmentShapeFunctionDer[1] = 4 - 8*in[2];
    \n-
    179 segmentShapeFunctionDer[2] = -1 + 4*in[2];
    \n+
    170 void gramSchmidt ()
    \n+
    171 {
    \n+
    172 using std::sqrt;
    \n+
    173 // setup identity
    \n+
    174 const std::size_t N = Base::rows();
    \n+
    175 for( std::size_t i = 0; i < N; ++i )
    \n+
    176 {
    \n+
    177 for( std::size_t j = 0; j < N; ++j )
    \n+
    178 (*this)[i][j] = scalar_t( i == j ? 1 : 0 );
    \n+
    179 }
    \n
    180
    \n-
    181 // lower triangle:
    \n-
    182 out[0][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[0];
    \n-
    183 out[0][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[0];
    \n-
    184 out[0][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];
    \n-
    185
    \n-
    186 out[1][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[0];
    \n-
    187 out[1][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[0];
    \n-
    188 out[1][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];
    \n-
    189
    \n-
    190 out[2][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[0];
    \n-
    191 out[2][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[0];
    \n-
    192 out[2][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];
    \n-
    193
    \n-
    194 //upper triangle
    \n-
    195 out[3][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[2];
    \n-
    196 out[3][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[2];
    \n-
    197 out[3][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];
    \n-
    198
    \n-
    199 out[4][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[2];
    \n-
    200 out[4][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[2];
    \n-
    201 out[4][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];
    \n+
    181 // perform Gram-Schmidt procedure
    \n+
    182 scalar_t s;
    \n+
    183 sprod( 0, 0, s );
    \n+
    184 vmul( 0, 0, scalar_t( 1 ) / sqrt( s ) );
    \n+
    185 for( std::size_t i = 1; i < N; ++i )
    \n+
    186 {
    \n+
    187 for( std::size_t k = 0; k < i; ++k )
    \n+
    188 {
    \n+
    189 sprod( i, k, s );
    \n+
    190 vsub( i, k, i, s );
    \n+
    191 }
    \n+
    192 sprod( i, i, s );
    \n+
    193 vmul( i, i, scalar_t( 1 ) / sqrt( s ) );
    \n+
    194 }
    \n+
    195 }
    \n+
    196
    \n+
    197 vec_t d;
    \n+
    198 mat_t S;
    \n+
    199 };
    \n+
    \n+
    200
    \n+
    201} // namespace ONBCompute
    \n+
    \n
    202
    \n-
    203 out[5][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[2];
    \n-
    204 out[5][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[2];
    \n-
    205 out[5][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];
    \n-
    206
    \n-
    207 // vertical edges
    \n-
    208 out[6][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[1];
    \n-
    209 out[6][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[1];
    \n-
    210 out[6][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];
    \n-
    211
    \n-
    212 out[7][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[1];
    \n-
    213 out[7][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[1];
    \n-
    214 out[7][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];
    \n-
    215
    \n-
    216 out[8][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[1];
    \n-
    217 out[8][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[1];
    \n-
    218 out[8][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];
    \n-
    219
    \n-
    220 // lower triangle edges
    \n-
    221 out[9][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[0];
    \n-
    222 out[9][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[0];
    \n-
    223 out[9][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];
    \n-
    224
    \n-
    225 out[10][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[0];
    \n-
    226 out[10][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[0];
    \n-
    227 out[10][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];
    \n-
    228
    \n-
    229 out[11][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[0];
    \n-
    230 out[11][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[0];
    \n-
    231 out[11][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];
    \n-
    232
    \n-
    233 // upper triangle edges
    \n-
    234 out[12][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[2];
    \n-
    235 out[12][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[2];
    \n-
    236 out[12][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];
    \n-
    237
    \n-
    238 out[13][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[2];
    \n-
    239 out[13][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[2];
    \n-
    240 out[13][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];
    \n-
    241
    \n-
    242 out[14][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[2];
    \n-
    243 out[14][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[2];
    \n-
    244 out[14][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];
    \n-
    245
    \n-
    246 // quadrilateral sides
    \n-
    247 out[15][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[1];
    \n-
    248 out[15][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[1];
    \n-
    249 out[15][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];
    \n-
    250
    \n-
    251 out[16][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[1];
    \n-
    252 out[16][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[1];
    \n-
    253 out[16][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];
    \n-
    254
    \n-
    255 out[17][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[1];
    \n-
    256 out[17][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[1];
    \n-
    257 out[17][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];
    \n-
    258
    \n-
    259 return;
    \n-
    260 }
    \n-
    261
    \n-
    262 DUNE_THROW(NotImplemented, "LagrangePrismLocalBasis::evaluateJacobian for order " << k);
    \n-
    263 }
    \n-
    264
    \n-
    271 void partial(const std::array<unsigned int,dim>& order,
    \n-
    272 const typename Traits::DomainType& in,
    \n-
    273 std::vector<typename Traits::RangeType>& out) const
    \n-
    274 {
    \n-
    275 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    276
    \n-
    277 out.resize(size());
    \n-
    278
    \n-
    279 if (totalOrder == 0)
    \n-
    280 {
    \n-
    281 evaluateFunction(in, out);
    \n-
    282 return;
    \n-
    283 }
    \n-
    284
    \n-
    285 // Specialization for zero-order finite elements
    \n-
    286 if (k==0)
    \n-
    287 {
    \n-
    288 out[0] = 0;
    \n-
    289 return;
    \n-
    290 }
    \n-
    291
    \n-
    292 // Specialization for first-order finite elements
    \n-
    293 if (k==1)
    \n-
    294 {
    \n-
    295 if (totalOrder == 1)
    \n-
    296 {
    \n-
    297 auto direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    298
    \n-
    299 switch (direction) {
    \n-
    300 case 0:
    \n-
    301 out[0] = in[2]-1;
    \n-
    302 out[1] = 1-in[2];
    \n-
    303 out[2] = 0;
    \n-
    304 out[3] = -in[2];
    \n-
    305 out[4] = in[2];
    \n-
    306 out[5] = 0;
    \n-
    307 break;
    \n-
    308 case 1:
    \n-
    309 out[0] = in[2]-1;
    \n-
    310 out[1] = 0;
    \n-
    311 out[2] = 1-in[2];
    \n-
    312 out[3] = -in[2];
    \n-
    313 out[4] = 0;
    \n-
    314 out[5] = in[2];
    \n-
    315 break;
    \n-
    316 case 2:
    \n-
    317 out[0] = in[0]+in[1]-1;
    \n-
    318 out[1] = -in[0];
    \n-
    319 out[2] = -in[1];
    \n-
    320 out[3] = 1-in[0]-in[1];
    \n-
    321 out[4] = in[0];
    \n-
    322 out[5] = in[1];
    \n-
    323 break;
    \n-
    324 default:
    \n-
    325 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    326 }
    \n-
    327 } else if (totalOrder == 2) {
    \n-
    328 out.resize(size());
    \n-
    329 if (order[0] == 1 && order[2] == 1) {
    \n-
    330 out[0] = 1;
    \n-
    331 out[1] =-1;
    \n-
    332 out[2] = 0;
    \n-
    333 out[3] =-1;
    \n-
    334 out[4] = 1;
    \n-
    335 out[5] = 0;
    \n-
    336 } else if (order[1] == 1 && order[2] == 1) {
    \n-
    337 out[0] = 1;
    \n-
    338 out[1] = 0;
    \n-
    339 out[2] =-1;
    \n-
    340 out[3] =-1;
    \n-
    341 out[4] = 0;
    \n-
    342 out[5] = 1;
    \n-
    343 } else {
    \n-
    344 for (std::size_t i = 0; i < size(); ++i)
    \n-
    345 out[i] = 0;
    \n-
    346 }
    \n-
    347 } else {
    \n-
    348 out.resize(size());
    \n-
    349 std::fill(out.begin(), out.end(), 0.0);
    \n-
    350 }
    \n-
    351
    \n-
    352 return;
    \n-
    353 }
    \n-
    354
    \n-
    355 // Specialization for second-order finite elements
    \n-
    356 if (k==2)
    \n-
    357 {
    \n-
    358 if (totalOrder == 1)
    \n-
    359 {
    \n-
    360 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    361 switch (direction)
    \n-
    362 {
    \n-
    363 case 0:
    \n-
    364 {
    \n-
    365 FieldVector<R,6> triangleShapeFunctionDerX;
    \n-
    366 triangleShapeFunctionDerX[0] = -3 + 4*(in[0] + in[1]);
    \n-
    367 triangleShapeFunctionDerX[1] = -1 + 4* in[0];
    \n-
    368 triangleShapeFunctionDerX[2] = 0;
    \n-
    369 triangleShapeFunctionDerX[3] = 4 - 8* in[0] - 4*in[1];
    \n-
    370 triangleShapeFunctionDerX[4] = -4*in[1];
    \n-
    371 triangleShapeFunctionDerX[5] = 4*in[1];
    \n-
    372
    \n-
    373 FieldVector<R,k+1> segmentShapeFunction;
    \n-
    374 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n-
    375 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);
    \n-
    376 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n-
    377
    \n-
    378 out[0] = triangleShapeFunctionDerX[0] * segmentShapeFunction[0];
    \n-
    379 out[1] = triangleShapeFunctionDerX[1] * segmentShapeFunction[0];
    \n-
    380 out[2] = triangleShapeFunctionDerX[2] * segmentShapeFunction[0];
    \n-
    381 out[3] = triangleShapeFunctionDerX[0] * segmentShapeFunction[2];
    \n-
    382 out[4] = triangleShapeFunctionDerX[1] * segmentShapeFunction[2];
    \n-
    383 out[5] = triangleShapeFunctionDerX[2] * segmentShapeFunction[2];
    \n-
    384 out[6] = triangleShapeFunctionDerX[0] * segmentShapeFunction[1];
    \n-
    385 out[7] = triangleShapeFunctionDerX[1] * segmentShapeFunction[1];
    \n-
    386 out[8] = triangleShapeFunctionDerX[2] * segmentShapeFunction[1];
    \n-
    387 out[9] = triangleShapeFunctionDerX[3] * segmentShapeFunction[0];
    \n-
    388 out[10] = triangleShapeFunctionDerX[4] * segmentShapeFunction[0];
    \n-
    389 out[11] = triangleShapeFunctionDerX[5] * segmentShapeFunction[0];
    \n-
    390 out[12] = triangleShapeFunctionDerX[3] * segmentShapeFunction[2];
    \n-
    391 out[13] = triangleShapeFunctionDerX[4] * segmentShapeFunction[2];
    \n-
    392 out[14] = triangleShapeFunctionDerX[5] * segmentShapeFunction[2];
    \n-
    393 out[15] = triangleShapeFunctionDerX[3] * segmentShapeFunction[1];
    \n-
    394 out[16] = triangleShapeFunctionDerX[4] * segmentShapeFunction[1];
    \n-
    395 out[17] = triangleShapeFunctionDerX[5] * segmentShapeFunction[1];
    \n-
    396 break;
    \n-
    397 }
    \n-
    398 case 1:
    \n-
    399 {
    \n-
    400 FieldVector<R,6> triangleShapeFunctionDerY;
    \n-
    401 triangleShapeFunctionDerY[0] = -3 + 4*(in[0] + in[1]);
    \n-
    402 triangleShapeFunctionDerY[1] = 0;
    \n-
    403 triangleShapeFunctionDerY[2] = -1 + 4* in[1];
    \n-
    404 triangleShapeFunctionDerY[3] = -4* in[0];
    \n-
    405 triangleShapeFunctionDerY[4] = 4 - 4* in[0] - 8*in[1];
    \n-
    406 triangleShapeFunctionDerY[5] = 4* in[0];
    \n-
    407
    \n-
    408 FieldVector<R,k+1> segmentShapeFunction;
    \n-
    409 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n-
    410 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);
    \n-
    411 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n-
    412
    \n-
    413 out[0] = triangleShapeFunctionDerY[0] * segmentShapeFunction[0];
    \n-
    414 out[1] = triangleShapeFunctionDerY[1] * segmentShapeFunction[0];
    \n-
    415 out[2] = triangleShapeFunctionDerY[2] * segmentShapeFunction[0];
    \n-
    416 out[3] = triangleShapeFunctionDerY[0] * segmentShapeFunction[2];
    \n-
    417 out[4] = triangleShapeFunctionDerY[1] * segmentShapeFunction[2];
    \n-
    418 out[5] = triangleShapeFunctionDerY[2] * segmentShapeFunction[2];
    \n-
    419 out[6] = triangleShapeFunctionDerY[0] * segmentShapeFunction[1];
    \n-
    420 out[7] = triangleShapeFunctionDerY[1] * segmentShapeFunction[1];
    \n-
    421 out[8] = triangleShapeFunctionDerY[2] * segmentShapeFunction[1];
    \n-
    422 out[9] = triangleShapeFunctionDerY[3] * segmentShapeFunction[0];
    \n-
    423 out[10] = triangleShapeFunctionDerY[4] * segmentShapeFunction[0];
    \n-
    424 out[11] = triangleShapeFunctionDerY[5] * segmentShapeFunction[0];
    \n-
    425 out[12] = triangleShapeFunctionDerY[3] * segmentShapeFunction[2];
    \n-
    426 out[13] = triangleShapeFunctionDerY[4] * segmentShapeFunction[2];
    \n-
    427 out[14] = triangleShapeFunctionDerY[5] * segmentShapeFunction[2];
    \n-
    428 out[15] = triangleShapeFunctionDerY[3] * segmentShapeFunction[1];
    \n-
    429 out[16] = triangleShapeFunctionDerY[4] * segmentShapeFunction[1];
    \n-
    430 out[17] = triangleShapeFunctionDerY[5] * segmentShapeFunction[1];
    \n-
    431 break;
    \n-
    432 }
    \n-
    433 case 2:
    \n-
    434 {
    \n-
    435 FieldVector<R, 6> triangleShapeFunction;
    \n-
    436 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);
    \n-
    437 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);
    \n-
    438 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);
    \n-
    439 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);
    \n-
    440 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);
    \n-
    441 triangleShapeFunction[5] = 4*in[0]*in[1];
    \n-
    442
    \n-
    443 FieldVector<R,k+1> segmentShapeFunctionDer;
    \n-
    444 segmentShapeFunctionDer[0] = -3 + 4*in[2];
    \n-
    445 segmentShapeFunctionDer[1] = 4 - 8*in[2];
    \n-
    446 segmentShapeFunctionDer[2] = -1 + 4*in[2];
    \n-
    447
    \n-
    448 out[0] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];
    \n-
    449 out[1] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];
    \n-
    450 out[2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];
    \n-
    451 out[3] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];
    \n-
    452 out[4] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];
    \n-
    453 out[5] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];
    \n-
    454 out[6] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];
    \n-
    455 out[7] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];
    \n-
    456 out[8] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];
    \n-
    457 out[9] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];
    \n-
    458 out[10] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];
    \n-
    459 out[11] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];
    \n-
    460 out[12] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];
    \n-
    461 out[13] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];
    \n-
    462 out[14] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];
    \n-
    463 out[15] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];
    \n-
    464 out[16] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];
    \n-
    465 out[17] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];
    \n-
    466 break;
    \n-
    467 }
    \n-
    468 default:
    \n-
    469 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    470 }
    \n-
    471 } else {
    \n-
    472 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    473 }
    \n-
    474
    \n-
    475 return;
    \n-
    476 }
    \n-
    477
    \n-
    478 DUNE_THROW(NotImplemented, "LagrangePrismLocalBasis::partial not implemented for order " << k);
    \n-
    479 }
    \n-
    480
    \n-
    482 static constexpr unsigned int order ()
    \n-
    483 {
    \n-
    484 return k;
    \n-
    485 }
    \n-
    486 };
    \n-
    487
    \n-
    492 template<unsigned int k>
    \n-
    493 class LagrangePrismLocalCoefficients
    \n-
    494 {
    \n-
    495 public:
    \n-
    497 LagrangePrismLocalCoefficients ()
    \n-
    498 : localKeys_(size())
    \n-
    499 {
    \n-
    500 if (k==0)
    \n-
    501 {
    \n-
    502 localKeys_[0] = LocalKey(0,0,0);
    \n-
    503 return;
    \n-
    504 }
    \n-
    505
    \n-
    506 if (k==1)
    \n-
    507 {
    \n-
    508 for (std::size_t i=0; i<size(); i++)
    \n-
    509 localKeys_[i] = LocalKey(i,3,0);
    \n-
    510 return;
    \n-
    511 }
    \n-
    512
    \n-
    513 if (k==2)
    \n-
    514 {
    \n-
    515 // Vertex shape functions
    \n-
    516 localKeys_[0] = LocalKey(0,3,0);
    \n-
    517 localKeys_[1] = LocalKey(1,3,0);
    \n-
    518 localKeys_[2] = LocalKey(2,3,0);
    \n-
    519 localKeys_[3] = LocalKey(3,3,0);
    \n-
    520 localKeys_[4] = LocalKey(4,3,0);
    \n-
    521 localKeys_[5] = LocalKey(5,3,0);
    \n-
    522
    \n-
    523 // Edge shape functions
    \n-
    524 localKeys_[6] = LocalKey(0,2,0);
    \n-
    525 localKeys_[7] = LocalKey(1,2,0);
    \n-
    526 localKeys_[8] = LocalKey(2,2,0);
    \n-
    527 localKeys_[9] = LocalKey(3,2,0);
    \n-
    528 localKeys_[10] = LocalKey(4,2,0);
    \n-
    529 localKeys_[11] = LocalKey(5,2,0);
    \n-
    530 localKeys_[12] = LocalKey(6,2,0);
    \n-
    531 localKeys_[13] = LocalKey(7,2,0);
    \n-
    532 localKeys_[14] = LocalKey(8,2,0);
    \n-
    533
    \n-
    534 // Quadrilateral sides shape functions
    \n-
    535 localKeys_[15] = LocalKey(0,1,0);
    \n-
    536 localKeys_[16] = LocalKey(1,1,0);
    \n-
    537 localKeys_[17] = LocalKey(2,1,0);
    \n-
    538
    \n-
    539 return;
    \n-
    540 }
    \n-
    541
    \n-
    542 // Now: the general case
    \n-
    543 DUNE_THROW(NotImplemented, "LagrangePrismLocalCoefficients not implemented for order " << k);
    \n-
    544
    \n-
    545 }
    \n-
    546
    \n-
    548 static constexpr std::size_t size ()
    \n-
    549 {
    \n-
    550 return binomial(k+2,2u) * (k+1);
    \n-
    551 }
    \n-
    552
    \n-
    554 const LocalKey& localKey (std::size_t i) const
    \n-
    555 {
    \n-
    556 return localKeys_[i];
    \n-
    557 }
    \n-
    558
    \n-
    559 private:
    \n-
    560 std::vector<LocalKey> localKeys_;
    \n-
    561 };
    \n-
    562
    \n-
    567 template<class LocalBasis>
    \n-
    568 class LagrangePrismLocalInterpolation
    \n-
    569 {
    \n-
    570 public:
    \n-
    571
    \n-
    579 template<typename F, typename C>
    \n-
    580 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    581 {
    \n-
    582 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n-
    583 constexpr auto k = LocalBasis::order();
    \n-
    584 using D = typename LocalBasis::Traits::DomainType;
    \n-
    585 using DF = typename LocalBasis::Traits::DomainFieldType;
    \n-
    586
    \n-
    587 out.resize(LocalBasis::size());
    \n-
    588
    \n-
    589 // Specialization for zero-order case
    \n-
    590 if (k==0)
    \n-
    591 {
    \n-
    592 auto center = ReferenceElements<DF,dim>::general(GeometryTypes::prism).position(0,0);
    \n-
    593 out[0] = f(center);
    \n-
    594 return;
    \n-
    595 }
    \n-
    596
    \n-
    597 // Specialization for first-order case
    \n-
    598 if (k==1)
    \n-
    599 {
    \n-
    600 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n-
    601 {
    \n-
    602 auto vertex = ReferenceElements<DF,3>::general(GeometryTypes::prism).position(i,3);
    \n-
    603 out[i] = f(vertex);
    \n-
    604 }
    \n-
    605 return;
    \n-
    606 }
    \n-
    607
    \n-
    608 if (k==2)
    \n-
    609 {
    \n-
    610 out[0] = f( D( {0.0, 0.0, 0.0} ) );
    \n-
    611 out[1] = f( D( {1.0, 0.0, 0.0} ) );
    \n-
    612 out[2] = f( D( {0.0, 1.0, 0.0} ) );
    \n-
    613 out[3] = f( D( {0.0, 0.0, 1.0} ) );
    \n-
    614 out[4] = f( D( {1.0, 0.0, 1.0} ) );
    \n-
    615 out[5] = f( D( {0.0, 1.0, 1.0} ) );
    \n-
    616 out[6] = f( D( {0.0, 0.0, 0.5} ) );
    \n-
    617 out[7] = f( D( {1.0, 0.0, 0.5} ) );
    \n-
    618 out[8] = f( D( {0.0, 1.0, 0.5} ) );
    \n-
    619 out[9] = f( D( {0.5, 0.0, 0.0} ) );
    \n-
    620 out[10] = f( D( {0.0, 0.5, 0.0} ) );
    \n-
    621 out[11] = f( D( {0.5, 0.5, 0.0} ) );
    \n-
    622 out[12] = f( D( {0.5, 0.0, 1.0} ) );
    \n-
    623 out[13] = f( D( {0.0, 0.5, 1.0} ) );
    \n-
    624 out[14] = f( D( {0.5, 0.5, 1.0} ) );
    \n-
    625 out[15] = f( D( {0.5, 0.0, 0.5} ) );
    \n-
    626 out[16] = f( D( {0.0, 0.5, 0.5} ) );
    \n-
    627 out[17] = f( D( {0.5, 0.5, 0.5} ) );
    \n-
    628
    \n-
    629 return;
    \n-
    630 }
    \n-
    631
    \n-
    632 DUNE_THROW(NotImplemented, "LagrangePrismLocalInterpolation not implemented for order " << k);
    \n-
    633 }
    \n-
    634
    \n-
    635 };
    \n-
    636
    \n-
    637} } // namespace Dune::Impl
    \n-
    638
    \n-
    639namespace Dune
    \n-
    640{
    \n-
    647 template<class D, class R, int k>
    \n-
    \n-\n-
    649 {
    \n-
    650 public:
    \n-\n-
    654 Impl::LagrangePrismLocalCoefficients<k>,
    \n-
    655 Impl::LagrangePrismLocalInterpolation<Impl::LagrangePrismLocalBasis<D,R,k> > >;
    \n-
    656
    \n-
    \n-
    659 const typename Traits::LocalBasisType& localBasis () const
    \n-
    660 {
    \n-
    661 return basis_;
    \n-
    662 }
    \n-
    \n-
    663
    \n-
    \n-\n-
    667 {
    \n-
    668 return coefficients_;
    \n-
    669 }
    \n-
    \n-
    670
    \n-
    \n-\n-
    674 {
    \n-
    675 return interpolation_;
    \n-
    676 }
    \n-
    \n-
    677
    \n-
    \n-
    679 static constexpr std::size_t size ()
    \n-
    680 {
    \n-
    681 return binomial(k+2,2) * (k+1);
    \n-
    682 }
    \n-
    \n-
    683
    \n-
    \n-
    686 static constexpr GeometryType type ()
    \n-
    687 {
    \n-
    688 return GeometryTypes::prism;
    \n-
    689 }
    \n-
    \n-
    690
    \n-
    691 private:
    \n-
    692 Impl::LagrangePrismLocalBasis<D,R,k> basis_;
    \n-
    693 Impl::LagrangePrismLocalCoefficients<k> coefficients_;
    \n-
    694 Impl::LagrangePrismLocalInterpolation<Impl::LagrangePrismLocalBasis<D,R,k> > interpolation_;
    \n-
    695 };
    \n-
    \n-
    696
    \n-
    697} // namespace Dune
    \n-
    698
    \n-
    699#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH
    \n-\n-\n-
    Definition bdfmcube.hh:18
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:649
    \n-
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangeprism.hh:679
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangeprism.hh:673
    \n-
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangeprism.hh:686
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangeprism.hh:666
    \n-
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangeprism.hh:659
    \n-\n+
    203#endif // #ifndef DUNE_ORTHONORMALCOMPUTE_HH
    \n+\n+\n+\n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    Definition orthonormalcompute.hh:25
    \n+
    scalar_t factorial(int start, int end)
    Definition orthonormalcompute.hh:28
    \n+
    Definition orthonormalcompute.hh:43
    \n+
    static int compute(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p, scalar_t &q)
    Definition orthonormalcompute.hh:48
    \n+
    static int compute(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p, scalar_t &q, std::integer_sequence< int, ints... > intS)
    Definition orthonormalcompute.hh:55
    \n+
    static void computeIntegral(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p, scalar_t &q, int &ord)
    Definition orthonormalcompute.hh:68
    \n+
    static constexpr int dimension
    Definition orthonormalcompute.hh:45
    \n+
    static constexpr Dune::GeometryType geometry
    Definition orthonormalcompute.hh:44
    \n+
    Definition orthonormalcompute.hh:95
    \n+
    ONBMatrix(unsigned int order)
    Definition orthonormalcompute.hh:103
    \n+
    std::vector< scalar_t > vec_t
    Definition orthonormalcompute.hh:100
    \n+
    Dune::DynamicMatrix< scalar_t > mat_t
    Definition orthonormalcompute.hh:101
    \n+
    void row(unsigned int row, Vector &vec) const
    Definition orthonormalcompute.hh:139
    \n+
    unsigned int size() const
    Definition monomialbasis.hh:476
    \n+
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:498
    \n+
    Definition monomialbasis.hh:571
    \n+
    Definition multiindex.hh:38
    \n+
    int z(int i) const
    Definition multiindex.hh:92
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,712 +1,277 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-lagrangeprism.hh\n+ * _\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl\n+orthonormalcompute.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH\n-6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH\n+5#ifndef DUNE_ORTHONORMALCOMPUTE_HH\n+6#define DUNE_ORTHONORMALCOMPUTE_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n-13#include \n+8#include \n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n 14\n-15#include \n-16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-20\n-21namespace _\bD_\bu_\bn_\be { namespace Impl\n-22{\n-32 template\n-33 class LagrangePrismLocalBasis\n-34 {\n-35 static constexpr std::size_t dim = 3;\n-36 public:\n-37 using Traits =\n-LocalBasisTraits,R,1,FieldVector,FieldMatrix\n->;\n-38\n-41 static constexpr unsigned int size ()\n-42 {\n-43 return binomial(k+2,2u) * (k+1);\n-44 }\n-45\n-47 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-48 std::vector& out) const\n-49 {\n-50 out.resize(size());\n-51\n-52 // Specialization for zero-order case\n-53 if (k==0)\n-54 {\n-55 out[0] = 1;\n-56 return;\n-57 }\n-58\n-59 if (k==1)\n-60 {\n-61 out[0] = (1.0-in[0]-in[1])*(1.0-in[2]);\n-62 out[1] = in[0]*(1-in[2]);\n-63 out[2] = in[1]*(1-in[2]);\n-64 out[3] = in[2]*(1.0-in[0]-in[1]);\n-65 out[4] = in[0]*in[2];\n-66 out[5] = in[1]*in[2];\n-67\n-68 return;\n-69 }\n-70\n-71 if (k==2)\n-72 {\n-73 FieldVector segmentShapeFunction;\n-74 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n-75 segmentShapeFunction[1] = in[2] * (4 - 4*in[2]);\n-76 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n-77\n-78 FieldVector triangleShapeFunction;\n-79 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);\n-80 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);\n-81 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);\n-82 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);\n-83 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);\n-84 triangleShapeFunction[5] = 4*in[0]*in[1];\n+15#include \n+16#include \n+17\n+18#include \n+19\n+20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+22#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+23\n+_\b2_\b4namespace _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be\n+25{\n+26\n+27 template< class scalar_t >\n+_\b2_\b8 scalar_t _\bf_\ba_\bc_\bt_\bo_\br_\bi_\ba_\bl( int start, int end )\n+29 {\n+30 scalar_t ret( 1 );\n+31 for( int j = start; j <= end; ++j )\n+32 ret *= scalar_t( j );\n+33 return ret;\n+34 }\n+35\n+36\n+37\n+38 // Integral\n+39 // --------\n+40\n+41 template< Dune::GeometryType::Id geometryId >\n+_\b4_\b2 struct _\bI_\bn_\bt_\be_\bg_\br_\ba_\bl\n+43 {\n+_\b4_\b4 static constexpr Dune::GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n+_\b4_\b5 static constexpr int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bg_\be_\bo_\bm_\be_\bt_\br_\by.dim();\n+46\n+47 template< int dim, class scalar_t >\n+_\b4_\b8 static int _\bc_\bo_\bm_\bp_\bu_\bt_\be ( const _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> &alpha,\n+49 scalar_t &p, scalar_t &q )\n+50 {\n+51 return _\bc_\bo_\bm_\bp_\bu_\bt_\be(alpha, p, q, std::make_integer_sequence{});\n+52 }\n+53\n+54 template< int dim, class scalar_t , int ...ints>\n+_\b5_\b5 static int _\bc_\bo_\bm_\bp_\bu_\bt_\be ( const _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> &alpha,\n+56 scalar_t &p, scalar_t &q, std::integer_sequence intS)\n+57 {\n+58 p = scalar_t( 1 );\n+59 q = scalar_t( 1 );\n+60\n+61 int ord = 0;\n+62 ((computeIntegral(alpha,p,q,ord)),...);\n+63\n+64 return ord;\n+65 }\n+66\n+67 template< int step, int dim, class scalar_t >\n+_\b6_\b8 static void _\bc_\bo_\bm_\bp_\bu_\bt_\be_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl ( const _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b>\n+&alpha,\n+69 scalar_t &p, scalar_t &q, int& ord)\n+70 {\n+71 int i = alpha._\bz( step );\n+72\n+73 if constexpr ( _\bg_\be_\bo_\bm_\be_\bt_\br_\by.isPrismatic(step))\n+74 {\n+75 //p *= scalar_t( 1 );\n+76 q *= scalar_t( i+1 );\n+77 }\n+78 else\n+79 {\n+80 p *= factorial< scalar_t >( 1, i );\n+81 q *= factorial< scalar_t >( step+1 + ord, step+1 + ord + i );\n+82 }\n+83 ord +=i;\n+84 }\n 85\n-86 // lower triangle:\n-87 out[0] = triangleShapeFunction[0] * segmentShapeFunction[0];\n-88 out[1] = triangleShapeFunction[1] * segmentShapeFunction[0];\n-89 out[2] = triangleShapeFunction[2] * segmentShapeFunction[0];\n-90\n-91 //upper triangle\n-92 out[3] = triangleShapeFunction[0] * segmentShapeFunction[2];\n-93 out[4] = triangleShapeFunction[1] * segmentShapeFunction[2];\n-94 out[5] = triangleShapeFunction[2] * segmentShapeFunction[2];\n-95\n-96 // vertical edges\n-97 out[6] = triangleShapeFunction[0] * segmentShapeFunction[1];\n-98 out[7] = triangleShapeFunction[1] * segmentShapeFunction[1];\n-99 out[8] = triangleShapeFunction[2] * segmentShapeFunction[1];\n-100\n-101 // lower triangle edges\n-102 out[9] = triangleShapeFunction[3] * segmentShapeFunction[0];\n-103 out[10] = triangleShapeFunction[4] * segmentShapeFunction[0];\n-104 out[11] = triangleShapeFunction[5] * segmentShapeFunction[0];\n-105\n-106 // upper triangle edges\n-107 out[12] = triangleShapeFunction[3] * segmentShapeFunction[2];\n-108 out[13] = triangleShapeFunction[4] * segmentShapeFunction[2];\n-109 out[14] = triangleShapeFunction[5] * segmentShapeFunction[2];\n-110\n-111 // quadrilateral sides\n-112 out[15] = triangleShapeFunction[3] * segmentShapeFunction[1];\n-113 out[16] = triangleShapeFunction[4] * segmentShapeFunction[1];\n-114 out[17] = triangleShapeFunction[5] * segmentShapeFunction[1];\n-115\n-116 return;\n-117 }\n-118\n-119 DUNE_THROW(NotImplemented, \"LagrangePrismLocalBasis::evaluateFunction for\n-order \" << k);\n-120 }\n+86 };\n+87\n+88\n+89 // ONBMatrix\n+90 // ---------\n+91\n+92 template< Dune::GeometryType::Id geometryId, class scalar_t >\n+_\b9_\b3 class _\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx\n+94 : public Dune::DynamicMatrix< scalar_t >\n+95 {\n+96 typedef _\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> _\bT_\bh_\bi_\bs;\n+97 typedef Dune::DynamicMatrix< scalar_t > Base;\n+98\n+99 public:\n+_\b1_\b0_\b0 typedef std::vector< scalar_t > _\bv_\be_\bc_\b__\bt;\n+_\b1_\b0_\b1 typedef Dune::DynamicMatrix< scalar_t > _\bm_\ba_\bt_\b__\bt;\n+102\n+_\b1_\b0_\b3 explicit _\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx ( unsigned int order )\n+104 {\n+105 // get all multiindecies for monomial basis\n+106 constexpr Dune::GeometryType geometry = geometryId;\n+107 constexpr unsigned int dim = geometry.dim();\n+108 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> MI;\n+109 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bM_\bI_\b _\b> basis( order );\n+110 const std::size_t size = basis._\bs_\bi_\bz_\be();\n+111 std::vector< Dune::FieldVector< MI, 1 > > y( size );\n+112 Dune::FieldVector< MI, dim > x;\n+113 for( unsigned int i = 0; i < dim; ++i )\n+114 x[ i ].set( i );\n+115 basis._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( x, y );\n+116\n+117 // set bounds of data\n+118 Base::resize( size, size );\n+119 S.resize( size, size );\n+120 d.resize( size );\n 121\n-127 void evaluateJacobian(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-128 std::vector& out) const\n-129 {\n-130 out.resize(size());\n-131\n-132 // Specialization for k==0\n-133 if (k==0)\n-134 {\n-135 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n-136 return;\n-137 }\n-138\n-139 if (k==1)\n+122 // setup matrix for bilinear form x^T S y: S_ij = int_A x^(i+j)\n+123 scalar_t p, q;\n+124 for( std::size_t i = 0; i < size; ++i )\n+125 {\n+126 for( std::size_t j = 0; j < size; ++j )\n+127 {\n+128 _\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b _\b>_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be( y[ i ][ 0 ] * y[ j ][ 0 ], p, q );\n+129 S[i][j] = p;\n+130 S[i][j] /= q;\n+131 }\n+132 }\n+133\n+134 // orthonormalize\n+135 gramSchmidt();\n+136 }\n+137\n+138 template< class Vector >\n+_\b1_\b3_\b9 void _\br_\bo_\bw ( unsigned int _\br_\bo_\bw, Vector &vec ) const\n 140 {\n-141 out[0][0] = {in[2]-1, in[2]-1, in[0]+in[1]-1};\n-142 out[1][0] = {1-in[2], 0, -in[0]};\n-143 out[2][0] = { 0, 1-in[2], -in[1]};\n-144 out[3][0] = { -in[2], -in[2], 1-in[0]-in[1]};\n-145 out[4][0] = { in[2], 0, in[0]};\n-146 out[5][0] = { 0, in[2], in[1]};\n-147\n-148 return;\n-149 }\n-150\n-151 if (k==2)\n+141 // transposed matrix is required\n+142 assert( _\br_\bo_\bw < Base::cols() );\n+143 for( std::size_t i = 0; i < Base::rows(); ++i )\n+144 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( (*this)[i][_\br_\bo_\bw], vec[ i ] );\n+145 }\n+146\n+147 private:\n+148 void sprod ( int col1, int col2, scalar_t &ret )\n+149 {\n+150 ret = 0;\n+151 for( int k = 0; k <= col1; ++k )\n 152 {\n-153 // Second-order shape functions on a triangle, and the first derivatives\n-154 FieldVector triangleShapeFunction;\n-155 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);\n-156 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);\n-157 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);\n-158 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);\n-159 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);\n-160 triangleShapeFunction[5] = 4*in[0]*in[1];\n-161\n-162 std::array,6> triangleShapeFunctionDer;\n-163 triangleShapeFunctionDer[0] = {-3 + 4*(in[0] + in[1]), -3 + 4*(in[0] + in\n-[1])};\n-164 triangleShapeFunctionDer[1] = { -1 + 4*in[0], 0};\n-165 triangleShapeFunctionDer[2] = { 0, -1 + 4*in[1]};\n-166 triangleShapeFunctionDer[3] = { 4 - 8*in[0] - 4*in[1], -4*in[0]};\n-167 triangleShapeFunctionDer[4] = { -4*in[1], 4 - 4*in[0] - 8*in[1]};\n-168 triangleShapeFunctionDer[5] = { 4*in[1], 4*in[0]};\n+153 for( int l = 0; l <=col2; ++l )\n+154 ret += (*this)[l][col2] * S[l][k] * (*this)[k][col1];\n+155 }\n+156 }\n+157\n+158 void vmul ( std::size_t col, std::size_t rowEnd, const scalar_t &s )\n+159 {\n+160 for( std::size_t i = 0; i <= rowEnd; ++i )\n+161 (*this)[i][col] *= s;\n+162 }\n+163\n+164 void vsub ( std::size_t coldest, std::size_t colsrc, std::size_t rowEnd,\n+const scalar_t &s )\n+165 {\n+166 for( std::size_t i = 0; i <= rowEnd; ++i )\n+167 (*this)[i][coldest] -= s * (*this)[i][colsrc];\n+168 }\n 169\n-170 // Second-order shape functions on a line, and the first derivatives\n-171 FieldVector segmentShapeFunction;\n-172 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n-173 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);\n-174 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n-175\n-176 FieldVector segmentShapeFunctionDer;\n-177 segmentShapeFunctionDer[0] = -3 + 4*in[2];\n-178 segmentShapeFunctionDer[1] = 4 - 8*in[2];\n-179 segmentShapeFunctionDer[2] = -1 + 4*in[2];\n+170 void gramSchmidt ()\n+171 {\n+172 using std::sqrt;\n+173 // setup identity\n+174 const std::size_t N = Base::rows();\n+175 for( std::size_t i = 0; i < N; ++i )\n+176 {\n+177 for( std::size_t j = 0; j < N; ++j )\n+178 (*this)[i][j] = scalar_t( i == j ? 1 : 0 );\n+179 }\n 180\n-181 // lower triangle:\n-182 out[0][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[0];\n-183 out[0][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[0];\n-184 out[0][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];\n-185\n-186 out[1][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[0];\n-187 out[1][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[0];\n-188 out[1][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];\n-189\n-190 out[2][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[0];\n-191 out[2][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[0];\n-192 out[2][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];\n-193\n-194 //upper triangle\n-195 out[3][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[2];\n-196 out[3][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[2];\n-197 out[3][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];\n-198\n-199 out[4][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[2];\n-200 out[4][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[2];\n-201 out[4][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];\n+181 // perform Gram-Schmidt procedure\n+182 scalar_t s;\n+183 sprod( 0, 0, s );\n+184 vmul( 0, 0, scalar_t( 1 ) / sqrt( s ) );\n+185 for( std::size_t i = 1; i < N; ++i )\n+186 {\n+187 for( std::size_t k = 0; k < i; ++k )\n+188 {\n+189 sprod( i, k, s );\n+190 vsub( i, k, i, s );\n+191 }\n+192 sprod( i, i, s );\n+193 vmul( i, i, scalar_t( 1 ) / sqrt( s ) );\n+194 }\n+195 }\n+196\n+197 _\bv_\be_\bc_\b__\bt d;\n+198 _\bm_\ba_\bt_\b__\bt S;\n+199 };\n+200\n+201} // namespace ONBCompute\n 202\n-203 out[5][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[2];\n-204 out[5][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[2];\n-205 out[5][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];\n-206\n-207 // vertical edges\n-208 out[6][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[1];\n-209 out[6][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[1];\n-210 out[6][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];\n-211\n-212 out[7][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[1];\n-213 out[7][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[1];\n-214 out[7][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];\n-215\n-216 out[8][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[1];\n-217 out[8][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[1];\n-218 out[8][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];\n-219\n-220 // lower triangle edges\n-221 out[9][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[0];\n-222 out[9][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[0];\n-223 out[9][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];\n-224\n-225 out[10][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[0];\n-226 out[10][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[0];\n-227 out[10][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];\n-228\n-229 out[11][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[0];\n-230 out[11][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[0];\n-231 out[11][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];\n-232\n-233 // upper triangle edges\n-234 out[12][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[2];\n-235 out[12][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[2];\n-236 out[12][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];\n-237\n-238 out[13][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[2];\n-239 out[13][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[2];\n-240 out[13][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];\n-241\n-242 out[14][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[2];\n-243 out[14][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[2];\n-244 out[14][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];\n-245\n-246 // quadrilateral sides\n-247 out[15][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[1];\n-248 out[15][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[1];\n-249 out[15][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];\n-250\n-251 out[16][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[1];\n-252 out[16][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[1];\n-253 out[16][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];\n-254\n-255 out[17][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[1];\n-256 out[17][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[1];\n-257 out[17][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];\n-258\n-259 return;\n-260 }\n-261\n-262 DUNE_THROW(NotImplemented, \"LagrangePrismLocalBasis::evaluateJacobian for\n-order \" << k);\n-263 }\n-264\n-271 void partial(const std::array& order,\n-272 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-273 std::vector& out) const\n-274 {\n-275 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-276\n-277 out.resize(size());\n-278\n-279 if (totalOrder == 0)\n-280 {\n-281 evaluateFunction(in, out);\n-282 return;\n-283 }\n-284\n-285 // Specialization for zero-order finite elements\n-286 if (k==0)\n-287 {\n-288 out[0] = 0;\n-289 return;\n-290 }\n-291\n-292 // Specialization for first-order finite elements\n-293 if (k==1)\n-294 {\n-295 if (totalOrder == 1)\n-296 {\n-297 auto direction = std::distance(order.begin(), std::find(order.begin(),\n-order.end(), 1));\n-298\n-299 switch (direction) {\n-300 case 0:\n-301 out[0] = in[2]-1;\n-302 out[1] = 1-in[2];\n-303 out[2] = 0;\n-304 out[3] = -in[2];\n-305 out[4] = in[2];\n-306 out[5] = 0;\n-307 break;\n-308 case 1:\n-309 out[0] = in[2]-1;\n-310 out[1] = 0;\n-311 out[2] = 1-in[2];\n-312 out[3] = -in[2];\n-313 out[4] = 0;\n-314 out[5] = in[2];\n-315 break;\n-316 case 2:\n-317 out[0] = in[0]+in[1]-1;\n-318 out[1] = -in[0];\n-319 out[2] = -in[1];\n-320 out[3] = 1-in[0]-in[1];\n-321 out[4] = in[0];\n-322 out[5] = in[1];\n-323 break;\n-324 default:\n-325 DUNE_THROW(RangeError, \"Component out of range.\");\n-326 }\n-327 } else if (totalOrder == 2) {\n-328 out.resize(size());\n-329 if (order[0] == 1 && order[2] == 1) {\n-330 out[0] = 1;\n-331 out[1] =-1;\n-332 out[2] = 0;\n-333 out[3] =-1;\n-334 out[4] = 1;\n-335 out[5] = 0;\n-336 } else if (order[1] == 1 && order[2] == 1) {\n-337 out[0] = 1;\n-338 out[1] = 0;\n-339 out[2] =-1;\n-340 out[3] =-1;\n-341 out[4] = 0;\n-342 out[5] = 1;\n-343 } else {\n-344 for (std::size_t i = 0; i < size(); ++i)\n-345 out[i] = 0;\n-346 }\n-347 } else {\n-348 out.resize(size());\n-349 std::fill(out.begin(), out.end(), 0.0);\n-350 }\n-351\n-352 return;\n-353 }\n-354\n-355 // Specialization for second-order finite elements\n-356 if (k==2)\n-357 {\n-358 if (totalOrder == 1)\n-359 {\n-360 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-361 switch (direction)\n-362 {\n-363 case 0:\n-364 {\n-365 FieldVector triangleShapeFunctionDerX;\n-366 triangleShapeFunctionDerX[0] = -3 + 4*(in[0] + in[1]);\n-367 triangleShapeFunctionDerX[1] = -1 + 4* in[0];\n-368 triangleShapeFunctionDerX[2] = 0;\n-369 triangleShapeFunctionDerX[3] = 4 - 8* in[0] - 4*in[1];\n-370 triangleShapeFunctionDerX[4] = -4*in[1];\n-371 triangleShapeFunctionDerX[5] = 4*in[1];\n-372\n-373 FieldVector segmentShapeFunction;\n-374 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n-375 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);\n-376 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n-377\n-378 out[0] = triangleShapeFunctionDerX[0] * segmentShapeFunction[0];\n-379 out[1] = triangleShapeFunctionDerX[1] * segmentShapeFunction[0];\n-380 out[2] = triangleShapeFunctionDerX[2] * segmentShapeFunction[0];\n-381 out[3] = triangleShapeFunctionDerX[0] * segmentShapeFunction[2];\n-382 out[4] = triangleShapeFunctionDerX[1] * segmentShapeFunction[2];\n-383 out[5] = triangleShapeFunctionDerX[2] * segmentShapeFunction[2];\n-384 out[6] = triangleShapeFunctionDerX[0] * segmentShapeFunction[1];\n-385 out[7] = triangleShapeFunctionDerX[1] * segmentShapeFunction[1];\n-386 out[8] = triangleShapeFunctionDerX[2] * segmentShapeFunction[1];\n-387 out[9] = triangleShapeFunctionDerX[3] * segmentShapeFunction[0];\n-388 out[10] = triangleShapeFunctionDerX[4] * segmentShapeFunction[0];\n-389 out[11] = triangleShapeFunctionDerX[5] * segmentShapeFunction[0];\n-390 out[12] = triangleShapeFunctionDerX[3] * segmentShapeFunction[2];\n-391 out[13] = triangleShapeFunctionDerX[4] * segmentShapeFunction[2];\n-392 out[14] = triangleShapeFunctionDerX[5] * segmentShapeFunction[2];\n-393 out[15] = triangleShapeFunctionDerX[3] * segmentShapeFunction[1];\n-394 out[16] = triangleShapeFunctionDerX[4] * segmentShapeFunction[1];\n-395 out[17] = triangleShapeFunctionDerX[5] * segmentShapeFunction[1];\n-396 break;\n-397 }\n-398 case 1:\n-399 {\n-400 FieldVector triangleShapeFunctionDerY;\n-401 triangleShapeFunctionDerY[0] = -3 + 4*(in[0] + in[1]);\n-402 triangleShapeFunctionDerY[1] = 0;\n-403 triangleShapeFunctionDerY[2] = -1 + 4* in[1];\n-404 triangleShapeFunctionDerY[3] = -4* in[0];\n-405 triangleShapeFunctionDerY[4] = 4 - 4* in[0] - 8*in[1];\n-406 triangleShapeFunctionDerY[5] = 4* in[0];\n-407\n-408 FieldVector segmentShapeFunction;\n-409 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n-410 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);\n-411 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n-412\n-413 out[0] = triangleShapeFunctionDerY[0] * segmentShapeFunction[0];\n-414 out[1] = triangleShapeFunctionDerY[1] * segmentShapeFunction[0];\n-415 out[2] = triangleShapeFunctionDerY[2] * segmentShapeFunction[0];\n-416 out[3] = triangleShapeFunctionDerY[0] * segmentShapeFunction[2];\n-417 out[4] = triangleShapeFunctionDerY[1] * segmentShapeFunction[2];\n-418 out[5] = triangleShapeFunctionDerY[2] * segmentShapeFunction[2];\n-419 out[6] = triangleShapeFunctionDerY[0] * segmentShapeFunction[1];\n-420 out[7] = triangleShapeFunctionDerY[1] * segmentShapeFunction[1];\n-421 out[8] = triangleShapeFunctionDerY[2] * segmentShapeFunction[1];\n-422 out[9] = triangleShapeFunctionDerY[3] * segmentShapeFunction[0];\n-423 out[10] = triangleShapeFunctionDerY[4] * segmentShapeFunction[0];\n-424 out[11] = triangleShapeFunctionDerY[5] * segmentShapeFunction[0];\n-425 out[12] = triangleShapeFunctionDerY[3] * segmentShapeFunction[2];\n-426 out[13] = triangleShapeFunctionDerY[4] * segmentShapeFunction[2];\n-427 out[14] = triangleShapeFunctionDerY[5] * segmentShapeFunction[2];\n-428 out[15] = triangleShapeFunctionDerY[3] * segmentShapeFunction[1];\n-429 out[16] = triangleShapeFunctionDerY[4] * segmentShapeFunction[1];\n-430 out[17] = triangleShapeFunctionDerY[5] * segmentShapeFunction[1];\n-431 break;\n-432 }\n-433 case 2:\n-434 {\n-435 FieldVector triangleShapeFunction;\n-436 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);\n-437 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);\n-438 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);\n-439 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);\n-440 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);\n-441 triangleShapeFunction[5] = 4*in[0]*in[1];\n-442\n-443 FieldVector segmentShapeFunctionDer;\n-444 segmentShapeFunctionDer[0] = -3 + 4*in[2];\n-445 segmentShapeFunctionDer[1] = 4 - 8*in[2];\n-446 segmentShapeFunctionDer[2] = -1 + 4*in[2];\n-447\n-448 out[0] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];\n-449 out[1] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];\n-450 out[2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];\n-451 out[3] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];\n-452 out[4] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];\n-453 out[5] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];\n-454 out[6] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];\n-455 out[7] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];\n-456 out[8] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];\n-457 out[9] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];\n-458 out[10] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];\n-459 out[11] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];\n-460 out[12] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];\n-461 out[13] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];\n-462 out[14] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];\n-463 out[15] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];\n-464 out[16] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];\n-465 out[17] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];\n-466 break;\n-467 }\n-468 default:\n-469 DUNE_THROW(RangeError, \"Component out of range.\");\n-470 }\n-471 } else {\n-472 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-473 }\n-474\n-475 return;\n-476 }\n-477\n-478 DUNE_THROW(NotImplemented, \"LagrangePrismLocalBasis::partial not\n-implemented for order \" << k);\n-479 }\n-480\n-482 static constexpr unsigned int order ()\n-483 {\n-484 return k;\n-485 }\n-486 };\n-487\n-492 template\n-493 class LagrangePrismLocalCoefficients\n-494 {\n-495 public:\n-497 LagrangePrismLocalCoefficients ()\n-498 : localKeys_(size())\n-499 {\n-500 if (k==0)\n-501 {\n-502 localKeys_[0] = LocalKey(0,0,0);\n-503 return;\n-504 }\n-505\n-506 if (k==1)\n-507 {\n-508 for (std::size_t i=0; i localKeys_;\n-561 };\n-562\n-567 template\n-568 class LagrangePrismLocalInterpolation\n-569 {\n-570 public:\n-571\n-579 template\n-580 void interpolate (const F& f, std::vector& out) const\n-581 {\n-582 constexpr auto dim = LocalBasis::Traits::dimDomain;\n-583 constexpr auto k = LocalBasis::order();\n-584 using D = typename LocalBasis::Traits::DomainType;\n-585 using DF = typename LocalBasis::Traits::DomainFieldType;\n-586\n-587 out.resize(LocalBasis::size());\n-588\n-589 // Specialization for zero-order case\n-590 if (k==0)\n-591 {\n-592 auto center = ReferenceElements::general(GeometryTypes::\n-prism).position(0,0);\n-593 out[0] = f(center);\n-594 return;\n-595 }\n-596\n-597 // Specialization for first-order case\n-598 if (k==1)\n-599 {\n-600 for (unsigned int i=0; i::general(GeometryTypes::\n-prism).position(i,3);\n-603 out[i] = f(vertex);\n-604 }\n-605 return;\n-606 }\n-607\n-608 if (k==2)\n-609 {\n-610 out[0] = f( D( {0.0, 0.0, 0.0} ) );\n-611 out[1] = f( D( {1.0, 0.0, 0.0} ) );\n-612 out[2] = f( D( {0.0, 1.0, 0.0} ) );\n-613 out[3] = f( D( {0.0, 0.0, 1.0} ) );\n-614 out[4] = f( D( {1.0, 0.0, 1.0} ) );\n-615 out[5] = f( D( {0.0, 1.0, 1.0} ) );\n-616 out[6] = f( D( {0.0, 0.0, 0.5} ) );\n-617 out[7] = f( D( {1.0, 0.0, 0.5} ) );\n-618 out[8] = f( D( {0.0, 1.0, 0.5} ) );\n-619 out[9] = f( D( {0.5, 0.0, 0.0} ) );\n-620 out[10] = f( D( {0.0, 0.5, 0.0} ) );\n-621 out[11] = f( D( {0.5, 0.5, 0.0} ) );\n-622 out[12] = f( D( {0.5, 0.0, 1.0} ) );\n-623 out[13] = f( D( {0.0, 0.5, 1.0} ) );\n-624 out[14] = f( D( {0.5, 0.5, 1.0} ) );\n-625 out[15] = f( D( {0.5, 0.0, 0.5} ) );\n-626 out[16] = f( D( {0.0, 0.5, 0.5} ) );\n-627 out[17] = f( D( {0.5, 0.5, 0.5} ) );\n-628\n-629 return;\n-630 }\n-631\n-632 DUNE_THROW(NotImplemented, \"LagrangePrismLocalInterpolation not implemented\n-for order \" << k);\n-633 }\n-634\n-635 };\n-636\n-637} } // namespace Dune::Impl\n-638\n-639namespace _\bD_\bu_\bn_\be\n-640{\n-647 template\n-_\b6_\b4_\b8 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-649 {\n-650 public:\n-_\b6_\b5_\b3 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n-_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bk_\b>,\n-654 Impl::LagrangePrismLocalCoefficients,\n-655 Impl::LagrangePrismLocalInterpolation\n-> >;\n-656\n-_\b6_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-660 {\n-661 return basis_;\n-662 }\n-663\n-_\b6_\b6_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-667 {\n-668 return coefficients_;\n-669 }\n-670\n-_\b6_\b7_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-674 {\n-675 return interpolation_;\n-676 }\n-677\n-_\b6_\b7_\b9 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n-680 {\n-681 return binomial(k+2,2) * (k+1);\n-682 }\n-683\n-_\b6_\b8_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-687 {\n-688 return GeometryTypes::prism;\n-689 }\n-690\n-691 private:\n-692 Impl::LagrangePrismLocalBasis basis_;\n-693 Impl::LagrangePrismLocalCoefficients coefficients_;\n-694 Impl::LagrangePrismLocalInterpolation\n-> interpolation_;\n-695 };\n-696\n-697} // namespace Dune\n-698\n-699#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for 3d prisms with arbitrary compile-time polynomial\n-order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:649\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size()\n-The number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:679\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-Returns object that evaluates degrees of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:673\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-The reference element that the local finite element is defined on.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:686\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-Returns the assignment of the degrees of freedom to the element subentities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:666\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-Returns the local basis, i.e., the set of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:659\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+203#endif // #ifndef DUNE_ORTHONORMALCOMPUTE_HH\n+_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:25\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bf_\ba_\bc_\bt_\bo_\br_\bi_\ba_\bl\n+scalar_t factorial(int start, int end)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:28\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:43\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be\n+static int compute(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p,\n+scalar_t &q)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:48\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be\n+static int compute(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p,\n+scalar_t &q, std::integer_sequence< int, ints... > intS)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:55\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl\n+static void computeIntegral(const Dune::MultiIndex< dim, scalar_t > &alpha,\n+scalar_t &p, scalar_t &q, int &ord)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:68\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static constexpr int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:45\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+static constexpr Dune::GeometryType geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:44\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:95\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx\n+ONBMatrix(unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:103\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bv_\be_\bc_\b__\bt\n+std::vector< scalar_t > vec_t\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:100\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\ba_\bt_\b__\bt\n+Dune::DynamicMatrix< scalar_t > mat_t\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:101\n+_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw\n+void row(unsigned int row, Vector &vec) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:476\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n+values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:498\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:571\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bz\n+int z(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:92\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: p0localinterpolation.hh File Reference\n+dune-localfunctions: power.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    p0localinterpolation.hh File Reference
    \n+
    power.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/referenceelements.hh>
    \n+
    #include <cstddef>
    \n+#include <memory>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/meta/power/basis.hh>
    \n+#include <dune/localfunctions/meta/power/coefficients.hh>
    \n+#include <dune/localfunctions/meta/power/interpolation.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::P0LocalInterpolation< LB >
    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...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,21 +1,33 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n- * _\bp_\b0\n+ * _\bm_\be_\bt_\ba\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-p0localinterpolation.hh File Reference\n-#include \n-#include \n+power.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>\n+\u00a0 Meta-finite element turning a scalar finite element into vector-valued\n+ one. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+\u00a0 types of component objects _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>\n+\u00a0 Factory for meta-finite elements turning scalar finite elements into\n+ vector-valued ones. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: p0localinterpolation.hh Source File\n+dune-localfunctions: power.hh Source File\n \n \n \n \n \n \n \n@@ -70,72 +70,144 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    p0localinterpolation.hh
    \n+
    power.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_P0LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_P0LOCALINTERPOLATION_HH
    \n-
    7
    \n-
    8#include <vector>
    \n-
    9#include <dune/geometry/referenceelements.hh>
    \n-
    10
    \n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_META_POWER_HH
    \n+
    8
    \n+
    9#include <cstddef>
    \n+
    10#include <memory>
    \n
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    18 template<class LB>
    \n-
    \n-\n-
    20 {
    \n-
    21 public:
    \n-
    \n-
    22 P0LocalInterpolation (const GeometryType& gt) : gt_(gt)
    \n-
    23 {}
    \n-
    \n-
    24
    \n-
    26 template<typename F, typename C>
    \n-
    \n-
    27 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    28 {
    \n-
    29 typedef typename LB::Traits::DomainType DomainType;
    \n-
    30 typedef typename LB::Traits::DomainFieldType DF;
    \n-
    31 const int dim=LB::Traits::dimDomain;
    \n-
    32
    \n-
    33 DomainType x = Dune::ReferenceElements<DF,dim>::general(gt_).position(0,0);
    \n-
    34
    \n-
    35 out.resize(1);
    \n-
    36 out[0] = f(x);
    \n-
    37 }
    \n-
    \n-
    38
    \n-
    39 private:
    \n-
    40 GeometryType gt_;
    \n-
    41 };
    \n-
    \n-
    42
    \n-
    43}
    \n-
    44
    \n-
    45#endif
    \n+
    12#include <dune/geometry/type.hh>
    \n+
    13
    \n+\n+\n+\n+
    17
    \n+
    18namespace Dune {
    \n+
    19
    \n+
    22
    \n+
    28 template<class Backend, std::size_t dimR>
    \n+
    \n+\n+
    30 public:
    \n+
    \n+
    32 struct Traits {
    \n+\n+\n+
    38 typedef PowerInterpolation<typename Backend::Traits::Interpolation,
    \n+
    39 typename Basis::Traits> Interpolation;
    \n+
    40 };
    \n+
    \n+
    41 private:
    \n+
    42 std::shared_ptr<const Backend> backend;
    \n+
    43 typename Traits::Basis basis_;
    \n+
    44 typename Traits::Coefficients coefficients_;
    \n+
    45 typename Traits::Interpolation interpolation_;
    \n+
    46
    \n+
    47 public:
    \n+
    49
    \n+
    \n+
    53 PowerFiniteElement(const Backend &backend_) :
    \n+
    54 backend(new Backend(backend_)),
    \n+
    55 basis_(backend->basis()),
    \n+
    56 coefficients_(backend->coefficients(), dimR),
    \n+
    57 interpolation_(backend->interpolation())
    \n+
    58 { }
    \n+
    \n+
    59
    \n+
    61
    \n+
    \n+
    65 PowerFiniteElement(const std::shared_ptr<const Backend> &backendSPtr) :
    \n+
    66 backend(backendSPtr),
    \n+
    67 basis_(backend->basis()),
    \n+
    68 coefficients_(backend->coefficients(), dimR),
    \n+
    69 interpolation_(backend->interpolation())
    \n+
    70 { }
    \n+
    \n+
    71
    \n+
    73
    \n+
    77 const typename Traits::Basis& basis() const { return basis_; }
    \n+
    79
    \n+
    \n+
    83 const typename Traits::Coefficients& coefficients() const
    \n+
    84 { return coefficients_; }
    \n+
    \n+
    86
    \n+
    \n+
    90 const typename Traits::Interpolation& interpolation() const
    \n+
    91 { return interpolation_; }
    \n+
    \n+
    93 GeometryType type() const { return backend->type(); }
    \n+
    94 };
    \n+
    \n+
    95
    \n+
    98
    \n+
    105 template<class BackendFiniteElement, std::size_t dimR>
    \n+
    \n+\n+
    107 {
    \n+
    108 public:
    \n+\n+
    111
    \n+
    113
    \n+
    \n+
    117 const FiniteElement make(const BackendFiniteElement &backend) const
    \n+
    118 { return FiniteElement(backend); }
    \n+
    \n+
    120
    \n+
    124 const FiniteElement
    \n+
    \n+
    125 make(const std::shared_ptr<const BackendFiniteElement> &backendSPtr) const
    \n+
    126 { return FiniteElement(backendSPtr); }
    \n+
    \n+
    127
    \n+
    128 };
    \n+
    \n+
    129
    \n+
    130} // namespace Dune
    \n+
    131
    \n+
    132#endif // DUNE_LOCALFUNCTIONS_META_POWER_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition p0localinterpolation.hh:20
    \n-
    P0LocalInterpolation(const GeometryType &gt)
    Definition p0localinterpolation.hh:22
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    determine coefficients interpolating a given function
    Definition p0localinterpolation.hh:27
    \n+
    Meta-finite element turning a scalar finite element into vector-valued one.
    Definition power.hh:29
    \n+
    const Traits::Basis & basis() const
    Extract basis of this finite element.
    Definition power.hh:77
    \n+
    GeometryType type() const
    Extract geometry type of this finite element.
    Definition power.hh:93
    \n+
    const Traits::Interpolation & interpolation() const
    Extract interpolation of this finite element.
    Definition power.hh:90
    \n+
    PowerFiniteElement(const Backend &backend_)
    Construct a finite element.
    Definition power.hh:53
    \n+
    PowerFiniteElement(const std::shared_ptr< const Backend > &backendSPtr)
    Construct a finite element.
    Definition power.hh:65
    \n+
    const Traits::Coefficients & coefficients() const
    Extract coefficients of this finite element.
    Definition power.hh:83
    \n+
    types of component objects
    Definition power.hh:32
    \n+
    PowerBasis< typename Backend::Traits::Basis, dimR > Basis
    type of the Basis
    Definition power.hh:34
    \n+
    PowerCoefficients Coefficients
    type of the Coefficients
    Definition power.hh:36
    \n+
    PowerInterpolation< typename Backend::Traits::Interpolation, typename Basis::Traits > Interpolation
    type of the Interpolation
    Definition power.hh:39
    \n+
    Factory for meta-finite elements turning scalar finite elements into vector-valued ones.
    Definition power.hh:107
    \n+
    const FiniteElement make(const std::shared_ptr< const BackendFiniteElement > &backendSPtr) const
    create a finite element
    Definition power.hh:125
    \n+
    const FiniteElement make(const BackendFiniteElement &backend) const
    create a finite element
    Definition power.hh:117
    \n+
    PowerFiniteElement< BackendFiniteElement, dimR > FiniteElement
    Type of the finite element.
    Definition power.hh:110
    \n+
    Meta-basis turning a scalar basis into vector-valued basis.
    Definition meta/power/basis.hh:26
    \n+
    Meta-coefficients turning a scalar coefficients into vector-valued coefficients.
    Definition meta/power/coefficients.hh:23
    \n+
    Meta-interpolation turning a scalar interpolation into vector-valued interpolation.
    Definition meta/power/interpolation.hh:26
    \n+\n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,65 +1,171 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n- * _\bp_\b0\n-p0localinterpolation.hh\n+ * _\bm_\be_\bt_\ba\n+power.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_P0LOCALINTERPOLATION_HH\n-6#define DUNE_P0LOCALINTERPOLATION_HH\n-7\n-8#include \n-9#include \n-10\n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_HH\n+7#define DUNE_LOCALFUNCTIONS_META_POWER_HH\n+8\n+9#include \n+10#include \n 11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-18 template\n-_\b1_\b9 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-20 {\n-21 public:\n-_\b2_\b2 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (const GeometryType& gt) : gt_(gt)\n-23 {}\n-24\n-26 template\n-_\b2_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-28 {\n-29 typedef typename LB::Traits::DomainType DomainType;\n-30 typedef typename LB::Traits::DomainFieldType DF;\n-31 const int dim=LB::Traits::dimDomain;\n-32\n-33 DomainType x = Dune::ReferenceElements::general(gt_).position(0,0);\n-34\n-35 out.resize(1);\n-36 out[0] = f(x);\n-37 }\n-38\n-39 private:\n-40 GeometryType gt_;\n-41 };\n-42\n-43}\n-44\n-45#endif\n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+17\n+18namespace _\bD_\bu_\bn_\be {\n+19\n+22\n+28 template\n+_\b2_\b9 class _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n+30 public:\n+_\b3_\b2 struct _\bT_\br_\ba_\bi_\bt_\bs {\n+_\b3_\b4 typedef _\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bd_\bi_\bm_\bR_\b> _\bB_\ba_\bs_\bi_\bs;\n+_\b3_\b6 typedef _\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+38 typedef _\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+40 };\n+41 private:\n+42 std::shared_ptr backend;\n+43 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n+44 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n+45 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n+46\n+47 public:\n+49\n+_\b5_\b3 _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Backend &backend_) :\n+54 backend(new Backend(backend_)),\n+55 basis_(backend->_\bb_\ba_\bs_\bi_\bs()),\n+56 coefficients_(backend->_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(), dimR),\n+57 interpolation_(backend->_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n+58 { }\n+59\n+61\n+_\b6_\b5 _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const std::shared_ptr &backendSPtr) :\n+66 backend(backendSPtr),\n+67 basis_(backend->_\bb_\ba_\bs_\bi_\bs()),\n+68 coefficients_(backend->_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(), dimR),\n+69 interpolation_(backend->_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n+70 { }\n+71\n+73\n+_\b7_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\n+79\n+_\b8_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n+84 { return coefficients_; }\n+86\n+_\b9_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n+91 { return interpolation_; }\n+_\b9_\b3 GeometryType _\bt_\by_\bp_\be() const { return backend->type(); }\n+94 };\n+95\n+98\n+105 template\n+_\b1_\b0_\b6 class _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+107 {\n+108 public:\n+_\b1_\b1_\b0 typedef _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bB_\ba_\bc_\bk_\be_\bn_\bd_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+111\n+113\n+_\b1_\b1_\b7 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const BackendFiniteElement &backend) const\n+118 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(backend); }\n+120\n+124 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+_\b1_\b2_\b5 _\bm_\ba_\bk_\be(const std::shared_ptr &backendSPtr) const\n+126 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(backendSPtr); }\n+127\n+128 };\n+129\n+130} // namespace Dune\n+131\n+132#endif // DUNE_LOCALFUNCTIONS_META_POWER_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localinterpolation.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-P0LocalInterpolation(const GeometryType >)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localinterpolation.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-determine coefficients interpolating a given function\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localinterpolation.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Meta-finite element turning a scalar finite element into vector-valued one.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n+const Traits::Basis & basis() const\n+Extract basis of this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+Extract geometry type of this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::Interpolation & interpolation() const\n+Extract interpolation of this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+PowerFiniteElement(const Backend &backend_)\n+Construct a finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+PowerFiniteElement(const std::shared_ptr< const Backend > &backendSPtr)\n+Construct a finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::Coefficients & coefficients() const\n+Extract coefficients of this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+types of component objects\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+PowerBasis< typename Backend::Traits::Basis, dimR > Basis\n+type of the Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+PowerCoefficients Coefficients\n+type of the Coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+PowerInterpolation< typename Backend::Traits::Interpolation, typename Basis::\n+Traits > Interpolation\n+type of the Interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for meta-finite elements turning scalar finite elements into vector-\n+valued ones.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const std::shared_ptr< const BackendFiniteElement >\n+&backendSPtr) const\n+create a finite element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const BackendFiniteElement &backend) const\n+create a finite element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+PowerFiniteElement< BackendFiniteElement, dimR > FiniteElement\n+Type of the finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs\n+Meta-basis turning a scalar basis into vector-valued basis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Meta-coefficients turning a scalar coefficients into vector-valued\n+coefficients.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Meta-interpolation turning a scalar interpolation into vector-valued\n+interpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:26\n+_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: p0localcoefficients.hh File Reference\n+dune-localfunctions: monomial.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,45 @@\n \n \n \n \n \n \n \n
    \n \n-
    p0localcoefficients.hh File Reference
    \n+
    monomial.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <iostream>
    \n+
    #include <cassert>
    \n+#include <cstddef>
    \n+#include <cstdlib>
    \n+#include <memory>
    \n #include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include "common/localfiniteelementtraits.hh"
    \n+#include "common/localtoglobaladaptors.hh"
    \n+#include "monomial/monomiallocalbasis.hh"
    \n+#include "monomial/monomiallocalcoefficients.hh"
    \n+#include "monomial/monomiallocalinterpolation.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::P0LocalCoefficients
    class  Dune::MonomialLocalFiniteElement< D, R, d, p >
     Monomial basis for discontinuous Galerkin methods. More...
     
    class  Dune::MonomialFiniteElementFactory< Geometry, RF, p >
     Factory for global-valued MonomFiniteElement objects. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,32 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n- * _\bp_\b0\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-p0localcoefficients.hh File Reference\n+monomial.hh File Reference\n+#include \n #include \n-#include \n+#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include \n+#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\"\n+#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b,_\b _\bp_\b _\b>\n+\u00a0 Monomial basis for discontinuous Galerkin methods. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bp_\b _\b>\n+\u00a0 Factory for global-valued MonomFiniteElement objects. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: p0localcoefficients.hh Source File\n+dune-localfunctions: monomial.hh Source File\n \n \n \n \n \n \n \n@@ -70,74 +70,223 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    p0localcoefficients.hh
    \n+
    monomial.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_P0LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_P0LOCALCOEFFICIENTS_HH
    \n-
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <iostream>
    \n-
    10#include <vector>
    \n-
    11
    \n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_MONOMIAL_HH
    \n+
    8
    \n+
    9#include <cassert>
    \n+
    10#include <cstddef>
    \n+
    11#include <cstdlib>
    \n+
    12#include <memory>
    \n+
    13#include <vector>
    \n+
    14
    \n+
    15#include <dune/geometry/type.hh>
    \n
    16
    \n-
    \n-\n-
    25 {
    \n-
    26 public:
    \n-
    \n-
    28 P0LocalCoefficients () : index(0,0,0)
    \n-
    29 {}
    \n-
    \n-
    30
    \n-
    \n-
    32 std::size_t size () const
    \n-
    33 {
    \n-
    34 return 1;
    \n-
    35 }
    \n-
    \n-
    36
    \n-
    \n-
    38 const LocalKey& localKey ([[maybe_unused]] std::size_t i) const
    \n-
    39 {
    \n-
    40 return index;
    \n-
    41 }
    \n-
    \n-
    42
    \n-
    43 private:
    \n-
    44 LocalKey index;
    \n-
    45 };
    \n-
    \n-
    46
    \n-
    47}
    \n-
    48#endif
    \n-\n+\n+\n+\n+\n+\n+
    22
    \n+
    23namespace Dune
    \n+
    24{
    \n+
    25
    \n+
    26
    \n+
    39 template<class D, class R, int d, int p>
    \n+
    \n+\n+
    41 {
    \n+
    42 constexpr static int static_size = MonomialLocalBasis<D,R,d,p>::size();
    \n+
    43
    \n+
    44 public:
    \n+\n+\n+\n+\n+\n+
    52
    \n+
    \n+
    54 MonomialLocalFiniteElement (const GeometryType &gt_)
    \n+
    55 : basis(), interpolation(gt_, basis), gt(gt_)
    \n+
    56 {}
    \n+
    \n+
    57
    \n+
    \n+
    60 const typename Traits::LocalBasisType& localBasis () const
    \n+
    61 {
    \n+
    62 return basis;
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    \n+\n+
    68 {
    \n+
    69 return coefficients;
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    \n+\n+
    75 {
    \n+
    76 return interpolation;
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    \n+
    80 unsigned int size () const
    \n+
    81 {
    \n+
    82 return basis.size();
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    \n+
    87 GeometryType type () const
    \n+
    88 {
    \n+
    89 return gt;
    \n+
    90 }
    \n+
    \n+
    91
    \n+
    92 private:
    \n+\n+\n+\n+
    96 GeometryType gt;
    \n+
    97 };
    \n+
    \n+
    98
    \n+
    100
    \n+
    112 template<class Geometry, class RF, std::size_t p>
    \n+
    \n+\n+
    114 typedef typename Geometry::ctype DF;
    \n+
    115 static const std::size_t dim = Geometry::mydimension;
    \n+
    116
    \n+\n+
    118
    \n+
    119 std::vector<std::shared_ptr<const LocalFE> > localFEs;
    \n+
    120
    \n+
    121 void init(const GeometryType &gt) {
    \n+
    122 std::size_t index = gt.id() >> 1;
    \n+
    123 if(localFEs.size() <= index)
    \n+
    124 localFEs.resize(index+1);
    \n+
    125 localFEs[index].reset(new LocalFE(gt));
    \n+
    126 }
    \n+
    127
    \n+
    128 public:
    \n+\n+\n+
    131
    \n+
    133
    \n+
    137 template<class ForwardIterator>
    \n+
    \n+
    138 MonomialFiniteElementFactory(const ForwardIterator &begin,
    \n+
    139 const ForwardIterator &end)
    \n+
    140 {
    \n+
    141 for(ForwardIterator it = begin; it != end; ++it)
    \n+
    142 init(*it);
    \n+
    143 }
    \n+
    \n+
    144
    \n+
    146
    \n+
    \n+
    149 MonomialFiniteElementFactory(const GeometryType &gt)
    \n+
    150 { init(gt); }
    \n+
    \n+
    151
    \n+
    153
    \n+
    \n+\n+
    157 static_assert(dim <= 3, "MonomFiniteElementFactory knows the "
    \n+
    158 "available geometry types only up to dimension 3");
    \n+
    159
    \n+
    160 GeometryType gt;
    \n+
    161 switch(dim) {
    \n+
    162 case 0 :
    \n+
    163 gt = Dune::GeometryTypes::vertex; init(gt);
    \n+
    164 break;
    \n+
    165 case 1 :
    \n+
    166 gt = Dune::GeometryTypes::line; init(gt);
    \n+
    167 break;
    \n+
    168 case 2 :
    \n+
    169 gt = Dune::GeometryTypes::triangle; init(gt);
    \n+
    170 gt = Dune::GeometryTypes::quadrilateral; init(gt);
    \n+
    171 break;
    \n+
    172 case 3 :
    \n+
    173 gt = Dune::GeometryTypes::tetrahedron; init(gt);
    \n+
    174 gt = Dune::GeometryTypes::pyramid; init(gt);
    \n+
    175 gt = Dune::GeometryTypes::prism; init(gt);
    \n+
    176 gt = Dune::GeometryTypes::hexahedron; init(gt);
    \n+
    177 break;
    \n+
    178 default :
    \n+
    179 // this should never happen -- it should be caught by the static
    \n+
    180 // assert above.
    \n+
    181 std::abort();
    \n+
    182 };
    \n+
    183 }
    \n+
    \n+
    184
    \n+
    186
    \n+
    \n+
    196 const FiniteElement make(const Geometry& geometry) {
    \n+
    197 std::size_t index = geometry.type().id() >> 1;
    \n+
    198 assert(localFEs.size() > index && localFEs[index]);
    \n+
    199 return FiniteElement(*localFEs[index], geometry);
    \n+
    200 }
    \n+
    \n+
    201 };
    \n+
    \n+
    202}
    \n+
    203
    \n+
    204#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_HH
    \n+\n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Definition p0localcoefficients.hh:25
    \n-
    P0LocalCoefficients()
    Standard constructor.
    Definition p0localcoefficients.hh:28
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition p0localcoefficients.hh:38
    \n-
    std::size_t size() const
    number of coefficients
    Definition p0localcoefficients.hh:32
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Convert a simple scalar local finite element into a global finite element.
    Definition localtoglobaladaptors.hh:187
    \n+
    GeometryType type() const
    Definition localtoglobaladaptors.hh:229
    \n+
    Monomial basis for discontinuous Galerkin methods.
    Definition monomial.hh:41
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition monomial.hh:80
    \n+
    GeometryType type() const
    Definition monomial.hh:87
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition monomial.hh:74
    \n+
    LocalFiniteElementTraits< MonomialLocalBasis< D, R, d, p >, MonomialLocalCoefficients< static_size >, MonomialLocalInterpolation< MonomialLocalBasis< D, R, d, p >, static_size > > Traits
    Definition monomial.hh:51
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition monomial.hh:67
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition monomial.hh:60
    \n+
    MonomialLocalFiniteElement(const GeometryType &gt_)
    Construct a MonomLocalFiniteElement.
    Definition monomial.hh:54
    \n+
    Factory for global-valued MonomFiniteElement objects.
    Definition monomial.hh:113
    \n+
    MonomialFiniteElementFactory(const ForwardIterator &begin, const ForwardIterator &end)
    construct a MonomialFiniteElementFactory from a list of GeometryType's
    Definition monomial.hh:138
    \n+
    MonomialFiniteElementFactory(const GeometryType &gt)
    construct a MonomialFiniteElementFactory from a single GeometryType
    Definition monomial.hh:149
    \n+
    const FiniteElement make(const Geometry &geometry)
    construct a global-valued MonomFiniteElement
    Definition monomial.hh:196
    \n+
    ScalarLocalToGlobalFiniteElementAdaptor< LocalFE, Geometry > FiniteElement
    Definition monomial.hh:130
    \n+
    MonomialFiniteElementFactory()
    construct a MonomFiniteElementFactory for all applicable GeometryType's
    Definition monomial.hh:156
    \n+
    Definition monomiallocalbasis.hh:202
    \n+
    static constexpr unsigned int size()
    Number of shape functions.
    Definition monomiallocalbasis.hh:217
    \n+
    Definition monomiallocalcoefficients.hh:25
    \n+
    Definition monomiallocalinterpolation.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,71 +1,246 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n- * _\bp_\b0\n-p0localcoefficients.hh\n+monomial.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_P0LOCALCOEFFICIENTS_HH\n-6#define DUNE_P0LOCALCOEFFICIENTS_HH\n-7\n-8#include \n-9#include \n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_HH\n+7#define DUNE_LOCALFUNCTIONS_MONOMIAL_HH\n+8\n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n+14\n+15#include \n 16\n-_\b2_\b4 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-25 {\n-26 public:\n-_\b2_\b8 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : index(0,0,0)\n-29 {}\n-30\n-_\b3_\b2 std::size_t _\bs_\bi_\bz_\be () const\n-33 {\n-34 return 1;\n-35 }\n-36\n-_\b3_\b8 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by ([[maybe_unused]] std::size_t i) const\n-39 {\n-40 return index;\n-41 }\n-42\n-43 private:\n-44 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by index;\n-45 };\n-46\n-47}\n-48#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+17#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+18#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\"\n+19#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+20#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+21#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+22\n+23namespace _\bD_\bu_\bn_\be\n+24{\n+25\n+26\n+39 template\n+_\b4_\b0 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+41 {\n+42 constexpr static int static_size = _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b>_\b:_\b:_\bs_\bi_\bz_\be();\n+43\n+44 public:\n+47 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+48 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b>,\n+49 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bs_\bt_\ba_\bt_\bi_\bc_\b__\bs_\bi_\bz_\be_\b>,\n+50 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b>,static_size>\n+_\b5_\b1 > _\bT_\br_\ba_\bi_\bt_\bs;\n+52\n+_\b5_\b4 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (const GeometryType >_)\n+55 : basis(), interpolation(gt_, basis), gt(gt_)\n+56 {}\n+57\n+_\b6_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+61 {\n+62 return basis;\n+63 }\n+64\n+_\b6_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+68 {\n+69 return coefficients;\n+70 }\n+71\n+_\b7_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+75 {\n+76 return interpolation;\n+77 }\n+78\n+_\b8_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+81 {\n+82 return basis.size();\n+83 }\n+84\n+_\b8_\b7 GeometryType _\bt_\by_\bp_\be () const\n+88 {\n+89 return gt;\n+90 }\n+91\n+92 private:\n+93 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b> basis;\n+94 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bs_\bt_\ba_\bt_\bi_\bc_\b__\bs_\bi_\bz_\be_\b> coefficients;\n+95 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b>,static_size>\n+interpolation;\n+96 GeometryType gt;\n+97 };\n+98\n+100\n+112 template\n+_\b1_\b1_\b3 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+114 typedef typename Geometry::ctype DF;\n+115 static const std::size_t dim = Geometry::mydimension;\n+116\n+117 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\bF_\b,_\b _\bR_\bF_\b,_\b _\bd_\bi_\bm_\b,_\b _\bp_\b> _\bL_\bo_\bc_\ba_\bl_\bF_\bE;\n+118\n+119 std::vector > localFEs;\n+120\n+121 void init(const GeometryType >) {\n+122 std::size_t index = gt.id() >> 1;\n+123 if(localFEs.size() <= index)\n+124 localFEs.resize(index+1);\n+125 localFEs[index].reset(new _\bL_\bo_\bc_\ba_\bl_\bF_\bE(gt));\n+126 }\n+127\n+128 public:\n+129 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\bL_\bo_\bc_\ba_\bl_\bF_\bE_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b>\n+_\b1_\b3_\b0 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+131\n+133\n+137 template\n+_\b1_\b3_\b8 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by(const ForwardIterator &begin,\n+139 const ForwardIterator &end)\n+140 {\n+141 for(ForwardIterator it = begin; it != end; ++it)\n+142 init(*it);\n+143 }\n+144\n+146\n+_\b1_\b4_\b9 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by(const GeometryType >)\n+150 { init(gt); }\n+151\n+153\n+_\b1_\b5_\b6 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by() {\n+157 static_assert(dim <= 3, \"MonomFiniteElementFactory knows the \"\n+158 \"available geometry types only up to dimension 3\");\n+159\n+160 GeometryType gt;\n+161 switch(dim) {\n+162 case 0 :\n+163 gt = Dune::GeometryTypes::vertex; init(gt);\n+164 break;\n+165 case 1 :\n+166 gt = Dune::GeometryTypes::line; init(gt);\n+167 break;\n+168 case 2 :\n+169 gt = Dune::GeometryTypes::triangle; init(gt);\n+170 gt = Dune::GeometryTypes::quadrilateral; init(gt);\n+171 break;\n+172 case 3 :\n+173 gt = Dune::GeometryTypes::tetrahedron; init(gt);\n+174 gt = Dune::GeometryTypes::pyramid; init(gt);\n+175 gt = Dune::GeometryTypes::prism; init(gt);\n+176 gt = Dune::GeometryTypes::hexahedron; init(gt);\n+177 break;\n+178 default :\n+179 // this should never happen -- it should be caught by the static\n+180 // assert above.\n+181 std::abort();\n+182 };\n+183 }\n+184\n+186\n+_\b1_\b9_\b6 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry) {\n+197 std::size_t index = geometry._\bt_\by_\bp_\be().id() >> 1;\n+198 assert(localFEs.size() > index && localFEs[index]);\n+199 return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(*localFEs[index], geometry);\n+200 }\n+201 };\n+202}\n+203\n+204#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_HH\n+_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-P0LocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+Convert a simple scalar local finite element into a global finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:229\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Monomial basis for discontinuous Galerkin methods.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< MonomialLocalBasis< D, R, d, p >,\n+MonomialLocalCoefficients< static_size >, MonomialLocalInterpolation<\n+MonomialLocalBasis< D, R, d, p >, static_size > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+MonomialLocalFiniteElement(const GeometryType >_)\n+Construct a MonomLocalFiniteElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for global-valued MonomFiniteElement objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+MonomialFiniteElementFactory(const ForwardIterator &begin, const\n+ForwardIterator &end)\n+construct a MonomialFiniteElementFactory from a list of GeometryType's\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+MonomialFiniteElementFactory(const GeometryType >)\n+construct a MonomialFiniteElementFactory from a single GeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const Geometry &geometry)\n+construct a global-valued MonomFiniteElement\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+ScalarLocalToGlobalFiniteElementAdaptor< LocalFE, Geometry > FiniteElement\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+MonomialFiniteElementFactory()\n+construct a MonomFiniteElementFactory for all applicable GeometryType's\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:156\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:202\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr unsigned int size()\n+Number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:217\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: q2.hh File Reference\n+dune-localfunctions: nedelec.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,25 @@\n \n \n \n \n \n \n \n
    \n- \n-
    q2.hh File Reference
    \n+
    nedelec.hh File Reference
    \n
    \n
    \n-
    #include <dune/common/typetraits.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localtoglobaladaptors.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n+\n

    Go to the source code of this file.

    \n-\n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::Q2FiniteElementFactory< Geometry, RF >
     Factory for global-valued Q23D elements. More...
     
    \n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,12 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-q2.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+nedelec.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bc_\bu_\bb_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n-\u00a0 Factory for global-valued Q23D elements. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: q2.hh Source File\n+dune-localfunctions: nedelec.hh Source File\n \n \n \n \n \n \n \n@@ -70,77 +70,38 @@\n
    \n \n \n \n \n \n \n
    \n-
    q2.hh
    \n+
    nedelec.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_Q2_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_Q2_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_HH
    \n
    7
    \n-
    8#include <dune/common/typetraits.hh>
    \n-
    9#include <dune/geometry/type.hh>
    \n+
    8// Nedelec element implementations with run-time order
    \n+
    9// [include them here once they exist]
    \n
    10
    \n-\n-\n-
    13
    \n-\n-\n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    20
    \n-
    25 template<class Geometry, class RF>
    \n-
    \n-\n-\n-
    28 typename std::conditional<Geometry::mydimension == 1,
    \n-
    29 LagrangeSimplexLocalFiniteElement<typename Geometry::ctype, RF, 1, 2>,
    \n-
    30 LagrangeCubeLocalFiniteElement<typename Geometry::ctype, RF, Geometry::mydimension, 2> >::type,
    \n-
    31 Geometry>
    \n-
    32 {
    \n-
    33 typedef typename std::conditional<Geometry::mydimension == 1,
    \n-\n-\n-\n-
    37
    \n-
    38 static const LFE lfe;
    \n-
    39
    \n-
    40 public:
    \n-\n-
    43 };
    \n-
    \n-
    44
    \n-
    45 template<class Geometry, class RF>
    \n-
    46 const typename Q2FiniteElementFactory<Geometry, RF>::LFE
    \n-
    47 Q2FiniteElementFactory<Geometry, RF>::lfe;
    \n-
    48}
    \n-
    49
    \n-
    50#endif
    \n-\n-\n-\n-\n-
    Definition bdfmcube.hh:18
    \n-
    Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.
    Definition localtoglobaladaptors.hh:244
    \n-
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:836
    \n-
    Factory for global-valued Q23D elements.
    Definition q2.hh:32
    \n-
    Q2FiniteElementFactory()
    default constructor
    Definition q2.hh:42
    \n+
    11// Nedelec element implementations with compile-time order
    \n+\n+\n+
    14
    \n+
    15#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_HH
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,82 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-q2.hh\n+nedelec.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_Q2_LOCALFINITEELEMENT_HH\n-6#define DUNE_Q2_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_HH\n+6#define DUNE_LOCALFUNCTIONS_NEDELEC_HH\n 7\n-8#include \n-9#include \n+8// Nedelec element implementations with run-time order\n+9// [include them here once they exist]\n 10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-20\n-25 template\n-_\b2_\b6 class _\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by :\n-27 public _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by<\n-28 typename std::conditional,\n-30 LagrangeCubeLocalFiniteElement >::type,\n-31 Geometry>\n-32 {\n-33 typedef typename std::conditional,\n-35 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bc_\bt_\by_\bp_\be_\b,_\b _\bR_\bF_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:\n-_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\b2_\b> >::type LFE;\n-36 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bL_\bF_\bE_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bB_\ba_\bs_\be;\n-37\n-38 static const LFE lfe;\n-39\n-40 public:\n-_\b4_\b2 _\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by() : _\bB_\ba_\bs_\be(lfe) {}\n-43 };\n-44\n-45 template\n-46 const typename Q2FiniteElementFactory::LFE\n-47 Q2FiniteElementFactory::lfe;\n-48}\n-49\n-50#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:244\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for cubes with arbitrary compile-time dimension and\n-polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange finite element for simplices with arbitrary compile-time dimension and\n-polynomial order.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:836\n-_\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for global-valued Q23D elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn q2.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Q2FiniteElementFactory()\n-default constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn q2.hh:42\n+11// Nedelec element implementations with compile-time order\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+14\n+15#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_HH\n+_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bc_\bu_\bb_\be_\b._\bh_\bh\n+_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localkey.hh File Reference\n+dune-localfunctions: lagrange.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,54 @@\n \n \n \n \n \n \n \n
    \n \n-
    localkey.hh File Reference
    \n+
    lagrange.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <cstddef>
    \n-#include <ostream>
    \n+\n+

    Convenience header that includes all implementations of Lagrange finite elements. \n+More...

    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::LocalKey
     Describe position of one degree of freedom. More...
    class  Dune::LagrangeLocalFiniteElement< LP, dimDomain, D, R, SF, CF >
     Lagrange local finite elements for a given set of interpolation points. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

    Convenience header that includes all implementations of Lagrange finite elements.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,35 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-localkey.hh File Reference\n-#include \n-#include \n-#include \n+lagrange.hh File Reference\n+Convenience header that includes all implementations of Lagrange finite\n+elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\bq_\b2_\b2_\bd_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-\u00a0 Describe position of one degree of freedom. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bD_\b,_\b _\bR_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n+\u00a0 Lagrange local finite elements for a given set of interpolation points.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Convenience header that includes all implementations of Lagrange finite\n+elements.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localkey.hh Source File\n+dune-localfunctions: lagrange.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,90 @@\n \n \n \n \n \n \n \n
    \n-
    localkey.hh
    \n+
    lagrange.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALKEY_HH
    \n-
    6#define DUNE_LOCALKEY_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <cstddef>
    \n-
    10#include <ostream>
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    \n-\n-
    24 {
    \n-
    25 public:
    \n-
    26
    \n-
    28 enum {
    \n-\n-
    38 };
    \n-
    39
    \n-
    \n-
    41 constexpr LocalKey () noexcept
    \n-
    42 : values_{}
    \n-
    43 {}
    \n-
    \n-
    44
    \n-
    \n-
    50 constexpr LocalKey (unsigned int s, unsigned int c, unsigned int i) noexcept
    \n-
    51 : values_{s,c,i}
    \n-
    52 {}
    \n-
    \n-
    53
    \n-
    55 [[nodiscard]]
    \n-
    \n-
    56 constexpr unsigned int subEntity () const noexcept
    \n-
    57 {
    \n-
    58 return values_[0];
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    62 [[nodiscard]]
    \n-
    \n-
    63 constexpr unsigned int codim () const noexcept
    \n-
    64 {
    \n-
    65 return values_[1];
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    69 [[nodiscard]]
    \n-
    \n-
    70 constexpr unsigned int index () const noexcept
    \n-
    71 {
    \n-
    72 return values_[2];
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    \n-
    76 constexpr void index (unsigned int i) noexcept
    \n-
    77 {
    \n-
    78 values_[2] = i;
    \n-
    79 }
    \n+
    12// Headers for Lagrange elements with run-time order
    \n+\n+\n+
    15
    \n+\n+\n+\n+
    19
    \n+
    20// Headers for Lagrange elements with compile-time order
    \n+\n+\n+\n+\n+\n+\n+
    27
    \n+
    28namespace Dune
    \n+
    29{
    \n+
    59 template< template <class,unsigned int> class LP,
    \n+
    60 unsigned int dimDomain, class D, class R,
    \n+
    61 class SF=R, class CF=SF >
    \n+
    \n+\n+
    63 : public GenericLocalFiniteElement< LagrangeBasisFactory< LP, dimDomain, SF, CF >,
    \n+
    64 LagrangeCoefficientsFactory<LP, dimDomain, SF >,
    \n+
    65 LagrangeInterpolationFactory< LP, dimDomain, SF > >
    \n+
    66 {
    \n+\n+\n+\n+
    70 public:
    \n+
    71 typedef typename Base::Traits Traits;
    \n+
    72
    \n+
    \n+
    75 LagrangeLocalFiniteElement ( const GeometryType &gt, unsigned int order )
    \n+
    76 : Base( gt, order )
    \n+
    77 {}
    \n
    \n+
    78 };
    \n+
    \n+
    79}
    \n
    80
    \n-
    82 [[nodiscard]]
    \n-
    \n-
    83 bool operator< (const LocalKey& other) const noexcept
    \n-
    84 {
    \n-
    85 return values_ < other.values_;
    \n-
    86 }
    \n-
    \n-
    87
    \n-
    \n-
    89 friend std::ostream& operator<< (std::ostream& s, const LocalKey& localKey)
    \n-
    90 {
    \n-
    91 return s << "[ subEntity: " << localKey.subEntity()
    \n-
    92 << ", codim: " << localKey.codim()
    \n-
    93 << ", index: " << localKey.index() << " ]";
    \n-
    94 }
    \n-
    \n-
    95
    \n-
    96 private:
    \n-
    97
    \n-
    98 // We use an array to store the values in order to be able to use the array::operator< implementation
    \n-
    99 std::array<unsigned int,3> values_;
    \n-
    100
    \n-
    101 };
    \n-
    \n-
    102
    \n-
    103}
    \n-
    104#endif
    \n+
    81#endif // #ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    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
    \n-
    constexpr void index(unsigned int i) noexcept
    Set index component.
    Definition localkey.hh:76
    \n-
    constexpr unsigned int index() const noexcept
    Return offset within subentity.
    Definition localkey.hh:70
    \n-
    constexpr LocalKey(unsigned int s, unsigned int c, unsigned int i) noexcept
    Initialize all components.
    Definition localkey.hh:50
    \n-
    @ intersectionCodim
    Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
    Definition localkey.hh:37
    \n-
    constexpr unsigned int codim() const noexcept
    Return codim of associated entity.
    Definition localkey.hh:63
    \n-
    friend std::ostream & operator<<(std::ostream &s, const LocalKey &localKey)
    Write LocalKey object to output stream.
    Definition localkey.hh:89
    \n-
    constexpr LocalKey() noexcept
    Standard constructor for uninitialized local index.
    Definition localkey.hh:41
    \n-
    constexpr unsigned int subEntity() const noexcept
    Return number of associated subentity.
    Definition localkey.hh:56
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    Lagrange local finite elements for a given set of interpolation points.
    Definition lagrange.hh:66
    \n+
    LagrangeLocalFiniteElement(const GeometryType &gt, unsigned int order)
    Definition lagrange.hh:75
    \n+
    Base::Traits Traits
    Definition lagrange.hh:71
    \n+
    Definition lagrange/interpolation.hh:89
    \n+
    Definition lagrangecoefficients.hh:23
    \n+
    A LocalFiniteElement implementation based on three TopologyFactories providing the LocalBasis,...
    Definition localfunctions/utility/localfiniteelement.hh:25
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,129 +1,92 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-localkey.hh\n+lagrange.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALKEY_HH\n-6#define DUNE_LOCALKEY_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-_\b2_\b3 class _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-24 {\n-25 public:\n-26\n-28 enum {\n-37 _\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bd_\bi_\bm=666\n-_\b3_\b8 };\n-39\n-_\b4_\b1 constexpr _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by () noexcept\n-42 : values_{}\n-43 {}\n-44\n-_\b5_\b0 constexpr _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by (unsigned int s, unsigned int c, unsigned int i) noexcept\n-51 : values_{s,c,i}\n-52 {}\n-53\n-55 [[nodiscard]]\n-_\b5_\b6 constexpr unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by () const noexcept\n-57 {\n-58 return values_[0];\n-59 }\n-60\n-62 [[nodiscard]]\n-_\b6_\b3 constexpr unsigned int _\bc_\bo_\bd_\bi_\bm () const noexcept\n-64 {\n-65 return values_[1];\n-66 }\n-67\n-69 [[nodiscard]]\n-_\b7_\b0 constexpr unsigned int _\bi_\bn_\bd_\be_\bx () const noexcept\n-71 {\n-72 return values_[2];\n-73 }\n-74\n-_\b7_\b6 constexpr void _\bi_\bn_\bd_\be_\bx (unsigned int i) noexcept\n-77 {\n-78 values_[2] = i;\n-79 }\n+12// Headers for Lagrange elements with run-time order\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+15\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+19\n+20// Headers for Lagrange elements with compile-time order\n+21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+22#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n+23#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+24#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+25#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n+26#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\bq_\b2_\b2_\bd_\b._\bh_\bh>\n+27\n+28namespace _\bD_\bu_\bn_\be\n+29{\n+59 template< template class LP,\n+60 unsigned int dimDomain, class D, class R,\n+61 class SF=R, class CF=SF >\n+_\b6_\b2 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+63 : public _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt< LagrangeBasisFactory< LP, dimDomain, SF,\n+CF >,\n+64 LagrangeCoefficientsFactory,\n+65 LagrangeInterpolationFactory< LP, dimDomain, SF > >\n+66 {\n+67 typedef _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,\n+_\bC_\bF_\b _\b>,\n+68 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bL_\bP_\b,_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b _\b>,\n+69 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b _\b> > _\bB_\ba_\bs_\be;\n+70 public:\n+_\b7_\b1 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n+72\n+_\b7_\b5 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( const GeometryType >, unsigned int order )\n+76 : _\bB_\ba_\bs_\be( gt, order )\n+77 {}\n+78 };\n+79}\n 80\n-82 [[nodiscard]]\n-_\b8_\b3 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b (const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& other) const noexcept\n-84 {\n-85 return values_ < other.values_;\n-86 }\n-87\n-_\b8_\b9 friend std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s, const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& localKey)\n-90 {\n-91 return s << \"[ subEntity: \" << localKey._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by()\n-92 << \", codim: \" << localKey._\bc_\bo_\bd_\bi_\bm()\n-93 << \", index: \" << localKey._\bi_\bn_\bd_\be_\bx() << \" ]\";\n-94 }\n-95\n-96 private:\n-97\n-98 // We use an array to store the values in order to be able to use the\n-array::operator< implementation\n-99 std::array values_;\n-100\n-101 };\n-102\n-103}\n-104#endif\n+81#endif // #ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n+_\bp_\bq_\b2_\b2_\bd_\b._\bh_\bh\n+_\bp_\b0_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n-bool operator<(const LocalKey &other) const noexcept\n-Less-than operator so we can use this class as a key type in stl containers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-constexpr void index(unsigned int i) noexcept\n-Set index component.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-constexpr unsigned int index() const noexcept\n-Return offset within subentity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-constexpr LocalKey(unsigned int s, unsigned int c, unsigned int i) noexcept\n-Initialize all components.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bd_\bi_\bm\n-@ intersectionCodim\n-Codimension returned by LocalKey::codim() for degrees of freedom attached to an\n-intersection.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm\n-constexpr unsigned int codim() const noexcept\n-Return codim of associated entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n-friend std::ostream & operator<<(std::ostream &s, const LocalKey &localKey)\n-Write LocalKey object to output stream.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-constexpr LocalKey() noexcept\n-Standard constructor for uninitialized local index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n-constexpr unsigned int subEntity() const noexcept\n-Return number of associated subentity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange local finite elements for a given set of interpolation points.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+LagrangeLocalFiniteElement(const GeometryType >, unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+Base::Traits Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+A LocalFiniteElement implementation based on three TopologyFactories providing\n+the LocalBasis,...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:25\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interfaceswitch.hh File Reference\n+dune-localfunctions: hierarchical.hh File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,31 @@\n
    \n \n \n \n \n \n \n
    \n- \n-
    interfaceswitch.hh File Reference
    \n+
    hierarchical.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <memory>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/common/shared_ptr.hh>
    \n+\n+

    Convenience header that includes all available hierarchical LocalFiniteElements. \n+More...

    \n+\n

    Go to the source code of this file.

    \n-\n-\n-\n-\n-\n-\n-\n-\n-

    \n-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...
     
    \n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

    Convenience header that includes all available hierarchical LocalFiniteElements.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,18 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-interfaceswitch.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n+hierarchical.hh File Reference\n+Convenience header that includes all available hierarchical\n+LocalFiniteElements. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b<_\b _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bD_\bu_\bm_\bm_\by_\b _\b>\n-\u00a0 Switch for uniform treatment of finite element with either the local\n- or the global interface. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bD_\bu_\bm_\bm_\by_\b _\b>\n-\u00a0 Switch for uniform treatment of local and global basis classes.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Convenience header that includes all available hierarchical\n+LocalFiniteElements.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interfaceswitch.hh Source File\n+dune-localfunctions: hierarchical.hh Source File\n \n \n \n \n \n \n \n@@ -70,198 +70,31 @@\n \n \n \n \n \n \n \n
    \n-
    interfaceswitch.hh
    \n+
    hierarchical.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH
    \n-
    8
    \n-
    9#include <cstddef>
    \n-
    10#include <memory>
    \n-
    11#include <vector>
    \n-
    12
    \n-
    13#include <dune/common/fmatrix.hh>
    \n-
    14#include <dune/common/typetraits.hh>
    \n-
    15#include <dune/common/shared_ptr.hh>
    \n-
    16
    \n-
    17namespace Dune {
    \n-
    18
    \n-
    21
    \n-
    29 template<class FiniteElement, class Dummy = void>
    \n-
    \n-\n-
    32 typedef typename FiniteElement::Traits::Basis Basis;
    \n-
    34 typedef typename FiniteElement::Traits::Interpolation Interpolation;
    \n-
    36 typedef typename FiniteElement::Traits::Coefficients Coefficients;
    \n-
    37
    \n-
    \n-
    39 static const Basis &basis(const FiniteElement& fe)
    \n-
    40 { return fe.basis(); }
    \n-
    \n-
    \n-
    42 static const Interpolation &interpolation(const FiniteElement& fe)
    \n-
    43 { return fe.interpolation(); }
    \n-
    \n-
    \n-
    45 static const Coefficients &coefficients(const FiniteElement& fe)
    \n-
    46 { return fe.coefficients(); }
    \n-
    \n-
    47
    \n-
    49
    \n-
    78 typedef std::shared_ptr<const FiniteElement> Store;
    \n-
    80
    \n-
    \n-
    85 static void setStore(Store& store, const FiniteElement& fe)
    \n-
    86 { store = std::make_shared<const FiniteElement>(fe); }
    \n-
    \n-
    \n-
    88 static void setStore(Store& store, FiniteElement&& fe)
    \n-
    89 { store = std::make_shared<const FiniteElement>(std::move(fe)); }
    \n-
    \n-
    \n-
    91 static void setStore(Store& store, const Store& fe)
    \n-
    92 { store = fe; }
    \n-
    \n-
    93 };
    \n-
    \n-
    94
    \n-
    95#ifndef DOXYGEN
    \n-
    98 template<class FiniteElement>
    \n-
    99 struct FiniteElementInterfaceSwitch<
    \n-
    100 FiniteElement,
    \n-
    101 typename std::enable_if<AlwaysTrue<typename FiniteElement::Traits::
    \n-
    102 LocalBasisType>::value>::type
    \n-
    103 >
    \n-
    104 {
    \n-
    106 typedef typename FiniteElement::Traits::LocalBasisType Basis;
    \n-
    108 typedef typename FiniteElement::Traits::LocalInterpolationType
    \n-\n-
    111 typedef typename FiniteElement::Traits::LocalCoefficientsType Coefficients;
    \n-
    112
    \n-
    114 static const Basis &basis(const FiniteElement& fe)
    \n-
    115 { return fe.localBasis(); }
    \n-
    117 static const Interpolation &interpolation(const FiniteElement& fe)
    \n-
    118 { return fe.localInterpolation(); }
    \n-
    120 static const Coefficients &coefficients(const FiniteElement& fe)
    \n-
    121 { return fe.localCoefficients(); }
    \n-
    122
    \n-
    124 typedef std::shared_ptr<const FiniteElement> Store;
    \n-
    126 static void setStore(Store& store, const FiniteElement& fe)
    \n-
    127 { store = stackobject_to_shared_ptr<const FiniteElement>(fe); }
    \n-
    129 static void setStore(Store& store, FiniteElement&& fe)
    \n-
    130 { store = std::make_shared<const FiniteElement>(std::move(fe)); }
    \n-
    132 static void setStore(Store& store, const Store& fe)
    \n-
    133 { store = fe; }
    \n-
    134 };
    \n-
    135#endif // !DOXYGEN
    \n-
    136
    \n-
    138
    \n-
    153 template<class Basis, class Dummy = void>
    \n-
    \n-\n-
    156 typedef typename Basis::Traits::DomainField DomainField;
    \n-
    158 static const std::size_t dimDomainLocal = Basis::Traits::dimDomainLocal;
    \n-
    160 typedef typename Basis::Traits::DomainLocal DomainLocal;
    \n-
    161
    \n-
    163 typedef typename Basis::Traits::RangeField RangeField;
    \n-
    165 static const std::size_t dimRange = Basis::Traits::dimRange;
    \n-
    167 typedef typename Basis::Traits::Range Range;
    \n-
    168
    \n-
    170
    \n-
    180 template<typename Geometry>
    \n-
    \n-
    181 static void gradient(const Basis& basis, const Geometry& geometry,
    \n-
    182 const DomainLocal& xl,
    \n-
    183 std::vector<FieldMatrix<RangeField, 1,
    \n-
    184 Geometry::coorddimension> >& grad)
    \n-
    185 {
    \n-
    186 grad.resize(basis.size());
    \n-
    187 basis.evaluateJacobian(xl, grad);
    \n-
    188 }
    \n-
    \n-
    189 };
    \n-
    \n-
    190
    \n-
    191#ifndef DOXYGEN
    \n-
    193 template<class Basis>
    \n-
    194 struct BasisInterfaceSwitch<Basis,
    \n-
    195 typename std::enable_if<
    \n-
    196 AlwaysTrue<
    \n-
    197 std::integral_constant<
    \n-
    198 std::size_t,
    \n-
    199 Basis::Traits::dimDomain
    \n-
    200 >
    \n-
    201 >::value
    \n-
    202 >::type
    \n-
    203 >
    \n-
    204 {
    \n-
    206 typedef typename Basis::Traits::DomainFieldType DomainField;
    \n-
    208 static const std::size_t dimDomainLocal = Basis::Traits::dimDomain;
    \n-
    210 typedef typename Basis::Traits::DomainType DomainLocal;
    \n-
    211
    \n-
    213 typedef typename Basis::Traits::RangeFieldType RangeField;
    \n-
    215 static const std::size_t dimRange = Basis::Traits::dimRange;
    \n-
    217 typedef typename Basis::Traits::RangeType Range;
    \n-
    218
    \n-
    220 template<typename Geometry>
    \n-
    221 static void gradient(const Basis& basis, const Geometry& geometry,
    \n-
    222 const DomainLocal& xl,
    \n-
    223 std::vector<FieldMatrix<RangeField, 1,
    \n-
    224 Geometry::coorddimension> >& grad)
    \n-
    225 {
    \n-
    226 std::vector<typename Basis::Traits::JacobianType> lgrad(basis.size());
    \n-
    227 basis.evaluateJacobian(xl, lgrad);
    \n-
    228
    \n-
    229 const typename Geometry::JacobianInverseTransposed& jac =
    \n-
    230 geometry.jacobianInverseTransposed(xl);
    \n-
    231
    \n-
    232 grad.resize(basis.size());
    \n-
    233 for(std::size_t i = 0; i < basis.size(); ++i)
    \n-
    234 jac.mv(lgrad[i][0], grad[i][0]);
    \n-
    235 }
    \n-
    236 };
    \n-
    237#endif // !DOXYGEN
    \n-
    238
    \n-
    239} // namespace Dune
    \n-
    240
    \n-
    241#endif // DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH
    \n-
    Definition bdfmcube.hh:18
    \n-
    Switch for uniform treatment of finite element with either the local or the global interface.
    Definition interfaceswitch.hh:30
    \n-
    static const Coefficients & coefficients(const FiniteElement &fe)
    access coefficients
    Definition interfaceswitch.hh:45
    \n-
    static void setStore(Store &store, FiniteElement &&fe)
    Store a finite element in the store.
    Definition interfaceswitch.hh:88
    \n-
    FiniteElement::Traits::Coefficients Coefficients
    export the type of the coefficients
    Definition interfaceswitch.hh:36
    \n-
    static void setStore(Store &store, const Store &fe)
    Store a finite element in the store.
    Definition interfaceswitch.hh:91
    \n-
    static void setStore(Store &store, const FiniteElement &fe)
    Store a finite element in the store.
    Definition interfaceswitch.hh:85
    \n-
    FiniteElement::Traits::Interpolation Interpolation
    export the type of the interpolation
    Definition interfaceswitch.hh:34
    \n-
    std::shared_ptr< const FiniteElement > Store
    Type for storing finite elements.
    Definition interfaceswitch.hh:78
    \n-
    static const Basis & basis(const FiniteElement &fe)
    access basis
    Definition interfaceswitch.hh:39
    \n-
    FiniteElement::Traits::Basis Basis
    export the type of the basis
    Definition interfaceswitch.hh:32
    \n-
    static const Interpolation & interpolation(const FiniteElement &fe)
    access interpolation
    Definition interfaceswitch.hh:42
    \n-
    Switch for uniform treatment of local and global basis classes.
    Definition interfaceswitch.hh:154
    \n-
    static const std::size_t dimRange
    export dimension of the values
    Definition interfaceswitch.hh:165
    \n-
    static const std::size_t dimDomainLocal
    export dimension of local coordinates
    Definition interfaceswitch.hh:158
    \n-
    Basis::Traits::RangeField RangeField
    export field type of the values
    Definition interfaceswitch.hh:163
    \n-
    Basis::Traits::Range Range
    export vector type of the values
    Definition interfaceswitch.hh:167
    \n-
    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
    \n-
    Basis::Traits::DomainLocal DomainLocal
    export vector type of the local coordinates
    Definition interfaceswitch.hh:160
    \n-
    Basis::Traits::DomainField DomainField
    export field types of the coordinates
    Definition interfaceswitch.hh:156
    \n+\n+\n+\n+\n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,230 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-interfaceswitch.hh\n+hierarchical.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH\n-7#define DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH\n-8\n-9#include \n-10#include \n-11#include \n-12\n-13#include \n-14#include \n-15#include \n-16\n-17namespace _\bD_\bu_\bn_\be {\n-18\n-21\n-29 template\n-_\b3_\b0 struct _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh {\n-_\b3_\b2 typedef typename FiniteElement::Traits::Basis _\bB_\ba_\bs_\bi_\bs;\n-_\b3_\b4 typedef typename FiniteElement::Traits::Interpolation _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-_\b3_\b6 typedef typename FiniteElement::Traits::Coefficients _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-37\n-_\b3_\b9 static const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs(const FiniteElement& fe)\n-40 { return fe.basis(); }\n-_\b4_\b2 static const _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn &_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(const FiniteElement& fe)\n-43 { return fe.interpolation(); }\n-_\b4_\b5 static const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs &_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const FiniteElement& fe)\n-46 { return fe.coefficients(); }\n-47\n-49\n-_\b7_\b8 typedef std::shared_ptr _\bS_\bt_\bo_\br_\be;\n-80\n-_\b8_\b5 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, const FiniteElement& fe)\n-86 { store = std::make_shared(fe); }\n-_\b8_\b8 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, FiniteElement&& fe)\n-89 { store = std::make_shared(std::move(fe)); }\n-_\b9_\b1 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, const _\bS_\bt_\bo_\br_\be& fe)\n-92 { store = fe; }\n-93 };\n-94\n-95#ifndef DOXYGEN\n-98 template\n-99 struct FiniteElementInterfaceSwitch<\n-100 FiniteElement,\n-101 typename std::enable_if::value>::type\n-103 >\n-104 {\n-106 typedef typename FiniteElement::Traits::LocalBasisType _\bB_\ba_\bs_\bi_\bs;\n-108 typedef typename FiniteElement::Traits::LocalInterpolationType\n-109 _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-111 typedef typename FiniteElement::Traits::LocalCoefficientsType _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-112\n-114 static const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs(const FiniteElement& fe)\n-115 { return fe.localBasis(); }\n-117 static const _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn &_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(const FiniteElement& fe)\n-118 { return fe.localInterpolation(); }\n-120 static const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs &_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const FiniteElement& fe)\n-121 { return fe.localCoefficients(); }\n-122\n-124 typedef std::shared_ptr _\bS_\bt_\bo_\br_\be;\n-126 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, const FiniteElement& fe)\n-127 { store = stackobject_to_shared_ptr(fe); }\n-129 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, FiniteElement&& fe)\n-130 { store = std::make_shared(std::move(fe)); }\n-132 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, const _\bS_\bt_\bo_\br_\be& fe)\n-133 { store = fe; }\n-134 };\n-135#endif // !DOXYGEN\n-136\n-138\n-153 template\n-_\b1_\b5_\b4 struct _\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh {\n-_\b1_\b5_\b6 typedef typename Basis::Traits::DomainField _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n-_\b1_\b5_\b8 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl = Basis::Traits::dimDomainLocal;\n-_\b1_\b6_\b0 typedef typename Basis::Traits::DomainLocal _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n-161\n-_\b1_\b6_\b3 typedef typename Basis::Traits::RangeField _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-_\b1_\b6_\b5 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Basis::Traits::dimRange;\n-_\b1_\b6_\b7 typedef typename Basis::Traits::Range _\bR_\ba_\bn_\bg_\be;\n-168\n-170\n-180 template\n-_\b1_\b8_\b1 static void _\bg_\br_\ba_\bd_\bi_\be_\bn_\bt(const Basis& basis, const Geometry& geometry,\n-182 const _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& xl,\n-183 std::vector >& grad)\n-185 {\n-186 grad.resize(basis.size());\n-187 basis.evaluateJacobian(xl, grad);\n-188 }\n-189 };\n-190\n-191#ifndef DOXYGEN\n-193 template\n-194 struct BasisInterfaceSwitch\n-201 >::value\n-202 >::type\n-203 >\n-204 {\n-206 typedef typename Basis::Traits::DomainFieldType _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n-208 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl = Basis::Traits::dimDomain;\n-210 typedef typename Basis::Traits::DomainType _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n-211\n-213 typedef typename Basis::Traits::RangeFieldType _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-215 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Basis::Traits::dimRange;\n-217 typedef typename Basis::Traits::RangeType _\bR_\ba_\bn_\bg_\be;\n-218\n-220 template\n-221 static void _\bg_\br_\ba_\bd_\bi_\be_\bn_\bt(const Basis& basis, const Geometry& geometry,\n-222 const _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& xl,\n-223 std::vector >& grad)\n-225 {\n-226 std::vector lgrad(basis.size());\n-227 basis.evaluateJacobian(xl, lgrad);\n-228\n-229 const typename Geometry::JacobianInverseTransposed& jac =\n-230 geometry.jacobianInverseTransposed(xl);\n-231\n-232 grad.resize(basis.size());\n-233 for(std::size_t i = 0; i < basis.size(); ++i)\n-234 jac.mv(lgrad[i][0], grad[i][0]);\n-235 }\n-236 };\n-237#endif // !DOXYGEN\n-238\n-239} // namespace Dune\n-240\n-241#endif // DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh\n-Switch for uniform treatment of finite element with either the local or the\n-global interface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-static const Coefficients & coefficients(const FiniteElement &fe)\n-access coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bs_\be_\bt_\bS_\bt_\bo_\br_\be\n-static void setStore(Store &store, FiniteElement &&fe)\n-Store a finite element in the store.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-FiniteElement::Traits::Coefficients Coefficients\n-export the type of the coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bs_\be_\bt_\bS_\bt_\bo_\br_\be\n-static void setStore(Store &store, const Store &fe)\n-Store a finite element in the store.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bs_\be_\bt_\bS_\bt_\bo_\br_\be\n-static void setStore(Store &store, const FiniteElement &fe)\n-Store a finite element in the store.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-FiniteElement::Traits::Interpolation Interpolation\n-export the type of the interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bS_\bt_\bo_\br_\be\n-std::shared_ptr< const FiniteElement > Store\n-Type for storing finite elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n-static const Basis & basis(const FiniteElement &fe)\n-access basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-FiniteElement::Traits::Basis Basis\n-export the type of the basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-static const Interpolation & interpolation(const FiniteElement &fe)\n-access interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh\n-Switch for uniform treatment of local and global basis classes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:154\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const std::size_t dimRange\n-export dimension of the values\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n-static const std::size_t dimDomainLocal\n-export dimension of local coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd\n-Basis::Traits::RangeField RangeField\n-export field type of the values\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bR_\ba_\bn_\bg_\be\n-Basis::Traits::Range Range\n-export vector type of the values\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bg_\br_\ba_\bd_\bi_\be_\bn_\bt\n-static void gradient(const Basis &basis, const Geometry &geometry, const\n-DomainLocal &xl, std::vector< FieldMatrix< RangeField, 1, Geometry::\n-coorddimension > > &grad)\n-Compute global gradient for scalar valued bases.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:181\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n-Basis::Traits::DomainLocal DomainLocal\n-export vector type of the local coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd\n-Basis::Traits::DomainField DomainField\n-export field types of the coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:156\n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b._\bh_\bh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b._\bh_\bh>\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b._\bh_\bh\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b._\bh_\bh\n+_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localfiniteelementtraits.hh File Reference\n+dune-localfunctions: orthonormal.hh File Reference\n \n \n \n \n \n \n \n@@ -65,31 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    localfiniteelementtraits.hh File Reference
    \n+
    orthonormal.hh File Reference
    \n
    \n
    \n-\n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::LocalFiniteElementTraits< LB, LC, LI >
     traits helper struct More...
    class  Dune::OrthonormalLocalFiniteElement< dimDomain, D, R, SF, CF >
     A class providing orthonormal basis functions. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,19 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-localfiniteelementtraits.hh File Reference\n+orthonormal.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\b2_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bB_\b,_\b _\bL_\bC_\b,_\b _\bL_\bI_\b _\b>\n-\u00a0 traits helper struct _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bD_\b,_\b _\bR_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n+\u00a0 A class providing orthonormal basis functions. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localfiniteelementtraits.hh Source File\n+dune-localfunctions: orthonormal.hh Source File\n \n \n \n \n \n \n \n@@ -70,50 +70,71 @@\n
    \n \n \n \n \n \n \n
    \n-
    localfiniteelementtraits.hh
    \n+
    orthonormal.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFINITEELEMENTTRAITS_HH
    \n-
    6#define DUNE_LOCALFINITEELEMENTTRAITS_HH
    \n+
    5#ifndef DUNE_ORTHONORMALFINITEELEMENT_HH
    \n+
    6#define DUNE_ORTHONORMALFINITEELEMENT_HH
    \n
    7
    \n-
    8namespace Dune {
    \n-
    9
    \n-
    11 template<class LB, class LC, class LI>
    \n-
    \n-\n-
    13 {
    \n-
    16 typedef LB LocalBasisType;
    \n-
    17
    \n-\n-
    21
    \n-\n-
    25 };
    \n-
    \n-
    26
    \n-
    27}
    \n-
    28
    \n-
    29#endif
    \n+\n+\n+\n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    32 template< unsigned int dimDomain, class D, class R,
    \n+
    33 class SF=R, class CF=SF >
    \n+
    \n+\n+
    35 : public GenericLocalFiniteElement< OrthonormalBasisFactory< dimDomain, SF, CF >,
    \n+
    36 DGLocalCoefficientsFactory< OrthonormalBasisFactory< dimDomain, SF, CF > >,
    \n+
    37 LocalL2InterpolationFactory< OrthonormalBasisFactory< dimDomain, SF, CF >,true > >
    \n+
    38 {
    \n+\n+\n+\n+
    42 public:
    \n+
    43 using typename Base::Traits;
    \n+
    44
    \n+
    \n+
    47 OrthonormalLocalFiniteElement ( const GeometryType &gt, unsigned int order )
    \n+
    48 : Base(gt, order)
    \n+
    49 {}
    \n+
    \n+
    50 };
    \n+
    \n+
    51
    \n+
    52}
    \n+
    53
    \n+
    54#endif
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    A class providing orthonormal basis functions.
    Definition orthonormal.hh:38
    \n+
    OrthonormalLocalFiniteElement(const GeometryType &gt, unsigned int order)
    Definition orthonormal.hh:47
    \n+
    A factory class for the dg local coefficients.
    Definition dglocalcoefficients.hh:59
    \n+
    A factory class for the local l2 interpolations taking a basis factory.
    Definition l2interpolation.hh:163
    \n+
    A LocalFiniteElement implementation based on three TopologyFactories providing the LocalBasis,...
    Definition localfunctions/utility/localfiniteelement.hh:25
    \n+
    LocalFiniteElementTraits< typename BasisF::Object, typename CoeffF::Object, typename InterpolF::Object > Traits
    Definition localfunctions/utility/localfiniteelement.hh:29
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,48 +1,76 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-localfiniteelementtraits.hh\n+orthonormal.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFINITEELEMENTTRAITS_HH\n-6#define DUNE_LOCALFINITEELEMENTTRAITS_HH\n+5#ifndef DUNE_ORTHONORMALFINITEELEMENT_HH\n+6#define DUNE_ORTHONORMALFINITEELEMENT_HH\n 7\n-8namespace _\bD_\bu_\bn_\be {\n-9\n-11 template\n-_\b1_\b2 struct _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-13 {\n-_\b1_\b6 typedef LB _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be;\n-17\n-_\b2_\b0 typedef LC _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be;\n-21\n-_\b2_\b4 typedef LI _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be;\n-25 };\n-26\n-27}\n-28\n-29#endif\n+8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\b2_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+32 template< unsigned int dimDomain, class D, class R,\n+33 class SF=R, class CF=SF >\n+_\b3_\b4 class _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+35 : public _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt< OrthonormalBasisFactory< dimDomain, SF,\n+CF >,\n+36 DGLocalCoefficientsFactory< OrthonormalBasisFactory< dimDomain, SF, CF > >,\n+37 LocalL2InterpolationFactory< OrthonormalBasisFactory< dimDomain, SF, CF\n+>,true > >\n+38 {\n+39 typedef _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,\n+_\bC_\bF_\b _\b>,\n+40 _\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b> >,\n+41 _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF\n+_\b>,true > > _\bB_\ba_\bs_\be;\n+42 public:\n+43 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs;\n+44\n+_\b4_\b7 _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( const GeometryType >, unsigned int order )\n+48 : _\bB_\ba_\bs_\be(gt, order)\n+49 {}\n+50 };\n+51\n+52}\n+53\n+54#endif\n+_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bl_\b2_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+A class providing orthonormal basis functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormal.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+OrthonormalLocalFiniteElement(const GeometryType >, unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormal.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+A factory class for the dg local coefficients.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+A factory class for the local l2 interpolations taking a basis factory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+A LocalFiniteElement implementation based on three TopologyFactories providing\n+the LocalBasis,...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< typename BasisF::Object, typename CoeffF::Object,\n+typename InterpolF::Object > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:29\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localfiniteelementvariantcache.hh File Reference\n+dune-localfunctions: rannacherturek2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    localfiniteelementvariantcache.hh File Reference
    \n+
    rannacherturek2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <tuple>
    \n-#include <utility>
    \n-#include <type_traits>
    \n-#include <dune/common/std/type_traits.hh>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/typelist.hh>
    \n-#include <dune/common/hybridutilities.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/typeindex.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementvariant.hh>
    \n+
    #include <numeric>
    \n+#include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::LocalFiniteElementVariantCache< Base >
     A cache storing a compile time selection of local finite element implementations. More...
    struct  Dune::RannacherTurek2DLocalBasis< D, R >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,31 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-localfiniteelementvariantcache.hh File Reference\n+rannacherturek2dlocalbasis.hh File Reference\n+#include \n #include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh>\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bB_\ba_\bs_\be_\b _\b>\n-\u00a0 A cache storing a compile time selection of local finite element\n- implementations. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localfiniteelementvariantcache.hh Source File\n+dune-localfunctions: rannacherturek2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,143 +70,159 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    localfiniteelementvariantcache.hh
    \n+
    rannacherturek2dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH
    \n+
    5#ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9#include <tuple>
    \n-
    10#include <utility>
    \n-
    11#include <type_traits>
    \n-
    12
    \n-
    13#include <dune/common/std/type_traits.hh>
    \n-
    14#include <dune/common/exceptions.hh>
    \n-
    15#include <dune/common/typelist.hh>
    \n-
    16#include <dune/common/hybridutilities.hh>
    \n-
    17
    \n-
    18#include <dune/geometry/type.hh>
    \n-
    19#include <dune/geometry/typeindex.hh>
    \n-
    20
    \n-\n-
    22
    \n-
    23
    \n-
    24namespace Dune {
    \n-
    25
    \n-
    26namespace Impl {
    \n-
    27
    \n-
    28 // This class provides the index method of LocalGeometryTypeIndex
    \n-
    29 // but throws a Dune::RangeError if the dimension does not match.
    \n-
    30 // This can be helpful to catch errors in a LocalFiniteElementVariantCache
    \n-
    31 // instance based on dimension specific GeometryType indices.
    \n-
    32 template<std::size_t dim>
    \n-
    33 struct FixedDimLocalGeometryTypeIndex {
    \n-
    34 inline static std::size_t index(const GeometryType &gt)
    \n-
    35 {
    \n-
    36 if (gt.dim() != dim)
    \n-
    37 DUNE_THROW(Dune::RangeError, "Asking for dim=" << dim << " specific index of GeometryType with dimension " << gt.dim());
    \n-
    38 return LocalGeometryTypeIndex::index(gt);
    \n-
    39 }
    \n-
    40 };
    \n-
    41
    \n-
    42} // end namespace Impl
    \n-
    43
    \n-
    66template<class Base>
    \n-
    \n-\n-
    68{
    \n-
    69
    \n-
    70 template<class LFEImplTuple>
    \n-
    71 struct GenerateLFEVariant;
    \n-
    72
    \n-
    73 template<class Index, class... LFEImpl>
    \n-
    74 struct GenerateLFEVariant<std::tuple<std::pair<Index, LFEImpl>...>>
    \n-
    75 {
    \n-
    76 using type = UniqueTypes_t<LocalFiniteElementVariant, decltype(std::declval<LFEImpl>()())...>;
    \n-
    77 };
    \n-
    78
    \n-
    79 using Base::getImplementations;
    \n-
    80 using Base::index;
    \n-
    81 using Implementations = decltype(std::declval<Base>().getImplementations());
    \n-
    82
    \n-
    83public:
    \n-
    84
    \n-
    92 using FiniteElementType = typename GenerateLFEVariant<Implementations>::type;
    \n+
    8#include <numeric>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13
    \n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    22 template< class D, class R >
    \n+
    \n+\n+
    24 {
    \n+\n+
    26 R, 1, FieldVector< R, 1 >,
    \n+
    27 FieldMatrix< R, 1, 2 > > Traits;
    \n+
    28
    \n+
    \n+
    30 unsigned int size () const
    \n+
    31 {
    \n+
    32 return 4;
    \n+
    33 }
    \n+
    \n+
    34
    \n+
    \n+
    36 inline void evaluateFunction ( const typename Traits::DomainType &in,
    \n+
    37 std::vector< typename Traits::RangeType > &out ) const
    \n+
    38 {
    \n+
    39 out.resize(4);
    \n+
    40 typename Traits::DomainFieldType qbase = in[0]*in[0]-in[1]*in[1];
    \n+
    41 out[0] = .75 - 2*in[0] + in[1] + qbase;
    \n+
    42 out[1] = -.25 + in[1] + qbase;
    \n+
    43 out[2] = .75 + in[0] - 2*in[1] - qbase;
    \n+
    44 out[3] = -.25 + in[0] - qbase;
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    \n+
    48 inline void evaluateJacobian ( const typename Traits::DomainType &in,
    \n+
    49 std::vector< typename Traits::JacobianType > &out ) const
    \n+
    50 {
    \n+
    51 out.resize(4);
    \n+
    52
    \n+
    53 // see http://www.dune-project.org/doc/doxygen/html/classDune_1_1C1LocalBasisInterface.html#d6f8368f8aa43439cc7ef10419f6e2ea
    \n+
    54 // out[i][j][k] = d_k \\phi^i_j , where \\phi^i_j is the j'th component of the i'th shape function.
    \n+
    55
    \n+
    56 out[0][0][0] = -2 + 2*in[0]; out[0][0][1] = 1 - 2*in[1];
    \n+
    57 out[1][0][0] = 2*in[0]; out[1][0][1] = 1 - 2*in[1];
    \n+
    58 out[2][0][0] = 1 - 2*in[0]; out[2][0][1] = -2 + 2*in[1];
    \n+
    59 out[3][0][0] = 1 - 2*in[0]; out[3][0][1] = 2*in[1];
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+
    63 void partial (const std::array<unsigned int, 2>& order,
    \n+
    64 const typename Traits::DomainType& in, // position
    \n+
    65 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    66 {
    \n+
    67 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    68 if (totalOrder == 0) {
    \n+
    69 evaluateFunction(in, out);
    \n+
    70 } else if (totalOrder == 1) {
    \n+
    71 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    72 out.resize(size());
    \n+
    73
    \n+
    74 switch (direction) {
    \n+
    75 case 0:
    \n+
    76 out[0] = -2 + 2*in[0];
    \n+
    77 out[1] = 2*in[0];
    \n+
    78 out[2] = 1 - 2*in[0];
    \n+
    79 out[3] = 1 - 2*in[0];
    \n+
    80 break;
    \n+
    81 case 1:
    \n+
    82 out[0] = 1 - 2*in[1];
    \n+
    83 out[1] = 1 - 2*in[1];
    \n+
    84 out[2] = -2 + 2*in[1];
    \n+
    85 out[3] = 2*in[1];
    \n+
    86 break;
    \n+
    87 default:
    \n+
    88 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    89 }
    \n+
    90 } else if (totalOrder == 2) {
    \n+
    91 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 2));
    \n+
    92 out.resize(size());
    \n
    93
    \n-
    98 template<class... Args>
    \n-
    \n-\n-
    100 Base(std::forward<Args>(args)...)
    \n-
    101 {
    \n-
    102 Dune::Hybrid::forEach(getImplementations(), [&,this](auto feImpl) {
    \n-
    103 auto implIndex = feImpl.first;
    \n-
    104 if (cache_.size() < implIndex+1)
    \n-
    105 cache_.resize(implIndex+1);
    \n-
    106 cache_[implIndex] = feImpl.second();
    \n-
    107 });
    \n-
    108 }
    \n-
    \n-
    109
    \n-\n-
    112
    \n-\n-
    115
    \n-\n-
    118
    \n-\n+
    94 switch (direction) {
    \n+
    95 case 0:
    \n+
    96 out[0] = out[1] = 2;
    \n+
    97 out[2] = out[3] =-2;
    \n+
    98 break;
    \n+
    99 case 1:
    \n+
    100 out[0] = out[1] =-2;
    \n+
    101 out[2] = out[3] = 2;
    \n+
    102 break;
    \n+
    103 default:
    \n+
    104 out[0] = out[1] = out[2] = out[3] = 0;
    \n+
    105 break;
    \n+
    106 }
    \n+
    107 } else {
    \n+
    108 out[0] = out[1] = out[2] = out[3] = 0;
    \n+
    109 }
    \n+
    110 }
    \n+
    \n+
    111
    \n+
    \n+
    113 unsigned int order () const
    \n+
    114 {
    \n+
    115 // must be 2 here since it contains x^2 and x^2
    \n+
    116 return 2;
    \n+
    117 }
    \n+
    \n+
    118 };
    \n+
    \n+
    119
    \n+
    120} //namespace Dune
    \n
    121
    \n-
    126 template<class... Key>
    \n-
    \n-
    127 const auto& get(const Key&... key) const
    \n-
    128 {
    \n-
    129 auto implIndex = index(key...);
    \n-
    130 if (implIndex >= cache_.size())
    \n-
    131 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
    \n-
    132 if (not(cache_[implIndex]))
    \n-
    133 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
    \n-
    134 return cache_[implIndex];
    \n-
    135 }
    \n-
    \n-
    136
    \n-
    137private:
    \n-
    138 std::vector<FiniteElementType> cache_;
    \n-
    139};
    \n-
    \n-
    140
    \n-
    141
    \n-
    142
    \n-
    143} // namespace Dune
    \n-
    144
    \n-
    145
    \n-
    146
    \n-
    147
    \n-
    148#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \n-\n+
    122#endif // #ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \n-
    LocalFiniteElementVariantCache & operator=(const LocalFiniteElementVariantCache &other)=default
    Copy assignment.
    \n-
    LocalFiniteElementVariantCache(Args &&... args)
    Default constructor.
    Definition localfiniteelementvariantcache.hh:99
    \n-
    LocalFiniteElementVariantCache(LocalFiniteElementVariantCache &&other)=default
    Move constructor.
    \n-
    const auto & get(const Key &... key) const
    Get the LocalFiniteElement for the given key data.
    Definition localfiniteelementvariantcache.hh:127
    \n-
    LocalFiniteElementVariantCache(const LocalFiniteElementVariantCache &other)=default
    Copy constructor.
    \n-
    typename GenerateLFEVariant< Implementations >::type FiniteElementType
    Type of exported LocalFiniteElement's.
    Definition localfiniteelementvariantcache.hh:92
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    DF DomainFieldType
    Export type for domain field.
    Definition common/localbasis.hh:37
    \n+
    Definition rannacherturek2dlocalbasis.hh:24
    \n+
    LocalBasisTraits< D, 2, FieldVector< D, 2 >, R, 1, FieldVector< R, 1 >, FieldMatrix< R, 1, 2 > > Traits
    Definition rannacherturek2dlocalbasis.hh:27
    \n+
    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 rannacherturek2dlocalbasis.hh:63
    \n+
    unsigned int size() const
    number of shape functions
    Definition rannacherturek2dlocalbasis.hh:30
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    evaluate all shape functions
    Definition rannacherturek2dlocalbasis.hh:36
    \n+
    unsigned int order() const
    polynomial order of the shape functions
    Definition rannacherturek2dlocalbasis.hh:113
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    evaluate jacobian of all shape functions
    Definition rannacherturek2dlocalbasis.hh:48
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,158 +1,174 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-localfiniteelementvariantcache.hh\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd\n+rannacherturek2dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH\n-6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH\n+5#ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH\n+6#define DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n-12\n-13#include \n-14#include \n-15#include \n-16#include \n-17\n-18#include \n-19#include \n-20\n-21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh>\n-22\n-23\n-24namespace _\bD_\bu_\bn_\be {\n-25\n-26namespace Impl {\n-27\n-28 // This class provides the index method of LocalGeometryTypeIndex\n-29 // but throws a Dune::RangeError if the dimension does not match.\n-30 // This can be helpful to catch errors in a LocalFiniteElementVariantCache\n-31 // instance based on dimension specific GeometryType indices.\n-32 template\n-33 struct FixedDimLocalGeometryTypeIndex {\n-34 inline static std::size_t index(const GeometryType >)\n-35 {\n-36 if (gt.dim() != dim)\n-37 DUNE_THROW(Dune::RangeError, \"Asking for dim=\" << dim << \" specific index of\n-GeometryType with dimension \" << gt.dim());\n-38 return LocalGeometryTypeIndex::index(gt);\n-39 }\n-40 };\n-41\n-42} // end namespace Impl\n-43\n-66template\n-_\b6_\b7class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be : Base\n-68{\n-69\n-70 template\n-71 struct GenerateLFEVariant;\n-72\n-73 template\n-74 struct GenerateLFEVariant...>>\n-75 {\n-76 using type = UniqueTypes_t()())...>;\n-77 };\n-78\n-79 using Base::getImplementations;\n-80 using Base::index;\n-81 using Implementations = decltype(std::declval().getImplementations());\n-82\n-83public:\n-84\n-_\b9_\b2 using _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be = typename GenerateLFEVariant::\n-type;\n+8#include \n+9#include \n+10\n+11#include \n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+22 template< class D, class R >\n+_\b2_\b3 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+24 {\n+25 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\b,_\b _\b2_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bD_\b,_\b _\b2_\b _\b>,\n+26 R, 1, FieldVector< R, 1 >,\n+_\b2_\b7 FieldMatrix< R, 1, 2 > > _\bT_\br_\ba_\bi_\bt_\bs;\n+28\n+_\b3_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+31 {\n+32 return 4;\n+33 }\n+34\n+_\b3_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be &in,\n+37 std::vector< typename Traits::RangeType > &out ) const\n+38 {\n+39 out.resize(4);\n+40 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be qbase = in[0]*in[0]-in[1]*in[1];\n+41 out[0] = .75 - 2*in[0] + in[1] + qbase;\n+42 out[1] = -.25 + in[1] + qbase;\n+43 out[2] = .75 + in[0] - 2*in[1] - qbase;\n+44 out[3] = -.25 + in[0] - qbase;\n+45 }\n+46\n+_\b4_\b8 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be &in,\n+49 std::vector< typename Traits::JacobianType > &out ) const\n+50 {\n+51 out.resize(4);\n+52\n+53 // see http://www.dune-project.org/doc/doxygen/html/\n+classDune_1_1C1LocalBasisInterface.html#d6f8368f8aa43439cc7ef10419f6e2ea\n+54 // out[i][j][k] = d_k \\phi^i_j , where \\phi^i_j is the j'th component of the\n+i'th shape function.\n+55\n+56 out[0][0][0] = -2 + 2*in[0]; out[0][0][1] = 1 - 2*in[1];\n+57 out[1][0][0] = 2*in[0]; out[1][0][1] = 1 - 2*in[1];\n+58 out[2][0][0] = 1 - 2*in[0]; out[2][0][1] = -2 + 2*in[1];\n+59 out[3][0][0] = 1 - 2*in[0]; out[3][0][1] = 2*in[1];\n+60 }\n+61\n+_\b6_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+64 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+65 std::vector& out) const // return value\n+66 {\n+67 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+68 if (totalOrder == 0) {\n+69 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+70 } else if (totalOrder == 1) {\n+71 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n+_\bo_\br_\bd_\be_\br.end(), 1));\n+72 out.resize(_\bs_\bi_\bz_\be());\n+73\n+74 switch (direction) {\n+75 case 0:\n+76 out[0] = -2 + 2*in[0];\n+77 out[1] = 2*in[0];\n+78 out[2] = 1 - 2*in[0];\n+79 out[3] = 1 - 2*in[0];\n+80 break;\n+81 case 1:\n+82 out[0] = 1 - 2*in[1];\n+83 out[1] = 1 - 2*in[1];\n+84 out[2] = -2 + 2*in[1];\n+85 out[3] = 2*in[1];\n+86 break;\n+87 default:\n+88 DUNE_THROW(RangeError, \"Component out of range.\");\n+89 }\n+90 } else if (totalOrder == 2) {\n+91 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n+_\bo_\br_\bd_\be_\br.end(), 2));\n+92 out.resize(_\bs_\bi_\bz_\be());\n 93\n-98 template\n-_\b9_\b9 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be(Args&&... args) :\n-100 Base(std::forward(args)...)\n-101 {\n-102 Dune::Hybrid::forEach(getImplementations(), [&,this](auto feImpl) {\n-103 auto implIndex = feImpl.first;\n-104 if (cache_.size() < implIndex+1)\n-105 cache_.resize(implIndex+1);\n-106 cache_[implIndex] = feImpl.second();\n-107 });\n-108 }\n-109\n-_\b1_\b1_\b1 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be(const _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be& other)\n-= default;\n-112\n-_\b1_\b1_\b4 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be&& other) =\n-default;\n-115\n-_\b1_\b1_\b7 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b (const\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be& other) = default;\n-118\n-_\b1_\b2_\b0 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b (_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be&&\n-other) = default;\n+94 switch (direction) {\n+95 case 0:\n+96 out[0] = out[1] = 2;\n+97 out[2] = out[3] =-2;\n+98 break;\n+99 case 1:\n+100 out[0] = out[1] =-2;\n+101 out[2] = out[3] = 2;\n+102 break;\n+103 default:\n+104 out[0] = out[1] = out[2] = out[3] = 0;\n+105 break;\n+106 }\n+107 } else {\n+108 out[0] = out[1] = out[2] = out[3] = 0;\n+109 }\n+110 }\n+111\n+_\b1_\b1_\b3 unsigned int _\bo_\br_\bd_\be_\br () const\n+114 {\n+115 // must be 2 here since it contains x^2 and x^2\n+116 return 2;\n+117 }\n+118 };\n+119\n+120} //namespace Dune\n 121\n-126 template\n-_\b1_\b2_\b7 const auto& _\bg_\be_\bt(const Key&... key) const\n-128 {\n-129 auto implIndex = index(key...);\n-130 if (implIndex >= cache_.size())\n-131 DUNE_THROW(Dune::RangeError,\"There is no LocalFiniteElement of the\n-requested type.\");\n-132 if (not(cache_[implIndex]))\n-133 DUNE_THROW(Dune::RangeError,\"There is no LocalFiniteElement of the\n-requested type.\");\n-134 return cache_[implIndex];\n-135 }\n-136\n-137private:\n-138 std::vector cache_;\n-139};\n-140\n-141\n-142\n-143} // namespace Dune\n-144\n-145\n-146\n-147\n-148#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh\n+122#endif // #ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-A cache storing a compile time selection of local finite element\n-implementations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-LocalFiniteElementVariantCache & operator=(const LocalFiniteElementVariantCache\n-&other)=default\n-Copy assignment.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-LocalFiniteElementVariantCache(Args &&... args)\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-LocalFiniteElementVariantCache(LocalFiniteElementVariantCache &&other)=default\n-Move constructor.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n-const auto & get(const Key &... key) const\n-Get the LocalFiniteElement for the given key data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-LocalFiniteElementVariantCache(const LocalFiniteElementVariantCache\n-&other)=default\n-Copy constructor.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-typename GenerateLFEVariant< Implementations >::type FiniteElementType\n-Type of exported LocalFiniteElement's.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n+DF DomainFieldType\n+Export type for domain field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, FieldVector< D, 2 >, R, 1, FieldVector< R, 1 >,\n+FieldMatrix< R, 1, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+evaluate all shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+polynomial order of the shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+evaluate jacobian of all shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:48\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: virtualinterface.hh File Reference\n+dune-localfunctions: rannacherturek.hh File Reference\n \n \n \n \n \n \n \n@@ -65,58 +65,29 @@\n \n \n \n \n \n \n \n
    \n- \n-
    virtualinterface.hh File Reference
    \n+
    rannacherturek.hh File Reference
    \n
    \n
    \n-
    #include <type_traits>
    \n-#include <array>
    \n-#include <vector>
    \n-#include <functional>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+\n+

    Convenience header that includes all available Rannacher-Turek LocalFiniteElements. \n+More...

    \n+\n

    Go to the source code of this file.

    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-

    \n-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...
     
    \n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

    Convenience header that includes all available Rannacher-Turek LocalFiniteElements.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,39 +1,16 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-virtualinterface.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+rannacherturek.hh File Reference\n+Convenience header that includes all available Rannacher-Turek\n+LocalFiniteElements. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bT_\b _\b>\n-\u00a0 virtual base class for a local basis _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b _\b>\n-\u00a0 virtual base class for a local interpolation _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b _\b>\n-\u00a0 virtual base class for a local interpolation _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-\u00a0 virtual base class for local coefficients _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bT_\b _\b>\n-\u00a0 virtual base class for local finite elements with functions _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Convenience header that includes all available Rannacher-Turek\n+LocalFiniteElements.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: virtualinterface.hh Source File\n+dune-localfunctions: rannacherturek.hh Source File\n \n \n \n \n \n \n \n@@ -70,244 +70,27 @@\n \n \n \n \n \n \n \n
    \n-
    virtualinterface.hh
    \n+
    rannacherturek.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
    \n-
    7
    \n-
    8#include <type_traits>
    \n-
    9#include <array>
    \n-
    10#include <vector>
    \n-
    11#include <functional>
    \n-
    12
    \n-
    13#include <dune/geometry/type.hh>
    \n-
    14
    \n-\n-\n-\n-
    18
    \n-
    19namespace Dune
    \n-
    20{
    \n-
    21
    \n-
    22 // forward declaration needed by the helper traits
    \n-
    23 template<class DomainType, class RangeType>
    \n-
    24 class LocalInterpolationVirtualInterface;
    \n-
    25
    \n-
    26
    \n-
    27
    \n-
    28 // -----------------------------------------------------------------
    \n-
    29 // Basis
    \n-
    30 // -----------------------------------------------------------------
    \n-
    31
    \n-
    38 template<class T>
    \n-
    \n-\n-
    40 {
    \n-
    41 public:
    \n-
    42 using Traits = T;
    \n-
    43
    \n-
    44
    \n-\n-
    46
    \n-
    48 virtual unsigned int size () const = 0;
    \n-
    49
    \n-
    51 virtual unsigned int order () const = 0;
    \n-
    52
    \n-
    58 virtual void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    59 std::vector<typename Traits::RangeType>& out) const = 0;
    \n-
    60
    \n-
    69 virtual void evaluateJacobian(const typename Traits::DomainType& in, // position
    \n-
    70 std::vector<typename Traits::JacobianType>& out) const = 0;
    \n-
    71
    \n-
    77 virtual void partial(const std::array<unsigned int,Traits::dimDomain>& order,
    \n-
    78 const typename Traits::DomainType& in,
    \n-
    79 std::vector<typename Traits::RangeType>& out) const = 0;
    \n-
    80 };
    \n-
    \n-
    81
    \n-
    82
    \n-
    83
    \n-
    84 // -----------------------------------------------------------------
    \n-
    85 // Interpolation
    \n-
    86 // -----------------------------------------------------------------
    \n-
    87
    \n-
    100 template<class DomainType, class RangeType>
    \n-
    \n-\n-
    102 {
    \n-
    103 public:
    \n-
    104
    \n-
    106 using FunctionType = std::function<RangeType(DomainType)>;
    \n-
    107
    \n-
    109 typedef typename RangeType::field_type CoefficientType;
    \n-
    110
    \n-\n-
    112
    \n-
    120 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
    \n-
    121 };
    \n-
    \n-
    122
    \n-
    130 template<class DomainType, class RangeType>
    \n-
    \n-\n-
    132 : public LocalInterpolationVirtualInterfaceBase<DomainType, RangeType>
    \n-
    133 {
    \n-
    134 public:
    \n-
    135
    \n-
    137 using FunctionType = std::function<RangeType(DomainType)>;
    \n-
    138
    \n-
    140 typedef typename RangeType::field_type CoefficientType;
    \n-
    141
    \n-
    142
    \n-\n-
    144
    \n-
    145 // This method is only noted again for to make the documentation complete.
    \n-
    146
    \n-
    154 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
    \n-
    155
    \n-
    161 template<class F,
    \n-
    162 std::enable_if_t<not std::is_base_of<FunctionType, F>::value, int> = 0>
    \n-
    \n-
    163 void interpolate (const F& f, std::vector<CoefficientType>& out) const
    \n-
    164 {
    \n-\n-
    166 asBase.interpolate(FunctionType(std::cref(f)),out);
    \n-
    167 }
    \n-
    \n-
    168
    \n-
    174 template<class F, class C>
    \n-
    \n-
    175 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    176 {
    \n-
    177 std::vector<CoefficientType> outDummy;
    \n-\n-
    179 asBase.interpolate(FunctionType(std::cref(f)),outDummy);
    \n-
    180 out.resize(outDummy.size());
    \n-
    181 for(typename std::vector<CoefficientType>::size_type i=0; i<outDummy.size(); ++i)
    \n-
    182 out[i] = outDummy[i];
    \n-
    183 }
    \n-
    \n-
    184 };
    \n-
    \n-
    185
    \n-
    186
    \n-
    187
    \n-
    188 // -----------------------------------------------------------------
    \n-
    189 // Coefficients
    \n-
    190 // -----------------------------------------------------------------
    \n-
    191
    \n-
    \n-\n-
    198 {
    \n-
    199 public:
    \n-
    200
    \n-\n-
    202
    \n-
    204 virtual std::size_t size () const = 0;
    \n-
    205
    \n-
    207 const virtual LocalKey& localKey (std::size_t i) const = 0;
    \n-
    208
    \n-
    209 };
    \n-
    \n-
    210
    \n-
    211
    \n-
    212
    \n-
    213 // -----------------------------------------------------------------
    \n-
    214 // Finite Element
    \n-
    215 // -----------------------------------------------------------------
    \n-
    216
    \n-
    217
    \n-
    223 template<class T>
    \n-
    \n-\n-
    225 {
    \n-
    226 using LocalBasisTraits = T;
    \n-
    227 public:
    \n-\n-\n-\n-\n-\n-\n-
    234
    \n-\n-
    236
    \n-
    238 virtual const typename Traits::LocalBasisType& localBasis () const = 0;
    \n-
    239
    \n-
    241 virtual const typename Traits::LocalCoefficientsType& localCoefficients () const = 0;
    \n-
    242
    \n-
    244 virtual const typename Traits::LocalInterpolationType& localInterpolation () const = 0;
    \n-
    245
    \n-
    247 virtual unsigned int size () const = 0;
    \n-
    248
    \n-
    250 virtual const GeometryType type () const = 0;
    \n-
    251
    \n-\n-
    253 };
    \n-
    \n-
    254}
    \n-
    255#endif
    \n-\n-\n-
    Definition bdfmcube.hh:18
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    R RangeType
    range type
    Definition common/localbasis.hh:52
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    virtual base class for a local interpolation
    Definition virtualinterface.hh:133
    \n-
    virtual ~LocalInterpolationVirtualInterface()
    Definition virtualinterface.hh:143
    \n-
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:137
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    determine coefficients interpolating a given function
    Definition virtualinterface.hh:175
    \n-
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:140
    \n-
    virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
    determine coefficients interpolating a given function
    \n-
    void interpolate(const F &f, std::vector< CoefficientType > &out) const
    determine coefficients interpolating a given function
    Definition virtualinterface.hh:163
    \n-
    virtual base class for a local basis
    Definition virtualinterface.hh:40
    \n-
    virtual unsigned int order() const =0
    Polynomial order of the shape functions.
    \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.
    \n-
    virtual unsigned int size() const =0
    Number of shape functions.
    \n-
    T Traits
    Definition virtualinterface.hh:42
    \n-
    virtual void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const =0
    Evaluate all basis function at given position.
    \n-
    virtual ~LocalBasisVirtualInterface()
    Definition virtualinterface.hh:45
    \n-
    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.
    \n-
    virtual base class for a local interpolation
    Definition virtualinterface.hh:102
    \n-
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:106
    \n-
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:109
    \n-
    virtual ~LocalInterpolationVirtualInterfaceBase()
    Definition virtualinterface.hh:111
    \n-
    virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
    determine coefficients interpolating a given function
    \n-
    virtual base class for local coefficients
    Definition virtualinterface.hh:198
    \n-
    virtual ~LocalCoefficientsVirtualInterface()
    Definition virtualinterface.hh:201
    \n-
    virtual std::size_t size() const =0
    number of coefficients
    \n-
    virtual const LocalKey & localKey(std::size_t i) const =0
    get i'th index
    \n-
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:225
    \n-
    virtual LocalFiniteElementVirtualInterface< T > * clone() const =0
    \n-
    virtual const Traits::LocalInterpolationType & localInterpolation() const =0
    \n-
    virtual unsigned int size() const =0
    \n-
    virtual const Traits::LocalBasisType & localBasis() const =0
    \n-
    virtual const GeometryType type() const =0
    \n-
    LocalFiniteElementTraits< LocalBasisVirtualInterface< LocalBasisTraits >, LocalCoefficientsVirtualInterface, LocalInterpolationVirtualInterface< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType > > Traits
    Definition virtualinterface.hh:233
    \n-
    virtual ~LocalFiniteElementVirtualInterface()
    Definition virtualinterface.hh:235
    \n-
    virtual const Traits::LocalCoefficientsType & localCoefficients() const =0
    \n-\n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,322 +1,17 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-virtualinterface.hh\n+rannacherturek.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH\n-6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH\n-7\n-8#include \n-9#include \n-10#include \n-11#include \n-12\n-13#include \n-14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-18\n-19namespace _\bD_\bu_\bn_\be\n-20{\n-21\n-22 // forward declaration needed by the helper traits\n-23 template\n-24 class LocalInterpolationVirtualInterface;\n-25\n-26\n-27\n-28 // -----------------------------------------------------------------\n-29 // Basis\n-30 // -----------------------------------------------------------------\n-31\n-38 template\n-_\b3_\b9 class _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-40 {\n-41 public:\n-_\b4_\b2 using _\bT_\br_\ba_\bi_\bt_\bs = T;\n-43\n-44\n-_\b4_\b5 virtual _\b~_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() {}\n-46\n-_\b4_\b8 virtual unsigned int _\bs_\bi_\bz_\be () const = 0;\n-49\n-_\b5_\b1 virtual unsigned int _\bo_\br_\bd_\be_\br () const = 0;\n-52\n-_\b5_\b8 virtual void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename Traits::DomainType& in,\n-59 std::vector& out) const = 0;\n-60\n-_\b6_\b9 virtual void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename Traits::DomainType& in, /\n-/ position\n-70 std::vector& out) const = 0;\n-71\n-_\b7_\b7 virtual void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array&\n-_\bo_\br_\bd_\be_\br,\n-78 const typename Traits::DomainType& in,\n-79 std::vector& out) const = 0;\n-80 };\n-81\n-82\n-83\n-84 // -----------------------------------------------------------------\n-85 // Interpolation\n-86 // -----------------------------------------------------------------\n-87\n-100 template\n-_\b1_\b0_\b1 class _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be\n-102 {\n-103 public:\n-104\n-_\b1_\b0_\b6 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be = std::function;\n-107\n-_\b1_\b0_\b9 typedef typename RangeType::field_type _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\n-110\n-_\b1_\b1_\b1 virtual _\b~_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be() {}\n-112\n-_\b1_\b2_\b0 virtual void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& f, std::\n-vector& out) const = 0;\n-121 };\n-122\n-130 template\n-_\b1_\b3_\b1 class _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-132 : public _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be\n-133 {\n-134 public:\n-135\n-_\b1_\b3_\b7 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be = std::function;\n-138\n-_\b1_\b4_\b0 typedef typename RangeType::field_type _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\n-141\n-142\n-_\b1_\b4_\b3 virtual _\b~_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() {}\n-144\n-145 // This method is only noted again for to make the documentation complete.\n-146\n-_\b1_\b5_\b4 virtual void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& f, std::\n-vector& out) const = 0;\n-155\n-161 template::value, int> = 0>\n-_\b1_\b6_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-164 {\n-165 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b<_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b>& asBase\n-= *this;\n-166 asBase._\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be(std::cref(f)),out);\n-167 }\n-168\n-174 template\n-_\b1_\b7_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-176 {\n-177 std::vector outDummy;\n-178 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b<_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b>& asBase\n-= *this;\n-179 asBase._\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be(std::cref(f)),outDummy);\n-180 out.resize(outDummy.size());\n-181 for(typename std::vector::size_type i=0; i\n-_\b2_\b2_\b4 class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-225 {\n-226 using LocalBasisTraits = T;\n-227 public:\n-228 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-229 _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b>,\n-230 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be,\n-231 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be<\n-232 typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be,\n-_\b2_\b3_\b3 typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be> > _\bT_\br_\ba_\bi_\bt_\bs;\n-234\n-_\b2_\b3_\b5 virtual _\b~_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() {}\n-236\n-_\b2_\b3_\b8 virtual const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const = 0;\n-239\n-_\b2_\b4_\b1 virtual const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs ()\n-const = 0;\n-242\n-_\b2_\b4_\b4 virtual const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-() const = 0;\n-245\n-_\b2_\b4_\b7 virtual unsigned int _\bs_\bi_\bz_\be () const = 0;\n-248\n-_\b2_\b5_\b0 virtual const GeometryType _\bt_\by_\bp_\be () const = 0;\n-251\n-_\b2_\b5_\b2 virtual _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b>* _\bc_\bl_\bo_\bn_\be() const = 0;\n-253 };\n-254}\n-255#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n-R RangeType\n-range type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for a local interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual ~LocalInterpolationVirtualInterface()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:143\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-std::function< RangeType(DomainType)> FunctionType\n-type of function to interpolate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-determine coefficients interpolating a given function\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:175\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be\n-RangeType::field_type CoefficientType\n-type of the coefficient vector in the interpolate method\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:140\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-virtual void interpolate(const FunctionType &f, std::vector< CoefficientType >\n-&out) const =0\n-determine coefficients interpolating a given function\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< CoefficientType > &out) const\n-determine coefficients interpolating a given function\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for a local basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\br_\bd_\be_\br\n-virtual unsigned int order() const =0\n-Polynomial order of the shape functions.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-virtual void evaluateJacobian(const typename Traits::DomainType &in, std::\n-vector< typename Traits::JacobianType > &out) const =0\n-Evaluate jacobian of all shape functions at given position.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n-virtual unsigned int size() const =0\n-Number of shape functions.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-T Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-virtual void evaluateFunction(const typename Traits::DomainType &in, std::\n-vector< typename Traits::RangeType > &out) const =0\n-Evaluate all basis function at given position.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual ~LocalBasisVirtualInterface()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-virtual void partial(const std::array< unsigned int, Traits::dimDomain >\n-&order, const typename Traits::DomainType &in, std::vector< typename Traits::\n-RangeType > &out) const =0\n-Evaluate partial derivatives of any order of all shape functions.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be\n-virtual base class for a local interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-std::function< RangeType(DomainType)> FunctionType\n-type of function to interpolate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be\n-RangeType::field_type CoefficientType\n-type of the coefficient vector in the interpolate method\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b:_\b:\n-_\b~_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be\n-virtual ~LocalInterpolationVirtualInterfaceBase()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-virtual void interpolate(const FunctionType &f, std::vector< CoefficientType >\n-&out) const =0\n-determine coefficients interpolating a given function\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for local coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:198\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual ~LocalCoefficientsVirtualInterface()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:201\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n-virtual std::size_t size() const =0\n-number of coefficients\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-virtual const LocalKey & localKey(std::size_t i) const =0\n-get i'th index\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for local finite elements with functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bl_\bo_\bn_\be\n-virtual LocalFiniteElementVirtualInterface< T > * clone() const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-virtual const Traits::LocalInterpolationType & localInterpolation() const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n-virtual unsigned int size() const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-virtual const Traits::LocalBasisType & localBasis() const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bt_\by_\bp_\be\n-virtual const GeometryType type() const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< LocalBasisVirtualInterface< LocalBasisTraits >,\n-LocalCoefficientsVirtualInterface, LocalInterpolationVirtualInterface< typename\n-LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:233\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual ~LocalFiniteElementVirtualInterface()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:235\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-virtual const Traits::LocalCoefficientsType & localCoefficients() const =0\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b._\bh_\bh>\n+_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: virtualwrappers.hh File Reference\n+dune-localfunctions: rannacherturek3dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,48 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    virtualwrappers.hh File Reference
    \n+
    rannacherturek3dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n+
    #include <numeric>
    \n+#include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n #include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/common/virtualinterface.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n \n

    \n 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::RannacherTurek3DLocalBasis< D, R >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,39 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-virtualwrappers.hh File Reference\n-#include \n+rannacherturek3dlocalbasis.hh File Reference\n+#include \n+#include \n+#include \n+#include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bm_\bp_\b,_\b _\bI_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bI_\bm_\bp_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\b _\bT_\b,_\b _\bI_\bm_\bp_\b _\b>\n-\u00a0 class for wrapping a basis using the virtual interface _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b,_\b _\bI_\bm_\bp_\b _\b>\n-\u00a0 class for wrapping a local interpolation using the virtual interface\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\b _\bI_\bm_\bp_\b _\b>\n-\u00a0 class for wrapping local coefficients using the virtual interface\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\b _\bI_\bm_\bp_\b _\b>\n-\u00a0 class for wrapping a finite element using the virtual interface\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: virtualwrappers.hh Source File\n+dune-localfunctions: rannacherturek3dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,409 +70,166 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    virtualwrappers.hh
    \n+
    rannacherturek3dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH
    \n+
    5#ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9
    \n-\n-\n-\n+
    8#include <numeric>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12#include <dune/common/fmatrix.hh>
    \n
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    17 // forward declaration needed by friend declarations
    \n-
    18 template<class Imp>
    \n-
    19 class LocalFiniteElementVirtualImp;
    \n-
    20
    \n-
    21 // default clone method is the copy constructor
    \n-
    22 template<class Imp, bool IsInterface>
    \n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    22 template< class D, class R >
    \n
    \n-\n+\n
    24 {
    \n-
    \n-
    25 static Imp* clone(const Imp& imp)
    \n-
    26 {
    \n-
    27 return new Imp(imp);
    \n-
    28 }
    \n-
    \n-
    29 };
    \n-
    \n-
    30
    \n-
    31 // if FE derives from virtual interface the clone method is used
    \n-
    32 template<class Imp>
    \n-
    33 struct LocalFiniteElementCloneFactoryHelper<Imp, true>
    \n-
    34 {
    \n-
    35 static Imp* clone(const Imp& imp)
    \n-
    36 {
    \n-
    37 return imp.clone();
    \n-
    38 }
    \n-
    39 };
    \n-
    40
    \n-
    41 // factory template to clone and create an objects
    \n-
    42 template<class Imp>
    \n-
    \n-\n-
    44 {
    \n-\n-
    46
    \n-
    \n-
    47 static Imp* clone(const Imp& imp)
    \n-
    48 {
    \n-\n-
    50 }
    \n-
    \n-
    51
    \n-
    \n-
    52 static Imp* create()
    \n-
    53 {
    \n-
    54 return new Imp;
    \n-
    55 }
    \n-
    \n-
    56 };
    \n-
    \n-
    57
    \n-
    58
    \n-
    59
    \n-
    60 // -----------------------------------------------------------------
    \n-
    61 // Basis
    \n-
    62 // -----------------------------------------------------------------
    \n-
    63
    \n+
    25 static const int coefficients[ 6 ][ 6 ];
    \n+
    26
    \n+
    27 public:
    \n+\n+
    29 R, 1, FieldVector< R, 1 >,
    \n+
    30 FieldMatrix< R, 1, 3 > > Traits;
    \n+
    31
    \n+
    \n+
    33 unsigned int size () const
    \n+
    34 {
    \n+
    35 return 6;
    \n+
    36 }
    \n+
    \n+
    37
    \n+
    \n+
    39 inline void evaluateFunction ( const typename Traits::DomainType &in,
    \n+
    40 std::vector< typename Traits::RangeType > &out ) const
    \n+
    41 {
    \n+
    42 typedef typename Traits::RangeFieldType RangeFieldType;
    \n+
    43 RangeFieldType y[ 6 ] = { 1, in[ 0 ], in[ 1 ], in[ 2 ],
    \n+
    44 in[ 0 ]*in[ 0 ] - in[ 1 ]*in[ 1 ],
    \n+
    45 in[ 1 ]*in[ 1 ] - in[ 2 ]*in[ 2 ] };
    \n+
    46 out.resize( size() );
    \n+
    47 for( unsigned int i = 0; i < size(); ++i )
    \n+
    48 {
    \n+
    49 out[ i ] = RangeFieldType( 0 );
    \n+
    50 for( unsigned int j = 0; j < 6; ++j )
    \n+
    51 out[ i ] += coefficients[ i ][ j ]*y[ j ];
    \n+
    52 out[ i ] /= RangeFieldType( 3 );
    \n+
    53 }
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    \n+
    57 inline void evaluateJacobian ( const typename Traits::DomainType &in,
    \n+
    58 std::vector< typename Traits::JacobianType > &out ) const
    \n+
    59 {
    \n+
    60 typedef typename Traits::RangeFieldType RangeFieldType;
    \n+
    61 RangeFieldType y0[ 5 ] = { 1, 0, 0, 2*in[ 0 ], 0 };
    \n+
    62 RangeFieldType y1[ 5 ] = { 0, 1, 0, -2*in[ 1 ], 2*in[ 1 ] };
    \n+
    63 RangeFieldType y2[ 5 ] = { 0, 0, 1, 0, -2*in[ 2 ] };
    \n
    64
    \n-
    65
    \n-
    72 template<class T , class Imp>
    \n-
    \n-\n-\n-
    75 {
    \n-
    76 template<class FEImp>
    \n-\n+
    65 out.resize( size() );
    \n+
    66 for( unsigned int i = 0; i < size(); ++i )
    \n+
    67 {
    \n+
    68 out[ i ] = RangeFieldType( 0 );
    \n+
    69 for( unsigned int j = 0; j < 5; ++j )
    \n+
    70 {
    \n+
    71 out[ i ][ 0 ][ 0 ] += coefficients[ i ][ j+1 ]*y0[ j ];
    \n+
    72 out[ i ][ 0 ][ 1 ] += coefficients[ i ][ j+1 ]*y1[ j ];
    \n+
    73 out[ i ][ 0 ][ 2 ] += coefficients[ i ][ j+1 ]*y2[ j ];
    \n+
    74 }
    \n+
    75 out[ i ] /= RangeFieldType( 3 );
    \n+
    76 }
    \n+
    77 }
    \n+
    \n
    78
    \n-
    79 protected:
    \n-
    80
    \n-
    \n-
    82 LocalBasisVirtualImp( const Imp &imp )
    \n-
    83 : impl_(imp)
    \n-
    84 {}
    \n-
    \n-
    85
    \n-
    86 public:
    \n-
    87 using Traits = T;
    \n-
    88
    \n-
    \n-
    90 unsigned int size () const
    \n-
    91 {
    \n-
    92 return impl_.size();
    \n-
    93 }
    \n-
    \n-
    94
    \n-
    \n-
    96 unsigned int order () const
    \n-
    97 {
    \n-
    98 return impl_.order();
    \n-
    99 }
    \n-
    \n-
    100
    \n-
    \n-
    102 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    103 std::vector<typename Traits::RangeType>& out) const
    \n-
    104 {
    \n-
    105 impl_.evaluateFunction(in,out);
    \n-
    106 }
    \n-
    \n-
    107
    \n-
    \n-
    109 inline void evaluateJacobian(
    \n-
    110 const typename Traits::DomainType& in,
    \n-
    111 std::vector<typename Traits::JacobianType>& out) const
    \n-
    112 {
    \n-
    113 impl_.evaluateJacobian(in,out);
    \n-
    114 }
    \n+
    \n+
    80 void partial (const std::array<unsigned int, 3>& order,
    \n+
    81 const typename Traits::DomainType& in, // position
    \n+
    82 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    83 {
    \n+
    84 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    85 if (totalOrder == 0) {
    \n+
    86 evaluateFunction(in, out);
    \n+
    87 } else if (totalOrder == 1) {
    \n+
    88 out.resize(size());
    \n+
    89 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    90
    \n+
    91 using RangeFieldType = typename Traits::RangeFieldType;
    \n+
    92 RangeFieldType y[3][5] = { { 1.0, 0.0, 0.0, 2*in[0], 0.0 },
    \n+
    93 { 0.0, 1.0, 0.0, -2*in[1], 2*in[1] },
    \n+
    94 { 0.0, 0.0, 1.0, 0.0, -2*in[2] } };
    \n+
    95
    \n+
    96 for (std::size_t i = 0; i < size(); ++i) {
    \n+
    97 out[i] = RangeFieldType{0};
    \n+
    98 for (std::size_t j = 0; j < 5; ++j)
    \n+
    99 out[i] += coefficients[i][j+1] * y[direction][j];
    \n+
    100 out[i] /= RangeFieldType{3};
    \n+
    101 }
    \n+
    102 } else {
    \n+
    103 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    104 }
    \n+
    105 }
    \n+
    \n+
    106
    \n+
    \n+
    108 unsigned int order () const
    \n+
    109 {
    \n+
    110 return 2;
    \n+
    111 }
    \n
    \n-
    115
    \n-
    \n-
    121 void partial(const std::array<unsigned int,Traits::dimDomain>& order,
    \n-
    122 const typename Traits::DomainType& in,
    \n-
    123 std::vector<typename Traits::RangeType>& out) const
    \n-
    124 {
    \n-
    125 impl_.partial(order,in,out);
    \n-
    126 }
    \n+
    112 };
    \n
    \n+
    113
    \n+
    114
    \n+
    115
    \n+
    116 // RannacherTurek3DLocalBasis::coefficients
    \n+
    117 // ----------------------------------------
    \n+
    118
    \n+
    119 template< class D, class R >
    \n+
    120 const int RannacherTurek3DLocalBasis< D, R >
    \n+
    121 ::coefficients[ 6 ][ 6 ] = {{ 2, -7, 2, 2, 4, 2 },
    \n+
    122 { -1, -1, 2, 2, 4, 2 },
    \n+
    123 { 2, 2, -7, 2, -2, 2 },
    \n+
    124 { -1, 2, -1, 2, -2, 2 },
    \n+
    125 { 2, 2, 2, -7, -2, -4 },
    \n+
    126 { -1, 2, 2, -1, -2, -4 }};
    \n
    127
    \n-
    128 protected:
    \n-
    129 const Imp& impl_;
    \n-
    130 };
    \n-
    \n-
    131
    \n-
    132
    \n-
    133
    \n-
    134 // -----------------------------------------------------------------
    \n-
    135 // Interpolation
    \n-
    136 // -----------------------------------------------------------------
    \n-
    137
    \n-
    146 template<class DomainType, class RangeType, class Imp>
    \n-
    \n-\n-
    148 : public LocalInterpolationVirtualInterface< DomainType, RangeType >
    \n-
    149 {
    \n-
    150 template<class FEImp>
    \n-\n-
    152
    \n-\n-
    154
    \n-
    155 protected:
    \n-
    156
    \n-
    \n-\n-
    159 : impl_(imp) {}
    \n-
    \n-
    160
    \n-
    161 public:
    \n-
    162
    \n-\n-
    164
    \n-\n-
    166
    \n-
    \n-
    168 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const
    \n-
    169 {
    \n-
    170 impl_.interpolate(f,out);
    \n-
    171 }
    \n-
    \n-
    172
    \n-
    173 protected:
    \n-
    174 const Imp& impl_;
    \n-
    175
    \n-
    176 };
    \n-
    \n-
    177
    \n-
    178
    \n-
    179
    \n-
    180 // -----------------------------------------------------------------
    \n-
    181 // Coefficients
    \n-
    182 // -----------------------------------------------------------------
    \n-
    183
    \n-
    190 template<class Imp>
    \n-
    \n-\n-\n-
    193 {
    \n-
    194 template<class FEImp>
    \n-\n-
    196
    \n-
    197 protected:
    \n-
    198
    \n-
    \n-\n-
    201 : impl_(imp)
    \n-
    202 {}
    \n-
    \n-
    203
    \n-
    204 public:
    \n-
    205
    \n-
    \n-
    207 std::size_t size () const
    \n-
    208 {
    \n-
    209 return impl_.size();
    \n-
    210 }
    \n-
    \n-
    211
    \n-
    \n-
    213 const LocalKey& localKey (std::size_t i) const
    \n-
    214 {
    \n-
    215 return impl_.localKey(i);
    \n-
    216 }
    \n-
    \n-
    217
    \n-
    218 protected:
    \n-
    219 const Imp& impl_;
    \n-
    220
    \n-
    221 };
    \n-
    \n-
    222
    \n-
    223
    \n-
    224
    \n-
    225 // -----------------------------------------------------------------
    \n-
    226 // Finite Element
    \n-
    227 // -----------------------------------------------------------------
    \n-
    228
    \n-
    237 template<class Imp>
    \n-
    \n-\n-
    239 : public LocalFiniteElementVirtualInterface<typename Imp::Traits::LocalBasisType::Traits>
    \n-
    240 {
    \n-
    241 using LocalBasisTraits = typename Imp::Traits::LocalBasisType::Traits;
    \n-\n-
    243
    \n-
    244 public:
    \n-
    245 typedef typename Interface::Traits Traits;
    \n-
    246
    \n-\n-
    254
    \n-\n-
    262
    \n-\n-
    270
    \n-
    \n-\n-
    272 {
    \n-
    273 delete impl_;
    \n-
    274 }
    \n-
    \n-
    275
    \n-
    \n-
    277 const typename Traits::LocalBasisType& localBasis () const
    \n-
    278 {
    \n-
    279 return localBasisImp_;
    \n-
    280 }
    \n-
    \n-
    281
    \n-
    \n-\n-
    284 {
    \n-\n-
    286 }
    \n-
    \n-
    287
    \n-
    \n-\n-
    290 {
    \n-\n-
    292 }
    \n-
    \n-
    293
    \n-
    \n-
    295 unsigned int size () const
    \n-
    296 {
    \n-
    297 return impl_->size();
    \n-
    298 }
    \n-
    \n-
    299
    \n-
    \n-
    301 const GeometryType type () const
    \n-
    302 {
    \n-
    303 return impl_->type();
    \n-
    304 }
    \n-
    \n-
    305
    \n-
    \n-\n-
    312 {
    \n-
    313 return new LocalFiniteElementVirtualImp<Imp>(*this);
    \n-
    314 }
    \n-
    \n-
    315
    \n-
    316 protected:
    \n-
    317 const Imp* impl_;
    \n-
    318
    \n-\n-\n-\n-\n-
    323 typename Imp::Traits::LocalInterpolationType> localInterpolationImp_;
    \n-
    324 };
    \n-
    \n-
    325}
    \n-
    326#endif
    \n-\n-\n+
    128} //namespace Dune
    \n+
    129
    \n+
    130#endif // #ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    R RangeType
    range type
    Definition common/localbasis.hh:52
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    virtual base class for a local interpolation
    Definition virtualinterface.hh:133
    \n-
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:137
    \n-
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:140
    \n-
    virtual base class for a local basis
    Definition virtualinterface.hh:40
    \n-
    virtual base class for local coefficients
    Definition virtualinterface.hh:198
    \n-
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:225
    \n-
    class for wrapping a finite element using the virtual interface
    Definition virtualwrappers.hh:240
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition virtualwrappers.hh:277
    \n-
    virtual LocalFiniteElementVirtualImp< Imp > * clone() const
    clone this wrapper
    Definition virtualwrappers.hh:311
    \n-
    const LocalInterpolationVirtualImp< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType, typename Imp::Traits::LocalInterpolationType > localInterpolationImp_
    Definition virtualwrappers.hh:323
    \n-
    LocalFiniteElementVirtualImp(const Imp &imp)
    taking a LocalFiniteElementVirtualInterface implementation
    Definition virtualwrappers.hh:248
    \n-
    Interface::Traits Traits
    Definition virtualwrappers.hh:245
    \n-
    LocalFiniteElementVirtualImp()
    Default constructor. Assumes that the implementation class is default constructible as well.
    Definition virtualwrappers.hh:256
    \n-
    LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)
    Copy constructor needed for deep copy.
    Definition virtualwrappers.hh:264
    \n-
    ~LocalFiniteElementVirtualImp()
    Definition virtualwrappers.hh:271
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition virtualwrappers.hh:295
    \n-
    const GeometryType type() const
    Definition virtualwrappers.hh:301
    \n-
    const Imp * impl_
    Definition virtualwrappers.hh:317
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition virtualwrappers.hh:283
    \n-
    const LocalBasisVirtualImp< LocalBasisTraits, typename Imp::Traits::LocalBasisType > localBasisImp_
    Definition virtualwrappers.hh:319
    \n-
    const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType > localCoefficientsImp_
    Definition virtualwrappers.hh:320
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition virtualwrappers.hh:289
    \n-
    Definition virtualwrappers.hh:24
    \n-
    static Imp * clone(const Imp &imp)
    Definition virtualwrappers.hh:25
    \n-
    Definition virtualwrappers.hh:44
    \n-
    static Imp * clone(const Imp &imp)
    Definition virtualwrappers.hh:47
    \n-
    static Imp * create()
    Definition virtualwrappers.hh:52
    \n-
    LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::Traits > Interface
    Definition virtualwrappers.hh:45
    \n-
    class for wrapping a basis using the virtual interface
    Definition virtualwrappers.hh:75
    \n-
    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
    \n-
    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
    \n-
    const Imp & impl_
    Definition virtualwrappers.hh:129
    \n-
    unsigned int size() const
    Number of shape functions.
    Definition virtualwrappers.hh:90
    \n-
    T Traits
    Definition virtualwrappers.hh:87
    \n-
    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
    \n-
    LocalBasisVirtualImp(const Imp &imp)
    constructor taking an implementation of the interface
    Definition virtualwrappers.hh:82
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition virtualwrappers.hh:96
    \n-
    class for wrapping a local interpolation using the virtual interface
    Definition virtualwrappers.hh:149
    \n-
    virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const
    determine coefficients interpolating a given function
    Definition virtualwrappers.hh:168
    \n-
    const Imp & impl_
    Definition virtualwrappers.hh:174
    \n-
    Base::FunctionType FunctionType
    Definition virtualwrappers.hh:163
    \n-
    LocalInterpolationVirtualImp(const Imp &imp)
    constructor taking an implementation of the Dune::LocalInterpolationVirtualInterface
    Definition virtualwrappers.hh:158
    \n-
    Base::CoefficientType CoefficientType
    Definition virtualwrappers.hh:165
    \n-
    class for wrapping local coefficients using the virtual interface
    Definition virtualwrappers.hh:193
    \n-
    LocalCoefficientsVirtualImp(const Imp &imp)
    constructor taking an implementation of the Dune::LocalCoefficientsVirtualInterface
    Definition virtualwrappers.hh:200
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition virtualwrappers.hh:213
    \n-
    std::size_t size() const
    number of coefficients
    Definition virtualwrappers.hh:207
    \n-
    const Imp & impl_
    Definition virtualwrappers.hh:219
    \n+
    RF RangeFieldType
    Export type for range field.
    Definition common/localbasis.hh:46
    \n+
    Definition rannacherturek3dlocalbasis.hh:24
    \n+
    LocalBasisTraits< D, 3, FieldVector< D, 3 >, R, 1, FieldVector< R, 1 >, FieldMatrix< R, 1, 3 > > Traits
    Definition rannacherturek3dlocalbasis.hh:30
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    evaluate all shape functions
    Definition rannacherturek3dlocalbasis.hh:39
    \n+
    unsigned int size() const
    number of shape functions
    Definition rannacherturek3dlocalbasis.hh:33
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    evaluate jacobian of all shape functions
    Definition rannacherturek3dlocalbasis.hh:57
    \n+
    unsigned int order() const
    polynomial order of the shape functions
    Definition rannacherturek3dlocalbasis.hh:108
    \n+
    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 rannacherturek3dlocalbasis.hh:80
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,489 +1,179 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-virtualwrappers.hh\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd\n+rannacherturek3dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH\n-6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH\n+5#ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH\n+6#define DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+8#include \n+9#include \n+10\n+11#include \n+12#include \n 13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-17 // forward declaration needed by friend declarations\n-18 template\n-19 class LocalFiniteElementVirtualImp;\n-20\n-21 // default clone method is the copy constructor\n-22 template\n-_\b2_\b3 struct _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+22 template< class D, class R >\n+_\b2_\b3 class _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n 24 {\n-_\b2_\b5 static Imp* _\bc_\bl_\bo_\bn_\be(const Imp& imp)\n-26 {\n-27 return new Imp(imp);\n-28 }\n-29 };\n-30\n-31 // if FE derives from virtual interface the clone method is used\n-32 template\n-33 struct LocalFiniteElementCloneFactoryHelper\n+25 static const int coefficients[ 6 ][ 6 ];\n+26\n+27 public:\n+28 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\b,_\b _\b3_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bD_\b,_\b _\b3_\b _\b>,\n+29 R, 1, FieldVector< R, 1 >,\n+_\b3_\b0 FieldMatrix< R, 1, 3 > > _\bT_\br_\ba_\bi_\bt_\bs;\n+31\n+_\b3_\b3 unsigned int _\bs_\bi_\bz_\be () const\n 34 {\n-35 static Imp* _\bc_\bl_\bo_\bn_\be(const Imp& imp)\n-36 {\n-37 return imp.clone();\n-38 }\n-39 };\n-40\n-41 // factory template to clone and create an objects\n-42 template\n-_\b4_\b3 struct _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-44 {\n-_\b4_\b5 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b> _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n-46\n-_\b4_\b7 static Imp* _\bc_\bl_\bo_\bn_\be(const Imp& imp)\n+35 return 6;\n+36 }\n+37\n+_\b3_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be &in,\n+40 std::vector< typename Traits::RangeType > &out ) const\n+41 {\n+42 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be RangeFieldType;\n+43 RangeFieldType y[ 6 ] = { 1, in[ 0 ], in[ 1 ], in[ 2 ],\n+44 in[ 0 ]*in[ 0 ] - in[ 1 ]*in[ 1 ],\n+45 in[ 1 ]*in[ 1 ] - in[ 2 ]*in[ 2 ] };\n+46 out.resize( _\bs_\bi_\bz_\be() );\n+47 for( unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i )\n 48 {\n-49 return _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br_\b<_\bI_\bm_\bp_\b,_\b _\bs_\bt_\bd_\b:_\b:_\bi_\bs_\b__\bb_\ba_\bs_\be_\b__\bo_\bf_\b<_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b,\n-_\bI_\bm_\bp_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be>_\b:_\b:_\bc_\bl_\bo_\bn_\be(imp);\n-50 }\n-51\n-_\b5_\b2 static Imp* _\bc_\br_\be_\ba_\bt_\be()\n-53 {\n-54 return new Imp;\n-55 }\n-56 };\n-57\n-58\n-59\n-60 // -----------------------------------------------------------------\n-61 // Basis\n-62 // -----------------------------------------------------------------\n-63\n+49 out[ i ] = RangeFieldType( 0 );\n+50 for( unsigned int j = 0; j < 6; ++j )\n+51 out[ i ] += coefficients[ i ][ j ]*y[ j ];\n+52 out[ i ] /= RangeFieldType( 3 );\n+53 }\n+54 }\n+55\n+_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be &in,\n+58 std::vector< typename Traits::JacobianType > &out ) const\n+59 {\n+60 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be RangeFieldType;\n+61 RangeFieldType y0[ 5 ] = { 1, 0, 0, 2*in[ 0 ], 0 };\n+62 RangeFieldType y1[ 5 ] = { 0, 1, 0, -2*in[ 1 ], 2*in[ 1 ] };\n+63 RangeFieldType y2[ 5 ] = { 0, 0, 1, 0, -2*in[ 2 ] };\n 64\n-65\n-72 template\n-_\b7_\b3 class _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-74 : public _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-75 {\n-76 template\n-_\b7_\b7 friend class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp;\n+65 out.resize( _\bs_\bi_\bz_\be() );\n+66 for( unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i )\n+67 {\n+68 out[ i ] = RangeFieldType( 0 );\n+69 for( unsigned int j = 0; j < 5; ++j )\n+70 {\n+71 out[ i ][ 0 ][ 0 ] += coefficients[ i ][ j+1 ]*y0[ j ];\n+72 out[ i ][ 0 ][ 1 ] += coefficients[ i ][ j+1 ]*y1[ j ];\n+73 out[ i ][ 0 ][ 2 ] += coefficients[ i ][ j+1 ]*y2[ j ];\n+74 }\n+75 out[ i ] /= RangeFieldType( 3 );\n+76 }\n+77 }\n 78\n-79 protected:\n-80\n-_\b8_\b2 _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp( const Imp &imp )\n-83 : _\bi_\bm_\bp_\bl_\b_(imp)\n-84 {}\n-85\n-86 public:\n-_\b8_\b7 using _\bT_\br_\ba_\bi_\bt_\bs = T;\n-88\n-_\b9_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-91 {\n-92 return _\bi_\bm_\bp_\bl_\b_.size();\n-93 }\n-94\n-_\b9_\b6 unsigned int _\bo_\br_\bd_\be_\br () const\n-97 {\n-98 return _\bi_\bm_\bp_\bl_\b_.order();\n-99 }\n-100\n-_\b1_\b0_\b2 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename Traits::DomainType& in,\n-103 std::vector& out) const\n-104 {\n-105 _\bi_\bm_\bp_\bl_\b_.evaluateFunction(in,out);\n-106 }\n-107\n-_\b1_\b0_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(\n-110 const typename Traits::DomainType& in,\n-111 std::vector& out) const\n-112 {\n-113 _\bi_\bm_\bp_\bl_\b_.evaluateJacobian(in,out);\n-114 }\n+_\b8_\b0 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+81 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+82 std::vector& out) const // return value\n+83 {\n+84 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+85 if (totalOrder == 0) {\n+86 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+87 } else if (totalOrder == 1) {\n+88 out.resize(_\bs_\bi_\bz_\be());\n+89 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n+_\bo_\br_\bd_\be_\br.end(), 1));\n+90\n+91 using RangeFieldType = typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be;\n+92 RangeFieldType y[3][5] = { { 1.0, 0.0, 0.0, 2*in[0], 0.0 },\n+93 { 0.0, 1.0, 0.0, -2*in[1], 2*in[1] },\n+94 { 0.0, 0.0, 1.0, 0.0, -2*in[2] } };\n+95\n+96 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i) {\n+97 out[i] = RangeFieldType{0};\n+98 for (std::size_t j = 0; j < 5; ++j)\n+99 out[i] += coefficients[i][j+1] * y[direction][j];\n+100 out[i] /= RangeFieldType{3};\n+101 }\n+102 } else {\n+103 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+104 }\n+105 }\n+106\n+_\b1_\b0_\b8 unsigned int _\bo_\br_\bd_\be_\br () const\n+109 {\n+110 return 2;\n+111 }\n+112 };\n+113\n+114\n 115\n-_\b1_\b2_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array& _\bo_\br_\bd_\be_\br,\n-122 const typename Traits::DomainType& in,\n-123 std::vector& out) const\n-124 {\n-125 _\bi_\bm_\bp_\bl_\b_.partial(_\bo_\br_\bd_\be_\br,in,out);\n-126 }\n+116 // RannacherTurek3DLocalBasis::coefficients\n+117 // ----------------------------------------\n+118\n+119 template< class D, class R >\n+120 const int RannacherTurek3DLocalBasis< D, R >\n+121 ::coefficients[ 6 ][ 6 ] = {{ 2, -7, 2, 2, 4, 2 },\n+122 { -1, -1, 2, 2, 4, 2 },\n+123 { 2, 2, -7, 2, -2, 2 },\n+124 { -1, 2, -1, 2, -2, 2 },\n+125 { 2, 2, 2, -7, -2, -4 },\n+126 { -1, 2, 2, -1, -2, -4 }};\n 127\n-128 protected:\n-_\b1_\b2_\b9 const Imp& _\bi_\bm_\bp_\bl_\b_;\n-130 };\n-131\n-132\n-133\n-134 // -----------------------------------------------------------------\n-135 // Interpolation\n-136 // -----------------------------------------------------------------\n-137\n-146 template\n-_\b1_\b4_\b7 class _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-148 : public _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< DomainType, RangeType >\n-149 {\n-150 template\n-_\b1_\b5_\b1 friend class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp;\n-152\n-153 typedef _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b _\b> _\bB_\ba_\bs_\be;\n-154\n-155 protected:\n-156\n-_\b1_\b5_\b8 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp( const Imp &imp)\n-159 : _\bi_\bm_\bp_\bl_\b_(imp) {}\n-160\n-161 public:\n-162\n-_\b1_\b6_\b3 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be;\n-164\n-_\b1_\b6_\b5 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\n-166\n-_\b1_\b6_\b8 virtual void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& f, std::\n-vector& out) const\n-169 {\n-170 _\bi_\bm_\bp_\bl_\b_.interpolate(f,out);\n-171 }\n-172\n-173 protected:\n-_\b1_\b7_\b4 const Imp& _\bi_\bm_\bp_\bl_\b_;\n-175\n-176 };\n-177\n-178\n-179\n-180 // -----------------------------------------------------------------\n-181 // Coefficients\n-182 // -----------------------------------------------------------------\n-183\n-190 template\n-_\b1_\b9_\b1 class _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-192 : public _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-193 {\n-194 template\n-_\b1_\b9_\b5 friend class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp;\n-196\n-197 protected:\n-198\n-_\b2_\b0_\b0 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp( const Imp &imp )\n-201 : _\bi_\bm_\bp_\bl_\b_(imp)\n-202 {}\n-203\n-204 public:\n-205\n-_\b2_\b0_\b7 std::size_t _\bs_\bi_\bz_\be () const\n-208 {\n-209 return _\bi_\bm_\bp_\bl_\b_.size();\n-210 }\n-211\n-_\b2_\b1_\b3 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-214 {\n-215 return _\bi_\bm_\bp_\bl_\b_.localKey(i);\n-216 }\n-217\n-218 protected:\n-_\b2_\b1_\b9 const Imp& _\bi_\bm_\bp_\bl_\b_;\n-220\n-221 };\n-222\n-223\n-224\n-225 // -----------------------------------------------------------------\n-226 // Finite Element\n-227 // -----------------------------------------------------------------\n-228\n-237 template\n-_\b2_\b3_\b8 class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-239 : public _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-240 {\n-241 using LocalBasisTraits = typename Imp::Traits::LocalBasisType::Traits;\n-242 using _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b>;\n-243\n-244 public:\n-_\b2_\b4_\b5 typedef typename _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n-246\n-_\b2_\b4_\b8 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp( const Imp &imp )\n-249 : _\bi_\bm_\bp_\bl_\b_(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by::_\bc_\bl_\bo_\bn_\be(imp)),\n-250 _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()),\n-251 _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs()),\n-252 _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n-253 {}\n-254\n-_\b2_\b5_\b6 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp()\n-257 : _\bi_\bm_\bp_\bl_\b_(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by::create()),\n-258 _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()),\n-259 _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs()),\n-260 _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n-261 {}\n-262\n-_\b2_\b6_\b4 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp(const _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp& other)\n-265 : _\bi_\bm_\bp_\bl_\b_(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by::_\bc_\bl_\bo_\bn_\be(*other._\bi_\bm_\bp_\bl_\b_)),\n-266 _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()),\n-267 _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs()),\n-268 _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n-269 {}\n-270\n-_\b2_\b7_\b1 _\b~_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp()\n-272 {\n-273 delete _\bi_\bm_\bp_\bl_\b_;\n-274 }\n-275\n-_\b2_\b7_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-278 {\n-279 return _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_;\n-280 }\n-281\n-_\b2_\b8_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-284 {\n-285 return _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_;\n-286 }\n-287\n-_\b2_\b8_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-290 {\n-291 return _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_;\n-292 }\n-293\n-_\b2_\b9_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-296 {\n-297 return _\bi_\bm_\bp_\bl_\b_->size();\n-298 }\n-299\n-_\b3_\b0_\b1 const GeometryType _\bt_\by_\bp_\be () const\n-302 {\n-303 return _\bi_\bm_\bp_\bl_\b_->type();\n-304 }\n-305\n-_\b3_\b1_\b1 virtual _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bI_\bm_\bp_\b>* _\bc_\bl_\bo_\bn_\be() const\n-312 {\n-313 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bI_\bm_\bp_\b>(*this);\n-314 }\n-315\n-316 protected:\n-_\b3_\b1_\b7 const Imp* _\bi_\bm_\bp_\bl_\b_;\n-318\n-_\b3_\b1_\b9 const _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b> _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_;\n-_\b3_\b2_\b0 const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be_\b> _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_;\n-321 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_;\n-324 };\n-325}\n-326#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+128} //namespace Dune\n+129\n+130#endif // #ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n-R RangeType\n-range type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for a local interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-std::function< RangeType(DomainType)> FunctionType\n-type of function to interpolate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be\n-RangeType::field_type CoefficientType\n-type of the coefficient vector in the interpolate method\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:140\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for a local basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for local coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:198\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for local finite elements with functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-class for wrapping a finite element using the virtual interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:277\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bc_\bl_\bo_\bn_\be\n-virtual LocalFiniteElementVirtualImp< Imp > * clone() const\n-clone this wrapper\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:311\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_\n-const LocalInterpolationVirtualImp< typename LocalBasisTraits::DomainType,\n-typename LocalBasisTraits::RangeType, typename Imp::Traits::\n-LocalInterpolationType > localInterpolationImp_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:323\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-LocalFiniteElementVirtualImp(const Imp &imp)\n-taking a LocalFiniteElementVirtualInterface implementation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:248\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-Interface::Traits Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:245\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-LocalFiniteElementVirtualImp()\n-Default constructor. Assumes that the implementation class is default\n-constructible as well.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:256\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)\n-Copy constructor needed for deep copy.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:264\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-~LocalFiniteElementVirtualImp()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:295\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bt_\by_\bp_\be\n-const GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:301\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bm_\bp_\bl_\b_\n-const Imp * impl_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:317\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:283\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_\n-const LocalBasisVirtualImp< LocalBasisTraits, typename Imp::Traits::\n-LocalBasisType > localBasisImp_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:319\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_\n-const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType\n-> localCoefficientsImp_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:320\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:289\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bc_\bl_\bo_\bn_\be\n-static Imp * clone(const Imp &imp)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bl_\bo_\bn_\be\n-static Imp * clone(const Imp &imp)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Imp * create()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::\n-Traits > Interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-class for wrapping a basis using the virtual interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, Traits::dimDomain > &order, const\n-typename Traits::DomainType &in, std::vector< typename Traits::RangeType >\n-&out) const\n-Evaluate partial derivatives of any order of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n+RF RangeFieldType\n+Export type for range field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, FieldVector< D, 3 >, R, 1, FieldVector< R, 1 >,\n+FieldMatrix< R, 1, 3 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n typename Traits::RangeType > &out) const\n-Evaluate all basis function at given position.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bm_\bp_\bl_\b_\n-const Imp & impl_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bs_\bi_\bz_\be\n+evaluate all shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-Number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-T Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n typename Traits::JacobianType > &out) const\n-Evaluate jacobian of all shape functions at given position.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-LocalBasisVirtualImp(const Imp &imp)\n-constructor taking an implementation of the interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bo_\br_\bd_\be_\br\n+evaluate jacobian of all shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-class for wrapping a local interpolation using the virtual interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-virtual void interpolate(const FunctionType &f, std::vector< CoefficientType >\n-&out) const\n-determine coefficients interpolating a given function\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:168\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bm_\bp_\bl_\b_\n-const Imp & impl_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:174\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-Base::FunctionType FunctionType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-LocalInterpolationVirtualImp(const Imp &imp)\n-constructor taking an implementation of the Dune::\n-LocalInterpolationVirtualInterface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be\n-Base::CoefficientType CoefficientType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-class for wrapping local coefficients using the virtual interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:193\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-LocalCoefficientsVirtualImp(const Imp &imp)\n-constructor taking an implementation of the Dune::\n-LocalCoefficientsVirtualInterface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:200\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:213\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bm_\bp_\bl_\b_\n-const Imp & impl_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:219\n+polynomial order of the shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:80\n _\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localfiniteelementvariant.hh File Reference\n+dune-localfunctions: rannachertureklocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,34 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    localfiniteelementvariant.hh File Reference
    \n+
    rannachertureklocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <type_traits>
    \n-#include <variant>
    \n-#include <dune/common/typeutilities.hh>
    \n-#include <dune/common/std/type_traits.hh>
    \n-#include <dune/common/overloadset.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n \n

    \n Classes

    class  Dune::LocalFiniteElementVariant< Implementations >
     Type erasure class for wrapping LocalFiniteElement classes. More...
    struct  Dune::RannacherTurekLocalBasis< D, R, 2 >
     
    struct  Dune::RannacherTurekLocalBasis< D, R, 3 >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-localfiniteelementvariant.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+rannachertureklocalbasis.hh File Reference\n+#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bs_\b _\b>\n-\u00a0 Type erasure class for wrapping LocalFiniteElement classes. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localfiniteelementvariant.hh Source File\n+dune-localfunctions: rannachertureklocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,387 +70,60 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    localfiniteelementvariant.hh
    \n+
    rannachertureklocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \n+
    5#ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <type_traits>
    \n-
    10#include <variant>
    \n-
    11
    \n-
    12#include <dune/common/typeutilities.hh>
    \n-
    13#include <dune/common/std/type_traits.hh>
    \n-
    14#include <dune/common/overloadset.hh>
    \n-
    15
    \n-
    16#include <dune/geometry/type.hh>
    \n-
    17
    \n-\n-\n-\n-
    21
    \n-
    22
    \n-
    23namespace Dune {
    \n-
    24
    \n-
    25namespace Impl {
    \n+\n+\n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    13
    \n+
    24 template< class D, class R, unsigned int d >
    \n+\n
    26
    \n-
    27 // Helper for visiting a variant containing monostate.
    \n-
    28 // Since a generic lambda will in most cases not compile
    \n-
    29 // for monostate, we add special empty overloads for monostate.
    \n-
    30 // Hence visitIf will simply do nothing in the case of a
    \n-
    31 // monostate value.
    \n-
    32 template<class Visitor, class Variant>
    \n-
    33 void visitIf(Visitor&& visitor, Variant&& variant)
    \n-
    34 {
    \n-
    35 auto visitorWithFallback = overload([&](std::monostate&) {}, [&](const std::monostate&) {}, visitor);
    \n-
    36 std::visit(visitorWithFallback, variant);
    \n-
    37 }
    \n-
    38
    \n-
    39 template<class... Implementations>
    \n-
    40 class LocalBasisVariant
    \n-
    41 {
    \n-
    42
    \n-
    43 template<class I0, class... II>
    \n-
    44 struct FirstType
    \n-
    45 { using type = I0; };
    \n-
    46
    \n-
    47 using FirstImpTraits = typename FirstType<Implementations...>::type::Traits;
    \n-
    48
    \n-
    49 public:
    \n-
    50
    \n-
    51 // We do not simply copy Implementation::LocalBasisTraits because this
    \n-
    52 // may be implementation specific. To stay clean, we simply put all its
    \n-
    53 // data into the default LocalBasisTraits.
    \n-
    54 using Traits = typename Dune::LocalBasisTraits<
    \n-
    55 typename FirstImpTraits::DomainFieldType,
    \n-
    56 FirstImpTraits::dimDomain,
    \n-
    57 typename FirstImpTraits::DomainType,
    \n-
    58 typename FirstImpTraits::RangeFieldType,
    \n-
    59 FirstImpTraits::dimRange,
    \n-
    60 typename FirstImpTraits::RangeType,
    \n-
    61 typename FirstImpTraits::JacobianType>;
    \n-
    62
    \n-
    63 template<class Implementation>
    \n-
    64 LocalBasisVariant(const Implementation& impl) :
    \n-
    65 impl_(&impl),
    \n-
    66 size_(impl.size()),
    \n-
    67 order_(impl.order())
    \n-
    68 {}
    \n-
    69
    \n-
    70 LocalBasisVariant() = default;
    \n-
    71 LocalBasisVariant(const LocalBasisVariant& other) = default;
    \n-
    72 LocalBasisVariant(LocalBasisVariant&& other) = default;
    \n-
    73 LocalBasisVariant& operator=(const LocalBasisVariant& other) = default;
    \n-
    74 LocalBasisVariant& operator=(LocalBasisVariant&& other) = default;
    \n-
    75
    \n-
    79 unsigned int size() const
    \n-
    80 {
    \n-
    81 return size_;
    \n-
    82 }
    \n-
    83
    \n-
    87 unsigned int order() const
    \n-
    88 {
    \n-
    89 return order_;
    \n-
    90 }
    \n-
    91
    \n-
    95 inline void evaluateFunction(
    \n-
    96 const typename Traits::DomainType& x,
    \n-
    97 std::vector<typename Traits::RangeType>& out) const
    \n-
    98 {
    \n-
    99 Impl::visitIf([&](const auto* impl) { impl->evaluateFunction(x, out); }, impl_);
    \n-
    100 }
    \n-
    101
    \n-
    105 inline void evaluateJacobian(
    \n-
    106 const typename Traits::DomainType& x,
    \n-
    107 std::vector<typename Traits::JacobianType>& out) const
    \n-
    108 {
    \n-
    109 Impl::visitIf([&](const auto* impl) { impl->evaluateJacobian(x, out); }, impl_);
    \n-
    110 }
    \n-
    111
    \n-
    119 void partial(
    \n-
    120 const std::array<unsigned int,Traits::dimDomain>& order,
    \n-
    121 const typename Traits::DomainType& x,
    \n-
    122 std::vector<typename Traits::RangeType>& out) const
    \n-
    123 {
    \n-
    124 Impl::visitIf([&](const auto* impl) { impl->partial(order, x, out); }, impl_);
    \n-
    125 }
    \n-
    126
    \n-
    127 private:
    \n-
    128 std::variant<std::monostate, const Implementations*...> impl_;
    \n-
    129 std::size_t size_;
    \n-
    130 std::size_t order_;
    \n-
    131 };
    \n-
    132
    \n-
    133
    \n-
    134 template<class... Implementations>
    \n-
    135 class LocalCoefficientsVariant
    \n-
    136 {
    \n-
    137 public:
    \n-
    138
    \n-
    139 template<class Implementation>
    \n-
    140 LocalCoefficientsVariant(const Implementation& impl) :
    \n-
    141 impl_(&impl),
    \n-
    142 size_(impl.size())
    \n-
    143 {}
    \n-
    144
    \n-
    145 LocalCoefficientsVariant() = default;
    \n-
    146 LocalCoefficientsVariant(const LocalCoefficientsVariant& other) = default;
    \n-
    147 LocalCoefficientsVariant(LocalCoefficientsVariant&& other) = default;
    \n-
    148 LocalCoefficientsVariant& operator=(const LocalCoefficientsVariant& other) = default;
    \n-
    149 LocalCoefficientsVariant& operator=(LocalCoefficientsVariant&& other) = default;
    \n-
    150
    \n-
    154 unsigned int size() const
    \n-
    155 {
    \n-
    156 return size_;
    \n-
    157 }
    \n-
    158
    \n-
    159 const Dune::LocalKey& localKey (std::size_t i) const
    \n-
    160 {
    \n-
    161 // We can't use visitIf since we have to return something
    \n-
    162 // even for a monostate value. Since the return type is
    \n-
    163 // an l-value reference, we use a default constructed
    \n-
    164 // dummy LocalKey value.
    \n-
    165 static const Dune::LocalKey dummyLocalKey;
    \n-
    166 return std::visit(overload(
    \n-
    167 [&](const std::monostate&) -> decltype(auto) { return (dummyLocalKey);},
    \n-
    168 [&](const auto* impl) -> decltype(auto) { return impl->localKey(i); }), impl_);
    \n-
    169 }
    \n-
    170
    \n-
    171 private:
    \n-
    172 std::variant<std::monostate, const Implementations*...> impl_;
    \n-
    173 std::size_t size_;
    \n-
    174 };
    \n-
    175
    \n-
    176
    \n-
    177 template<class... Implementations>
    \n-
    178 class LocalInterpolationVariant
    \n-
    179 {
    \n-
    180 public:
    \n-
    181
    \n-
    182 template<class Implementation>
    \n-
    183 LocalInterpolationVariant(const Implementation& impl) :
    \n-
    184 impl_(&impl)
    \n-
    185 {}
    \n-
    186
    \n-
    187 LocalInterpolationVariant() = default;
    \n-
    188 LocalInterpolationVariant(const LocalInterpolationVariant& other) = default;
    \n-
    189 LocalInterpolationVariant(LocalInterpolationVariant&& other) = default;
    \n-
    190 LocalInterpolationVariant& operator=(const LocalInterpolationVariant& other) = default;
    \n-
    191 LocalInterpolationVariant& operator=(LocalInterpolationVariant&& other) = default;
    \n-
    192
    \n-
    193 template<typename F, typename C>
    \n-
    194 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    195 {
    \n-
    196 Impl::visitIf([&](const auto* impl) { impl->interpolate(ff, out); }, impl_);
    \n-
    197 }
    \n-
    198
    \n-
    199 private:
    \n-
    200 std::variant<std::monostate, const Implementations*...> impl_;
    \n-
    201 };
    \n-
    202
    \n-
    203} // namespace Impl
    \n-
    204
    \n-
    205
    \n-
    234 template<class... Implementations>
    \n-
    \n-\n-
    236 {
    \n-
    237
    \n-
    238 // In each LocalFooVariant we store a std::variant<std::monostate, const FooImpl*...>, i.e. a std::variant
    \n-
    239 // with the pointer to the Foo implementation unless LocalFiniteElementVariant stores a monostate. In this
    \n-
    240 // case each LocalFooVariant also stores a monostate (and not a monostate*).
    \n-
    241 using LocalBasis = Impl::LocalBasisVariant<typename Implementations::Traits::LocalBasisType...>;
    \n-
    242 using LocalCoefficients = Impl::LocalCoefficientsVariant<typename Implementations::Traits::LocalCoefficientsType...>;
    \n-
    243 using LocalInterpolation = Impl::LocalInterpolationVariant<typename Implementations::Traits::LocalInterpolationType...>;
    \n-
    244
    \n-
    245 // Update members after changing impl_
    \n-
    246 void updateMembers()
    \n-
    247 {
    \n-
    248 std::visit(overload(
    \n-
    249 [&](std::monostate&) {
    \n-
    250 localBasis_ = LocalBasis();
    \n-
    251 localCoefficients_ = LocalCoefficients();
    \n-
    252 localInterpolation_ = LocalInterpolation();
    \n-
    253 size_ = 0;
    \n-
    254 geometryType_ = GeometryType{};
    \n-
    255 }, [&](auto&& impl) {
    \n-
    256 localBasis_ = LocalBasis(impl.localBasis());
    \n-
    257 localCoefficients_ = LocalCoefficients(impl.localCoefficients());
    \n-
    258 localInterpolation_ = LocalInterpolation(impl.localInterpolation());
    \n-
    259 size_ = impl.size();
    \n-
    260 geometryType_ = impl.type();
    \n-
    261 }), impl_);
    \n-
    262 }
    \n-
    263
    \n-
    264 public:
    \n-
    265
    \n-\n-
    270
    \n-\n-
    275
    \n-
    \n-
    279 LocalFiniteElementVariant(const std::monostate& monostate)
    \n-
    280 {}
    \n-
    \n-
    281
    \n-
    288 template<class Implementation,
    \n-
    289 std::enable_if_t<std::disjunction<std::is_same<std::decay_t<Implementation>, Implementations>...>::value, int> = 0>
    \n-
    \n-
    290 LocalFiniteElementVariant(Implementation&& impl) :
    \n-
    291 impl_(std::forward<Implementation>(impl))
    \n-
    292 {
    \n-
    293 updateMembers();
    \n-
    294 }
    \n-
    \n-
    295
    \n-
    \n-\n-
    300 impl_(other.impl_)
    \n-
    301 {
    \n-
    302 updateMembers();
    \n-
    303 }
    \n-
    \n-
    304
    \n-
    \n-\n-
    309 impl_(std::move(other.impl_))
    \n-
    310 {
    \n-
    311 updateMembers();
    \n-
    312 }
    \n-
    \n-
    313
    \n-
    \n-\n-
    318 {
    \n-
    319 impl_ = other.impl_;
    \n-
    320 updateMembers();
    \n-
    321 return *this;
    \n-
    322 }
    \n-
    \n-
    323
    \n-
    \n-\n-
    328 {
    \n-
    329 impl_ = std::move(other.impl_);
    \n-
    330 updateMembers();
    \n-
    331 return *this;
    \n-
    332 }
    \n-
    \n-
    333
    \n-
    337 template<class Implementation,
    \n-
    338 std::enable_if_t<std::disjunction<std::is_same<std::decay_t<Implementation>, Implementations>...>::value, int> = 0>
    \n-
    \n-
    339 LocalFiniteElementVariant& operator=(Implementation&& impl)
    \n-
    340 {
    \n-
    341 impl_ = std::forward<Implementation>(impl);
    \n-
    342 updateMembers();
    \n-
    343 return *this;
    \n-
    344 }
    \n-
    \n-
    345
    \n-
    346
    \n-
    \n-
    350 const typename Traits::LocalBasisType& localBasis() const
    \n-
    351 {
    \n-
    352 return localBasis_;
    \n-
    353 }
    \n+
    27 template< class D, class R >
    \n+
    \n+
    28 struct RannacherTurekLocalBasis< D, R, 2 >
    \n+
    29 : public RannacherTurek2DLocalBasis< D, R >
    \n+
    30 {};
    \n+
    \n+
    31
    \n+
    32 template< class D, class R >
    \n+
    \n+
    33 struct RannacherTurekLocalBasis< D, R, 3 >
    \n+
    34 : public RannacherTurek3DLocalBasis< D, R >
    \n+
    35 {};
    \n
    \n-
    354
    \n-
    \n-
    358 const typename Traits::LocalCoefficientsType& localCoefficients() const
    \n-
    359 {
    \n-
    360 return localCoefficients_;
    \n-
    361 }
    \n-
    \n-
    362
    \n-
    \n-
    366 const typename Traits::LocalInterpolationType& localInterpolation() const
    \n-
    367 {
    \n-
    368 return localInterpolation_;
    \n-
    369 }
    \n-
    \n-
    370
    \n-
    \n-
    374 unsigned int size() const
    \n-
    375 {
    \n-
    376 return size_;
    \n-
    377 }
    \n-
    \n-
    378
    \n-
    \n-
    382 constexpr GeometryType type() const
    \n-
    383 {
    \n-
    384 return geometryType_;
    \n-
    385 }
    \n-
    \n-
    386
    \n-
    \n-
    398 const auto& variant() const
    \n-
    399 {
    \n-
    400 return impl_;
    \n-
    401 }
    \n-
    \n-
    402
    \n-
    \n-
    408 operator bool () const
    \n-
    409 {
    \n-
    410 return not(std::holds_alternative<std::monostate>(variant()));
    \n-
    411 }
    \n-
    \n-
    412
    \n-
    413 private:
    \n-
    414 std::variant<std::monostate, Implementations...> impl_;
    \n-
    415 std::size_t size_;
    \n-
    416 GeometryType geometryType_;
    \n-
    417 LocalBasis localBasis_;
    \n-
    418 LocalCoefficients localCoefficients_;
    \n-
    419 LocalInterpolation localInterpolation_;
    \n-
    420 };
    \n-
    \n-
    421
    \n-
    422} // end namespace Dune
    \n-
    423
    \n-
    424#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \n-\n-\n+
    36
    \n+
    37} // namespace Dune
    \n+
    38
    \n+
    39#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    Type erasure class for wrapping LocalFiniteElement classes.
    Definition localfiniteelementvariant.hh:236
    \n-
    typename Dune::LocalFiniteElementTraits< LocalBasis, LocalCoefficients, LocalInterpolation > Traits
    Export LocalFiniteElementTraits.
    Definition localfiniteelementvariant.hh:269
    \n-
    const auto & variant() const
    Provide access to underlying std::variant.
    Definition localfiniteelementvariant.hh:398
    \n-
    unsigned int size() const
    Number of shape functions.
    Definition localfiniteelementvariant.hh:374
    \n-
    constexpr GeometryType type() const
    Number of shape functions.
    Definition localfiniteelementvariant.hh:382
    \n-
    LocalFiniteElementVariant(LocalFiniteElementVariant &&other)
    Move constructor.
    Definition localfiniteelementvariant.hh:308
    \n-
    LocalFiniteElementVariant & operator=(Implementation &&impl)
    Assignment from implementation.
    Definition localfiniteelementvariant.hh:339
    \n-
    const Traits::LocalBasisType & localBasis() const
    Provide access to LocalBasis implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:350
    \n-
    LocalFiniteElementVariant & operator=(const LocalFiniteElementVariant &other)
    Copy assignment.
    Definition localfiniteelementvariant.hh:317
    \n-
    LocalFiniteElementVariant(const std::monostate &monostate)
    Construct empty LocalFiniteElementVariant.
    Definition localfiniteelementvariant.hh:279
    \n-
    LocalFiniteElementVariant(const LocalFiniteElementVariant &other)
    Copy constructor.
    Definition localfiniteelementvariant.hh:299
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Provide access to LocalCoefficients implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:358
    \n-
    LocalFiniteElementVariant(Implementation &&impl)
    Construct LocalFiniteElementVariant.
    Definition localfiniteelementvariant.hh:290
    \n-
    LocalFiniteElementVariant & operator=(LocalFiniteElementVariant &&other)
    Move assignment.
    Definition localfiniteelementvariant.hh:327
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Provide access to LocalInterpolation implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:366
    \n-
    LocalFiniteElementVariant()=default
    Construct empty LocalFiniteElementVariant.
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-\n+
    Definition rannacherturek2dlocalbasis.hh:24
    \n+
    Definition rannacherturek3dlocalbasis.hh:24
    \n+
    Rannacher-Turek shape functions.
    Definition rannachertureklocalbasis.hh:25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,423 +1,52 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-localfiniteelementvariant.hh\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+rannachertureklocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH\n-6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH\n+5#ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH\n+6#define DUNE_RANNACHER_TUREK_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include \n-13#include \n-14#include \n-15\n-16#include \n-17\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-21\n-22\n-23namespace _\bD_\bu_\bn_\be {\n-24\n-25namespace Impl {\n+8#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+9#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n+13\n+24 template< class D, class R, unsigned int d >\n+_\b2_\b5 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs;\n 26\n-27 // Helper for visiting a variant containing monostate.\n-28 // Since a generic lambda will in most cases not compile\n-29 // for monostate, we add special empty overloads for monostate.\n-30 // Hence visitIf will simply do nothing in the case of a\n-31 // monostate value.\n-32 template\n-33 void visitIf(Visitor&& visitor, Variant&& variant)\n-34 {\n-35 auto visitorWithFallback = overload([&](std::monostate&) {}, [&](const std::\n-monostate&) {}, visitor);\n-36 std::visit(visitorWithFallback, variant);\n-37 }\n+27 template< class D, class R >\n+_\b2_\b8 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs< D, R, 2 >\n+29 : public _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs< D, R >\n+30 {};\n+31\n+32 template< class D, class R >\n+_\b3_\b3 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs< D, R, 3 >\n+34 : public _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs< D, R >\n+35 {};\n+36\n+37} // namespace Dune\n 38\n-39 template\n-40 class LocalBasisVariant\n-41 {\n-42\n-43 template\n-44 struct FirstType\n-45 { using type = I0; };\n-46\n-47 using FirstImpTraits = typename FirstType::type::Traits;\n-48\n-49 public:\n-50\n-51 // We do not simply copy Implementation::LocalBasisTraits because this\n-52 // may be implementation specific. To stay clean, we simply put all its\n-53 // data into the default LocalBasisTraits.\n-54 using Traits = typename _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs<\n-55 typename FirstImpTraits::DomainFieldType,\n-56 FirstImpTraits::dimDomain,\n-57 typename FirstImpTraits::DomainType,\n-58 typename FirstImpTraits::RangeFieldType,\n-59 FirstImpTraits::dimRange,\n-60 typename FirstImpTraits::RangeType,\n-61 typename FirstImpTraits::JacobianType>;\n-62\n-63 template\n-64 LocalBasisVariant(const Implementation& impl) :\n-65 impl_(&impl),\n-66 size_(impl.size()),\n-67 order_(impl.order())\n-68 {}\n-69\n-70 LocalBasisVariant() = default;\n-71 LocalBasisVariant(const LocalBasisVariant& other) = default;\n-72 LocalBasisVariant(LocalBasisVariant&& other) = default;\n-73 LocalBasisVariant& operator=(const LocalBasisVariant& other) = default;\n-74 LocalBasisVariant& operator=(LocalBasisVariant&& other) = default;\n-75\n-79 unsigned int size() const\n-80 {\n-81 return size_;\n-82 }\n-83\n-87 unsigned int order() const\n-88 {\n-89 return order_;\n-90 }\n-91\n-95 inline void evaluateFunction(\n-96 const typename Traits::DomainType& x,\n-97 std::vector& out) const\n-98 {\n-99 Impl::visitIf([&](const auto* impl) { impl->evaluateFunction(x, out); },\n-impl_);\n-100 }\n-101\n-105 inline void evaluateJacobian(\n-106 const typename Traits::DomainType& x,\n-107 std::vector& out) const\n-108 {\n-109 Impl::visitIf([&](const auto* impl) { impl->evaluateJacobian(x, out); },\n-impl_);\n-110 }\n-111\n-119 void partial(\n-120 const std::array& order,\n-121 const typename Traits::DomainType& x,\n-122 std::vector& out) const\n-123 {\n-124 Impl::visitIf([&](const auto* impl) { impl->partial(order, x, out); },\n-impl_);\n-125 }\n-126\n-127 private:\n-128 std::variant impl_;\n-129 std::size_t size_;\n-130 std::size_t order_;\n-131 };\n-132\n-133\n-134 template\n-135 class LocalCoefficientsVariant\n-136 {\n-137 public:\n-138\n-139 template\n-140 LocalCoefficientsVariant(const Implementation& impl) :\n-141 impl_(&impl),\n-142 size_(impl.size())\n-143 {}\n-144\n-145 LocalCoefficientsVariant() = default;\n-146 LocalCoefficientsVariant(const LocalCoefficientsVariant& other) = default;\n-147 LocalCoefficientsVariant(LocalCoefficientsVariant&& other) = default;\n-148 LocalCoefficientsVariant& operator=(const LocalCoefficientsVariant& other)\n-= default;\n-149 LocalCoefficientsVariant& operator=(LocalCoefficientsVariant&& other) =\n-default;\n-150\n-154 unsigned int size() const\n-155 {\n-156 return size_;\n-157 }\n-158\n-159 const _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& localKey (std::size_t i) const\n-160 {\n-161 // We can't use visitIf since we have to return something\n-162 // even for a monostate value. Since the return type is\n-163 // an l-value reference, we use a default constructed\n-164 // dummy LocalKey value.\n-165 static const _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by dummyLocalKey;\n-166 return std::visit(overload(\n-167 [&](const std::monostate&) -> decltype(auto) { return (dummyLocalKey);},\n-168 [&](const auto* impl) -> decltype(auto) { return impl->localKey(i); }),\n-impl_);\n-169 }\n-170\n-171 private:\n-172 std::variant impl_;\n-173 std::size_t size_;\n-174 };\n-175\n-176\n-177 template\n-178 class LocalInterpolationVariant\n-179 {\n-180 public:\n-181\n-182 template\n-183 LocalInterpolationVariant(const Implementation& impl) :\n-184 impl_(&impl)\n-185 {}\n-186\n-187 LocalInterpolationVariant() = default;\n-188 LocalInterpolationVariant(const LocalInterpolationVariant& other) =\n-default;\n-189 LocalInterpolationVariant(LocalInterpolationVariant&& other) = default;\n-190 LocalInterpolationVariant& operator=(const LocalInterpolationVariant&\n-other) = default;\n-191 LocalInterpolationVariant& operator=(LocalInterpolationVariant&& other) =\n-default;\n-192\n-193 template\n-194 void interpolate (const F& ff, std::vector& out) const\n-195 {\n-196 Impl::visitIf([&](const auto* impl) { impl->interpolate(ff, out); },\n-impl_);\n-197 }\n-198\n-199 private:\n-200 std::variant impl_;\n-201 };\n-202\n-203} // namespace Impl\n-204\n-205\n-234 template\n-_\b2_\b3_\b5 class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n-236 {\n-237\n-238 // In each LocalFooVariant we store a std::variant, i.e. a std::variant\n-239 // with the pointer to the Foo implementation unless\n-LocalFiniteElementVariant stores a monostate. In this\n-240 // case each LocalFooVariant also stores a monostate (and not a\n-monostate*).\n-241 using LocalBasis = Impl::LocalBasisVariant;\n-242 using LocalCoefficients = Impl::LocalCoefficientsVariant;\n-243 using LocalInterpolation = Impl::LocalInterpolationVariant;\n-244\n-245 // Update members after changing impl_\n-246 void updateMembers()\n-247 {\n-248 std::visit(overload(\n-249 [&](std::monostate&) {\n-250 localBasis_ = LocalBasis();\n-251 localCoefficients_ = LocalCoefficients();\n-252 localInterpolation_ = LocalInterpolation();\n-253 size_ = 0;\n-254 geometryType_ = GeometryType{};\n-255 }, [&](auto&& impl) {\n-256 localBasis_ = LocalBasis(impl.localBasis());\n-257 localCoefficients_ = LocalCoefficients(impl.localCoefficients());\n-258 localInterpolation_ = LocalInterpolation(impl.localInterpolation());\n-259 size_ = impl.size();\n-260 geometryType_ = impl.type();\n-261 }), impl_);\n-262 }\n-263\n-264 public:\n-265\n-_\b2_\b6_\b9 using _\bT_\br_\ba_\bi_\bt_\bs = typename _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,\n-_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b,_\b _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b>;\n-270\n-_\b2_\b7_\b4 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt() = default;\n-275\n-_\b2_\b7_\b9 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt(const std::monostate& monostate)\n-280 {}\n-281\n-288 template, Implementations>...>::value, int> = 0>\n-_\b2_\b9_\b0 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt(Implementation&& impl) :\n-291 impl_(std::forward(impl))\n-292 {\n-293 updateMembers();\n-294 }\n-295\n-_\b2_\b9_\b9 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt(const _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt& other) :\n-300 impl_(other.impl_)\n-301 {\n-302 updateMembers();\n-303 }\n-304\n-_\b3_\b0_\b8 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt&& other) :\n-309 impl_(std::move(other.impl_))\n-310 {\n-311 updateMembers();\n-312 }\n-313\n-_\b3_\b1_\b7 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt&\n-other)\n-318 {\n-319 impl_ = other.impl_;\n-320 updateMembers();\n-321 return *this;\n-322 }\n-323\n-_\b3_\b2_\b7 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt&& other)\n-328 {\n-329 impl_ = std::move(other.impl_);\n-330 updateMembers();\n-331 return *this;\n-332 }\n-333\n-337 template, Implementations>...>::value, int> = 0>\n-_\b3_\b3_\b9 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(Implementation&& impl)\n-340 {\n-341 impl_ = std::forward(impl);\n-342 updateMembers();\n-343 return *this;\n-344 }\n-345\n-346\n-_\b3_\b5_\b0 const typename Traits::LocalBasisType& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() const\n-351 {\n-352 return localBasis_;\n-353 }\n-354\n-_\b3_\b5_\b8 const typename Traits::LocalCoefficientsType& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n-359 {\n-360 return localCoefficients_;\n-361 }\n-362\n-_\b3_\b6_\b6 const typename Traits::LocalInterpolationType& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n-367 {\n-368 return localInterpolation_;\n-369 }\n-370\n-_\b3_\b7_\b4 unsigned int _\bs_\bi_\bz_\be() const\n-375 {\n-376 return size_;\n-377 }\n-378\n-_\b3_\b8_\b2 constexpr GeometryType _\bt_\by_\bp_\be() const\n-383 {\n-384 return geometryType_;\n-385 }\n-386\n-_\b3_\b9_\b8 const auto& _\bv_\ba_\br_\bi_\ba_\bn_\bt() const\n-399 {\n-400 return impl_;\n-401 }\n-402\n-_\b4_\b0_\b8 operator bool () const\n-409 {\n-410 return not(std::holds_alternative(_\bv_\ba_\br_\bi_\ba_\bn_\bt()));\n-411 }\n-412\n-413 private:\n-414 std::variant impl_;\n-415 std::size_t size_;\n-416 GeometryType geometryType_;\n-417 LocalBasis localBasis_;\n-418 LocalCoefficients localCoefficients_;\n-419 LocalInterpolation localInterpolation_;\n-420 };\n-421\n-422} // end namespace Dune\n-423\n-424#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+39#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH\n+_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n-Type erasure class for wrapping LocalFiniteElement classes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-typename Dune::LocalFiniteElementTraits< LocalBasis, LocalCoefficients,\n-LocalInterpolation > Traits\n-Export LocalFiniteElementTraits.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:269\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bv_\ba_\br_\bi_\ba_\bn_\bt\n-const auto & variant() const\n-Provide access to underlying std::variant.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:398\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:374\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-constexpr GeometryType type() const\n-Number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:382\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n-LocalFiniteElementVariant(LocalFiniteElementVariant &&other)\n-Move constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:308\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-LocalFiniteElementVariant & operator=(Implementation &&impl)\n-Assignment from implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:339\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-Provide access to LocalBasis implementation of this LocalFiniteElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:350\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-LocalFiniteElementVariant & operator=(const LocalFiniteElementVariant &other)\n-Copy assignment.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:317\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n-LocalFiniteElementVariant(const std::monostate &monostate)\n-Construct empty LocalFiniteElementVariant.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:279\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n-LocalFiniteElementVariant(const LocalFiniteElementVariant &other)\n-Copy constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:299\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-Provide access to LocalCoefficients implementation of this LocalFiniteElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:358\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n-LocalFiniteElementVariant(Implementation &&impl)\n-Construct LocalFiniteElementVariant.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:290\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-LocalFiniteElementVariant & operator=(LocalFiniteElementVariant &&other)\n-Move assignment.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:327\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-Provide access to LocalInterpolation implementation of this LocalFiniteElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:366\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n-LocalFiniteElementVariant()=default\n-Construct empty LocalFiniteElementVariant.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Rannacher-Turek shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalbasis.hh:25\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interface.hh File Reference\n+dune-localfunctions: mimeticall.hh File Reference\n \n \n \n \n \n \n \n@@ -65,54 +65,42 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    interface.hh File Reference
    \n+
    mimeticall.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <cstddef>
    \n-#include <vector>
    \n+
    #include <cstddef>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+#include "../common/localbasis.hh"
    \n+#include "../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n-\n-\n+\n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::FiniteElementInterface
     Interface for global-valued finite elements. More...
    class  Dune::MimeticLocalBasis< D, R, dim >
     
    struct  Dune::FiniteElementInterface::Traits
     types of component objects More...
    class  Dune::MimeticLocalInterpolation< LB >
     
    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::MimeticLocalCoefficients
     ! More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,42 +1,30 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n+ * _\bm_\bi_\bm_\be_\bt_\bi_\bc\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-interface.hh File Reference\n-#include \n+mimeticall.hh File Reference\n #include \n-#include \n+#include \n+#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-\u00a0 Interface for global-valued finite elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-\u00a0 types of component objects _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\b _\b>\n-\u00a0 Factory interface for global-valued finite elements. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-\u00a0 Interface for global-valued shape functions. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-\u00a0 types of domain and range _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-\u00a0 Interface for global-valued interpolation. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-\u00a0 Interface for global-valued coefficients. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 ! _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interface.hh Source File\n+dune-localfunctions: mimeticall.hh Source File\n \n \n \n \n \n \n \n@@ -70,215 +70,173 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    interface.hh
    \n+
    mimeticall.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_INTERFACE_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_INTERFACE_HH
    \n-
    8
    \n-
    9#ifndef HEADERCHECK
    \n-
    10#error This header exists for documentation purposes only and should never be included directly.
    \n-
    11#endif
    \n-
    12
    \n-
    13#include <array>
    \n-
    14#include <cstddef>
    \n-
    15#include <vector>
    \n-
    16
    \n-
    17
    \n-
    18#include <dune/geometry/type.hh>
    \n-
    19
    \n-\n-
    21
    \n-
    22namespace Dune {
    \n-
    23
    \n-
    \n-\n-
    26 {
    \n-
    27 struct ImplementationDefined;
    \n-
    28
    \n-
    29 public:
    \n+
    5#ifndef DUNE_MIMETIC_ALL_HH
    \n+
    6#define DUNE_MIMETIC_ALL_HH
    \n+
    7
    \n+
    8#include <cstddef>
    \n+
    9
    \n+
    10#include <dune/common/exceptions.hh>
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13
    \n+
    14#include <dune/geometry/type.hh>
    \n+
    15
    \n+
    16#include "../common/localbasis.hh"
    \n+
    17#include "../common/localkey.hh"
    \n+
    18
    \n+
    19namespace Dune
    \n+
    20{
    \n+
    21 template<class D, class R, int dim>
    \n+
    \n+\n+
    23 {
    \n+
    24 public:
    \n+\n+
    26 R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,dim> > Traits;
    \n+
    27
    \n+
    \n+
    28 MimeticLocalBasis (unsigned int variant_)
    \n+
    29 : variant(variant_)
    \n+
    30 {}
    \n+
    \n
    31
    \n-
    \n-
    34 struct Traits
    \n-
    35 {
    \n+
    \n+\n+
    33 : variant(0)
    \n+
    34 {}
    \n+
    \n+
    35
    \n+
    36 unsigned int size () const { return variant; }
    \n
    37
    \n-
    42 typedef ImplementationDefined Basis;
    \n-
    44
    \n-
    49 typedef ImplementationDefined Coefficients;
    \n-
    51
    \n-
    56 typedef ImplementationDefined Interpolation;
    \n-
    57 };
    \n-
    \n-
    58
    \n-
    60
    \n-\n-\n-
    70
    \n-
    72
    \n-
    76 const Traits::Basis& basis() const;
    \n-
    78
    \n-\n-
    84
    \n-\n-
    90 GeometryType type() const;
    \n-
    91 };
    \n-
    \n-
    92
    \n-
    94
    \n-
    114 template<class Geometry, class VertexOrder>
    \n-
    \n-\n-
    116 {
    \n-
    117 struct ImplementationDefined;
    \n-
    118
    \n-
    119 public:
    \n-
    121
    \n-
    126 typedef ImplementationDefined FiniteElement;
    \n-
    127
    \n-
    129
    \n-\n-
    133
    \n-
    154
    \n-
    156 const FiniteElement make(const Geometry&, const VertexOrder&, ...);
    \n-
    158 const FiniteElement make(const Geometry&, ...);
    \n-
    160 const FiniteElement make(const VertexOrder&, ...);
    \n-
    162
    \n-
    166 const FiniteElement make(const GeometryType&, ...);
    \n-
    168 const FiniteElement make(...);
    \n-
    169
    \n-
    171
    \n-
    172 };
    \n-
    \n-
    173
    \n-
    \n-\n-
    176 {
    \n-
    177 struct ImplementationDefined;
    \n-
    178 constexpr static int implementationDefined = 42;
    \n-
    179
    \n-
    180 public:
    \n-
    182
    \n-
    \n-
    187 struct Traits
    \n-
    188 {
    \n-
    191
    \n-
    193 typedef ImplementationDefined DomainFieldType;
    \n-
    194
    \n-
    196 constexpr static int dimDomain = implementationDefined;
    \n-
    197
    \n-
    199 typedef ImplementationDefined DomainType;
    \n-
    200
    \n-
    202
    \n-
    205
    \n-
    207 typedef ImplementationDefined RangeFieldType;
    \n-
    208
    \n-
    210 constexpr static int dimRange = implementationDefined;
    \n-
    211
    \n-
    213 typedef ImplementationDefined RangeType;
    \n-
    214
    \n-
    216
    \n-
    218
    \n-
    222 typedef ImplementationDefined Jacobian;
    \n-
    223 };
    \n-
    \n-
    224
    \n-
    226 std::size_t size () const;
    \n-
    228 std::size_t order () const;
    \n-
    229
    \n-\n-
    232 std::vector<Traits::RangeType>& out) const;
    \n-
    233
    \n-\n-
    236 std::vector<Traits::Jacobian>& out) const;
    \n-
    237
    \n-
    243 void partial(const std::array<unsigned int,Traits::dimDomain>& order,
    \n-
    244 const typename Traits::DomainType& in,
    \n-
    245 std::vector<typename Traits::RangeType>& out) const;
    \n-
    246 };
    \n-
    \n-
    247
    \n-
    \n-\n-
    250 {
    \n-
    252
    \n-\n-
    256
    \n-
    258
    \n-
    267 template<typename F, typename C>
    \n-
    268 void interpolate (const F& f, std::vector<C>& out) const;
    \n-
    269 };
    \n-
    \n-
    270
    \n-
    272
    \n-
    \n-\n-
    278 {
    \n-
    280 std::size_t size() const;
    \n-
    281
    \n-
    283 const LocalKey& localKey(std::size_t i) const;
    \n-
    284 };
    \n-
    \n-
    285}
    \n-
    286#endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH
    \n-\n+
    \n+
    39 inline void evaluateFunction (
    \n+
    40 const typename Traits::DomainType& in,
    \n+
    41 std::vector<typename Traits::RangeType>& out) const
    \n+
    42 {
    \n+
    43 DUNE_THROW(Dune::Exception,"mimetic basis evaluation not available");
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    \n+
    47 inline void evaluateJacobian (
    \n+
    48 const typename Traits::DomainType& in,
    \n+
    49 std::vector<typename Traits::JacobianType>& out) const
    \n+
    50 {
    \n+
    51 DUNE_THROW(Dune::Exception,"mimetic basis Jacobian evaluation not available");
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+
    55 void partial (const std::array<unsigned int, dim>& /*order*/,
    \n+
    56 const typename Traits::DomainType& /*in*/, // position
    \n+
    57 std::vector<typename Traits::RangeType>& /*out*/) const // return value
    \n+
    58 {
    \n+
    59 DUNE_THROW(Dune::Exception,"mimetic basis partial derivative evaluation not available");
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+
    63 unsigned int order () const
    \n+
    64 {
    \n+
    65 DUNE_THROW(Dune::Exception,"mimetic order evaluation not available");
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    68 private:
    \n+
    69 unsigned int variant;
    \n+
    70 };
    \n+
    \n+
    71
    \n+
    72 template<class LB>
    \n+
    \n+\n+
    74 {
    \n+
    75 public:
    \n+
    76
    \n+
    78 template<typename F, typename C>
    \n+
    \n+
    79 void interpolate (const F& f, std::vector<C>& out) const {
    \n+
    80 DUNE_THROW(Dune::Exception,"mimetic local interpolation not available");
    \n+
    81 }
    \n+
    \n+
    82 };
    \n+
    \n+
    83
    \n+
    \n+\n+
    88 {
    \n+
    89 public:
    \n+
    \n+
    90 MimeticLocalCoefficients (unsigned int variant_)
    \n+
    91 : variant(variant_), li(variant_)
    \n+
    92 {
    \n+
    93 for (unsigned int i=0; i<variant; i++)
    \n+\n+
    95 }
    \n+
    \n+
    96
    \n+
    \n+\n+
    98 : variant(0), li(0)
    \n+
    99 {}
    \n+
    \n+
    100
    \n+
    102 std::size_t size () const { return variant; }
    \n+
    103
    \n+
    \n+
    105 const Dune::LocalKey& localKey (std::size_t i) const {
    \n+
    106 return li[i];
    \n+
    107 }
    \n+
    \n+
    108
    \n+
    109 private:
    \n+
    110 unsigned int variant;
    \n+
    111 std::vector<Dune::LocalKey> li;
    \n+
    112 };
    \n+
    \n+
    113}
    \n+
    114
    \n+
    115#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Interface for global-valued finite elements.
    Definition interface.hh:26
    \n-
    GeometryType type() const
    Extract geometry type of this finite element.
    \n-
    const Traits::Basis & basis() const
    Extract basis of this finite element.
    \n-
    const Traits::Coefficients & coefficients() const
    Extract coefficients of this finite element.
    \n-
    const Traits::Interpolation & interpolation() const
    Extract interpolation of this finite element.
    \n-
    FiniteElementInterface(const FiniteElementInterface &)
    Finite elements are CopyConstructible.
    \n-
    FiniteElementInterface(...)
    Construct a finite element.
    \n-
    types of component objects
    Definition interface.hh:35
    \n-
    ImplementationDefined Basis
    type of the Basis
    Definition interface.hh:42
    \n-
    ImplementationDefined Coefficients
    type of the Coefficients
    Definition interface.hh:49
    \n-
    ImplementationDefined Interpolation
    type of the Interpolation
    Definition interface.hh:56
    \n-
    Factory interface for global-valued finite elements.
    Definition interface.hh:116
    \n-
    const FiniteElement make(const VertexOrder &,...)
    create a finite element from a vertex ordering
    \n-
    const FiniteElement make(...)
    create a finite element
    \n-
    const FiniteElement make(const GeometryType &,...)
    create a finite element from a geometry type
    \n-
    FiniteElementFactoryInterface(...)
    Construct a finite element factory.
    \n-
    ImplementationDefined FiniteElement
    Type of the finite element.
    Definition interface.hh:126
    \n-
    const FiniteElement make(const Geometry &, const VertexOrder &,...)
    create a finite element from a geometry and a vertex ordering
    \n-
    const FiniteElement make(const Geometry &,...)
    create a finite element from a geometry
    \n-
    Interface for global-valued shape functions.
    Definition interface.hh:176
    \n-
    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.
    \n-
    void evaluateFunction(const Traits::DomainType &in, std::vector< Traits::RangeType > &out) const
    Evaluate all shape functions at given position.
    \n-
    std::size_t order() const
    Polynomial order of the shape functions for quadrature.
    \n-
    void evaluateJacobian(const Traits::DomainType &in, std::vector< Traits::Jacobian > &out) const
    Evaluate Jacobian of all shape functions at given position.
    \n-
    std::size_t size() const
    Number of shape functions.
    \n-
    types of domain and range
    Definition interface.hh:188
    \n-
    static constexpr int dimRange
    dimension of the range
    Definition interface.hh:210
    \n-
    ImplementationDefined Jacobian
    Jacobian properties.
    Definition interface.hh:222
    \n-
    ImplementationDefined DomainType
    Type used for coordinate vectors in the domain.
    Definition interface.hh:199
    \n-
    ImplementationDefined RangeFieldType
    Field type of the range.
    Definition interface.hh:207
    \n-
    ImplementationDefined DomainFieldType
    Field type of the domain.
    Definition interface.hh:193
    \n-
    ImplementationDefined RangeType
    Type used for range values.
    Definition interface.hh:213
    \n-
    static constexpr int dimDomain
    dimension of the domain
    Definition interface.hh:196
    \n-
    Interface for global-valued interpolation.
    Definition interface.hh:250
    \n-
    BasisInterface::Traits Traits
    Export basis traits.
    Definition interface.hh:255
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    \n-
    Interface for global-valued coefficients.
    Definition interface.hh:278
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    \n-
    std::size_t size() const
    number of coefficients
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    @ intersectionCodim
    Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
    Definition localkey.hh:37
    \n+
    Definition mimeticall.hh:23
    \n+
    MimeticLocalBasis(unsigned int variant_)
    Definition mimeticall.hh:28
    \n+
    Dune::LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    Definition mimeticall.hh:26
    \n+
    MimeticLocalBasis()
    Definition mimeticall.hh:32
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition mimeticall.hh:47
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition mimeticall.hh:63
    \n+
    void partial(const std::array< unsigned int, dim > &, const typename Traits::DomainType &, std::vector< typename Traits::RangeType > &) const
    Evaluate partial derivatives of all shape functions.
    Definition mimeticall.hh:55
    \n+
    unsigned int size() const
    Definition mimeticall.hh:36
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition mimeticall.hh:39
    \n+
    Definition mimeticall.hh:74
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Local interpolation of a function.
    Definition mimeticall.hh:79
    \n+
    !
    Definition mimeticall.hh:88
    \n+
    const Dune::LocalKey & localKey(std::size_t i) const
    map index i to local key
    Definition mimeticall.hh:105
    \n+
    MimeticLocalCoefficients(unsigned int variant_)
    Definition mimeticall.hh:90
    \n+
    std::size_t size() const
    number of coefficients
    Definition mimeticall.hh:102
    \n+
    MimeticLocalCoefficients()
    Definition mimeticall.hh:97
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,290 +1,193 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-interface.hh\n+ * _\bm_\bi_\bm_\be_\bt_\bi_\bc\n+mimeticall.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_LOCALFUNCTIONS_INTERFACE_HH\n-7#define DUNE_LOCALFUNCTIONS_INTERFACE_HH\n-8\n-9#ifndef HEADERCHECK\n-10#error This header exists for documentation purposes only and should never be\n-included directly.\n-11#endif\n-12\n-13#include \n-14#include \n-15#include \n-16\n-17\n-18#include \n-19\n-20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-21\n-22namespace _\bD_\bu_\bn_\be {\n-23\n-_\b2_\b5 class _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-26 {\n-27 struct ImplementationDefined;\n-28\n-29 public:\n+5#ifndef DUNE_MIMETIC_ALL_HH\n+6#define DUNE_MIMETIC_ALL_HH\n+7\n+8#include \n+9\n+10#include \n+11#include \n+12#include \n+13\n+14#include \n+15\n+16#include \"../common/localbasis.hh\"\n+17#include \"../common/localkey.hh\"\n+18\n+19namespace _\bD_\bu_\bn_\be\n+20{\n+21 template\n+_\b2_\b2 class _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+23 {\n+24 public:\n+25 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\bi_\bm_\b>,\n+_\b2_\b6 R,1,Dune::FieldVector, Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+27\n+_\b2_\b8 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int variant_)\n+29 : variant(variant_)\n+30 {}\n 31\n-_\b3_\b4 struct _\bT_\br_\ba_\bi_\bt_\bs\n-35 {\n+_\b3_\b2 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs ()\n+33 : variant(0)\n+34 {}\n+35\n+_\b3_\b6 unsigned int _\bs_\bi_\bz_\be () const { return variant; }\n 37\n-_\b4_\b2 typedef ImplementationDefined _\bB_\ba_\bs_\bi_\bs;\n-44\n-_\b4_\b9 typedef ImplementationDefined _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-51\n-_\b5_\b6 typedef ImplementationDefined _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-57 };\n-58\n-60\n-_\b6_\b7 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(...);\n-_\b6_\b9 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be&);\n-70\n-72\n-_\b7_\b6 const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const;\n-78\n-_\b8_\b2 const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const;\n-84\n-_\b8_\b8 const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const;\n-_\b9_\b0 GeometryType _\bt_\by_\bp_\be() const;\n-91 };\n-92\n-94\n-114 template\n-_\b1_\b1_\b5 class _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-116 {\n-117 struct ImplementationDefined;\n-118\n-119 public:\n-121\n-_\b1_\b2_\b6 typedef ImplementationDefined _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-127\n-129\n-_\b1_\b3_\b2 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(...);\n-133\n-154\n-_\b1_\b5_\b6 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry&, const VertexOrder&, ...);\n-_\b1_\b5_\b8 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry&, ...);\n-_\b1_\b6_\b0 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const VertexOrder&, ...);\n-162\n-_\b1_\b6_\b6 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const GeometryType&, ...);\n-_\b1_\b6_\b8 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(...);\n-169\n-171\n-172 };\n-173\n-_\b1_\b7_\b5 class _\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-176 {\n-177 struct ImplementationDefined;\n-178 constexpr static int implementationDefined = 42;\n-179\n-180 public:\n-182\n-_\b1_\b8_\b7 struct _\bT_\br_\ba_\bi_\bt_\bs\n-188 {\n-191\n-_\b1_\b9_\b3 typedef ImplementationDefined _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be;\n-194\n-_\b1_\b9_\b6 constexpr static int _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn = implementationDefined;\n-197\n-_\b1_\b9_\b9 typedef ImplementationDefined _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be;\n-200\n-202\n-205\n-_\b2_\b0_\b7 typedef ImplementationDefined _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be;\n-208\n-_\b2_\b1_\b0 constexpr static int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = implementationDefined;\n-211\n-_\b2_\b1_\b3 typedef ImplementationDefined _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be;\n-214\n-216\n-218\n-_\b2_\b2_\b2 typedef ImplementationDefined _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn;\n-223 };\n-224\n-_\b2_\b2_\b6 std::size_t _\bs_\bi_\bz_\be () const;\n-_\b2_\b2_\b8 std::size_t _\bo_\br_\bd_\be_\br () const;\n-229\n-_\b2_\b3_\b1 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-232 std::vector& out) const;\n-233\n-_\b2_\b3_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-236 std::vector& out) const;\n-237\n-_\b2_\b4_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array& _\bo_\br_\bd_\be_\br,\n-244 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-245 std::vector& out) const;\n-246 };\n-247\n-_\b2_\b4_\b9 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-250 {\n-252\n-_\b2_\b5_\b5 typedef _\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n-256\n-258\n-267 template\n-_\b2_\b6_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const;\n-269 };\n-270\n-272\n-_\b2_\b7_\b7 struct _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-278 {\n-_\b2_\b8_\b0 std::size_t _\bs_\bi_\bz_\be() const;\n-281\n-_\b2_\b8_\b3 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const;\n-284 };\n-285}\n-286#endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\b3_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (\n+40 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+41 std::vector& out) const\n+42 {\n+43 DUNE_THROW(Dune::Exception,\"mimetic basis evaluation not available\");\n+44 }\n+45\n+_\b4_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (\n+48 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+49 std::vector& out) const\n+50 {\n+51 DUNE_THROW(Dune::Exception,\"mimetic basis Jacobian evaluation not\n+available\");\n+52 }\n+53\n+_\b5_\b5 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& /*order*/,\n+56 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& /*in*/, // position\n+57 std::vector& /*out*/) const // return value\n+58 {\n+59 DUNE_THROW(Dune::Exception,\"mimetic basis partial derivative evaluation not\n+available\");\n+60 }\n+61\n+_\b6_\b3 unsigned int _\bo_\br_\bd_\be_\br () const\n+64 {\n+65 DUNE_THROW(Dune::Exception,\"mimetic order evaluation not available\");\n+66 }\n+67\n+68 private:\n+69 unsigned int variant;\n+70 };\n+71\n+72 template\n+_\b7_\b3 class _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+74 {\n+75 public:\n+76\n+78 template\n+_\b7_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const {\n+80 DUNE_THROW(Dune::Exception,\"mimetic local interpolation not available\");\n+81 }\n+82 };\n+83\n+_\b8_\b7 class _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+88 {\n+89 public:\n+_\b9_\b0 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs (unsigned int variant_)\n+91 : variant(variant_), li(variant_)\n+92 {\n+93 for (unsigned int i=0; i li;\n+112 };\n+113}\n+114\n+115#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Interface for global-valued finite elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-Extract geometry type of this finite element.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n-const Traits::Basis & basis() const\n-Extract basis of this finite element.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::Coefficients & coefficients() const\n-Extract coefficients of this finite element.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::Interpolation & interpolation() const\n-Extract interpolation of this finite element.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-FiniteElementInterface(const FiniteElementInterface &)\n-Finite elements are CopyConstructible.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-FiniteElementInterface(...)\n-Construct a finite element.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-types of component objects\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-ImplementationDefined Basis\n-type of the Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-ImplementationDefined Coefficients\n-type of the Coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-ImplementationDefined Interpolation\n-type of the Interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Factory interface for global-valued finite elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:116\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const VertexOrder &,...)\n-create a finite element from a vertex ordering\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(...)\n-create a finite element\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const GeometryType &,...)\n-create a finite element from a geometry type\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-FiniteElementFactoryInterface(...)\n-Construct a finite element factory.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-ImplementationDefined FiniteElement\n-Type of the finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:126\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const Geometry &, const VertexOrder &,...)\n-create a finite element from a geometry and a vertex ordering\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const Geometry &,...)\n-create a finite element from a geometry\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Interface for global-valued shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, Traits::dimDomain > &order, const\n-typename Traits::DomainType &in, std::vector< typename Traits::RangeType >\n-&out) const\n-Evaluate partial derivatives of any order of all shape functions.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const Traits::DomainType &in, std::vector< Traits::\n-RangeType > &out) const\n-Evaluate all shape functions at given position.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-Polynomial order of the shape functions for quadrature.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const Traits::DomainType &in, std::vector< Traits::\n-Jacobian > &out) const\n-Evaluate Jacobian of all shape functions at given position.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-Number of shape functions.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-types of domain and range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:188\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static constexpr int dimRange\n-dimension of the range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-ImplementationDefined Jacobian\n-Jacobian properties.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:222\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-ImplementationDefined DomainType\n-Type used for coordinate vectors in the domain.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n-ImplementationDefined RangeFieldType\n-Field type of the range.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n-ImplementationDefined DomainFieldType\n-Field type of the domain.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:193\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n-ImplementationDefined RangeType\n-Type used for range values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:213\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n-static constexpr int dimDomain\n-dimension of the domain\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Interface for global-valued interpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:250\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-BasisInterface::Traits Traits\n-Export basis traits.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:255\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Determine coefficients interpolating a given function.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-Interface for global-valued coefficients.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:278\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n Describe position of one degree of freedom.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bd_\bi_\bm\n+@ intersectionCodim\n+Codimension returned by LocalKey::codim() for degrees of freedom attached to an\n+intersection.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+MimeticLocalBasis(unsigned int variant_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+Dune::LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::\n+FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+MimeticLocalBasis()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, dim > &, const typename Traits::\n+DomainType &, std::vector< typename Traits::RangeType > &) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Local interpolation of a function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+!\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const Dune::LocalKey & localKey(std::size_t i) const\n+map index i to local key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+MimeticLocalCoefficients(unsigned int variant_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+MimeticLocalCoefficients()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:97\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localtoglobaladaptors.hh File Reference\n+dune-localfunctions: virtualinterface.hh File Reference\n \n \n \n \n \n \n \n@@ -72,44 +72,44 @@\n
  • dune
  • localfunctions
  • common
  • \n \n \n
    \n \n-
    localtoglobaladaptors.hh File Reference
    \n+
    virtualinterface.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n+
    #include <type_traits>
    \n+#include <array>
    \n #include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/typetraits.hh>
    \n+#include <functional>
    \n #include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::LocalToGlobalBasisAdaptorTraits< LocalBasisTraits, dimDomainGlobal_ >
     Traits class for local-to-global basis adaptors. More...
    class  Dune::LocalBasisVirtualInterface< T >
     virtual base class for a local basis More...
     
    class  Dune::ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry >
     Convert a simple scalar local basis into a global basis. More...
    class  Dune::LocalInterpolationVirtualInterfaceBase< DomainType, RangeType >
     virtual base class for a local interpolation More...
     
    class  Dune::LocalToGlobalInterpolationAdaptor< LocalInterpolation, Traits_ >
     Convert a local interpolation into a global interpolation. More...
    class  Dune::LocalInterpolationVirtualInterface< DomainType, RangeType >
     virtual base class for a local interpolation More...
     
    struct  Dune::ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry >
     Convert a simple scalar local finite element into a global finite element. More...
    class  Dune::LocalCoefficientsVirtualInterface
     virtual base class for local coefficients More...
     
    struct  Dune::ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry >::Traits
     
    class  Dune::ScalarLocalToGlobalFiniteElementAdaptorFactory< LocalFiniteElement, Geometry >
     Factory for ScalarLocalToGlobalFiniteElementAdaptor objects. More...
    class  Dune::LocalFiniteElementVirtualInterface< T >
     virtual base class for local finite elements with functions More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,43 +2,38 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n * _\bc_\bo_\bm_\bm_\bo_\bn\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-localtoglobaladaptors.hh File Reference\n-#include \n+virtualinterface.hh File Reference\n+#include \n+#include \n #include \n-#include \n-#include \n-#include \n+#include \n #include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b,\n- _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl_\b__\b _\b>\n-\u00a0 Traits class for local-to-global basis adaptors. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b _\b>\n-\u00a0 Convert a simple scalar local basis into a global basis. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bi_\bt_\bs_\b__\b _\b>\n-\u00a0 Convert a local interpolation into a global interpolation. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,\n- _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b _\b>\n-\u00a0 Convert a simple scalar local finite element into a global finite\n- element. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,\n- _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<\n- _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b _\b>\n-\u00a0 Factory for _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br objects. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bT_\b _\b>\n+\u00a0 virtual base class for a local basis _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b _\b>\n+\u00a0 virtual base class for a local interpolation _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b _\b>\n+\u00a0 virtual base class for a local interpolation _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+\u00a0 virtual base class for local coefficients _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bT_\b _\b>\n+\u00a0 virtual base class for local finite elements with functions _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localtoglobaladaptors.hh Source File\n+dune-localfunctions: virtualinterface.hh Source File\n \n \n \n \n \n \n \n@@ -74,266 +74,240 @@\n \n \n
    \n
    \n-
    localtoglobaladaptors.hh
    \n+
    virtualinterface.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH
    \n-
    8
    \n-
    9#include <cstddef>
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
    \n+
    7
    \n+
    8#include <type_traits>
    \n+
    9#include <array>
    \n
    10#include <vector>
    \n-
    11
    \n-
    12#include <dune/common/fmatrix.hh>
    \n-
    13#include <dune/common/fvector.hh>
    \n-
    14#include <dune/common/typetraits.hh>
    \n-
    15
    \n-
    16#include <dune/geometry/type.hh>
    \n-
    17
    \n-
    18namespace Dune {
    \n-
    19
    \n+
    11#include <functional>
    \n+
    12
    \n+
    13#include <dune/geometry/type.hh>
    \n+
    14
    \n+\n+\n+\n+
    18
    \n+
    19namespace Dune
    \n+
    20{
    \n
    21
    \n-
    29 template<class LocalBasisTraits, std::size_t dimDomainGlobal_>
    \n-
    \n-\n-\n-
    32 static const std::size_t dimDomainLocal = LocalBasisTraits::dimDomain;
    \n-
    33 static const std::size_t dimDomainGlobal = dimDomainGlobal_;
    \n-\n-
    35 typedef FieldVector<DomainField, dimDomainGlobal> DomainGlobal;
    \n-
    36
    \n-\n-
    38 static const std::size_t dimRange = LocalBasisTraits::dimRange;
    \n-\n-
    40
    \n-
    41 typedef FieldMatrix<RangeField, dimRange, dimDomainGlobal> Jacobian;
    \n-
    42 };
    \n-
    \n+
    22 // forward declaration needed by the helper traits
    \n+
    23 template<class DomainType, class RangeType>
    \n+
    24 class LocalInterpolationVirtualInterface;
    \n+
    25
    \n+
    26
    \n+
    27
    \n+
    28 // -----------------------------------------------------------------
    \n+
    29 // Basis
    \n+
    30 // -----------------------------------------------------------------
    \n+
    31
    \n+
    38 template<class T>
    \n+
    \n+\n+
    40 {
    \n+
    41 public:
    \n+
    42 using Traits = T;
    \n
    43
    \n-
    45
    \n-
    64 template<class LocalBasis, class Geometry>
    \n-
    \n-\n-
    66 static_assert(LocalBasis::Traits::dimRange == 1,
    \n-
    67 "ScalarLocalToGlobalBasisAdaptor can only wrap a "
    \n-
    68 "scalar local basis.");
    \n-
    69 static_assert((std::is_same<typename LocalBasis::Traits::DomainFieldType,
    \n-
    70 typename Geometry::ctype>::value),
    \n-
    71 "ScalarLocalToGlobalBasisAdaptor: LocalBasis must use "
    \n-
    72 "the same ctype as Geometry");
    \n-
    73 static_assert
    \n-
    74 ( static_cast<std::size_t>(LocalBasis::Traits::dimDomain) ==
    \n-
    75 static_cast<std::size_t>(Geometry::mydimension),
    \n-
    76 "ScalarLocalToGlobalBasisAdaptor: LocalBasis domain dimension must "
    \n-
    77 "match local dimension of Geometry");
    \n-
    78
    \n-
    79 const LocalBasis& localBasis;
    \n-
    80 Geometry geometry;
    \n+
    44
    \n+\n+
    46
    \n+
    48 virtual unsigned int size () const = 0;
    \n+
    49
    \n+
    51 virtual unsigned int order () const = 0;
    \n+
    52
    \n+
    58 virtual void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    59 std::vector<typename Traits::RangeType>& out) const = 0;
    \n+
    60
    \n+
    69 virtual void evaluateJacobian(const typename Traits::DomainType& in, // position
    \n+
    70 std::vector<typename Traits::JacobianType>& out) const = 0;
    \n+
    71
    \n+
    77 virtual void partial(const std::array<unsigned int,Traits::dimDomain>& order,
    \n+
    78 const typename Traits::DomainType& in,
    \n+
    79 std::vector<typename Traits::RangeType>& out) const = 0;
    \n+
    80 };
    \n+
    \n
    81
    \n-
    82 public:
    \n-
    83 typedef LocalToGlobalBasisAdaptorTraits<typename LocalBasis::Traits,
    \n-
    84 Geometry::coorddimension> Traits;
    \n-
    85
    \n+
    82
    \n+
    83
    \n+
    84 // -----------------------------------------------------------------
    \n+
    85 // Interpolation
    \n+
    86 // -----------------------------------------------------------------
    \n
    87
    \n-
    \n-
    96 ScalarLocalToGlobalBasisAdaptor(const LocalBasis& localBasis_,
    \n-
    97 const Geometry& geometry_) :
    \n-
    98 localBasis(localBasis_), geometry(geometry_)
    \n-
    99 { }
    \n-
    \n-
    100
    \n-
    101 std::size_t size() const { return localBasis.size(); }
    \n-
    103
    \n-
    \n-
    110 std::size_t order() const {
    \n-
    111 if(geometry.affine())
    \n-
    112 // affine linear
    \n-
    113 return localBasis.order();
    \n-
    114 else
    \n-
    115 // assume at most order dim
    \n-
    116 return localBasis.order() + Traits::dimDomainGlobal - 1;
    \n-
    117 }
    \n-
    \n-
    118
    \n-
    \n-
    119 void evaluateFunction(const typename Traits::DomainLocal& in,
    \n-
    120 std::vector<typename Traits::Range>& out) const
    \n-
    121 {
    \n-
    122 localBasis.evaluateFunction(in, out);
    \n-
    123 }
    \n-
    \n-
    124
    \n-
    \n-
    125 void evaluateJacobian(const typename Traits::DomainLocal& in,
    \n-
    126 std::vector<typename Traits::Jacobian>& out) const
    \n-
    127 {
    \n-
    128 std::vector<typename LocalBasis::Traits::JacobianType>
    \n-
    129 localJacobian(size());
    \n-
    130 localBasis.evaluateJacobian(in, localJacobian);
    \n-
    131
    \n-
    132 const typename Geometry::JacobianInverseTransposed &geoJacobian =
    \n-
    133 geometry.jacobianInverseTransposed(in);
    \n-
    134
    \n-
    135 out.resize(size());
    \n-
    136 for(std::size_t i = 0; i < size(); ++i)
    \n-
    137 geoJacobian.mv(localJacobian[i][0], out[i][0]);
    \n-
    138 }
    \n-
    \n-
    139 };
    \n-
    \n-
    140
    \n+
    100 template<class DomainType, class RangeType>
    \n+
    \n+\n+
    102 {
    \n+
    103 public:
    \n+
    104
    \n+
    106 using FunctionType = std::function<RangeType(DomainType)>;
    \n+
    107
    \n+
    109 typedef typename RangeType::field_type CoefficientType;
    \n+
    110
    \n+\n+
    112
    \n+
    120 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
    \n+
    121 };
    \n+
    \n+
    122
    \n+
    130 template<class DomainType, class RangeType>
    \n+
    \n+\n+
    132 : public LocalInterpolationVirtualInterfaceBase<DomainType, RangeType>
    \n+
    133 {
    \n+
    134 public:
    \n+
    135
    \n+
    137 using FunctionType = std::function<RangeType(DomainType)>;
    \n+
    138
    \n+
    140 typedef typename RangeType::field_type CoefficientType;
    \n+
    141
    \n
    142
    \n-
    148 template<class LocalInterpolation, class Traits_>
    \n-
    \n-\n-
    150 const LocalInterpolation& localInterpolation;
    \n-
    151
    \n-
    152 public:
    \n-
    153 typedef Traits_ Traits;
    \n-
    154
    \n-
    156
    \n-
    \n-\n-
    165 ( const LocalInterpolation& localInterpolation_) :
    \n-
    166 localInterpolation(localInterpolation_)
    \n-
    167 { }
    \n+\n+
    144
    \n+
    145 // This method is only noted again for to make the documentation complete.
    \n+
    146
    \n+
    154 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
    \n+
    155
    \n+
    161 template<class F,
    \n+
    162 std::enable_if_t<not std::is_base_of<FunctionType, F>::value, int> = 0>
    \n+
    \n+
    163 void interpolate (const F& f, std::vector<CoefficientType>& out) const
    \n+
    164 {
    \n+\n+
    166 asBase.interpolate(FunctionType(std::cref(f)),out);
    \n+
    167 }
    \n
    \n
    168
    \n-
    169 template<class Function, class Coeff>
    \n-
    \n-
    170 void interpolate(const Function& function, std::vector<Coeff>& out) const
    \n-
    171 { localInterpolation.interpolate(function, out); }
    \n-
    \n-
    172 };
    \n-
    \n-
    173
    \n-
    176
    \n-
    186 template<class LocalFiniteElement, class Geometry>
    \n-
    \n-\n-
    \n-
    191 struct Traits {
    \n-
    192 typedef ScalarLocalToGlobalBasisAdaptor<typename LocalFiniteElement::
    \n-
    193 Traits::LocalBasisType, Geometry> Basis;
    \n-
    194 typedef LocalToGlobalInterpolationAdaptor<typename LocalFiniteElement::
    \n-
    195 Traits::LocalInterpolationType, typename Basis::Traits>
    \n-\n-
    197 typedef typename LocalFiniteElement::Traits::LocalCoefficientsType
    \n-\n-
    199 };
    \n-
    \n+
    174 template<class F, class C>
    \n+
    \n+
    175 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    176 {
    \n+
    177 std::vector<CoefficientType> outDummy;
    \n+\n+
    179 asBase.interpolate(FunctionType(std::cref(f)),outDummy);
    \n+
    180 out.resize(outDummy.size());
    \n+
    181 for(typename std::vector<CoefficientType>::size_type i=0; i<outDummy.size(); ++i)
    \n+
    182 out[i] = outDummy[i];
    \n+
    183 }
    \n+
    \n+
    184 };
    \n+
    \n+
    185
    \n+
    186
    \n+
    187
    \n+
    188 // -----------------------------------------------------------------
    \n+
    189 // Coefficients
    \n+
    190 // -----------------------------------------------------------------
    \n+
    191
    \n+
    \n+\n+
    198 {
    \n+
    199 public:
    \n
    200
    \n-
    201 private:
    \n-
    202 const LocalFiniteElement &localFE;
    \n-
    203 typename Traits::Basis basis_;
    \n-
    204 typename Traits::Interpolation interpolation_;
    \n+\n+
    202
    \n+
    204 virtual std::size_t size () const = 0;
    \n
    205
    \n-
    206 public:
    \n+
    207 const virtual LocalKey& localKey (std::size_t i) const = 0;
    \n
    208
    \n-
    \n-\n-
    218 ( const LocalFiniteElement& localFE_, const Geometry &geometry) :
    \n-
    219 localFE(localFE_),
    \n-
    220 basis_(localFE.localBasis(), geometry),
    \n-
    221 interpolation_(localFE.localInterpolation())
    \n-
    222 { }
    \n-
    \n-
    223
    \n-
    224 const typename Traits::Basis& basis() const { return basis_; }
    \n-
    \n-
    225 const typename Traits::Interpolation& interpolation() const
    \n-
    226 { return interpolation_; }
    \n-
    \n-
    \n-
    227 const typename Traits::Coefficients& coefficients() const
    \n-
    228 { return localFE.localCoefficients(); }
    \n-
    \n-
    229 GeometryType type() const { return localFE.type(); }
    \n-
    230 };
    \n-
    \n-
    231
    \n-
    233
    \n-
    243 template<class LocalFiniteElement, class Geometry>
    \n-
    \n-\n-
    245 const LocalFiniteElement& localFE;
    \n-
    246
    \n-
    247 public:
    \n-
    248 typedef ScalarLocalToGlobalFiniteElementAdaptor<LocalFiniteElement,
    \n-
    249 Geometry> FiniteElement;
    \n-
    250
    \n-
    252
    \n-
    \n-\n-
    261 (const LocalFiniteElement &localFE_) : localFE(localFE_) {}
    \n-
    \n-
    262
    \n-
    264
    \n-
    \n-
    274 const FiniteElement make(const Geometry& geometry) {
    \n-
    275 return FiniteElement(localFE, geometry);
    \n-
    276 }
    \n-
    \n-
    277 };
    \n-
    \n-
    278
    \n-
    279} // namespace Dune
    \n-
    280
    \n-
    281#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH
    \n+
    209 };
    \n+
    \n+
    210
    \n+
    211
    \n+
    212
    \n+
    213 // -----------------------------------------------------------------
    \n+
    214 // Finite Element
    \n+
    215 // -----------------------------------------------------------------
    \n+
    216
    \n+
    217
    \n+
    223 template<class T>
    \n+
    \n+\n+
    225 {
    \n+
    226 using LocalBasisTraits = T;
    \n+
    227 public:
    \n+\n+\n+\n+\n+\n+\n+
    234
    \n+\n+
    236
    \n+
    238 virtual const typename Traits::LocalBasisType& localBasis () const = 0;
    \n+
    239
    \n+
    241 virtual const typename Traits::LocalCoefficientsType& localCoefficients () const = 0;
    \n+
    242
    \n+
    244 virtual const typename Traits::LocalInterpolationType& localInterpolation () const = 0;
    \n+
    245
    \n+
    247 virtual unsigned int size () const = 0;
    \n+
    248
    \n+
    250 virtual const GeometryType type () const = 0;
    \n+
    251
    \n+\n+
    253 };
    \n+
    \n+
    254}
    \n+
    255#endif
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    RF RangeFieldType
    Export type for range field.
    Definition common/localbasis.hh:46
    \n-
    static constexpr int dimRange
    dimension of the range
    Definition common/localbasis.hh:49
    \n-
    DF DomainFieldType
    Export type for domain field.
    Definition common/localbasis.hh:37
    \n-
    static constexpr int dimDomain
    dimension of the domain
    Definition common/localbasis.hh:40
    \n
    R RangeType
    range type
    Definition common/localbasis.hh:52
    \n-
    Traits class for local-to-global basis adaptors.
    Definition localtoglobaladaptors.hh:30
    \n-
    LocalBasisTraits::RangeFieldType RangeField
    Definition localtoglobaladaptors.hh:37
    \n-
    LocalBasisTraits::DomainFieldType DomainField
    Definition localtoglobaladaptors.hh:31
    \n-
    FieldMatrix< RangeField, dimRange, dimDomainGlobal > Jacobian
    Definition localtoglobaladaptors.hh:41
    \n-
    static const std::size_t dimDomainLocal
    Definition localtoglobaladaptors.hh:32
    \n-
    LocalBasisTraits::RangeType Range
    Definition localtoglobaladaptors.hh:39
    \n-
    static const std::size_t dimDomainGlobal
    Definition localtoglobaladaptors.hh:33
    \n-
    static const std::size_t dimRange
    Definition localtoglobaladaptors.hh:38
    \n-
    FieldVector< DomainField, dimDomainGlobal > DomainGlobal
    Definition localtoglobaladaptors.hh:35
    \n-
    LocalBasisTraits::DomainType DomainLocal
    Definition localtoglobaladaptors.hh:34
    \n-
    Convert a simple scalar local basis into a global basis.
    Definition localtoglobaladaptors.hh:65
    \n-
    void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector< typename Traits::Jacobian > &out) const
    Definition localtoglobaladaptors.hh:125
    \n-
    std::size_t order() const
    return maximum polynomial order of the base function
    Definition localtoglobaladaptors.hh:110
    \n-
    LocalToGlobalBasisAdaptorTraits< typename LocalBasis::Traits, Geometry::coorddimension > Traits
    Definition localtoglobaladaptors.hh:84
    \n-
    ScalarLocalToGlobalBasisAdaptor(const LocalBasis &localBasis_, const Geometry &geometry_)
    construct a ScalarLocalToGlobalBasisAdaptor
    Definition localtoglobaladaptors.hh:96
    \n-
    void evaluateFunction(const typename Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const
    Definition localtoglobaladaptors.hh:119
    \n-
    std::size_t size() const
    Definition localtoglobaladaptors.hh:101
    \n-
    Convert a local interpolation into a global interpolation.
    Definition localtoglobaladaptors.hh:149
    \n-
    LocalToGlobalInterpolationAdaptor(const LocalInterpolation &localInterpolation_)
    construct a LocalToGlobalInterpolationAdaptor
    Definition localtoglobaladaptors.hh:165
    \n-
    void interpolate(const Function &function, std::vector< Coeff > &out) const
    Definition localtoglobaladaptors.hh:170
    \n-
    Traits_ Traits
    Definition localtoglobaladaptors.hh:153
    \n-
    Convert a simple scalar local finite element into a global finite element.
    Definition localtoglobaladaptors.hh:187
    \n-
    GeometryType type() const
    Definition localtoglobaladaptors.hh:229
    \n-
    const Traits::Coefficients & coefficients() const
    Definition localtoglobaladaptors.hh:227
    \n-
    const Traits::Interpolation & interpolation() const
    Definition localtoglobaladaptors.hh:225
    \n-
    const Traits::Basis & basis() const
    Definition localtoglobaladaptors.hh:224
    \n-
    ScalarLocalToGlobalFiniteElementAdaptor(const LocalFiniteElement &localFE_, const Geometry &geometry)
    construct a ScalarLocalToGlobalFiniteElementAdaptor
    Definition localtoglobaladaptors.hh:218
    \n-
    Definition localtoglobaladaptors.hh:191
    \n-
    LocalToGlobalInterpolationAdaptor< typename LocalFiniteElement::Traits::LocalInterpolationType, typename Basis::Traits > Interpolation
    Definition localtoglobaladaptors.hh:196
    \n-
    LocalFiniteElement::Traits::LocalCoefficientsType Coefficients
    Definition localtoglobaladaptors.hh:198
    \n-
    ScalarLocalToGlobalBasisAdaptor< typename LocalFiniteElement::Traits::LocalBasisType, Geometry > Basis
    Definition localtoglobaladaptors.hh:193
    \n-
    Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.
    Definition localtoglobaladaptors.hh:244
    \n-
    const FiniteElement make(const Geometry &geometry)
    construct ScalarLocalToGlobalFiniteElementAdaptor
    Definition localtoglobaladaptors.hh:274
    \n-
    ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry > FiniteElement
    Definition localtoglobaladaptors.hh:249
    \n-
    ScalarLocalToGlobalFiniteElementAdaptorFactory(const LocalFiniteElement &localFE_)
    construct a ScalarLocalToGlobalFiniteElementAdaptorFactory
    Definition localtoglobaladaptors.hh:261
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    virtual base class for a local interpolation
    Definition virtualinterface.hh:133
    \n+
    virtual ~LocalInterpolationVirtualInterface()
    Definition virtualinterface.hh:143
    \n+
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:137
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    determine coefficients interpolating a given function
    Definition virtualinterface.hh:175
    \n+
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:140
    \n+
    virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
    determine coefficients interpolating a given function
    \n+
    void interpolate(const F &f, std::vector< CoefficientType > &out) const
    determine coefficients interpolating a given function
    Definition virtualinterface.hh:163
    \n+
    virtual base class for a local basis
    Definition virtualinterface.hh:40
    \n+
    virtual unsigned int order() const =0
    Polynomial order of the shape functions.
    \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.
    \n+
    virtual unsigned int size() const =0
    Number of shape functions.
    \n+
    T Traits
    Definition virtualinterface.hh:42
    \n+
    virtual void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const =0
    Evaluate all basis function at given position.
    \n+
    virtual ~LocalBasisVirtualInterface()
    Definition virtualinterface.hh:45
    \n+
    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.
    \n+
    virtual base class for a local interpolation
    Definition virtualinterface.hh:102
    \n+
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:106
    \n+
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:109
    \n+
    virtual ~LocalInterpolationVirtualInterfaceBase()
    Definition virtualinterface.hh:111
    \n+
    virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
    determine coefficients interpolating a given function
    \n+
    virtual base class for local coefficients
    Definition virtualinterface.hh:198
    \n+
    virtual ~LocalCoefficientsVirtualInterface()
    Definition virtualinterface.hh:201
    \n+
    virtual std::size_t size() const =0
    number of coefficients
    \n+
    virtual const LocalKey & localKey(std::size_t i) const =0
    get i'th index
    \n+
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:225
    \n+
    virtual LocalFiniteElementVirtualInterface< T > * clone() const =0
    \n+
    virtual const Traits::LocalInterpolationType & localInterpolation() const =0
    \n+
    virtual unsigned int size() const =0
    \n+
    virtual const Traits::LocalBasisType & localBasis() const =0
    \n+
    virtual const GeometryType type() const =0
    \n+
    LocalFiniteElementTraits< LocalBasisVirtualInterface< LocalBasisTraits >, LocalCoefficientsVirtualInterface, LocalInterpolationVirtualInterface< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType > > Traits
    Definition virtualinterface.hh:233
    \n+
    virtual ~LocalFiniteElementVirtualInterface()
    Definition virtualinterface.hh:235
    \n+
    virtual const Traits::LocalCoefficientsType & localCoefficients() const =0
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,333 +1,322 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n * _\bc_\bo_\bm_\bm_\bo_\bn\n-localtoglobaladaptors.hh\n+virtualinterface.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH\n-7#define DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH\n-8\n-9#include \n+5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH\n+6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH\n+7\n+8#include \n+9#include \n 10#include \n-11\n-12#include \n-13#include \n-14#include \n-15\n-16#include \n-17\n-18namespace _\bD_\bu_\bn_\be {\n-19\n+11#include \n+12\n+13#include \n+14\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+18\n+19namespace _\bD_\bu_\bn_\be\n+20{\n 21\n-29 template\n-_\b3_\b0 struct _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs {\n-_\b3_\b1 typedef typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n-_\b3_\b2 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl = _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn;\n-_\b3_\b3 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl = dimDomainGlobal_;\n-_\b3_\b4 typedef typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n-_\b3_\b5 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl;\n-36\n-_\b3_\b7 typedef typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-_\b3_\b8 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be;\n-_\b3_\b9 typedef typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be _\bR_\ba_\bn_\bg_\be;\n-40\n-_\b4_\b1 typedef FieldMatrix _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn;\n-42 };\n+22 // forward declaration needed by the helper traits\n+23 template\n+24 class LocalInterpolationVirtualInterface;\n+25\n+26\n+27\n+28 // -----------------------------------------------------------------\n+29 // Basis\n+30 // -----------------------------------------------------------------\n+31\n+38 template\n+_\b3_\b9 class _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+40 {\n+41 public:\n+_\b4_\b2 using _\bT_\br_\ba_\bi_\bt_\bs = T;\n 43\n-45\n-64 template\n-_\b6_\b5 class _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br {\n-66 static_assert(LocalBasis::Traits::dimRange == 1,\n-67 \"ScalarLocalToGlobalBasisAdaptor can only wrap a \"\n-68 \"scalar local basis.\");\n-69 static_assert((std::is_same::value),\n-71 \"ScalarLocalToGlobalBasisAdaptor: LocalBasis must use \"\n-72 \"the same ctype as Geometry\");\n-73 static_assert\n-74 ( static_cast(LocalBasis::Traits::dimDomain) ==\n-75 static_cast(Geometry::mydimension),\n-76 \"ScalarLocalToGlobalBasisAdaptor: LocalBasis domain dimension must \"\n-77 \"match local dimension of Geometry\");\n-78\n-79 const LocalBasis& localBasis;\n-80 Geometry geometry;\n+44\n+_\b4_\b5 virtual _\b~_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() {}\n+46\n+_\b4_\b8 virtual unsigned int _\bs_\bi_\bz_\be () const = 0;\n+49\n+_\b5_\b1 virtual unsigned int _\bo_\br_\bd_\be_\br () const = 0;\n+52\n+_\b5_\b8 virtual void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename Traits::DomainType& in,\n+59 std::vector& out) const = 0;\n+60\n+_\b6_\b9 virtual void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename Traits::DomainType& in, /\n+/ position\n+70 std::vector& out) const = 0;\n+71\n+_\b7_\b7 virtual void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array&\n+_\bo_\br_\bd_\be_\br,\n+78 const typename Traits::DomainType& in,\n+79 std::vector& out) const = 0;\n+80 };\n 81\n-82 public:\n-83 typedef _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n-85\n+82\n+83\n+84 // -----------------------------------------------------------------\n+85 // Interpolation\n+86 // -----------------------------------------------------------------\n 87\n-_\b9_\b6 _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br(const LocalBasis& localBasis_,\n-97 const Geometry& geometry_) :\n-98 localBasis(localBasis_), geometry(geometry_)\n-99 { }\n-100\n-_\b1_\b0_\b1 std::size_t _\bs_\bi_\bz_\be() const { return localBasis.size(); }\n-103\n-_\b1_\b1_\b0 std::size_t _\bo_\br_\bd_\be_\br() const {\n-111 if(geometry.affine())\n-112 // affine linear\n-113 return localBasis.order();\n-114 else\n-115 // assume at most order dim\n-116 return localBasis.order() + _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl - 1;\n-117 }\n-118\n-_\b1_\b1_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& in,\n-120 std::vector& out) const\n-121 {\n-122 localBasis.evaluateFunction(in, out);\n-123 }\n-124\n-_\b1_\b2_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& in,\n-126 std::vector& out) const\n-127 {\n-128 std::vector\n-129 localJacobian(_\bs_\bi_\bz_\be());\n-130 localBasis.evaluateJacobian(in, localJacobian);\n-131\n-132 const typename Geometry::JacobianInverseTransposed &geoJacobian =\n-133 geometry.jacobianInverseTransposed(in);\n-134\n-135 out.resize(_\bs_\bi_\bz_\be());\n-136 for(std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-137 geoJacobian.mv(localJacobian[i][0], out[i][0]);\n-138 }\n-139 };\n-140\n+100 template\n+_\b1_\b0_\b1 class _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be\n+102 {\n+103 public:\n+104\n+_\b1_\b0_\b6 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be = std::function;\n+107\n+_\b1_\b0_\b9 typedef typename RangeType::field_type _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\n+110\n+_\b1_\b1_\b1 virtual _\b~_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be() {}\n+112\n+_\b1_\b2_\b0 virtual void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& f, std::\n+vector& out) const = 0;\n+121 };\n+122\n+130 template\n+_\b1_\b3_\b1 class _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+132 : public _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be\n+133 {\n+134 public:\n+135\n+_\b1_\b3_\b7 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be = std::function;\n+138\n+_\b1_\b4_\b0 typedef typename RangeType::field_type _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\n+141\n 142\n-148 template\n-_\b1_\b4_\b9 class _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br {\n-150 const LocalInterpolation& localInterpolation;\n-151\n-152 public:\n-_\b1_\b5_\b3 typedef Traits_ _\bT_\br_\ba_\bi_\bt_\bs;\n-154\n-156\n-_\b1_\b6_\b4 _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-165 ( const LocalInterpolation& localInterpolation_) :\n-166 localInterpolation(localInterpolation_)\n-167 { }\n+_\b1_\b4_\b3 virtual _\b~_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() {}\n+144\n+145 // This method is only noted again for to make the documentation complete.\n+146\n+_\b1_\b5_\b4 virtual void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& f, std::\n+vector& out) const = 0;\n+155\n+161 template::value, int> = 0>\n+_\b1_\b6_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+164 {\n+165 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b<_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b>& asBase\n+= *this;\n+166 asBase._\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be(std::cref(f)),out);\n+167 }\n 168\n-169 template\n-_\b1_\b7_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const Function& function, std::vector& out) const\n-171 { localInterpolation.interpolate(function, out); }\n-172 };\n-173\n-176\n-186 template\n-_\b1_\b8_\b7 struct _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br {\n-_\b1_\b9_\b1 struct _\bT_\br_\ba_\bi_\bt_\bs {\n-192 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br _\bB_\ba_\bs_\bi_\bs;\n-194 typedef _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-_\b1_\b9_\b6 _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-197 typedef typename LocalFiniteElement::Traits::LocalCoefficientsType\n-_\b1_\b9_\b8 _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-199 };\n+174 template\n+_\b1_\b7_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+176 {\n+177 std::vector outDummy;\n+178 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b<_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b>& asBase\n+= *this;\n+179 asBase._\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be(std::cref(f)),outDummy);\n+180 out.resize(outDummy.size());\n+181 for(typename std::vector::size_type i=0; i\n-_\b2_\b4_\b4 class _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-245 const LocalFiniteElement& localFE;\n-246\n-247 public:\n-248 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-250\n-252\n-_\b2_\b6_\b0 _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-261 (const LocalFiniteElement &localFE_) : localFE(localFE_) {}\n-262\n-264\n-_\b2_\b7_\b4 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry) {\n-275 return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(localFE, geometry);\n-276 }\n-277 };\n-278\n-279} // namespace Dune\n-280\n-281#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH\n+209 };\n+210\n+211\n+212\n+213 // -----------------------------------------------------------------\n+214 // Finite Element\n+215 // -----------------------------------------------------------------\n+216\n+217\n+223 template\n+_\b2_\b2_\b4 class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+225 {\n+226 using LocalBasisTraits = T;\n+227 public:\n+228 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+229 _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b>,\n+230 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be,\n+231 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be<\n+232 typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be,\n+_\b2_\b3_\b3 typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be> > _\bT_\br_\ba_\bi_\bt_\bs;\n+234\n+_\b2_\b3_\b5 virtual _\b~_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() {}\n+236\n+_\b2_\b3_\b8 virtual const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const = 0;\n+239\n+_\b2_\b4_\b1 virtual const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs ()\n+const = 0;\n+242\n+_\b2_\b4_\b4 virtual const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+() const = 0;\n+245\n+_\b2_\b4_\b7 virtual unsigned int _\bs_\bi_\bz_\be () const = 0;\n+248\n+_\b2_\b5_\b0 virtual const GeometryType _\bt_\by_\bp_\be () const = 0;\n+251\n+_\b2_\b5_\b2 virtual _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b>* _\bc_\bl_\bo_\bn_\be() const = 0;\n+253 };\n+254}\n+255#endif\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n-RF RangeFieldType\n-Export type for range field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static constexpr int dimRange\n-dimension of the range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n-DF DomainFieldType\n-Export type for domain field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n-static constexpr int dimDomain\n-dimension of the domain\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:40\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n R RangeType\n range type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs\n-Traits class for local-to-global basis adaptors.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd\n-LocalBasisTraits::RangeFieldType RangeField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd\n-LocalBasisTraits::DomainFieldType DomainField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-FieldMatrix< RangeField, dimRange, dimDomainGlobal > Jacobian\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n-static const std::size_t dimDomainLocal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be\n-LocalBasisTraits::RangeType Range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl\n-static const std::size_t dimDomainGlobal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const std::size_t dimRange\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl\n-FieldVector< DomainField, dimDomainGlobal > DomainGlobal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n-LocalBasisTraits::DomainType DomainLocal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-Convert a simple scalar local basis into a global basis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector<\n-typename Traits::Jacobian > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-return maximum polynomial order of the base function\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalToGlobalBasisAdaptorTraits< typename LocalBasis::Traits, Geometry::\n-coorddimension > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-ScalarLocalToGlobalBasisAdaptor(const LocalBasis &localBasis_, const Geometry\n-&geometry_)\n-construct a ScalarLocalToGlobalBasisAdaptor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainLocal &in, std::vector<\n-typename Traits::Range > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-Convert a local interpolation into a global interpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-LocalToGlobalInterpolationAdaptor(const LocalInterpolation\n-&localInterpolation_)\n-construct a LocalToGlobalInterpolationAdaptor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const Function &function, std::vector< Coeff > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:170\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-Traits_ Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-Convert a simple scalar local finite element into a global finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:229\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::Coefficients & coefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:227\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::Interpolation & interpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n-const Traits::Basis & basis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:224\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:\n-_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-ScalarLocalToGlobalFiniteElementAdaptor(const LocalFiniteElement &localFE_,\n-const Geometry &geometry)\n-construct a ScalarLocalToGlobalFiniteElementAdaptor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:218\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-LocalToGlobalInterpolationAdaptor< typename LocalFiniteElement::Traits::\n-LocalInterpolationType, typename Basis::Traits > Interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-LocalFiniteElement::Traits::LocalCoefficientsType Coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:198\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-ScalarLocalToGlobalBasisAdaptor< typename LocalFiniteElement::Traits::\n-LocalBasisType, Geometry > Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:193\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:244\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const Geometry &geometry)\n-construct ScalarLocalToGlobalFiniteElementAdaptor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:274\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry >\n-FiniteElement\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-ScalarLocalToGlobalFiniteElementAdaptorFactory(const LocalFiniteElement\n-&localFE_)\n-construct a ScalarLocalToGlobalFiniteElementAdaptorFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:261\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for a local interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual ~LocalInterpolationVirtualInterface()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:143\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+std::function< RangeType(DomainType)> FunctionType\n+type of function to interpolate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+determine coefficients interpolating a given function\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be\n+RangeType::field_type CoefficientType\n+type of the coefficient vector in the interpolate method\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:140\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+virtual void interpolate(const FunctionType &f, std::vector< CoefficientType >\n+&out) const =0\n+determine coefficients interpolating a given function\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< CoefficientType > &out) const\n+determine coefficients interpolating a given function\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for a local basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\br_\bd_\be_\br\n+virtual unsigned int order() const =0\n+Polynomial order of the shape functions.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+virtual void evaluateJacobian(const typename Traits::DomainType &in, std::\n+vector< typename Traits::JacobianType > &out) const =0\n+Evaluate jacobian of all shape functions at given position.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n+virtual unsigned int size() const =0\n+Number of shape functions.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+T Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+virtual void evaluateFunction(const typename Traits::DomainType &in, std::\n+vector< typename Traits::RangeType > &out) const =0\n+Evaluate all basis function at given position.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual ~LocalBasisVirtualInterface()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+virtual void partial(const std::array< unsigned int, Traits::dimDomain >\n+&order, const typename Traits::DomainType &in, std::vector< typename Traits::\n+RangeType > &out) const =0\n+Evaluate partial derivatives of any order of all shape functions.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be\n+virtual base class for a local interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+std::function< RangeType(DomainType)> FunctionType\n+type of function to interpolate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be\n+RangeType::field_type CoefficientType\n+type of the coefficient vector in the interpolate method\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b:_\b:\n+_\b~_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be\n+virtual ~LocalInterpolationVirtualInterfaceBase()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+virtual void interpolate(const FunctionType &f, std::vector< CoefficientType >\n+&out) const =0\n+determine coefficients interpolating a given function\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for local coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:198\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual ~LocalCoefficientsVirtualInterface()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:201\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n+virtual std::size_t size() const =0\n+number of coefficients\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+virtual const LocalKey & localKey(std::size_t i) const =0\n+get i'th index\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for local finite elements with functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bl_\bo_\bn_\be\n+virtual LocalFiniteElementVirtualInterface< T > * clone() const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+virtual const Traits::LocalInterpolationType & localInterpolation() const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n+virtual unsigned int size() const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+virtual const Traits::LocalBasisType & localBasis() const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bt_\by_\bp_\be\n+virtual const GeometryType type() const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< LocalBasisVirtualInterface< LocalBasisTraits >,\n+LocalCoefficientsVirtualInterface, LocalInterpolationVirtualInterface< typename\n+LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:233\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual ~LocalFiniteElementVirtualInterface()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:235\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+virtual const Traits::LocalCoefficientsType & localCoefficients() const =0\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelec.hh File Reference\n+dune-localfunctions: localtoglobaladaptors.hh File Reference\n \n \n \n \n \n \n \n@@ -65,25 +65,58 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    nedelec.hh File Reference
    \n+ \n+
    localtoglobaladaptors.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/nedelec/nedelec1stkindsimplex.hh>
    \n-#include <dune/localfunctions/nedelec/nedelec1stkindcube.hh>
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/geometry/type.hh>
    \n
    \n

    Go to the source code of this file.

    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+Classes

    struct  Dune::LocalToGlobalBasisAdaptorTraits< LocalBasisTraits, dimDomainGlobal_ >
     Traits class for local-to-global basis adaptors. More...
     
    class  Dune::ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry >
     Convert a simple scalar local basis into a global basis. More...
     
    class  Dune::LocalToGlobalInterpolationAdaptor< LocalInterpolation, Traits_ >
     Convert a local interpolation into a global interpolation. More...
     
    struct  Dune::ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry >
     Convert a simple scalar local finite element into a global finite element. More...
     
    struct  Dune::ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry >::Traits
     
    class  Dune::ScalarLocalToGlobalFiniteElementAdaptorFactory< LocalFiniteElement, Geometry >
     Factory for ScalarLocalToGlobalFiniteElementAdaptor objects. More...
     
    \n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,44 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-nedelec.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+localtoglobaladaptors.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b,\n+ _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl_\b__\b _\b>\n+\u00a0 Traits class for local-to-global basis adaptors. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b _\b>\n+\u00a0 Convert a simple scalar local basis into a global basis. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bT_\br_\ba_\bi_\bt_\bs_\b__\b _\b>\n+\u00a0 Convert a local interpolation into a global interpolation. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,\n+ _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b _\b>\n+\u00a0 Convert a simple scalar local finite element into a global finite\n+ element. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,\n+ _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<\n+ _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b _\b>\n+\u00a0 Factory for _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br objects. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelec.hh Source File\n+dune-localfunctions: localtoglobaladaptors.hh Source File\n \n \n \n \n \n \n \n@@ -70,38 +70,270 @@\n
    \n \n \n \n \n \n \n
    \n-
    nedelec.hh
    \n+
    localtoglobaladaptors.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_HH
    \n-
    7
    \n-
    8// Nedelec element implementations with run-time order
    \n-
    9// [include them here once they exist]
    \n-
    10
    \n-
    11// Nedelec element implementations with compile-time order
    \n-\n-\n-
    14
    \n-
    15#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_HH
    \n-\n-\n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH
    \n+
    8
    \n+
    9#include <cstddef>
    \n+
    10#include <vector>
    \n+
    11
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13#include <dune/common/fvector.hh>
    \n+
    14#include <dune/common/typetraits.hh>
    \n+
    15
    \n+
    16#include <dune/geometry/type.hh>
    \n+
    17
    \n+
    18namespace Dune {
    \n+
    19
    \n+
    21
    \n+
    29 template<class LocalBasisTraits, std::size_t dimDomainGlobal_>
    \n+
    \n+\n+\n+
    32 static const std::size_t dimDomainLocal = LocalBasisTraits::dimDomain;
    \n+
    33 static const std::size_t dimDomainGlobal = dimDomainGlobal_;
    \n+\n+
    35 typedef FieldVector<DomainField, dimDomainGlobal> DomainGlobal;
    \n+
    36
    \n+\n+
    38 static const std::size_t dimRange = LocalBasisTraits::dimRange;
    \n+\n+
    40
    \n+
    41 typedef FieldMatrix<RangeField, dimRange, dimDomainGlobal> Jacobian;
    \n+
    42 };
    \n+
    \n+
    43
    \n+
    45
    \n+
    64 template<class LocalBasis, class Geometry>
    \n+
    \n+\n+
    66 static_assert(LocalBasis::Traits::dimRange == 1,
    \n+
    67 "ScalarLocalToGlobalBasisAdaptor can only wrap a "
    \n+
    68 "scalar local basis.");
    \n+
    69 static_assert((std::is_same<typename LocalBasis::Traits::DomainFieldType,
    \n+
    70 typename Geometry::ctype>::value),
    \n+
    71 "ScalarLocalToGlobalBasisAdaptor: LocalBasis must use "
    \n+
    72 "the same ctype as Geometry");
    \n+
    73 static_assert
    \n+
    74 ( static_cast<std::size_t>(LocalBasis::Traits::dimDomain) ==
    \n+
    75 static_cast<std::size_t>(Geometry::mydimension),
    \n+
    76 "ScalarLocalToGlobalBasisAdaptor: LocalBasis domain dimension must "
    \n+
    77 "match local dimension of Geometry");
    \n+
    78
    \n+
    79 const LocalBasis& localBasis;
    \n+
    80 Geometry geometry;
    \n+
    81
    \n+
    82 public:
    \n+
    83 typedef LocalToGlobalBasisAdaptorTraits<typename LocalBasis::Traits,
    \n+
    84 Geometry::coorddimension> Traits;
    \n+
    85
    \n+
    87
    \n+
    \n+
    96 ScalarLocalToGlobalBasisAdaptor(const LocalBasis& localBasis_,
    \n+
    97 const Geometry& geometry_) :
    \n+
    98 localBasis(localBasis_), geometry(geometry_)
    \n+
    99 { }
    \n+
    \n+
    100
    \n+
    101 std::size_t size() const { return localBasis.size(); }
    \n+
    103
    \n+
    \n+
    110 std::size_t order() const {
    \n+
    111 if(geometry.affine())
    \n+
    112 // affine linear
    \n+
    113 return localBasis.order();
    \n+
    114 else
    \n+
    115 // assume at most order dim
    \n+
    116 return localBasis.order() + Traits::dimDomainGlobal - 1;
    \n+
    117 }
    \n+
    \n+
    118
    \n+
    \n+
    119 void evaluateFunction(const typename Traits::DomainLocal& in,
    \n+
    120 std::vector<typename Traits::Range>& out) const
    \n+
    121 {
    \n+
    122 localBasis.evaluateFunction(in, out);
    \n+
    123 }
    \n+
    \n+
    124
    \n+
    \n+
    125 void evaluateJacobian(const typename Traits::DomainLocal& in,
    \n+
    126 std::vector<typename Traits::Jacobian>& out) const
    \n+
    127 {
    \n+
    128 std::vector<typename LocalBasis::Traits::JacobianType>
    \n+
    129 localJacobian(size());
    \n+
    130 localBasis.evaluateJacobian(in, localJacobian);
    \n+
    131
    \n+
    132 const typename Geometry::JacobianInverseTransposed &geoJacobian =
    \n+
    133 geometry.jacobianInverseTransposed(in);
    \n+
    134
    \n+
    135 out.resize(size());
    \n+
    136 for(std::size_t i = 0; i < size(); ++i)
    \n+
    137 geoJacobian.mv(localJacobian[i][0], out[i][0]);
    \n+
    138 }
    \n+
    \n+
    139 };
    \n+
    \n+
    140
    \n+
    142
    \n+
    148 template<class LocalInterpolation, class Traits_>
    \n+
    \n+\n+
    150 const LocalInterpolation& localInterpolation;
    \n+
    151
    \n+
    152 public:
    \n+
    153 typedef Traits_ Traits;
    \n+
    154
    \n+
    156
    \n+
    \n+\n+
    165 ( const LocalInterpolation& localInterpolation_) :
    \n+
    166 localInterpolation(localInterpolation_)
    \n+
    167 { }
    \n+
    \n+
    168
    \n+
    169 template<class Function, class Coeff>
    \n+
    \n+
    170 void interpolate(const Function& function, std::vector<Coeff>& out) const
    \n+
    171 { localInterpolation.interpolate(function, out); }
    \n+
    \n+
    172 };
    \n+
    \n+
    173
    \n+
    176
    \n+
    186 template<class LocalFiniteElement, class Geometry>
    \n+
    \n+\n+
    \n+
    191 struct Traits {
    \n+
    192 typedef ScalarLocalToGlobalBasisAdaptor<typename LocalFiniteElement::
    \n+
    193 Traits::LocalBasisType, Geometry> Basis;
    \n+
    194 typedef LocalToGlobalInterpolationAdaptor<typename LocalFiniteElement::
    \n+
    195 Traits::LocalInterpolationType, typename Basis::Traits>
    \n+\n+
    197 typedef typename LocalFiniteElement::Traits::LocalCoefficientsType
    \n+\n+
    199 };
    \n+
    \n+
    200
    \n+
    201 private:
    \n+
    202 const LocalFiniteElement &localFE;
    \n+
    203 typename Traits::Basis basis_;
    \n+
    204 typename Traits::Interpolation interpolation_;
    \n+
    205
    \n+
    206 public:
    \n+
    208
    \n+
    \n+\n+
    218 ( const LocalFiniteElement& localFE_, const Geometry &geometry) :
    \n+
    219 localFE(localFE_),
    \n+
    220 basis_(localFE.localBasis(), geometry),
    \n+
    221 interpolation_(localFE.localInterpolation())
    \n+
    222 { }
    \n+
    \n+
    223
    \n+
    224 const typename Traits::Basis& basis() const { return basis_; }
    \n+
    \n+
    225 const typename Traits::Interpolation& interpolation() const
    \n+
    226 { return interpolation_; }
    \n+
    \n+
    \n+
    227 const typename Traits::Coefficients& coefficients() const
    \n+
    228 { return localFE.localCoefficients(); }
    \n+
    \n+
    229 GeometryType type() const { return localFE.type(); }
    \n+
    230 };
    \n+
    \n+
    231
    \n+
    233
    \n+
    243 template<class LocalFiniteElement, class Geometry>
    \n+
    \n+\n+
    245 const LocalFiniteElement& localFE;
    \n+
    246
    \n+
    247 public:
    \n+
    248 typedef ScalarLocalToGlobalFiniteElementAdaptor<LocalFiniteElement,
    \n+
    249 Geometry> FiniteElement;
    \n+
    250
    \n+
    252
    \n+
    \n+\n+
    261 (const LocalFiniteElement &localFE_) : localFE(localFE_) {}
    \n+
    \n+
    262
    \n+
    264
    \n+
    \n+
    274 const FiniteElement make(const Geometry& geometry) {
    \n+
    275 return FiniteElement(localFE, geometry);
    \n+
    276 }
    \n+
    \n+
    277 };
    \n+
    \n+
    278
    \n+
    279} // namespace Dune
    \n+
    280
    \n+
    281#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH
    \n+
    Definition bdfmcube.hh:18
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    RF RangeFieldType
    Export type for range field.
    Definition common/localbasis.hh:46
    \n+
    static constexpr int dimRange
    dimension of the range
    Definition common/localbasis.hh:49
    \n+
    DF DomainFieldType
    Export type for domain field.
    Definition common/localbasis.hh:37
    \n+
    static constexpr int dimDomain
    dimension of the domain
    Definition common/localbasis.hh:40
    \n+
    R RangeType
    range type
    Definition common/localbasis.hh:52
    \n+
    Traits class for local-to-global basis adaptors.
    Definition localtoglobaladaptors.hh:30
    \n+
    LocalBasisTraits::RangeFieldType RangeField
    Definition localtoglobaladaptors.hh:37
    \n+
    LocalBasisTraits::DomainFieldType DomainField
    Definition localtoglobaladaptors.hh:31
    \n+
    FieldMatrix< RangeField, dimRange, dimDomainGlobal > Jacobian
    Definition localtoglobaladaptors.hh:41
    \n+
    static const std::size_t dimDomainLocal
    Definition localtoglobaladaptors.hh:32
    \n+
    LocalBasisTraits::RangeType Range
    Definition localtoglobaladaptors.hh:39
    \n+
    static const std::size_t dimDomainGlobal
    Definition localtoglobaladaptors.hh:33
    \n+
    static const std::size_t dimRange
    Definition localtoglobaladaptors.hh:38
    \n+
    FieldVector< DomainField, dimDomainGlobal > DomainGlobal
    Definition localtoglobaladaptors.hh:35
    \n+
    LocalBasisTraits::DomainType DomainLocal
    Definition localtoglobaladaptors.hh:34
    \n+
    Convert a simple scalar local basis into a global basis.
    Definition localtoglobaladaptors.hh:65
    \n+
    void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector< typename Traits::Jacobian > &out) const
    Definition localtoglobaladaptors.hh:125
    \n+
    std::size_t order() const
    return maximum polynomial order of the base function
    Definition localtoglobaladaptors.hh:110
    \n+
    LocalToGlobalBasisAdaptorTraits< typename LocalBasis::Traits, Geometry::coorddimension > Traits
    Definition localtoglobaladaptors.hh:84
    \n+
    ScalarLocalToGlobalBasisAdaptor(const LocalBasis &localBasis_, const Geometry &geometry_)
    construct a ScalarLocalToGlobalBasisAdaptor
    Definition localtoglobaladaptors.hh:96
    \n+
    void evaluateFunction(const typename Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const
    Definition localtoglobaladaptors.hh:119
    \n+
    std::size_t size() const
    Definition localtoglobaladaptors.hh:101
    \n+
    Convert a local interpolation into a global interpolation.
    Definition localtoglobaladaptors.hh:149
    \n+
    LocalToGlobalInterpolationAdaptor(const LocalInterpolation &localInterpolation_)
    construct a LocalToGlobalInterpolationAdaptor
    Definition localtoglobaladaptors.hh:165
    \n+
    void interpolate(const Function &function, std::vector< Coeff > &out) const
    Definition localtoglobaladaptors.hh:170
    \n+
    Traits_ Traits
    Definition localtoglobaladaptors.hh:153
    \n+
    Convert a simple scalar local finite element into a global finite element.
    Definition localtoglobaladaptors.hh:187
    \n+
    GeometryType type() const
    Definition localtoglobaladaptors.hh:229
    \n+
    const Traits::Coefficients & coefficients() const
    Definition localtoglobaladaptors.hh:227
    \n+
    const Traits::Interpolation & interpolation() const
    Definition localtoglobaladaptors.hh:225
    \n+
    const Traits::Basis & basis() const
    Definition localtoglobaladaptors.hh:224
    \n+
    ScalarLocalToGlobalFiniteElementAdaptor(const LocalFiniteElement &localFE_, const Geometry &geometry)
    construct a ScalarLocalToGlobalFiniteElementAdaptor
    Definition localtoglobaladaptors.hh:218
    \n+
    Definition localtoglobaladaptors.hh:191
    \n+
    LocalToGlobalInterpolationAdaptor< typename LocalFiniteElement::Traits::LocalInterpolationType, typename Basis::Traits > Interpolation
    Definition localtoglobaladaptors.hh:196
    \n+
    LocalFiniteElement::Traits::LocalCoefficientsType Coefficients
    Definition localtoglobaladaptors.hh:198
    \n+
    ScalarLocalToGlobalBasisAdaptor< typename LocalFiniteElement::Traits::LocalBasisType, Geometry > Basis
    Definition localtoglobaladaptors.hh:193
    \n+
    Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.
    Definition localtoglobaladaptors.hh:244
    \n+
    const FiniteElement make(const Geometry &geometry)
    construct ScalarLocalToGlobalFiniteElementAdaptor
    Definition localtoglobaladaptors.hh:274
    \n+
    ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry > FiniteElement
    Definition localtoglobaladaptors.hh:249
    \n+
    ScalarLocalToGlobalFiniteElementAdaptorFactory(const LocalFiniteElement &localFE_)
    construct a ScalarLocalToGlobalFiniteElementAdaptorFactory
    Definition localtoglobaladaptors.hh:261
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,333 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-nedelec.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+localtoglobaladaptors.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_HH\n-6#define DUNE_LOCALFUNCTIONS_NEDELEC_HH\n-7\n-8// Nedelec element implementations with run-time order\n-9// [include them here once they exist]\n-10\n-11// Nedelec element implementations with compile-time order\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b/_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-14\n-15#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_HH\n-_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bn_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bk_\bi_\bn_\bd_\bc_\bu_\bb_\be_\b._\bh_\bh\n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH\n+7#define DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH\n+8\n+9#include \n+10#include \n+11\n+12#include \n+13#include \n+14#include \n+15\n+16#include \n+17\n+18namespace _\bD_\bu_\bn_\be {\n+19\n+21\n+29 template\n+_\b3_\b0 struct _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs {\n+_\b3_\b1 typedef typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n+_\b3_\b2 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl = _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn;\n+_\b3_\b3 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl = dimDomainGlobal_;\n+_\b3_\b4 typedef typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n+_\b3_\b5 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl;\n+36\n+_\b3_\b7 typedef typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+_\b3_\b8 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be;\n+_\b3_\b9 typedef typename _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be _\bR_\ba_\bn_\bg_\be;\n+40\n+_\b4_\b1 typedef FieldMatrix _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn;\n+42 };\n+43\n+45\n+64 template\n+_\b6_\b5 class _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br {\n+66 static_assert(LocalBasis::Traits::dimRange == 1,\n+67 \"ScalarLocalToGlobalBasisAdaptor can only wrap a \"\n+68 \"scalar local basis.\");\n+69 static_assert((std::is_same::value),\n+71 \"ScalarLocalToGlobalBasisAdaptor: LocalBasis must use \"\n+72 \"the same ctype as Geometry\");\n+73 static_assert\n+74 ( static_cast(LocalBasis::Traits::dimDomain) ==\n+75 static_cast(Geometry::mydimension),\n+76 \"ScalarLocalToGlobalBasisAdaptor: LocalBasis domain dimension must \"\n+77 \"match local dimension of Geometry\");\n+78\n+79 const LocalBasis& localBasis;\n+80 Geometry geometry;\n+81\n+82 public:\n+83 typedef _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n+85\n+87\n+_\b9_\b6 _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br(const LocalBasis& localBasis_,\n+97 const Geometry& geometry_) :\n+98 localBasis(localBasis_), geometry(geometry_)\n+99 { }\n+100\n+_\b1_\b0_\b1 std::size_t _\bs_\bi_\bz_\be() const { return localBasis.size(); }\n+103\n+_\b1_\b1_\b0 std::size_t _\bo_\br_\bd_\be_\br() const {\n+111 if(geometry.affine())\n+112 // affine linear\n+113 return localBasis.order();\n+114 else\n+115 // assume at most order dim\n+116 return localBasis.order() + _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl - 1;\n+117 }\n+118\n+_\b1_\b1_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& in,\n+120 std::vector& out) const\n+121 {\n+122 localBasis.evaluateFunction(in, out);\n+123 }\n+124\n+_\b1_\b2_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& in,\n+126 std::vector& out) const\n+127 {\n+128 std::vector\n+129 localJacobian(_\bs_\bi_\bz_\be());\n+130 localBasis.evaluateJacobian(in, localJacobian);\n+131\n+132 const typename Geometry::JacobianInverseTransposed &geoJacobian =\n+133 geometry.jacobianInverseTransposed(in);\n+134\n+135 out.resize(_\bs_\bi_\bz_\be());\n+136 for(std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+137 geoJacobian.mv(localJacobian[i][0], out[i][0]);\n+138 }\n+139 };\n+140\n+142\n+148 template\n+_\b1_\b4_\b9 class _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br {\n+150 const LocalInterpolation& localInterpolation;\n+151\n+152 public:\n+_\b1_\b5_\b3 typedef Traits_ _\bT_\br_\ba_\bi_\bt_\bs;\n+154\n+156\n+_\b1_\b6_\b4 _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+165 ( const LocalInterpolation& localInterpolation_) :\n+166 localInterpolation(localInterpolation_)\n+167 { }\n+168\n+169 template\n+_\b1_\b7_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const Function& function, std::vector& out) const\n+171 { localInterpolation.interpolate(function, out); }\n+172 };\n+173\n+176\n+186 template\n+_\b1_\b8_\b7 struct _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br {\n+_\b1_\b9_\b1 struct _\bT_\br_\ba_\bi_\bt_\bs {\n+192 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br _\bB_\ba_\bs_\bi_\bs;\n+194 typedef _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+_\b1_\b9_\b6 _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+197 typedef typename LocalFiniteElement::Traits::LocalCoefficientsType\n+_\b1_\b9_\b8 _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+199 };\n+200\n+201 private:\n+202 const LocalFiniteElement &localFE;\n+203 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n+204 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n+205\n+206 public:\n+208\n+_\b2_\b1_\b7 _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+218 ( const LocalFiniteElement& localFE_, const Geometry &geometry) :\n+219 localFE(localFE_),\n+220 basis_(localFE.localBasis(), geometry),\n+221 interpolation_(localFE.localInterpolation())\n+222 { }\n+223\n+_\b2_\b2_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\n+_\b2_\b2_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n+226 { return interpolation_; }\n+_\b2_\b2_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n+228 { return localFE.localCoefficients(); }\n+_\b2_\b2_\b9 GeometryType _\bt_\by_\bp_\be() const { return localFE.type(); }\n+230 };\n+231\n+233\n+243 template\n+_\b2_\b4_\b4 class _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+245 const LocalFiniteElement& localFE;\n+246\n+247 public:\n+248 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+250\n+252\n+_\b2_\b6_\b0 _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+261 (const LocalFiniteElement &localFE_) : localFE(localFE_) {}\n+262\n+264\n+_\b2_\b7_\b4 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry) {\n+275 return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(localFE, geometry);\n+276 }\n+277 };\n+278\n+279} // namespace Dune\n+280\n+281#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALTOGLOBALADAPTORS_HH\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n+RF RangeFieldType\n+Export type for range field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static constexpr int dimRange\n+dimension of the range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n+DF DomainFieldType\n+Export type for domain field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n+static constexpr int dimDomain\n+dimension of the domain\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n+R RangeType\n+range type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs\n+Traits class for local-to-global basis adaptors.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd\n+LocalBasisTraits::RangeFieldType RangeField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd\n+LocalBasisTraits::DomainFieldType DomainField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+FieldMatrix< RangeField, dimRange, dimDomainGlobal > Jacobian\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n+static const std::size_t dimDomainLocal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be\n+LocalBasisTraits::RangeType Range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl\n+static const std::size_t dimDomainGlobal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const std::size_t dimRange\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl\n+FieldVector< DomainField, dimDomainGlobal > DomainGlobal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n+LocalBasisTraits::DomainType DomainLocal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+Convert a simple scalar local basis into a global basis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector<\n+typename Traits::Jacobian > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+return maximum polynomial order of the base function\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalToGlobalBasisAdaptorTraits< typename LocalBasis::Traits, Geometry::\n+coorddimension > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+ScalarLocalToGlobalBasisAdaptor(const LocalBasis &localBasis_, const Geometry\n+&geometry_)\n+construct a ScalarLocalToGlobalBasisAdaptor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainLocal &in, std::vector<\n+typename Traits::Range > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+Convert a local interpolation into a global interpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+LocalToGlobalInterpolationAdaptor(const LocalInterpolation\n+&localInterpolation_)\n+construct a LocalToGlobalInterpolationAdaptor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const Function &function, std::vector< Coeff > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+Traits_ Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+Convert a simple scalar local finite element into a global finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:229\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::Coefficients & coefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:227\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::Interpolation & interpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n+const Traits::Basis & basis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:224\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:\n+_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+ScalarLocalToGlobalFiniteElementAdaptor(const LocalFiniteElement &localFE_,\n+const Geometry &geometry)\n+construct a ScalarLocalToGlobalFiniteElementAdaptor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:218\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+LocalToGlobalInterpolationAdaptor< typename LocalFiniteElement::Traits::\n+LocalInterpolationType, typename Basis::Traits > Interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+LocalFiniteElement::Traits::LocalCoefficientsType Coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:198\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+ScalarLocalToGlobalBasisAdaptor< typename LocalFiniteElement::Traits::\n+LocalBasisType, Geometry > Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:193\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:244\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const Geometry &geometry)\n+construct ScalarLocalToGlobalFiniteElementAdaptor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:274\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry >\n+FiniteElement\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+ScalarLocalToGlobalFiniteElementAdaptorFactory(const LocalFiniteElement\n+&localFE_)\n+construct a ScalarLocalToGlobalFiniteElementAdaptorFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:261\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannacherturek.hh File Reference\n+dune-localfunctions: interface.hh File Reference\n \n \n \n \n \n \n \n@@ -65,29 +65,61 @@\n \n \n \n \n \n \n \n
    \n-
    rannacherturek.hh File Reference
    \n+ \n+
    interface.hh File Reference
    \n
    \n
    \n-\n-

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

    \n-
    #include <dune/localfunctions/rannacherturek/rannacherturek.hh>
    \n+
    #include <array>
    \n+#include <cstddef>
    \n+#include <vector>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n-

    Detailed Description

    \n-

    Convenience header that includes all available Rannacher-Turek LocalFiniteElements.

    \n-
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::FiniteElementInterface
     Interface for global-valued finite elements. More...
     
    struct  Dune::FiniteElementInterface::Traits
     types of component objects 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...
     
    \n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,16 +1,42 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-rannacherturek.hh File Reference\n-Convenience header that includes all available Rannacher-Turek\n-LocalFiniteElements. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b._\bh_\bh>\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+interface.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Convenience header that includes all available Rannacher-Turek\n-LocalFiniteElements.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+\u00a0 Interface for global-valued finite elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+\u00a0 types of component objects _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bV_\be_\br_\bt_\be_\bx_\bO_\br_\bd_\be_\br_\b _\b>\n+\u00a0 Factory interface for global-valued finite elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+\u00a0 Interface for global-valued shape functions. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+\u00a0 types of domain and range _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+\u00a0 Interface for global-valued interpolation. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+\u00a0 Interface for global-valued coefficients. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannacherturek.hh Source File\n+dune-localfunctions: interface.hh Source File\n \n \n \n \n \n \n \n@@ -70,27 +70,215 @@\n \n \n \n \n \n \n \n
    \n-
    rannacherturek.hh
    \n+
    interface.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-\n-\n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_INTERFACE_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_INTERFACE_HH
    \n+
    8
    \n+
    9#ifndef HEADERCHECK
    \n+
    10#error This header exists for documentation purposes only and should never be included directly.
    \n+
    11#endif
    \n+
    12
    \n+
    13#include <array>
    \n+
    14#include <cstddef>
    \n+
    15#include <vector>
    \n+
    16
    \n+
    17
    \n+
    18#include <dune/geometry/type.hh>
    \n+
    19
    \n+\n+
    21
    \n+
    22namespace Dune {
    \n+
    23
    \n+
    \n+\n+
    26 {
    \n+
    27 struct ImplementationDefined;
    \n+
    28
    \n+
    29 public:
    \n+
    31
    \n+
    \n+
    34 struct Traits
    \n+
    35 {
    \n+
    37
    \n+
    42 typedef ImplementationDefined Basis;
    \n+
    44
    \n+
    49 typedef ImplementationDefined Coefficients;
    \n+
    51
    \n+
    56 typedef ImplementationDefined Interpolation;
    \n+
    57 };
    \n+
    \n+
    58
    \n+
    60
    \n+\n+\n+
    70
    \n+
    72
    \n+
    76 const Traits::Basis& basis() const;
    \n+
    78
    \n+\n+
    84
    \n+\n+
    90 GeometryType type() const;
    \n+
    91 };
    \n+
    \n+
    92
    \n+
    94
    \n+
    114 template<class Geometry, class VertexOrder>
    \n+
    \n+\n+
    116 {
    \n+
    117 struct ImplementationDefined;
    \n+
    118
    \n+
    119 public:
    \n+
    121
    \n+
    126 typedef ImplementationDefined FiniteElement;
    \n+
    127
    \n+
    129
    \n+\n+
    133
    \n+
    154
    \n+
    156 const FiniteElement make(const Geometry&, const VertexOrder&, ...);
    \n+
    158 const FiniteElement make(const Geometry&, ...);
    \n+
    160 const FiniteElement make(const VertexOrder&, ...);
    \n+
    162
    \n+
    166 const FiniteElement make(const GeometryType&, ...);
    \n+
    168 const FiniteElement make(...);
    \n+
    169
    \n+
    171
    \n+
    172 };
    \n+
    \n+
    173
    \n+
    \n+\n+
    176 {
    \n+
    177 struct ImplementationDefined;
    \n+
    178 constexpr static int implementationDefined = 42;
    \n+
    179
    \n+
    180 public:
    \n+
    182
    \n+
    \n+
    187 struct Traits
    \n+
    188 {
    \n+
    191
    \n+
    193 typedef ImplementationDefined DomainFieldType;
    \n+
    194
    \n+
    196 constexpr static int dimDomain = implementationDefined;
    \n+
    197
    \n+
    199 typedef ImplementationDefined DomainType;
    \n+
    200
    \n+
    202
    \n+
    205
    \n+
    207 typedef ImplementationDefined RangeFieldType;
    \n+
    208
    \n+
    210 constexpr static int dimRange = implementationDefined;
    \n+
    211
    \n+
    213 typedef ImplementationDefined RangeType;
    \n+
    214
    \n+
    216
    \n+
    218
    \n+
    222 typedef ImplementationDefined Jacobian;
    \n+
    223 };
    \n+
    \n+
    224
    \n+
    226 std::size_t size () const;
    \n+
    228 std::size_t order () const;
    \n+
    229
    \n+\n+
    232 std::vector<Traits::RangeType>& out) const;
    \n+
    233
    \n+\n+
    236 std::vector<Traits::Jacobian>& out) const;
    \n+
    237
    \n+
    243 void partial(const std::array<unsigned int,Traits::dimDomain>& order,
    \n+
    244 const typename Traits::DomainType& in,
    \n+
    245 std::vector<typename Traits::RangeType>& out) const;
    \n+
    246 };
    \n+
    \n+
    247
    \n+
    \n+\n+
    250 {
    \n+
    252
    \n+\n+
    256
    \n+
    258
    \n+
    267 template<typename F, typename C>
    \n+
    268 void interpolate (const F& f, std::vector<C>& out) const;
    \n+
    269 };
    \n+
    \n+
    270
    \n+
    272
    \n+
    \n+\n+
    278 {
    \n+
    280 std::size_t size() const;
    \n+
    281
    \n+
    283 const LocalKey& localKey(std::size_t i) const;
    \n+
    284 };
    \n+
    \n+
    285}
    \n+
    286#endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH
    \n+\n+
    Definition bdfmcube.hh:18
    \n+
    Interface for global-valued finite elements.
    Definition interface.hh:26
    \n+
    GeometryType type() const
    Extract geometry type of this finite element.
    \n+
    const Traits::Basis & basis() const
    Extract basis of this finite element.
    \n+
    const Traits::Coefficients & coefficients() const
    Extract coefficients of this finite element.
    \n+
    const Traits::Interpolation & interpolation() const
    Extract interpolation of this finite element.
    \n+
    FiniteElementInterface(const FiniteElementInterface &)
    Finite elements are CopyConstructible.
    \n+
    FiniteElementInterface(...)
    Construct a finite element.
    \n+
    types of component objects
    Definition interface.hh:35
    \n+
    ImplementationDefined Basis
    type of the Basis
    Definition interface.hh:42
    \n+
    ImplementationDefined Coefficients
    type of the Coefficients
    Definition interface.hh:49
    \n+
    ImplementationDefined Interpolation
    type of the Interpolation
    Definition interface.hh:56
    \n+
    Factory interface for global-valued finite elements.
    Definition interface.hh:116
    \n+
    const FiniteElement make(const VertexOrder &,...)
    create a finite element from a vertex ordering
    \n+
    const FiniteElement make(...)
    create a finite element
    \n+
    const FiniteElement make(const GeometryType &,...)
    create a finite element from a geometry type
    \n+
    FiniteElementFactoryInterface(...)
    Construct a finite element factory.
    \n+
    ImplementationDefined FiniteElement
    Type of the finite element.
    Definition interface.hh:126
    \n+
    const FiniteElement make(const Geometry &, const VertexOrder &,...)
    create a finite element from a geometry and a vertex ordering
    \n+
    const FiniteElement make(const Geometry &,...)
    create a finite element from a geometry
    \n+
    Interface for global-valued shape functions.
    Definition interface.hh:176
    \n+
    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.
    \n+
    void evaluateFunction(const Traits::DomainType &in, std::vector< Traits::RangeType > &out) const
    Evaluate all shape functions at given position.
    \n+
    std::size_t order() const
    Polynomial order of the shape functions for quadrature.
    \n+
    void evaluateJacobian(const Traits::DomainType &in, std::vector< Traits::Jacobian > &out) const
    Evaluate Jacobian of all shape functions at given position.
    \n+
    std::size_t size() const
    Number of shape functions.
    \n+
    types of domain and range
    Definition interface.hh:188
    \n+
    static constexpr int dimRange
    dimension of the range
    Definition interface.hh:210
    \n+
    ImplementationDefined Jacobian
    Jacobian properties.
    Definition interface.hh:222
    \n+
    ImplementationDefined DomainType
    Type used for coordinate vectors in the domain.
    Definition interface.hh:199
    \n+
    ImplementationDefined RangeFieldType
    Field type of the range.
    Definition interface.hh:207
    \n+
    ImplementationDefined DomainFieldType
    Field type of the domain.
    Definition interface.hh:193
    \n+
    ImplementationDefined RangeType
    Type used for range values.
    Definition interface.hh:213
    \n+
    static constexpr int dimDomain
    dimension of the domain
    Definition interface.hh:196
    \n+
    Interface for global-valued interpolation.
    Definition interface.hh:250
    \n+
    BasisInterface::Traits Traits
    Export basis traits.
    Definition interface.hh:255
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    \n+
    Interface for global-valued coefficients.
    Definition interface.hh:278
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    \n+
    std::size_t size() const
    number of coefficients
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,17 +1,290 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-rannacherturek.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+interface.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b._\bh_\bh>\n-_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b._\bh_\bh\n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_INTERFACE_HH\n+7#define DUNE_LOCALFUNCTIONS_INTERFACE_HH\n+8\n+9#ifndef HEADERCHECK\n+10#error This header exists for documentation purposes only and should never be\n+included directly.\n+11#endif\n+12\n+13#include \n+14#include \n+15#include \n+16\n+17\n+18#include \n+19\n+20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+21\n+22namespace _\bD_\bu_\bn_\be {\n+23\n+_\b2_\b5 class _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+26 {\n+27 struct ImplementationDefined;\n+28\n+29 public:\n+31\n+_\b3_\b4 struct _\bT_\br_\ba_\bi_\bt_\bs\n+35 {\n+37\n+_\b4_\b2 typedef ImplementationDefined _\bB_\ba_\bs_\bi_\bs;\n+44\n+_\b4_\b9 typedef ImplementationDefined _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+51\n+_\b5_\b6 typedef ImplementationDefined _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+57 };\n+58\n+60\n+_\b6_\b7 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(...);\n+_\b6_\b9 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be&);\n+70\n+72\n+_\b7_\b6 const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const;\n+78\n+_\b8_\b2 const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const;\n+84\n+_\b8_\b8 const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const;\n+_\b9_\b0 GeometryType _\bt_\by_\bp_\be() const;\n+91 };\n+92\n+94\n+114 template\n+_\b1_\b1_\b5 class _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+116 {\n+117 struct ImplementationDefined;\n+118\n+119 public:\n+121\n+_\b1_\b2_\b6 typedef ImplementationDefined _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+127\n+129\n+_\b1_\b3_\b2 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be(...);\n+133\n+154\n+_\b1_\b5_\b6 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry&, const VertexOrder&, ...);\n+_\b1_\b5_\b8 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry&, ...);\n+_\b1_\b6_\b0 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const VertexOrder&, ...);\n+162\n+_\b1_\b6_\b6 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const GeometryType&, ...);\n+_\b1_\b6_\b8 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(...);\n+169\n+171\n+172 };\n+173\n+_\b1_\b7_\b5 class _\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+176 {\n+177 struct ImplementationDefined;\n+178 constexpr static int implementationDefined = 42;\n+179\n+180 public:\n+182\n+_\b1_\b8_\b7 struct _\bT_\br_\ba_\bi_\bt_\bs\n+188 {\n+191\n+_\b1_\b9_\b3 typedef ImplementationDefined _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be;\n+194\n+_\b1_\b9_\b6 constexpr static int _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn = implementationDefined;\n+197\n+_\b1_\b9_\b9 typedef ImplementationDefined _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be;\n+200\n+202\n+205\n+_\b2_\b0_\b7 typedef ImplementationDefined _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be;\n+208\n+_\b2_\b1_\b0 constexpr static int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = implementationDefined;\n+211\n+_\b2_\b1_\b3 typedef ImplementationDefined _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be;\n+214\n+216\n+218\n+_\b2_\b2_\b2 typedef ImplementationDefined _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn;\n+223 };\n+224\n+_\b2_\b2_\b6 std::size_t _\bs_\bi_\bz_\be () const;\n+_\b2_\b2_\b8 std::size_t _\bo_\br_\bd_\be_\br () const;\n+229\n+_\b2_\b3_\b1 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+232 std::vector& out) const;\n+233\n+_\b2_\b3_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+236 std::vector& out) const;\n+237\n+_\b2_\b4_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array& _\bo_\br_\bd_\be_\br,\n+244 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+245 std::vector& out) const;\n+246 };\n+247\n+_\b2_\b4_\b9 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+250 {\n+252\n+_\b2_\b5_\b5 typedef _\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n+256\n+258\n+267 template\n+_\b2_\b6_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const;\n+269 };\n+270\n+272\n+_\b2_\b7_\b7 struct _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+278 {\n+_\b2_\b8_\b0 std::size_t _\bs_\bi_\bz_\be() const;\n+281\n+_\b2_\b8_\b3 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const;\n+284 };\n+285}\n+286#endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Interface for global-valued finite elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+Extract geometry type of this finite element.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n+const Traits::Basis & basis() const\n+Extract basis of this finite element.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::Coefficients & coefficients() const\n+Extract coefficients of this finite element.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::Interpolation & interpolation() const\n+Extract interpolation of this finite element.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+FiniteElementInterface(const FiniteElementInterface &)\n+Finite elements are CopyConstructible.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+FiniteElementInterface(...)\n+Construct a finite element.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+types of component objects\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+ImplementationDefined Basis\n+type of the Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+ImplementationDefined Coefficients\n+type of the Coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+ImplementationDefined Interpolation\n+type of the Interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Factory interface for global-valued finite elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const VertexOrder &,...)\n+create a finite element from a vertex ordering\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(...)\n+create a finite element\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const GeometryType &,...)\n+create a finite element from a geometry type\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+FiniteElementFactoryInterface(...)\n+Construct a finite element factory.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+ImplementationDefined FiniteElement\n+Type of the finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:126\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const Geometry &, const VertexOrder &,...)\n+create a finite element from a geometry and a vertex ordering\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const Geometry &,...)\n+create a finite element from a geometry\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Interface for global-valued shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, Traits::dimDomain > &order, const\n+typename Traits::DomainType &in, std::vector< typename Traits::RangeType >\n+&out) const\n+Evaluate partial derivatives of any order of all shape functions.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const Traits::DomainType &in, std::vector< Traits::\n+RangeType > &out) const\n+Evaluate all shape functions at given position.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+Polynomial order of the shape functions for quadrature.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const Traits::DomainType &in, std::vector< Traits::\n+Jacobian > &out) const\n+Evaluate Jacobian of all shape functions at given position.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+Number of shape functions.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+types of domain and range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:188\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static constexpr int dimRange\n+dimension of the range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+ImplementationDefined Jacobian\n+Jacobian properties.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:222\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+ImplementationDefined DomainType\n+Type used for coordinate vectors in the domain.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n+ImplementationDefined RangeFieldType\n+Field type of the range.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n+ImplementationDefined DomainFieldType\n+Field type of the domain.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:193\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n+ImplementationDefined RangeType\n+Type used for range values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:213\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n+static constexpr int dimDomain\n+dimension of the domain\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Interface for global-valued interpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:250\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+BasisInterface::Traits Traits\n+Export basis traits.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:255\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Determine coefficients interpolating a given function.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+Interface for global-valued coefficients.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interface.hh:278\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: orthonormalcompute.hh File Reference\n+dune-localfunctions: localfiniteelementvariantcache.hh File Reference\n \n \n \n \n \n \n \n@@ -65,57 +65,48 @@\n \n \n \n \n \n \n \n
    \n \n-
    orthonormalcompute.hh File Reference
    \n+Namespaces
    \n+
    localfiniteelementvariantcache.hh File Reference
    \n \n
    \n-
    #include <cassert>
    \n-#include <iostream>
    \n-#include <fstream>
    \n-#include <iomanip>
    \n+
    #include <vector>
    \n+#include <tuple>
    \n #include <utility>
    \n-#include <map>
    \n-#include <dune/common/dynmatrix.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n+#include <type_traits>
    \n+#include <dune/common/std/type_traits.hh>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/common/typelist.hh>
    \n+#include <dune/common/hybridutilities.hh>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n-#include <dune/localfunctions/utility/monomialbasis.hh>
    \n-#include <dune/localfunctions/utility/multiindex.hh>
    \n+#include <dune/geometry/typeindex.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementvariant.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n+\n+\n \n

    \n Classes

    struct  ONBCompute::Integral< geometryId >
     
    class  ONBCompute::ONBMatrix< geometryId, scalar_t >
    class  Dune::LocalFiniteElementVariantCache< Base >
     A cache storing a compile time selection of local finite element implementations. More...
     
    \n \n-\n+\n \n-

    \n Namespaces

    namespace  ONBCompute
    namespace  Dune
     
    \n-\n-\n-\n-\n

    \n-Functions

    template<class scalar_t >
    scalar_t ONBCompute::factorial (int start, int end)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,36 +1,31 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-orthonormalcompute.hh File Reference\n-#include \n-#include \n-#include \n-#include \n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+localfiniteelementvariantcache.hh File Reference\n+#include \n+#include \n #include \n-#include \n-#include \n-#include \n+#include \n+#include \n+#include \n+#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b _\b>\n-\u00a0\n- class \u00a0 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bB_\ba_\bs_\be_\b _\b>\n+\u00a0 A cache storing a compile time selection of local finite element\n+ implementations. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n-scalar_t\u00a0 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bf_\ba_\bc_\bt_\bo_\br_\bi_\ba_\bl (int start, int end)\n+namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: orthonormalcompute.hh Source File\n+dune-localfunctions: localfiniteelementvariantcache.hh Source File\n \n \n \n \n \n \n \n@@ -70,264 +70,143 @@\n
    \n \n \n \n \n \n \n
    \n-
    orthonormalcompute.hh
    \n+
    localfiniteelementvariantcache.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_ORTHONORMALCOMPUTE_HH
    \n-
    6#define DUNE_ORTHONORMALCOMPUTE_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <iostream>
    \n-
    10#include <fstream>
    \n-
    11#include <iomanip>
    \n-
    12#include <utility>
    \n-
    13#include <map>
    \n-
    14
    \n-
    15#include <dune/common/dynmatrix.hh>
    \n-
    16#include <dune/common/fmatrix.hh>
    \n+
    8#include <vector>
    \n+
    9#include <tuple>
    \n+
    10#include <utility>
    \n+
    11#include <type_traits>
    \n+
    12
    \n+
    13#include <dune/common/std/type_traits.hh>
    \n+
    14#include <dune/common/exceptions.hh>
    \n+
    15#include <dune/common/typelist.hh>
    \n+
    16#include <dune/common/hybridutilities.hh>
    \n
    17
    \n
    18#include <dune/geometry/type.hh>
    \n-
    19
    \n-\n-\n-\n+
    19#include <dune/geometry/typeindex.hh>
    \n+
    20
    \n+\n+
    22
    \n
    23
    \n-
    \n-
    24namespace ONBCompute
    \n-
    25{
    \n-
    26
    \n-
    27 template< class scalar_t >
    \n-
    \n-
    28 scalar_t factorial( int start, int end )
    \n-
    29 {
    \n-
    30 scalar_t ret( 1 );
    \n-
    31 for( int j = start; j <= end; ++j )
    \n-
    32 ret *= scalar_t( j );
    \n-
    33 return ret;
    \n-
    34 }
    \n-
    \n-
    35
    \n-
    36
    \n-
    37
    \n-
    38 // Integral
    \n-
    39 // --------
    \n-
    40
    \n-
    41 template< Dune::GeometryType::Id geometryId >
    \n-
    \n-
    42 struct Integral
    \n-
    43 {
    \n-
    44 static constexpr Dune::GeometryType geometry = geometryId;
    \n-
    45 static constexpr int dimension = geometry.dim();
    \n-
    46
    \n-
    47 template< int dim, class scalar_t >
    \n-
    \n-
    48 static int compute ( const Dune::MultiIndex< dim, scalar_t > &alpha,
    \n-
    49 scalar_t &p, scalar_t &q )
    \n-
    50 {
    \n-
    51 return compute(alpha, p, q, std::make_integer_sequence<int,dimension>{});
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    54 template< int dim, class scalar_t , int ...ints>
    \n-
    \n-
    55 static int compute ( const Dune::MultiIndex< dim, scalar_t > &alpha,
    \n-
    56 scalar_t &p, scalar_t &q, std::integer_sequence<int,ints...> intS)
    \n-
    57 {
    \n-
    58 p = scalar_t( 1 );
    \n-
    59 q = scalar_t( 1 );
    \n-
    60
    \n-
    61 int ord = 0;
    \n-
    62 ((computeIntegral<ints>(alpha,p,q,ord)),...);
    \n-
    63
    \n-
    64 return ord;
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    67 template< int step, int dim, class scalar_t >
    \n-
    \n-\n-
    69 scalar_t &p, scalar_t &q, int& ord)
    \n-
    70 {
    \n-
    71 int i = alpha.z( step );
    \n+
    24namespace Dune {
    \n+
    25
    \n+
    26namespace Impl {
    \n+
    27
    \n+
    28 // This class provides the index method of LocalGeometryTypeIndex
    \n+
    29 // but throws a Dune::RangeError if the dimension does not match.
    \n+
    30 // This can be helpful to catch errors in a LocalFiniteElementVariantCache
    \n+
    31 // instance based on dimension specific GeometryType indices.
    \n+
    32 template<std::size_t dim>
    \n+
    33 struct FixedDimLocalGeometryTypeIndex {
    \n+
    34 inline static std::size_t index(const GeometryType &gt)
    \n+
    35 {
    \n+
    36 if (gt.dim() != dim)
    \n+
    37 DUNE_THROW(Dune::RangeError, "Asking for dim=" << dim << " specific index of GeometryType with dimension " << gt.dim());
    \n+
    38 return LocalGeometryTypeIndex::index(gt);
    \n+
    39 }
    \n+
    40 };
    \n+
    41
    \n+
    42} // end namespace Impl
    \n+
    43
    \n+
    66template<class Base>
    \n+
    \n+\n+
    68{
    \n+
    69
    \n+
    70 template<class LFEImplTuple>
    \n+
    71 struct GenerateLFEVariant;
    \n
    72
    \n-
    73 if constexpr ( geometry.isPrismatic(step))
    \n-
    74 {
    \n-
    75 //p *= scalar_t( 1 );
    \n-
    76 q *= scalar_t( i+1 );
    \n-
    77 }
    \n-
    78 else
    \n-
    79 {
    \n-
    80 p *= factorial< scalar_t >( 1, i );
    \n-
    81 q *= factorial< scalar_t >( step+1 + ord, step+1 + ord + i );
    \n-
    82 }
    \n-
    83 ord +=i;
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    86 };
    \n-
    \n-
    87
    \n-
    88
    \n-
    89 // ONBMatrix
    \n-
    90 // ---------
    \n-
    91
    \n-
    92 template< Dune::GeometryType::Id geometryId, class scalar_t >
    \n-
    \n-\n-
    94 : public Dune::DynamicMatrix< scalar_t >
    \n-
    95 {
    \n-\n-
    97 typedef Dune::DynamicMatrix< scalar_t > Base;
    \n-
    98
    \n-
    99 public:
    \n-
    100 typedef std::vector< scalar_t > vec_t;
    \n-
    101 typedef Dune::DynamicMatrix< scalar_t > mat_t;
    \n-
    102
    \n-
    \n-
    103 explicit ONBMatrix ( unsigned int order )
    \n-
    104 {
    \n-
    105 // get all multiindecies for monomial basis
    \n-
    106 constexpr Dune::GeometryType geometry = geometryId;
    \n-
    107 constexpr unsigned int dim = geometry.dim();
    \n-\n-\n-
    110 const std::size_t size = basis.size();
    \n-
    111 std::vector< Dune::FieldVector< MI, 1 > > y( size );
    \n-
    112 Dune::FieldVector< MI, dim > x;
    \n-
    113 for( unsigned int i = 0; i < dim; ++i )
    \n-
    114 x[ i ].set( i );
    \n-
    115 basis.evaluate( x, y );
    \n-
    116
    \n-
    117 // set bounds of data
    \n-
    118 Base::resize( size, size );
    \n-
    119 S.resize( size, size );
    \n-
    120 d.resize( size );
    \n+
    73 template<class Index, class... LFEImpl>
    \n+
    74 struct GenerateLFEVariant<std::tuple<std::pair<Index, LFEImpl>...>>
    \n+
    75 {
    \n+
    76 using type = UniqueTypes_t<LocalFiniteElementVariant, decltype(std::declval<LFEImpl>()())...>;
    \n+
    77 };
    \n+
    78
    \n+
    79 using Base::getImplementations;
    \n+
    80 using Base::index;
    \n+
    81 using Implementations = decltype(std::declval<Base>().getImplementations());
    \n+
    82
    \n+
    83public:
    \n+
    84
    \n+
    92 using FiniteElementType = typename GenerateLFEVariant<Implementations>::type;
    \n+
    93
    \n+
    98 template<class... Args>
    \n+
    \n+\n+
    100 Base(std::forward<Args>(args)...)
    \n+
    101 {
    \n+
    102 Dune::Hybrid::forEach(getImplementations(), [&,this](auto feImpl) {
    \n+
    103 auto implIndex = feImpl.first;
    \n+
    104 if (cache_.size() < implIndex+1)
    \n+
    105 cache_.resize(implIndex+1);
    \n+
    106 cache_[implIndex] = feImpl.second();
    \n+
    107 });
    \n+
    108 }
    \n+
    \n+
    109
    \n+\n+
    112
    \n+\n+
    115
    \n+\n+
    118
    \n+\n
    121
    \n-
    122 // setup matrix for bilinear form x^T S y: S_ij = int_A x^(i+j)
    \n-
    123 scalar_t p, q;
    \n-
    124 for( std::size_t i = 0; i < size; ++i )
    \n-
    125 {
    \n-
    126 for( std::size_t j = 0; j < size; ++j )
    \n-
    127 {
    \n-
    128 Integral< geometryId >::compute( y[ i ][ 0 ] * y[ j ][ 0 ], p, q );
    \n-
    129 S[i][j] = p;
    \n-
    130 S[i][j] /= q;
    \n-
    131 }
    \n-
    132 }
    \n-
    133
    \n-
    134 // orthonormalize
    \n-
    135 gramSchmidt();
    \n-
    136 }
    \n-
    \n-
    137
    \n-
    138 template< class Vector >
    \n-
    \n-
    139 void row ( unsigned int row, Vector &vec ) const
    \n-
    140 {
    \n-
    141 // transposed matrix is required
    \n-
    142 assert( row < Base::cols() );
    \n-
    143 for( std::size_t i = 0; i < Base::rows(); ++i )
    \n-
    144 Dune::field_cast( (*this)[i][row], vec[ i ] );
    \n-
    145 }
    \n-
    \n+
    126 template<class... Key>
    \n+
    \n+
    127 const auto& get(const Key&... key) const
    \n+
    128 {
    \n+
    129 auto implIndex = index(key...);
    \n+
    130 if (implIndex >= cache_.size())
    \n+
    131 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
    \n+
    132 if (not(cache_[implIndex]))
    \n+
    133 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
    \n+
    134 return cache_[implIndex];
    \n+
    135 }
    \n+
    \n+
    136
    \n+
    137private:
    \n+
    138 std::vector<FiniteElementType> cache_;
    \n+
    139};
    \n+
    \n+
    140
    \n+
    141
    \n+
    142
    \n+
    143} // namespace Dune
    \n+
    144
    \n+
    145
    \n
    146
    \n-
    147 private:
    \n-
    148 void sprod ( int col1, int col2, scalar_t &ret )
    \n-
    149 {
    \n-
    150 ret = 0;
    \n-
    151 for( int k = 0; k <= col1; ++k )
    \n-
    152 {
    \n-
    153 for( int l = 0; l <=col2; ++l )
    \n-
    154 ret += (*this)[l][col2] * S[l][k] * (*this)[k][col1];
    \n-
    155 }
    \n-
    156 }
    \n-
    157
    \n-
    158 void vmul ( std::size_t col, std::size_t rowEnd, const scalar_t &s )
    \n-
    159 {
    \n-
    160 for( std::size_t i = 0; i <= rowEnd; ++i )
    \n-
    161 (*this)[i][col] *= s;
    \n-
    162 }
    \n-
    163
    \n-
    164 void vsub ( std::size_t coldest, std::size_t colsrc, std::size_t rowEnd, const scalar_t &s )
    \n-
    165 {
    \n-
    166 for( std::size_t i = 0; i <= rowEnd; ++i )
    \n-
    167 (*this)[i][coldest] -= s * (*this)[i][colsrc];
    \n-
    168 }
    \n-
    169
    \n-
    170 void gramSchmidt ()
    \n-
    171 {
    \n-
    172 using std::sqrt;
    \n-
    173 // setup identity
    \n-
    174 const std::size_t N = Base::rows();
    \n-
    175 for( std::size_t i = 0; i < N; ++i )
    \n-
    176 {
    \n-
    177 for( std::size_t j = 0; j < N; ++j )
    \n-
    178 (*this)[i][j] = scalar_t( i == j ? 1 : 0 );
    \n-
    179 }
    \n-
    180
    \n-
    181 // perform Gram-Schmidt procedure
    \n-
    182 scalar_t s;
    \n-
    183 sprod( 0, 0, s );
    \n-
    184 vmul( 0, 0, scalar_t( 1 ) / sqrt( s ) );
    \n-
    185 for( std::size_t i = 1; i < N; ++i )
    \n-
    186 {
    \n-
    187 for( std::size_t k = 0; k < i; ++k )
    \n-
    188 {
    \n-
    189 sprod( i, k, s );
    \n-
    190 vsub( i, k, i, s );
    \n-
    191 }
    \n-
    192 sprod( i, i, s );
    \n-
    193 vmul( i, i, scalar_t( 1 ) / sqrt( s ) );
    \n-
    194 }
    \n-
    195 }
    \n-
    196
    \n-
    197 vec_t d;
    \n-
    198 mat_t S;
    \n-
    199 };
    \n-
    \n-
    200
    \n-
    201} // namespace ONBCompute
    \n-
    \n-
    202
    \n-
    203#endif // #ifndef DUNE_ORTHONORMALCOMPUTE_HH
    \n-\n-\n-\n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    Definition orthonormalcompute.hh:25
    \n-
    scalar_t factorial(int start, int end)
    Definition orthonormalcompute.hh:28
    \n-
    Definition orthonormalcompute.hh:43
    \n-
    static int compute(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p, scalar_t &q)
    Definition orthonormalcompute.hh:48
    \n-
    static int compute(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p, scalar_t &q, std::integer_sequence< int, ints... > intS)
    Definition orthonormalcompute.hh:55
    \n-
    static void computeIntegral(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p, scalar_t &q, int &ord)
    Definition orthonormalcompute.hh:68
    \n-
    static constexpr int dimension
    Definition orthonormalcompute.hh:45
    \n-
    static constexpr Dune::GeometryType geometry
    Definition orthonormalcompute.hh:44
    \n-
    Definition orthonormalcompute.hh:95
    \n-
    ONBMatrix(unsigned int order)
    Definition orthonormalcompute.hh:103
    \n-
    std::vector< scalar_t > vec_t
    Definition orthonormalcompute.hh:100
    \n-
    Dune::DynamicMatrix< scalar_t > mat_t
    Definition orthonormalcompute.hh:101
    \n-
    void row(unsigned int row, Vector &vec) const
    Definition orthonormalcompute.hh:139
    \n-
    unsigned int size() const
    Definition monomialbasis.hh:476
    \n-
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:498
    \n-
    Definition monomialbasis.hh:571
    \n-
    Definition multiindex.hh:38
    \n-
    int z(int i) const
    Definition multiindex.hh:92
    \n+
    147
    \n+
    148#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \n+\n+
    Definition bdfmcube.hh:18
    \n+
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \n+
    LocalFiniteElementVariantCache & operator=(const LocalFiniteElementVariantCache &other)=default
    Copy assignment.
    \n+
    LocalFiniteElementVariantCache(Args &&... args)
    Default constructor.
    Definition localfiniteelementvariantcache.hh:99
    \n+
    LocalFiniteElementVariantCache(LocalFiniteElementVariantCache &&other)=default
    Move constructor.
    \n+
    const auto & get(const Key &... key) const
    Get the LocalFiniteElement for the given key data.
    Definition localfiniteelementvariantcache.hh:127
    \n+
    LocalFiniteElementVariantCache(const LocalFiniteElementVariantCache &other)=default
    Copy constructor.
    \n+
    typename GenerateLFEVariant< Implementations >::type FiniteElementType
    Type of exported LocalFiniteElement's.
    Definition localfiniteelementvariantcache.hh:92
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,277 +1,158 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl\n-orthonormalcompute.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+localfiniteelementvariantcache.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_ORTHONORMALCOMPUTE_HH\n-6#define DUNE_ORTHONORMALCOMPUTE_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH\n+6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n-12#include \n-13#include \n-14\n-15#include \n-16#include \n+8#include \n+9#include \n+10#include \n+11#include \n+12\n+13#include \n+14#include \n+15#include \n+16#include \n 17\n 18#include \n-19\n-20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-22#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+19#include \n+20\n+21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh>\n+22\n 23\n-_\b2_\b4namespace _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be\n-25{\n-26\n-27 template< class scalar_t >\n-_\b2_\b8 scalar_t _\bf_\ba_\bc_\bt_\bo_\br_\bi_\ba_\bl( int start, int end )\n-29 {\n-30 scalar_t ret( 1 );\n-31 for( int j = start; j <= end; ++j )\n-32 ret *= scalar_t( j );\n-33 return ret;\n-34 }\n-35\n-36\n-37\n-38 // Integral\n-39 // --------\n-40\n-41 template< Dune::GeometryType::Id geometryId >\n-_\b4_\b2 struct _\bI_\bn_\bt_\be_\bg_\br_\ba_\bl\n-43 {\n-_\b4_\b4 static constexpr Dune::GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n-_\b4_\b5 static constexpr int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bg_\be_\bo_\bm_\be_\bt_\br_\by.dim();\n-46\n-47 template< int dim, class scalar_t >\n-_\b4_\b8 static int _\bc_\bo_\bm_\bp_\bu_\bt_\be ( const _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> &alpha,\n-49 scalar_t &p, scalar_t &q )\n-50 {\n-51 return _\bc_\bo_\bm_\bp_\bu_\bt_\be(alpha, p, q, std::make_integer_sequence{});\n-52 }\n-53\n-54 template< int dim, class scalar_t , int ...ints>\n-_\b5_\b5 static int _\bc_\bo_\bm_\bp_\bu_\bt_\be ( const _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> &alpha,\n-56 scalar_t &p, scalar_t &q, std::integer_sequence intS)\n-57 {\n-58 p = scalar_t( 1 );\n-59 q = scalar_t( 1 );\n-60\n-61 int ord = 0;\n-62 ((computeIntegral(alpha,p,q,ord)),...);\n-63\n-64 return ord;\n-65 }\n-66\n-67 template< int step, int dim, class scalar_t >\n-_\b6_\b8 static void _\bc_\bo_\bm_\bp_\bu_\bt_\be_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl ( const _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b>\n-&alpha,\n-69 scalar_t &p, scalar_t &q, int& ord)\n-70 {\n-71 int i = alpha._\bz( step );\n+24namespace _\bD_\bu_\bn_\be {\n+25\n+26namespace Impl {\n+27\n+28 // This class provides the index method of LocalGeometryTypeIndex\n+29 // but throws a Dune::RangeError if the dimension does not match.\n+30 // This can be helpful to catch errors in a LocalFiniteElementVariantCache\n+31 // instance based on dimension specific GeometryType indices.\n+32 template\n+33 struct FixedDimLocalGeometryTypeIndex {\n+34 inline static std::size_t index(const GeometryType >)\n+35 {\n+36 if (gt.dim() != dim)\n+37 DUNE_THROW(Dune::RangeError, \"Asking for dim=\" << dim << \" specific index of\n+GeometryType with dimension \" << gt.dim());\n+38 return LocalGeometryTypeIndex::index(gt);\n+39 }\n+40 };\n+41\n+42} // end namespace Impl\n+43\n+66template\n+_\b6_\b7class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be : Base\n+68{\n+69\n+70 template\n+71 struct GenerateLFEVariant;\n 72\n-73 if constexpr ( _\bg_\be_\bo_\bm_\be_\bt_\br_\by.isPrismatic(step))\n-74 {\n-75 //p *= scalar_t( 1 );\n-76 q *= scalar_t( i+1 );\n-77 }\n-78 else\n-79 {\n-80 p *= factorial< scalar_t >( 1, i );\n-81 q *= factorial< scalar_t >( step+1 + ord, step+1 + ord + i );\n-82 }\n-83 ord +=i;\n-84 }\n-85\n-86 };\n-87\n-88\n-89 // ONBMatrix\n-90 // ---------\n-91\n-92 template< Dune::GeometryType::Id geometryId, class scalar_t >\n-_\b9_\b3 class _\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx\n-94 : public Dune::DynamicMatrix< scalar_t >\n-95 {\n-96 typedef _\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> _\bT_\bh_\bi_\bs;\n-97 typedef Dune::DynamicMatrix< scalar_t > Base;\n-98\n-99 public:\n-_\b1_\b0_\b0 typedef std::vector< scalar_t > _\bv_\be_\bc_\b__\bt;\n-_\b1_\b0_\b1 typedef Dune::DynamicMatrix< scalar_t > _\bm_\ba_\bt_\b__\bt;\n-102\n-_\b1_\b0_\b3 explicit _\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx ( unsigned int order )\n-104 {\n-105 // get all multiindecies for monomial basis\n-106 constexpr Dune::GeometryType geometry = geometryId;\n-107 constexpr unsigned int dim = geometry.dim();\n-108 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> MI;\n-109 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bM_\bI_\b _\b> basis( order );\n-110 const std::size_t size = basis._\bs_\bi_\bz_\be();\n-111 std::vector< Dune::FieldVector< MI, 1 > > y( size );\n-112 Dune::FieldVector< MI, dim > x;\n-113 for( unsigned int i = 0; i < dim; ++i )\n-114 x[ i ].set( i );\n-115 basis._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( x, y );\n-116\n-117 // set bounds of data\n-118 Base::resize( size, size );\n-119 S.resize( size, size );\n-120 d.resize( size );\n+73 template\n+74 struct GenerateLFEVariant...>>\n+75 {\n+76 using type = UniqueTypes_t()())...>;\n+77 };\n+78\n+79 using Base::getImplementations;\n+80 using Base::index;\n+81 using Implementations = decltype(std::declval().getImplementations());\n+82\n+83public:\n+84\n+_\b9_\b2 using _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be = typename GenerateLFEVariant::\n+type;\n+93\n+98 template\n+_\b9_\b9 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be(Args&&... args) :\n+100 Base(std::forward(args)...)\n+101 {\n+102 Dune::Hybrid::forEach(getImplementations(), [&,this](auto feImpl) {\n+103 auto implIndex = feImpl.first;\n+104 if (cache_.size() < implIndex+1)\n+105 cache_.resize(implIndex+1);\n+106 cache_[implIndex] = feImpl.second();\n+107 });\n+108 }\n+109\n+_\b1_\b1_\b1 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be(const _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be& other)\n+= default;\n+112\n+_\b1_\b1_\b4 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be&& other) =\n+default;\n+115\n+_\b1_\b1_\b7 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b (const\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be& other) = default;\n+118\n+_\b1_\b2_\b0 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b (_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be&&\n+other) = default;\n 121\n-122 // setup matrix for bilinear form x^T S y: S_ij = int_A x^(i+j)\n-123 scalar_t p, q;\n-124 for( std::size_t i = 0; i < size; ++i )\n-125 {\n-126 for( std::size_t j = 0; j < size; ++j )\n-127 {\n-128 _\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b _\b>_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be( y[ i ][ 0 ] * y[ j ][ 0 ], p, q );\n-129 S[i][j] = p;\n-130 S[i][j] /= q;\n-131 }\n-132 }\n-133\n-134 // orthonormalize\n-135 gramSchmidt();\n-136 }\n-137\n-138 template< class Vector >\n-_\b1_\b3_\b9 void _\br_\bo_\bw ( unsigned int _\br_\bo_\bw, Vector &vec ) const\n-140 {\n-141 // transposed matrix is required\n-142 assert( _\br_\bo_\bw < Base::cols() );\n-143 for( std::size_t i = 0; i < Base::rows(); ++i )\n-144 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( (*this)[i][_\br_\bo_\bw], vec[ i ] );\n-145 }\n+126 template\n+_\b1_\b2_\b7 const auto& _\bg_\be_\bt(const Key&... key) const\n+128 {\n+129 auto implIndex = index(key...);\n+130 if (implIndex >= cache_.size())\n+131 DUNE_THROW(Dune::RangeError,\"There is no LocalFiniteElement of the\n+requested type.\");\n+132 if (not(cache_[implIndex]))\n+133 DUNE_THROW(Dune::RangeError,\"There is no LocalFiniteElement of the\n+requested type.\");\n+134 return cache_[implIndex];\n+135 }\n+136\n+137private:\n+138 std::vector cache_;\n+139};\n+140\n+141\n+142\n+143} // namespace Dune\n+144\n+145\n 146\n-147 private:\n-148 void sprod ( int col1, int col2, scalar_t &ret )\n-149 {\n-150 ret = 0;\n-151 for( int k = 0; k <= col1; ++k )\n-152 {\n-153 for( int l = 0; l <=col2; ++l )\n-154 ret += (*this)[l][col2] * S[l][k] * (*this)[k][col1];\n-155 }\n-156 }\n-157\n-158 void vmul ( std::size_t col, std::size_t rowEnd, const scalar_t &s )\n-159 {\n-160 for( std::size_t i = 0; i <= rowEnd; ++i )\n-161 (*this)[i][col] *= s;\n-162 }\n-163\n-164 void vsub ( std::size_t coldest, std::size_t colsrc, std::size_t rowEnd,\n-const scalar_t &s )\n-165 {\n-166 for( std::size_t i = 0; i <= rowEnd; ++i )\n-167 (*this)[i][coldest] -= s * (*this)[i][colsrc];\n-168 }\n-169\n-170 void gramSchmidt ()\n-171 {\n-172 using std::sqrt;\n-173 // setup identity\n-174 const std::size_t N = Base::rows();\n-175 for( std::size_t i = 0; i < N; ++i )\n-176 {\n-177 for( std::size_t j = 0; j < N; ++j )\n-178 (*this)[i][j] = scalar_t( i == j ? 1 : 0 );\n-179 }\n-180\n-181 // perform Gram-Schmidt procedure\n-182 scalar_t s;\n-183 sprod( 0, 0, s );\n-184 vmul( 0, 0, scalar_t( 1 ) / sqrt( s ) );\n-185 for( std::size_t i = 1; i < N; ++i )\n-186 {\n-187 for( std::size_t k = 0; k < i; ++k )\n-188 {\n-189 sprod( i, k, s );\n-190 vsub( i, k, i, s );\n-191 }\n-192 sprod( i, i, s );\n-193 vmul( i, i, scalar_t( 1 ) / sqrt( s ) );\n-194 }\n-195 }\n-196\n-197 _\bv_\be_\bc_\b__\bt d;\n-198 _\bm_\ba_\bt_\b__\bt S;\n-199 };\n-200\n-201} // namespace ONBCompute\n-202\n-203#endif // #ifndef DUNE_ORTHONORMALCOMPUTE_HH\n-_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n-_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:25\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bf_\ba_\bc_\bt_\bo_\br_\bi_\ba_\bl\n-scalar_t factorial(int start, int end)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:28\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:43\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be\n-static int compute(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p,\n-scalar_t &q)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:48\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be\n-static int compute(const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p,\n-scalar_t &q, std::integer_sequence< int, ints... > intS)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:55\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl\n-static void computeIntegral(const Dune::MultiIndex< dim, scalar_t > &alpha,\n-scalar_t &p, scalar_t &q, int &ord)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:68\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static constexpr int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:45\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bl_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-static constexpr Dune::GeometryType geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:44\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:95\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx\n-ONBMatrix(unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:103\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bv_\be_\bc_\b__\bt\n-std::vector< scalar_t > vec_t\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:100\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\ba_\bt_\b__\bt\n-Dune::DynamicMatrix< scalar_t > mat_t\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:101\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw\n-void row(unsigned int row, Vector &vec) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:476\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n-values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:498\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:571\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bz\n-int z(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:92\n+147\n+148#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+A cache storing a compile time selection of local finite element\n+implementations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+LocalFiniteElementVariantCache & operator=(const LocalFiniteElementVariantCache\n+&other)=default\n+Copy assignment.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+LocalFiniteElementVariantCache(Args &&... args)\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+LocalFiniteElementVariantCache(LocalFiniteElementVariantCache &&other)=default\n+Move constructor.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n+const auto & get(const Key &... key) const\n+Get the LocalFiniteElement for the given key data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+LocalFiniteElementVariantCache(const LocalFiniteElementVariantCache\n+&other)=default\n+Copy constructor.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+typename GenerateLFEVariant< Implementations >::type FiniteElementType\n+Type of exported LocalFiniteElement's.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:92\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: orthonormalbasis.hh File Reference\n+dune-localfunctions: localfiniteelementvariant.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    orthonormalbasis.hh File Reference
    \n+
    localfiniteelementvariant.hh File Reference
    \n
    \n
    \n-
    #include <sstream>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n-#include <dune/localfunctions/orthonormal/orthonormalcompute.hh>
    \n+
    #include <cstddef>
    \n+#include <type_traits>
    \n+#include <variant>
    \n+#include <dune/common/typeutilities.hh>
    \n+#include <dune/common/std/type_traits.hh>
    \n+#include <dune/common/overloadset.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::OrthonormalBasisFactory< dim, SF, CF >
     
    struct  Dune::OrthonormalBasisFactory< dim, SF, CF >::EvaluationBasisFactory< dd, FF >
    class  Dune::LocalFiniteElementVariant< Implementations >
     Type erasure class for wrapping LocalFiniteElement classes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,29 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-orthonormalbasis.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bc_\bo_\bm_\bp_\bu_\bt_\be_\b._\bh_\bh>\n+localfiniteelementvariant.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<\n- _\bd_\bd_\b,_\b _\bF_\bF_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b<_\b _\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\bs_\b _\b>\n+\u00a0 Type erasure class for wrapping LocalFiniteElement classes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: orthonormalbasis.hh Source File\n+dune-localfunctions: localfiniteelementvariant.hh Source File\n \n \n \n \n \n \n \n@@ -70,115 +70,387 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    orthonormalbasis.hh
    \n+
    localfiniteelementvariant.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_ORTHONORMALBASIS_HH
    \n-
    6#define DUNE_ORTHONORMALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \n
    7
    \n-
    8#include <sstream>
    \n-
    9
    \n-\n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n+
    8#include <cstddef>
    \n+
    9#include <type_traits>
    \n+
    10#include <variant>
    \n+
    11
    \n+
    12#include <dune/common/typeutilities.hh>
    \n+
    13#include <dune/common/std/type_traits.hh>
    \n+
    14#include <dune/common/overloadset.hh>
    \n
    15
    \n-
    16 // OrthonormalBasisFactory
    \n-
    17 // -----------------------
    \n-
    18 template< int dim, class SF, class CF = typename ComputeField< SF, 512 >::Type >
    \n-
    \n-\n-
    20 {
    \n-
    21 static const unsigned int dimension = dim;
    \n-
    22 typedef SF StorageField;
    \n-
    23 typedef CF ComputeField;
    \n+
    16#include <dune/geometry/type.hh>
    \n+
    17
    \n+\n+\n+\n+
    21
    \n+
    22
    \n+
    23namespace Dune {
    \n
    24
    \n-
    25 template <unsigned int dd, class FF>
    \n-
    \n-\n-
    27 {
    \n-\n-
    29 };
    \n-
    \n-
    30
    \n-\n-
    32 typedef typename MonomialBasisProviderType::Object MonomialBasisType;
    \n-
    33
    \n-\n-\n-\n-
    37
    \n-
    38 typedef unsigned int Key;
    \n-
    39 typedef const Basis Object;
    \n-
    40
    \n-
    41 static constexpr GeometryType SimplexGeometry = GeometryTypes::simplex(dim);
    \n+
    25namespace Impl {
    \n+
    26
    \n+
    27 // Helper for visiting a variant containing monostate.
    \n+
    28 // Since a generic lambda will in most cases not compile
    \n+
    29 // for monostate, we add special empty overloads for monostate.
    \n+
    30 // Hence visitIf will simply do nothing in the case of a
    \n+
    31 // monostate value.
    \n+
    32 template<class Visitor, class Variant>
    \n+
    33 void visitIf(Visitor&& visitor, Variant&& variant)
    \n+
    34 {
    \n+
    35 auto visitorWithFallback = overload([&](std::monostate&) {}, [&](const std::monostate&) {}, visitor);
    \n+
    36 std::visit(visitorWithFallback, variant);
    \n+
    37 }
    \n+
    38
    \n+
    39 template<class... Implementations>
    \n+
    40 class LocalBasisVariant
    \n+
    41 {
    \n
    42
    \n-
    43 template< GeometryType::Id geometryId >
    \n-
    \n-
    44 static Object *create ( const unsigned int order )
    \n-
    45 {
    \n-
    46 const MonomialBasisType &monomialBasis = *MonomialBasisProviderType::template create< SimplexGeometry >( order );
    \n-
    47
    \n-
    48 static CoefficientMatrix _coeffs;
    \n-
    49 if( _coeffs.size() <= monomialBasis.size() )
    \n-
    50 {
    \n-\n-
    52 _coeffs.fill( matrix );
    \n-
    53 }
    \n-
    54
    \n-
    55 return new Basis( monomialBasis, _coeffs, monomialBasis.size() );
    \n-
    56 }
    \n-
    \n-
    57 static void release( Object *object ) { delete object; }
    \n-
    58 };
    \n-
    \n-
    59
    \n-
    60}
    \n-
    61
    \n-
    62#endif // #ifndef DUNE_ORTHONORMALBASIS_HH
    \n-\n-\n+
    43 template<class I0, class... II>
    \n+
    44 struct FirstType
    \n+
    45 { using type = I0; };
    \n+
    46
    \n+
    47 using FirstImpTraits = typename FirstType<Implementations...>::type::Traits;
    \n+
    48
    \n+
    49 public:
    \n+
    50
    \n+
    51 // We do not simply copy Implementation::LocalBasisTraits because this
    \n+
    52 // may be implementation specific. To stay clean, we simply put all its
    \n+
    53 // data into the default LocalBasisTraits.
    \n+
    54 using Traits = typename Dune::LocalBasisTraits<
    \n+
    55 typename FirstImpTraits::DomainFieldType,
    \n+
    56 FirstImpTraits::dimDomain,
    \n+
    57 typename FirstImpTraits::DomainType,
    \n+
    58 typename FirstImpTraits::RangeFieldType,
    \n+
    59 FirstImpTraits::dimRange,
    \n+
    60 typename FirstImpTraits::RangeType,
    \n+
    61 typename FirstImpTraits::JacobianType>;
    \n+
    62
    \n+
    63 template<class Implementation>
    \n+
    64 LocalBasisVariant(const Implementation& impl) :
    \n+
    65 impl_(&impl),
    \n+
    66 size_(impl.size()),
    \n+
    67 order_(impl.order())
    \n+
    68 {}
    \n+
    69
    \n+
    70 LocalBasisVariant() = default;
    \n+
    71 LocalBasisVariant(const LocalBasisVariant& other) = default;
    \n+
    72 LocalBasisVariant(LocalBasisVariant&& other) = default;
    \n+
    73 LocalBasisVariant& operator=(const LocalBasisVariant& other) = default;
    \n+
    74 LocalBasisVariant& operator=(LocalBasisVariant&& other) = default;
    \n+
    75
    \n+
    79 unsigned int size() const
    \n+
    80 {
    \n+
    81 return size_;
    \n+
    82 }
    \n+
    83
    \n+
    87 unsigned int order() const
    \n+
    88 {
    \n+
    89 return order_;
    \n+
    90 }
    \n+
    91
    \n+
    95 inline void evaluateFunction(
    \n+
    96 const typename Traits::DomainType& x,
    \n+
    97 std::vector<typename Traits::RangeType>& out) const
    \n+
    98 {
    \n+
    99 Impl::visitIf([&](const auto* impl) { impl->evaluateFunction(x, out); }, impl_);
    \n+
    100 }
    \n+
    101
    \n+
    105 inline void evaluateJacobian(
    \n+
    106 const typename Traits::DomainType& x,
    \n+
    107 std::vector<typename Traits::JacobianType>& out) const
    \n+
    108 {
    \n+
    109 Impl::visitIf([&](const auto* impl) { impl->evaluateJacobian(x, out); }, impl_);
    \n+
    110 }
    \n+
    111
    \n+
    119 void partial(
    \n+
    120 const std::array<unsigned int,Traits::dimDomain>& order,
    \n+
    121 const typename Traits::DomainType& x,
    \n+
    122 std::vector<typename Traits::RangeType>& out) const
    \n+
    123 {
    \n+
    124 Impl::visitIf([&](const auto* impl) { impl->partial(order, x, out); }, impl_);
    \n+
    125 }
    \n+
    126
    \n+
    127 private:
    \n+
    128 std::variant<std::monostate, const Implementations*...> impl_;
    \n+
    129 std::size_t size_;
    \n+
    130 std::size_t order_;
    \n+
    131 };
    \n+
    132
    \n+
    133
    \n+
    134 template<class... Implementations>
    \n+
    135 class LocalCoefficientsVariant
    \n+
    136 {
    \n+
    137 public:
    \n+
    138
    \n+
    139 template<class Implementation>
    \n+
    140 LocalCoefficientsVariant(const Implementation& impl) :
    \n+
    141 impl_(&impl),
    \n+
    142 size_(impl.size())
    \n+
    143 {}
    \n+
    144
    \n+
    145 LocalCoefficientsVariant() = default;
    \n+
    146 LocalCoefficientsVariant(const LocalCoefficientsVariant& other) = default;
    \n+
    147 LocalCoefficientsVariant(LocalCoefficientsVariant&& other) = default;
    \n+
    148 LocalCoefficientsVariant& operator=(const LocalCoefficientsVariant& other) = default;
    \n+
    149 LocalCoefficientsVariant& operator=(LocalCoefficientsVariant&& other) = default;
    \n+
    150
    \n+
    154 unsigned int size() const
    \n+
    155 {
    \n+
    156 return size_;
    \n+
    157 }
    \n+
    158
    \n+
    159 const Dune::LocalKey& localKey (std::size_t i) const
    \n+
    160 {
    \n+
    161 // We can't use visitIf since we have to return something
    \n+
    162 // even for a monostate value. Since the return type is
    \n+
    163 // an l-value reference, we use a default constructed
    \n+
    164 // dummy LocalKey value.
    \n+
    165 static const Dune::LocalKey dummyLocalKey;
    \n+
    166 return std::visit(overload(
    \n+
    167 [&](const std::monostate&) -> decltype(auto) { return (dummyLocalKey);},
    \n+
    168 [&](const auto* impl) -> decltype(auto) { return impl->localKey(i); }), impl_);
    \n+
    169 }
    \n+
    170
    \n+
    171 private:
    \n+
    172 std::variant<std::monostate, const Implementations*...> impl_;
    \n+
    173 std::size_t size_;
    \n+
    174 };
    \n+
    175
    \n+
    176
    \n+
    177 template<class... Implementations>
    \n+
    178 class LocalInterpolationVariant
    \n+
    179 {
    \n+
    180 public:
    \n+
    181
    \n+
    182 template<class Implementation>
    \n+
    183 LocalInterpolationVariant(const Implementation& impl) :
    \n+
    184 impl_(&impl)
    \n+
    185 {}
    \n+
    186
    \n+
    187 LocalInterpolationVariant() = default;
    \n+
    188 LocalInterpolationVariant(const LocalInterpolationVariant& other) = default;
    \n+
    189 LocalInterpolationVariant(LocalInterpolationVariant&& other) = default;
    \n+
    190 LocalInterpolationVariant& operator=(const LocalInterpolationVariant& other) = default;
    \n+
    191 LocalInterpolationVariant& operator=(LocalInterpolationVariant&& other) = default;
    \n+
    192
    \n+
    193 template<typename F, typename C>
    \n+
    194 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    195 {
    \n+
    196 Impl::visitIf([&](const auto* impl) { impl->interpolate(ff, out); }, impl_);
    \n+
    197 }
    \n+
    198
    \n+
    199 private:
    \n+
    200 std::variant<std::monostate, const Implementations*...> impl_;
    \n+
    201 };
    \n+
    202
    \n+
    203} // namespace Impl
    \n+
    204
    \n+
    205
    \n+
    234 template<class... Implementations>
    \n+
    \n+\n+
    236 {
    \n+
    237
    \n+
    238 // In each LocalFooVariant we store a std::variant<std::monostate, const FooImpl*...>, i.e. a std::variant
    \n+
    239 // with the pointer to the Foo implementation unless LocalFiniteElementVariant stores a monostate. In this
    \n+
    240 // case each LocalFooVariant also stores a monostate (and not a monostate*).
    \n+
    241 using LocalBasis = Impl::LocalBasisVariant<typename Implementations::Traits::LocalBasisType...>;
    \n+
    242 using LocalCoefficients = Impl::LocalCoefficientsVariant<typename Implementations::Traits::LocalCoefficientsType...>;
    \n+
    243 using LocalInterpolation = Impl::LocalInterpolationVariant<typename Implementations::Traits::LocalInterpolationType...>;
    \n+
    244
    \n+
    245 // Update members after changing impl_
    \n+
    246 void updateMembers()
    \n+
    247 {
    \n+
    248 std::visit(overload(
    \n+
    249 [&](std::monostate&) {
    \n+
    250 localBasis_ = LocalBasis();
    \n+
    251 localCoefficients_ = LocalCoefficients();
    \n+
    252 localInterpolation_ = LocalInterpolation();
    \n+
    253 size_ = 0;
    \n+
    254 geometryType_ = GeometryType{};
    \n+
    255 }, [&](auto&& impl) {
    \n+
    256 localBasis_ = LocalBasis(impl.localBasis());
    \n+
    257 localCoefficients_ = LocalCoefficients(impl.localCoefficients());
    \n+
    258 localInterpolation_ = LocalInterpolation(impl.localInterpolation());
    \n+
    259 size_ = impl.size();
    \n+
    260 geometryType_ = impl.type();
    \n+
    261 }), impl_);
    \n+
    262 }
    \n+
    263
    \n+
    264 public:
    \n+
    265
    \n+\n+
    270
    \n+\n+
    275
    \n+
    \n+
    279 LocalFiniteElementVariant(const std::monostate& monostate)
    \n+
    280 {}
    \n+
    \n+
    281
    \n+
    288 template<class Implementation,
    \n+
    289 std::enable_if_t<std::disjunction<std::is_same<std::decay_t<Implementation>, Implementations>...>::value, int> = 0>
    \n+
    \n+
    290 LocalFiniteElementVariant(Implementation&& impl) :
    \n+
    291 impl_(std::forward<Implementation>(impl))
    \n+
    292 {
    \n+
    293 updateMembers();
    \n+
    294 }
    \n+
    \n+
    295
    \n+
    \n+\n+
    300 impl_(other.impl_)
    \n+
    301 {
    \n+
    302 updateMembers();
    \n+
    303 }
    \n+
    \n+
    304
    \n+
    \n+\n+
    309 impl_(std::move(other.impl_))
    \n+
    310 {
    \n+
    311 updateMembers();
    \n+
    312 }
    \n+
    \n+
    313
    \n+
    \n+\n+
    318 {
    \n+
    319 impl_ = other.impl_;
    \n+
    320 updateMembers();
    \n+
    321 return *this;
    \n+
    322 }
    \n+
    \n+
    323
    \n+
    \n+\n+
    328 {
    \n+
    329 impl_ = std::move(other.impl_);
    \n+
    330 updateMembers();
    \n+
    331 return *this;
    \n+
    332 }
    \n+
    \n+
    333
    \n+
    337 template<class Implementation,
    \n+
    338 std::enable_if_t<std::disjunction<std::is_same<std::decay_t<Implementation>, Implementations>...>::value, int> = 0>
    \n+
    \n+
    339 LocalFiniteElementVariant& operator=(Implementation&& impl)
    \n+
    340 {
    \n+
    341 impl_ = std::forward<Implementation>(impl);
    \n+
    342 updateMembers();
    \n+
    343 return *this;
    \n+
    344 }
    \n+
    \n+
    345
    \n+
    346
    \n+
    \n+
    350 const typename Traits::LocalBasisType& localBasis() const
    \n+
    351 {
    \n+
    352 return localBasis_;
    \n+
    353 }
    \n+
    \n+
    354
    \n+
    \n+
    358 const typename Traits::LocalCoefficientsType& localCoefficients() const
    \n+
    359 {
    \n+
    360 return localCoefficients_;
    \n+
    361 }
    \n+
    \n+
    362
    \n+
    \n+
    366 const typename Traits::LocalInterpolationType& localInterpolation() const
    \n+
    367 {
    \n+
    368 return localInterpolation_;
    \n+
    369 }
    \n+
    \n+
    370
    \n+
    \n+
    374 unsigned int size() const
    \n+
    375 {
    \n+
    376 return size_;
    \n+
    377 }
    \n+
    \n+
    378
    \n+
    \n+
    382 constexpr GeometryType type() const
    \n+
    383 {
    \n+
    384 return geometryType_;
    \n+
    385 }
    \n+
    \n+
    386
    \n+
    \n+
    398 const auto& variant() const
    \n+
    399 {
    \n+
    400 return impl_;
    \n+
    401 }
    \n+
    \n+
    402
    \n+
    \n+
    408 operator bool () const
    \n+
    409 {
    \n+
    410 return not(std::holds_alternative<std::monostate>(variant()));
    \n+
    411 }
    \n+
    \n+
    412
    \n+
    413 private:
    \n+
    414 std::variant<std::monostate, Implementations...> impl_;
    \n+
    415 std::size_t size_;
    \n+
    416 GeometryType geometryType_;
    \n+
    417 LocalBasis localBasis_;
    \n+
    418 LocalCoefficients localCoefficients_;
    \n+
    419 LocalInterpolation localInterpolation_;
    \n+
    420 };
    \n+
    \n+
    421
    \n+
    422} // end namespace Dune
    \n+
    423
    \n+
    424#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition orthonormalbasis.hh:20
    \n-
    SparseCoeffMatrix< StorageField, 1 > CoefficientMatrix
    Definition orthonormalbasis.hh:34
    \n-
    static Object * create(const unsigned int order)
    Definition orthonormalbasis.hh:44
    \n-
    StandardEvaluator< MonomialBasisType > Evaluator
    Definition orthonormalbasis.hh:35
    \n-
    SF StorageField
    Definition orthonormalbasis.hh:22
    \n-
    static constexpr GeometryType SimplexGeometry
    Definition orthonormalbasis.hh:41
    \n-
    PolynomialBasis< Evaluator, CoefficientMatrix > Basis
    Definition orthonormalbasis.hh:36
    \n-
    EvaluationBasisFactory< dimension, StorageField >::Type MonomialBasisProviderType
    Definition orthonormalbasis.hh:31
    \n-
    CF ComputeField
    Definition orthonormalbasis.hh:23
    \n-
    const Basis Object
    Definition orthonormalbasis.hh:39
    \n-
    unsigned int Key
    Definition orthonormalbasis.hh:38
    \n-
    static void release(Object *object)
    Definition orthonormalbasis.hh:57
    \n-
    static const unsigned int dimension
    Definition orthonormalbasis.hh:21
    \n-
    MonomialBasisProviderType::Object MonomialBasisType
    Definition orthonormalbasis.hh:32
    \n-\n-
    MonomialBasisProvider< dd, FF > Type
    Definition orthonormalbasis.hh:28
    \n-
    Definition orthonormalcompute.hh:95
    \n-
    Definition basisevaluator.hh:131
    \n-
    Definition coeffmatrix.hh:48
    \n-
    unsigned int size() const
    Definition coeffmatrix.hh:69
    \n-
    void fill(const RowMatrix &mat, bool verbose=false)
    Definition coeffmatrix.hh:160
    \n-
    Definition monomialbasis.hh:780
    \n-
    Definition polynomialbasis.hh:65
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    Type erasure class for wrapping LocalFiniteElement classes.
    Definition localfiniteelementvariant.hh:236
    \n+
    typename Dune::LocalFiniteElementTraits< LocalBasis, LocalCoefficients, LocalInterpolation > Traits
    Export LocalFiniteElementTraits.
    Definition localfiniteelementvariant.hh:269
    \n+
    const auto & variant() const
    Provide access to underlying std::variant.
    Definition localfiniteelementvariant.hh:398
    \n+
    unsigned int size() const
    Number of shape functions.
    Definition localfiniteelementvariant.hh:374
    \n+
    constexpr GeometryType type() const
    Number of shape functions.
    Definition localfiniteelementvariant.hh:382
    \n+
    LocalFiniteElementVariant(LocalFiniteElementVariant &&other)
    Move constructor.
    Definition localfiniteelementvariant.hh:308
    \n+
    LocalFiniteElementVariant & operator=(Implementation &&impl)
    Assignment from implementation.
    Definition localfiniteelementvariant.hh:339
    \n+
    const Traits::LocalBasisType & localBasis() const
    Provide access to LocalBasis implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:350
    \n+
    LocalFiniteElementVariant & operator=(const LocalFiniteElementVariant &other)
    Copy assignment.
    Definition localfiniteelementvariant.hh:317
    \n+
    LocalFiniteElementVariant(const std::monostate &monostate)
    Construct empty LocalFiniteElementVariant.
    Definition localfiniteelementvariant.hh:279
    \n+
    LocalFiniteElementVariant(const LocalFiniteElementVariant &other)
    Copy constructor.
    Definition localfiniteelementvariant.hh:299
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Provide access to LocalCoefficients implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:358
    \n+
    LocalFiniteElementVariant(Implementation &&impl)
    Construct LocalFiniteElementVariant.
    Definition localfiniteelementvariant.hh:290
    \n+
    LocalFiniteElementVariant & operator=(LocalFiniteElementVariant &&other)
    Move assignment.
    Definition localfiniteelementvariant.hh:327
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Provide access to LocalInterpolation implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:366
    \n+
    LocalFiniteElementVariant()=default
    Construct empty LocalFiniteElementVariant.
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,144 +1,423 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl\n-orthonormalbasis.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+localfiniteelementvariant.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_ORTHONORMALBASIS_HH\n-6#define DUNE_ORTHONORMALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH\n+6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bc_\bo_\bm_\bp_\bu_\bt_\be_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n+8#include \n+9#include \n+10#include \n+11\n+12#include \n+13#include \n+14#include \n 15\n-16 // OrthonormalBasisFactory\n-17 // -----------------------\n-18 template< int dim, class SF, class CF = typename ComputeField< SF, 512 >::\n-Type >\n-_\b1_\b9 struct _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-20 {\n-_\b2_\b1 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-_\b2_\b2 typedef SF _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-_\b2_\b3 typedef CF _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd;\n+16#include \n+17\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+21\n+22\n+23namespace _\bD_\bu_\bn_\be {\n 24\n-25 template \n-_\b2_\b6 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-27 {\n-_\b2_\b8 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n-29 };\n-30\n-_\b3_\b1 typedef typename _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bT_\by_\bp_\be\n-_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\bT_\by_\bp_\be;\n-_\b3_\b2 typedef typename MonomialBasisProviderType::Object _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be;\n-33\n-_\b3_\b4 typedef _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd_\b,_\b _\b1_\b _\b> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx;\n-_\b3_\b5 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b _\b> _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br;\n-_\b3_\b6 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b,_\b _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx_\b _\b> _\bB_\ba_\bs_\bi_\bs;\n-37\n-_\b3_\b8 typedef unsigned int _\bK_\be_\by;\n-_\b3_\b9 typedef const _\bB_\ba_\bs_\bi_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n-40\n-_\b4_\b1 static constexpr GeometryType _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bo_\bm_\be_\bt_\br_\by = GeometryTypes::simplex(dim);\n+25namespace Impl {\n+26\n+27 // Helper for visiting a variant containing monostate.\n+28 // Since a generic lambda will in most cases not compile\n+29 // for monostate, we add special empty overloads for monostate.\n+30 // Hence visitIf will simply do nothing in the case of a\n+31 // monostate value.\n+32 template\n+33 void visitIf(Visitor&& visitor, Variant&& variant)\n+34 {\n+35 auto visitorWithFallback = overload([&](std::monostate&) {}, [&](const std::\n+monostate&) {}, visitor);\n+36 std::visit(visitorWithFallback, variant);\n+37 }\n+38\n+39 template\n+40 class LocalBasisVariant\n+41 {\n 42\n-43 template< GeometryType::Id geometryId >\n-_\b4_\b4 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const unsigned int order )\n-45 {\n-46 const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be &monomialBasis = *MonomialBasisProviderType::\n-template create< SimplexGeometry >( order );\n-47\n-48 static _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx _coeffs;\n-49 if( _coeffs._\bs_\bi_\bz_\be() <= monomialBasis.size() )\n-50 {\n-51 _\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd_\b _\b> matrix( order );\n-52 _coeffs._\bf_\bi_\bl_\bl( matrix );\n-53 }\n-54\n-55 return new _\bB_\ba_\bs_\bi_\bs( monomialBasis, _coeffs, monomialBasis._\bs_\bi_\bz_\be() );\n-56 }\n-_\b5_\b7 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-58 };\n-59\n-60}\n-61\n-62#endif // #ifndef DUNE_ORTHONORMALBASIS_HH\n-_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bc_\bo_\bm_\bp_\bu_\bt_\be_\b._\bh_\bh\n-_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+43 template\n+44 struct FirstType\n+45 { using type = I0; };\n+46\n+47 using FirstImpTraits = typename FirstType::type::Traits;\n+48\n+49 public:\n+50\n+51 // We do not simply copy Implementation::LocalBasisTraits because this\n+52 // may be implementation specific. To stay clean, we simply put all its\n+53 // data into the default LocalBasisTraits.\n+54 using Traits = typename _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs<\n+55 typename FirstImpTraits::DomainFieldType,\n+56 FirstImpTraits::dimDomain,\n+57 typename FirstImpTraits::DomainType,\n+58 typename FirstImpTraits::RangeFieldType,\n+59 FirstImpTraits::dimRange,\n+60 typename FirstImpTraits::RangeType,\n+61 typename FirstImpTraits::JacobianType>;\n+62\n+63 template\n+64 LocalBasisVariant(const Implementation& impl) :\n+65 impl_(&impl),\n+66 size_(impl.size()),\n+67 order_(impl.order())\n+68 {}\n+69\n+70 LocalBasisVariant() = default;\n+71 LocalBasisVariant(const LocalBasisVariant& other) = default;\n+72 LocalBasisVariant(LocalBasisVariant&& other) = default;\n+73 LocalBasisVariant& operator=(const LocalBasisVariant& other) = default;\n+74 LocalBasisVariant& operator=(LocalBasisVariant&& other) = default;\n+75\n+79 unsigned int size() const\n+80 {\n+81 return size_;\n+82 }\n+83\n+87 unsigned int order() const\n+88 {\n+89 return order_;\n+90 }\n+91\n+95 inline void evaluateFunction(\n+96 const typename Traits::DomainType& x,\n+97 std::vector& out) const\n+98 {\n+99 Impl::visitIf([&](const auto* impl) { impl->evaluateFunction(x, out); },\n+impl_);\n+100 }\n+101\n+105 inline void evaluateJacobian(\n+106 const typename Traits::DomainType& x,\n+107 std::vector& out) const\n+108 {\n+109 Impl::visitIf([&](const auto* impl) { impl->evaluateJacobian(x, out); },\n+impl_);\n+110 }\n+111\n+119 void partial(\n+120 const std::array& order,\n+121 const typename Traits::DomainType& x,\n+122 std::vector& out) const\n+123 {\n+124 Impl::visitIf([&](const auto* impl) { impl->partial(order, x, out); },\n+impl_);\n+125 }\n+126\n+127 private:\n+128 std::variant impl_;\n+129 std::size_t size_;\n+130 std::size_t order_;\n+131 };\n+132\n+133\n+134 template\n+135 class LocalCoefficientsVariant\n+136 {\n+137 public:\n+138\n+139 template\n+140 LocalCoefficientsVariant(const Implementation& impl) :\n+141 impl_(&impl),\n+142 size_(impl.size())\n+143 {}\n+144\n+145 LocalCoefficientsVariant() = default;\n+146 LocalCoefficientsVariant(const LocalCoefficientsVariant& other) = default;\n+147 LocalCoefficientsVariant(LocalCoefficientsVariant&& other) = default;\n+148 LocalCoefficientsVariant& operator=(const LocalCoefficientsVariant& other)\n+= default;\n+149 LocalCoefficientsVariant& operator=(LocalCoefficientsVariant&& other) =\n+default;\n+150\n+154 unsigned int size() const\n+155 {\n+156 return size_;\n+157 }\n+158\n+159 const _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& localKey (std::size_t i) const\n+160 {\n+161 // We can't use visitIf since we have to return something\n+162 // even for a monostate value. Since the return type is\n+163 // an l-value reference, we use a default constructed\n+164 // dummy LocalKey value.\n+165 static const _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by dummyLocalKey;\n+166 return std::visit(overload(\n+167 [&](const std::monostate&) -> decltype(auto) { return (dummyLocalKey);},\n+168 [&](const auto* impl) -> decltype(auto) { return impl->localKey(i); }),\n+impl_);\n+169 }\n+170\n+171 private:\n+172 std::variant impl_;\n+173 std::size_t size_;\n+174 };\n+175\n+176\n+177 template\n+178 class LocalInterpolationVariant\n+179 {\n+180 public:\n+181\n+182 template\n+183 LocalInterpolationVariant(const Implementation& impl) :\n+184 impl_(&impl)\n+185 {}\n+186\n+187 LocalInterpolationVariant() = default;\n+188 LocalInterpolationVariant(const LocalInterpolationVariant& other) =\n+default;\n+189 LocalInterpolationVariant(LocalInterpolationVariant&& other) = default;\n+190 LocalInterpolationVariant& operator=(const LocalInterpolationVariant&\n+other) = default;\n+191 LocalInterpolationVariant& operator=(LocalInterpolationVariant&& other) =\n+default;\n+192\n+193 template\n+194 void interpolate (const F& ff, std::vector& out) const\n+195 {\n+196 Impl::visitIf([&](const auto* impl) { impl->interpolate(ff, out); },\n+impl_);\n+197 }\n+198\n+199 private:\n+200 std::variant impl_;\n+201 };\n+202\n+203} // namespace Impl\n+204\n+205\n+234 template\n+_\b2_\b3_\b5 class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n+236 {\n+237\n+238 // In each LocalFooVariant we store a std::variant, i.e. a std::variant\n+239 // with the pointer to the Foo implementation unless\n+LocalFiniteElementVariant stores a monostate. In this\n+240 // case each LocalFooVariant also stores a monostate (and not a\n+monostate*).\n+241 using LocalBasis = Impl::LocalBasisVariant;\n+242 using LocalCoefficients = Impl::LocalCoefficientsVariant;\n+243 using LocalInterpolation = Impl::LocalInterpolationVariant;\n+244\n+245 // Update members after changing impl_\n+246 void updateMembers()\n+247 {\n+248 std::visit(overload(\n+249 [&](std::monostate&) {\n+250 localBasis_ = LocalBasis();\n+251 localCoefficients_ = LocalCoefficients();\n+252 localInterpolation_ = LocalInterpolation();\n+253 size_ = 0;\n+254 geometryType_ = GeometryType{};\n+255 }, [&](auto&& impl) {\n+256 localBasis_ = LocalBasis(impl.localBasis());\n+257 localCoefficients_ = LocalCoefficients(impl.localCoefficients());\n+258 localInterpolation_ = LocalInterpolation(impl.localInterpolation());\n+259 size_ = impl.size();\n+260 geometryType_ = impl.type();\n+261 }), impl_);\n+262 }\n+263\n+264 public:\n+265\n+_\b2_\b6_\b9 using _\bT_\br_\ba_\bi_\bt_\bs = typename _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,\n+_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b,_\b _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b>;\n+270\n+_\b2_\b7_\b4 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt() = default;\n+275\n+_\b2_\b7_\b9 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt(const std::monostate& monostate)\n+280 {}\n+281\n+288 template, Implementations>...>::value, int> = 0>\n+_\b2_\b9_\b0 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt(Implementation&& impl) :\n+291 impl_(std::forward(impl))\n+292 {\n+293 updateMembers();\n+294 }\n+295\n+_\b2_\b9_\b9 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt(const _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt& other) :\n+300 impl_(other.impl_)\n+301 {\n+302 updateMembers();\n+303 }\n+304\n+_\b3_\b0_\b8 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt&& other) :\n+309 impl_(std::move(other.impl_))\n+310 {\n+311 updateMembers();\n+312 }\n+313\n+_\b3_\b1_\b7 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt&\n+other)\n+318 {\n+319 impl_ = other.impl_;\n+320 updateMembers();\n+321 return *this;\n+322 }\n+323\n+_\b3_\b2_\b7 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt&& other)\n+328 {\n+329 impl_ = std::move(other.impl_);\n+330 updateMembers();\n+331 return *this;\n+332 }\n+333\n+337 template, Implementations>...>::value, int> = 0>\n+_\b3_\b3_\b9 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(Implementation&& impl)\n+340 {\n+341 impl_ = std::forward(impl);\n+342 updateMembers();\n+343 return *this;\n+344 }\n+345\n+346\n+_\b3_\b5_\b0 const typename Traits::LocalBasisType& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() const\n+351 {\n+352 return localBasis_;\n+353 }\n+354\n+_\b3_\b5_\b8 const typename Traits::LocalCoefficientsType& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n+359 {\n+360 return localCoefficients_;\n+361 }\n+362\n+_\b3_\b6_\b6 const typename Traits::LocalInterpolationType& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n+367 {\n+368 return localInterpolation_;\n+369 }\n+370\n+_\b3_\b7_\b4 unsigned int _\bs_\bi_\bz_\be() const\n+375 {\n+376 return size_;\n+377 }\n+378\n+_\b3_\b8_\b2 constexpr GeometryType _\bt_\by_\bp_\be() const\n+383 {\n+384 return geometryType_;\n+385 }\n+386\n+_\b3_\b9_\b8 const auto& _\bv_\ba_\br_\bi_\ba_\bn_\bt() const\n+399 {\n+400 return impl_;\n+401 }\n+402\n+_\b4_\b0_\b8 operator bool () const\n+409 {\n+410 return not(std::holds_alternative(_\bv_\ba_\br_\bi_\ba_\bn_\bt()));\n+411 }\n+412\n+413 private:\n+414 std::variant impl_;\n+415 std::size_t size_;\n+416 GeometryType geometryType_;\n+417 LocalBasis localBasis_;\n+418 LocalCoefficients localCoefficients_;\n+419 LocalInterpolation localInterpolation_;\n+420 };\n+421\n+422} // end namespace Dune\n+423\n+424#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx\n-SparseCoeffMatrix< StorageField, 1 > CoefficientMatrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-StandardEvaluator< MonomialBasisType > Evaluator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n-SF StorageField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bG_\be_\bo_\bm_\be_\bt_\br_\by\n-static constexpr GeometryType SimplexGeometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-PolynomialBasis< Evaluator, CoefficientMatrix > Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\bT_\by_\bp_\be\n-EvaluationBasisFactory< dimension, StorageField >::Type\n-MonomialBasisProviderType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd\n-CF ComputeField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const Basis Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-unsigned int Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-MonomialBasisProviderType::Object MonomialBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n-MonomialBasisProvider< dd, FF > Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:28\n-_\bO_\bN_\bB_\bC_\bo_\bm_\bp_\bu_\bt_\be_\b:_\b:_\bO_\bN_\bB_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n+Type erasure class for wrapping LocalFiniteElement classes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+typename Dune::LocalFiniteElementTraits< LocalBasis, LocalCoefficients,\n+LocalInterpolation > Traits\n+Export LocalFiniteElementTraits.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:269\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bv_\ba_\br_\bi_\ba_\bn_\bt\n+const auto & variant() const\n+Provide access to underlying std::variant.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:398\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n-void fill(const RowMatrix &mat, bool verbose=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:780\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n+Number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:374\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+constexpr GeometryType type() const\n+Number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:382\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n+LocalFiniteElementVariant(LocalFiniteElementVariant &&other)\n+Move constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:308\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+LocalFiniteElementVariant & operator=(Implementation &&impl)\n+Assignment from implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:339\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+Provide access to LocalBasis implementation of this LocalFiniteElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:350\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+LocalFiniteElementVariant & operator=(const LocalFiniteElementVariant &other)\n+Copy assignment.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:317\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n+LocalFiniteElementVariant(const std::monostate &monostate)\n+Construct empty LocalFiniteElementVariant.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:279\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n+LocalFiniteElementVariant(const LocalFiniteElementVariant &other)\n+Copy constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:299\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+Provide access to LocalCoefficients implementation of this LocalFiniteElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:358\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n+LocalFiniteElementVariant(Implementation &&impl)\n+Construct LocalFiniteElementVariant.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:290\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+LocalFiniteElementVariant & operator=(LocalFiniteElementVariant &&other)\n+Move assignment.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:327\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+Provide access to LocalInterpolation implementation of this LocalFiniteElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:366\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt\n+LocalFiniteElementVariant()=default\n+Construct empty LocalFiniteElementVariant.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refined.hh File Reference\n+dune-localfunctions: interfaceswitch.hh File Reference\n \n \n \n \n \n \n \n@@ -65,30 +65,47 @@\n \n \n \n \n \n \n \n
    \n-
    refined.hh File Reference
    \n+ \n+
    interfaceswitch.hh File Reference
    \n
    \n
    \n-\n-

    Convenience header that includes all available LocalFiniteElements based on uniform element refinement. \n-More...

    \n-
    #include <dune/localfunctions/refined/refinedp0.hh>
    \n-#include <dune/localfunctions/refined/refinedp1.hh>
    \n+
    #include <cstddef>
    \n+#include <memory>
    \n+#include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/common/shared_ptr.hh>
    \n
    \n

    Go to the source code of this file.

    \n-

    Detailed Description

    \n-

    Convenience header that includes all available LocalFiniteElements based on uniform element refinement.

    \n-
    \n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+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...
     
    \n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,17 +1,30 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-refined.hh File Reference\n-Convenience header that includes all available LocalFiniteElements based on\n-uniform element refinement. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b._\bh_\bh>\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+interfaceswitch.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Convenience header that includes all available LocalFiniteElements based on\n-uniform element refinement.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b<_\b _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bD_\bu_\bm_\bm_\by_\b _\b>\n+\u00a0 Switch for uniform treatment of finite element with either the local\n+ or the global interface. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bD_\bu_\bm_\bm_\by_\b _\b>\n+\u00a0 Switch for uniform treatment of local and global basis classes.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refined.hh Source File\n+dune-localfunctions: interfaceswitch.hh Source File\n \n \n \n \n \n \n \n@@ -70,29 +70,198 @@\n \n \n \n \n \n \n \n
    \n-
    refined.hh
    \n+
    interfaceswitch.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-\n-\n-\n-
    Piecewise P0 finite element.
    \n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH
    \n+
    8
    \n+
    9#include <cstddef>
    \n+
    10#include <memory>
    \n+
    11#include <vector>
    \n+
    12
    \n+
    13#include <dune/common/fmatrix.hh>
    \n+
    14#include <dune/common/typetraits.hh>
    \n+
    15#include <dune/common/shared_ptr.hh>
    \n+
    16
    \n+
    17namespace Dune {
    \n+
    18
    \n+
    21
    \n+
    29 template<class FiniteElement, class Dummy = void>
    \n+
    \n+\n+
    32 typedef typename FiniteElement::Traits::Basis Basis;
    \n+
    34 typedef typename FiniteElement::Traits::Interpolation Interpolation;
    \n+
    36 typedef typename FiniteElement::Traits::Coefficients Coefficients;
    \n+
    37
    \n+
    \n+
    39 static const Basis &basis(const FiniteElement& fe)
    \n+
    40 { return fe.basis(); }
    \n+
    \n+
    \n+
    42 static const Interpolation &interpolation(const FiniteElement& fe)
    \n+
    43 { return fe.interpolation(); }
    \n+
    \n+
    \n+
    45 static const Coefficients &coefficients(const FiniteElement& fe)
    \n+
    46 { return fe.coefficients(); }
    \n+
    \n+
    47
    \n+
    49
    \n+
    78 typedef std::shared_ptr<const FiniteElement> Store;
    \n+
    80
    \n+
    \n+
    85 static void setStore(Store& store, const FiniteElement& fe)
    \n+
    86 { store = std::make_shared<const FiniteElement>(fe); }
    \n+
    \n+
    \n+
    88 static void setStore(Store& store, FiniteElement&& fe)
    \n+
    89 { store = std::make_shared<const FiniteElement>(std::move(fe)); }
    \n+
    \n+
    \n+
    91 static void setStore(Store& store, const Store& fe)
    \n+
    92 { store = fe; }
    \n+
    \n+
    93 };
    \n+
    \n+
    94
    \n+
    95#ifndef DOXYGEN
    \n+
    98 template<class FiniteElement>
    \n+
    99 struct FiniteElementInterfaceSwitch<
    \n+
    100 FiniteElement,
    \n+
    101 typename std::enable_if<AlwaysTrue<typename FiniteElement::Traits::
    \n+
    102 LocalBasisType>::value>::type
    \n+
    103 >
    \n+
    104 {
    \n+
    106 typedef typename FiniteElement::Traits::LocalBasisType Basis;
    \n+
    108 typedef typename FiniteElement::Traits::LocalInterpolationType
    \n+\n+
    111 typedef typename FiniteElement::Traits::LocalCoefficientsType Coefficients;
    \n+
    112
    \n+
    114 static const Basis &basis(const FiniteElement& fe)
    \n+
    115 { return fe.localBasis(); }
    \n+
    117 static const Interpolation &interpolation(const FiniteElement& fe)
    \n+
    118 { return fe.localInterpolation(); }
    \n+
    120 static const Coefficients &coefficients(const FiniteElement& fe)
    \n+
    121 { return fe.localCoefficients(); }
    \n+
    122
    \n+
    124 typedef std::shared_ptr<const FiniteElement> Store;
    \n+
    126 static void setStore(Store& store, const FiniteElement& fe)
    \n+
    127 { store = stackobject_to_shared_ptr<const FiniteElement>(fe); }
    \n+
    129 static void setStore(Store& store, FiniteElement&& fe)
    \n+
    130 { store = std::make_shared<const FiniteElement>(std::move(fe)); }
    \n+
    132 static void setStore(Store& store, const Store& fe)
    \n+
    133 { store = fe; }
    \n+
    134 };
    \n+
    135#endif // !DOXYGEN
    \n+
    136
    \n+
    138
    \n+
    153 template<class Basis, class Dummy = void>
    \n+
    \n+\n+
    156 typedef typename Basis::Traits::DomainField DomainField;
    \n+
    158 static const std::size_t dimDomainLocal = Basis::Traits::dimDomainLocal;
    \n+
    160 typedef typename Basis::Traits::DomainLocal DomainLocal;
    \n+
    161
    \n+
    163 typedef typename Basis::Traits::RangeField RangeField;
    \n+
    165 static const std::size_t dimRange = Basis::Traits::dimRange;
    \n+
    167 typedef typename Basis::Traits::Range Range;
    \n+
    168
    \n+
    170
    \n+
    180 template<typename Geometry>
    \n+
    \n+
    181 static void gradient(const Basis& basis, const Geometry& geometry,
    \n+
    182 const DomainLocal& xl,
    \n+
    183 std::vector<FieldMatrix<RangeField, 1,
    \n+
    184 Geometry::coorddimension> >& grad)
    \n+
    185 {
    \n+
    186 grad.resize(basis.size());
    \n+
    187 basis.evaluateJacobian(xl, grad);
    \n+
    188 }
    \n+
    \n+
    189 };
    \n+
    \n+
    190
    \n+
    191#ifndef DOXYGEN
    \n+
    193 template<class Basis>
    \n+
    194 struct BasisInterfaceSwitch<Basis,
    \n+
    195 typename std::enable_if<
    \n+
    196 AlwaysTrue<
    \n+
    197 std::integral_constant<
    \n+
    198 std::size_t,
    \n+
    199 Basis::Traits::dimDomain
    \n+
    200 >
    \n+
    201 >::value
    \n+
    202 >::type
    \n+
    203 >
    \n+
    204 {
    \n+
    206 typedef typename Basis::Traits::DomainFieldType DomainField;
    \n+
    208 static const std::size_t dimDomainLocal = Basis::Traits::dimDomain;
    \n+
    210 typedef typename Basis::Traits::DomainType DomainLocal;
    \n+
    211
    \n+
    213 typedef typename Basis::Traits::RangeFieldType RangeField;
    \n+
    215 static const std::size_t dimRange = Basis::Traits::dimRange;
    \n+
    217 typedef typename Basis::Traits::RangeType Range;
    \n+
    218
    \n+
    220 template<typename Geometry>
    \n+
    221 static void gradient(const Basis& basis, const Geometry& geometry,
    \n+
    222 const DomainLocal& xl,
    \n+
    223 std::vector<FieldMatrix<RangeField, 1,
    \n+
    224 Geometry::coorddimension> >& grad)
    \n+
    225 {
    \n+
    226 std::vector<typename Basis::Traits::JacobianType> lgrad(basis.size());
    \n+
    227 basis.evaluateJacobian(xl, lgrad);
    \n+
    228
    \n+
    229 const typename Geometry::JacobianInverseTransposed& jac =
    \n+
    230 geometry.jacobianInverseTransposed(xl);
    \n+
    231
    \n+
    232 grad.resize(basis.size());
    \n+
    233 for(std::size_t i = 0; i < basis.size(); ++i)
    \n+
    234 jac.mv(lgrad[i][0], grad[i][0]);
    \n+
    235 }
    \n+
    236 };
    \n+
    237#endif // !DOXYGEN
    \n+
    238
    \n+
    239} // namespace Dune
    \n+
    240
    \n+
    241#endif // DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH
    \n+
    Definition bdfmcube.hh:18
    \n+
    Switch for uniform treatment of finite element with either the local or the global interface.
    Definition interfaceswitch.hh:30
    \n+
    static const Coefficients & coefficients(const FiniteElement &fe)
    access coefficients
    Definition interfaceswitch.hh:45
    \n+
    static void setStore(Store &store, FiniteElement &&fe)
    Store a finite element in the store.
    Definition interfaceswitch.hh:88
    \n+
    FiniteElement::Traits::Coefficients Coefficients
    export the type of the coefficients
    Definition interfaceswitch.hh:36
    \n+
    static void setStore(Store &store, const Store &fe)
    Store a finite element in the store.
    Definition interfaceswitch.hh:91
    \n+
    static void setStore(Store &store, const FiniteElement &fe)
    Store a finite element in the store.
    Definition interfaceswitch.hh:85
    \n+
    FiniteElement::Traits::Interpolation Interpolation
    export the type of the interpolation
    Definition interfaceswitch.hh:34
    \n+
    std::shared_ptr< const FiniteElement > Store
    Type for storing finite elements.
    Definition interfaceswitch.hh:78
    \n+
    static const Basis & basis(const FiniteElement &fe)
    access basis
    Definition interfaceswitch.hh:39
    \n+
    FiniteElement::Traits::Basis Basis
    export the type of the basis
    Definition interfaceswitch.hh:32
    \n+
    static const Interpolation & interpolation(const FiniteElement &fe)
    access interpolation
    Definition interfaceswitch.hh:42
    \n+
    Switch for uniform treatment of local and global basis classes.
    Definition interfaceswitch.hh:154
    \n+
    static const std::size_t dimRange
    export dimension of the values
    Definition interfaceswitch.hh:165
    \n+
    static const std::size_t dimDomainLocal
    export dimension of local coordinates
    Definition interfaceswitch.hh:158
    \n+
    Basis::Traits::RangeField RangeField
    export field type of the values
    Definition interfaceswitch.hh:163
    \n+
    Basis::Traits::Range Range
    export vector type of the values
    Definition interfaceswitch.hh:167
    \n+
    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
    \n+
    Basis::Traits::DomainLocal DomainLocal
    export vector type of the local coordinates
    Definition interfaceswitch.hh:160
    \n+
    Basis::Traits::DomainField DomainField
    export field types of the coordinates
    Definition interfaceswitch.hh:156
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,20 +1,230 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-refined.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+interfaceswitch.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b._\bh_\bh>\n-_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b._\bh_\bh\n-_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b._\bh_\bh\n-Piecewise P0 finite element.\n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH\n+7#define DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH\n+8\n+9#include \n+10#include \n+11#include \n+12\n+13#include \n+14#include \n+15#include \n+16\n+17namespace _\bD_\bu_\bn_\be {\n+18\n+21\n+29 template\n+_\b3_\b0 struct _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh {\n+_\b3_\b2 typedef typename FiniteElement::Traits::Basis _\bB_\ba_\bs_\bi_\bs;\n+_\b3_\b4 typedef typename FiniteElement::Traits::Interpolation _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+_\b3_\b6 typedef typename FiniteElement::Traits::Coefficients _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+37\n+_\b3_\b9 static const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs(const FiniteElement& fe)\n+40 { return fe.basis(); }\n+_\b4_\b2 static const _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn &_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(const FiniteElement& fe)\n+43 { return fe.interpolation(); }\n+_\b4_\b5 static const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs &_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const FiniteElement& fe)\n+46 { return fe.coefficients(); }\n+47\n+49\n+_\b7_\b8 typedef std::shared_ptr _\bS_\bt_\bo_\br_\be;\n+80\n+_\b8_\b5 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, const FiniteElement& fe)\n+86 { store = std::make_shared(fe); }\n+_\b8_\b8 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, FiniteElement&& fe)\n+89 { store = std::make_shared(std::move(fe)); }\n+_\b9_\b1 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, const _\bS_\bt_\bo_\br_\be& fe)\n+92 { store = fe; }\n+93 };\n+94\n+95#ifndef DOXYGEN\n+98 template\n+99 struct FiniteElementInterfaceSwitch<\n+100 FiniteElement,\n+101 typename std::enable_if::value>::type\n+103 >\n+104 {\n+106 typedef typename FiniteElement::Traits::LocalBasisType _\bB_\ba_\bs_\bi_\bs;\n+108 typedef typename FiniteElement::Traits::LocalInterpolationType\n+109 _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+111 typedef typename FiniteElement::Traits::LocalCoefficientsType _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+112\n+114 static const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs(const FiniteElement& fe)\n+115 { return fe.localBasis(); }\n+117 static const _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn &_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(const FiniteElement& fe)\n+118 { return fe.localInterpolation(); }\n+120 static const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs &_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const FiniteElement& fe)\n+121 { return fe.localCoefficients(); }\n+122\n+124 typedef std::shared_ptr _\bS_\bt_\bo_\br_\be;\n+126 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, const FiniteElement& fe)\n+127 { store = stackobject_to_shared_ptr(fe); }\n+129 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, FiniteElement&& fe)\n+130 { store = std::make_shared(std::move(fe)); }\n+132 static void _\bs_\be_\bt_\bS_\bt_\bo_\br_\be(_\bS_\bt_\bo_\br_\be& store, const _\bS_\bt_\bo_\br_\be& fe)\n+133 { store = fe; }\n+134 };\n+135#endif // !DOXYGEN\n+136\n+138\n+153 template\n+_\b1_\b5_\b4 struct _\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh {\n+_\b1_\b5_\b6 typedef typename Basis::Traits::DomainField _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n+_\b1_\b5_\b8 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl = Basis::Traits::dimDomainLocal;\n+_\b1_\b6_\b0 typedef typename Basis::Traits::DomainLocal _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n+161\n+_\b1_\b6_\b3 typedef typename Basis::Traits::RangeField _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+_\b1_\b6_\b5 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Basis::Traits::dimRange;\n+_\b1_\b6_\b7 typedef typename Basis::Traits::Range _\bR_\ba_\bn_\bg_\be;\n+168\n+170\n+180 template\n+_\b1_\b8_\b1 static void _\bg_\br_\ba_\bd_\bi_\be_\bn_\bt(const Basis& basis, const Geometry& geometry,\n+182 const _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& xl,\n+183 std::vector >& grad)\n+185 {\n+186 grad.resize(basis.size());\n+187 basis.evaluateJacobian(xl, grad);\n+188 }\n+189 };\n+190\n+191#ifndef DOXYGEN\n+193 template\n+194 struct BasisInterfaceSwitch\n+201 >::value\n+202 >::type\n+203 >\n+204 {\n+206 typedef typename Basis::Traits::DomainFieldType _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n+208 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl = Basis::Traits::dimDomain;\n+210 typedef typename Basis::Traits::DomainType _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n+211\n+213 typedef typename Basis::Traits::RangeFieldType _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+215 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Basis::Traits::dimRange;\n+217 typedef typename Basis::Traits::RangeType _\bR_\ba_\bn_\bg_\be;\n+218\n+220 template\n+221 static void _\bg_\br_\ba_\bd_\bi_\be_\bn_\bt(const Basis& basis, const Geometry& geometry,\n+222 const _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& xl,\n+223 std::vector >& grad)\n+225 {\n+226 std::vector lgrad(basis.size());\n+227 basis.evaluateJacobian(xl, lgrad);\n+228\n+229 const typename Geometry::JacobianInverseTransposed& jac =\n+230 geometry.jacobianInverseTransposed(xl);\n+231\n+232 grad.resize(basis.size());\n+233 for(std::size_t i = 0; i < basis.size(); ++i)\n+234 jac.mv(lgrad[i][0], grad[i][0]);\n+235 }\n+236 };\n+237#endif // !DOXYGEN\n+238\n+239} // namespace Dune\n+240\n+241#endif // DUNE_LOCALFUNCTIONS_COMMON_INTERFACESWITCH_HH\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh\n+Switch for uniform treatment of finite element with either the local or the\n+global interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+static const Coefficients & coefficients(const FiniteElement &fe)\n+access coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bs_\be_\bt_\bS_\bt_\bo_\br_\be\n+static void setStore(Store &store, FiniteElement &&fe)\n+Store a finite element in the store.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+FiniteElement::Traits::Coefficients Coefficients\n+export the type of the coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bs_\be_\bt_\bS_\bt_\bo_\br_\be\n+static void setStore(Store &store, const Store &fe)\n+Store a finite element in the store.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bs_\be_\bt_\bS_\bt_\bo_\br_\be\n+static void setStore(Store &store, const FiniteElement &fe)\n+Store a finite element in the store.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+FiniteElement::Traits::Interpolation Interpolation\n+export the type of the interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bS_\bt_\bo_\br_\be\n+std::shared_ptr< const FiniteElement > Store\n+Type for storing finite elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n+static const Basis & basis(const FiniteElement &fe)\n+access basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+FiniteElement::Traits::Basis Basis\n+export the type of the basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+static const Interpolation & interpolation(const FiniteElement &fe)\n+access interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh\n+Switch for uniform treatment of local and global basis classes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:154\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const std::size_t dimRange\n+export dimension of the values\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n+static const std::size_t dimDomainLocal\n+export dimension of local coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd\n+Basis::Traits::RangeField RangeField\n+export field type of the values\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bR_\ba_\bn_\bg_\be\n+Basis::Traits::Range Range\n+export vector type of the values\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bg_\br_\ba_\bd_\bi_\be_\bn_\bt\n+static void gradient(const Basis &basis, const Geometry &geometry, const\n+DomainLocal &xl, std::vector< FieldMatrix< RangeField, 1, Geometry::\n+coorddimension > > &grad)\n+Compute global gradient for scalar valued bases.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:181\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n+Basis::Traits::DomainLocal DomainLocal\n+export vector type of the local coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bS_\bw_\bi_\bt_\bc_\bh_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd\n+Basis::Traits::DomainField DomainField\n+export field types of the coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interfaceswitch.hh:156\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalprismp2localbasis.hh File Reference\n+dune-localfunctions: virtualwrappers.hh File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,55 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalprismp2localbasis.hh File Reference
    \n+
    virtualwrappers.hh File Reference
    \n
    \n
    \n-\n-

    Hierarchical prism p2 shape functions for the simplex. \n-More...

    \n-
    #include <numeric>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::HierarchicalPrismP2LocalBasis< D, R >
    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...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-

    Detailed Description

    \n-

    Hierarchical prism p2 shape functions for the simplex.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,39 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hierarchicalprismp2localbasis.hh File Reference\n-Hierarchical prism p2 shape functions for the simplex. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include \n+virtualwrappers.hh File Reference\n+#include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bI_\bm_\bp_\b,_\b _\bI_\bs_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bI_\bm_\bp_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\b _\bT_\b,_\b _\bI_\bm_\bp_\b _\b>\n+\u00a0 class for wrapping a basis using the virtual interface _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b,_\b _\bI_\bm_\bp_\b _\b>\n+\u00a0 class for wrapping a local interpolation using the virtual interface\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\b _\bI_\bm_\bp_\b _\b>\n+\u00a0 class for wrapping local coefficients using the virtual interface\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\b _\bI_\bm_\bp_\b _\b>\n+\u00a0 class for wrapping a finite element using the virtual interface\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Hierarchical prism p2 shape functions for the simplex.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalprismp2localbasis.hh Source File\n+dune-localfunctions: virtualwrappers.hh Source File\n \n \n \n \n \n \n \n@@ -70,270 +70,409 @@\n \n \n \n \n \n \n \n
    \n-
    hierarchicalprismp2localbasis.hh
    \n+
    virtualwrappers.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALBASIS_HH
    \n-
    6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH
    \n
    7
    \n-
    12#include <numeric>
    \n+
    8#include <array>
    \n+
    9
    \n+\n+\n+\n
    13
    \n-
    14#include <dune/common/fvector.hh>
    \n-
    15#include <dune/common/fmatrix.hh>
    \n+
    14namespace Dune
    \n+
    15{
    \n
    16
    \n-\n-
    18
    \n-
    19namespace Dune
    \n-
    20{
    \n-
    21 template<class D, class R>
    \n-
    \n-\n-
    23 {
    \n-
    24 public:
    \n-
    26 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,3> > Traits;
    \n-
    27
    \n-
    \n-
    29 unsigned int size () const
    \n-
    30 {
    \n-
    31 return 18;
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    \n-
    35 void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    36 std::vector<typename Traits::RangeType> & out) const
    \n-
    37 {
    \n-
    38 out.resize(18);
    \n-
    39
    \n-
    40 out[0]=(1.0-in[0]-in[1])*(1.0-in[2]);
    \n-
    41 out[1]= in[0]*(1-in[2]);
    \n-
    42 out[2]=in[1]*(1-in[2]);
    \n-
    43 out[3]=in[2]*(1.0-in[0]-in[1]);
    \n-
    44 out[4]=in[0]*in[2];
    \n-
    45 out[5]=in[1]*in[2];
    \n+
    17 // forward declaration needed by friend declarations
    \n+
    18 template<class Imp>
    \n+
    19 class LocalFiniteElementVirtualImp;
    \n+
    20
    \n+
    21 // default clone method is the copy constructor
    \n+
    22 template<class Imp, bool IsInterface>
    \n+
    \n+\n+
    24 {
    \n+
    \n+
    25 static Imp* clone(const Imp& imp)
    \n+
    26 {
    \n+
    27 return new Imp(imp);
    \n+
    28 }
    \n+
    \n+
    29 };
    \n+
    \n+
    30
    \n+
    31 // if FE derives from virtual interface the clone method is used
    \n+
    32 template<class Imp>
    \n+
    33 struct LocalFiniteElementCloneFactoryHelper<Imp, true>
    \n+
    34 {
    \n+
    35 static Imp* clone(const Imp& imp)
    \n+
    36 {
    \n+
    37 return imp.clone();
    \n+
    38 }
    \n+
    39 };
    \n+
    40
    \n+
    41 // factory template to clone and create an objects
    \n+
    42 template<class Imp>
    \n+
    \n+\n+
    44 {
    \n+\n
    46
    \n-
    47 //edges
    \n-
    48 out[6]=2*(1.0-in[0]-in[1])*(0.5-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    49 out[7]=2*in[0]*(-0.5+in[0])*(4*in[2]-4*in[2]*in[2]);
    \n-
    50 out[8]=2*in[1]*(-0.5+in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    51 out[9]=4*in[0]*(1-in[0]-in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    52 out[10]=4*in[1]*(1-in[0]-in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    53 out[11]=4*in[0]*in[1]*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    54 out[12]=4*in[0]*(1-in[0]-in[1])*(-in[2]+2*in[2]*in[2]);
    \n-
    55 out[13]=4*in[1]*(1-in[0]-in[1])*(-in[2]+2*in[2]*in[2]);
    \n-
    56 out[14]=4*in[0]*in[1]*(-in[2]+2*in[2]*in[2]);
    \n-
    57
    \n-
    58 //faces
    \n-
    59 out[15]=4*in[0]*(1-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    60 out[16]=4*in[1]*(1-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    61 out[17]=4*in[0]*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n-
    62 }
    \n+
    \n+
    47 static Imp* clone(const Imp& imp)
    \n+
    48 {
    \n+\n+
    50 }
    \n+
    \n+
    51
    \n+
    \n+
    52 static Imp* create()
    \n+
    53 {
    \n+
    54 return new Imp;
    \n+
    55 }
    \n+
    \n+
    56 };
    \n
    \n+
    57
    \n+
    58
    \n+
    59
    \n+
    60 // -----------------------------------------------------------------
    \n+
    61 // Basis
    \n+
    62 // -----------------------------------------------------------------
    \n
    63
    \n
    64
    \n
    65
    \n-
    \n-
    67 void evaluateJacobian (const typename Traits::DomainType& in, //position
    \n-
    68 std::vector<typename Traits::JacobianType>& out) const //return value
    \n-
    69 {
    \n-
    70 out.resize(18);
    \n-
    71
    \n-
    72 //vertices
    \n-
    73 out[0][0][0] = in[2]-1;
    \n-
    74 out[0][0][1] = in[2]-1;
    \n-
    75 out[0][0][2] = in[0]+in[1]-1;
    \n-
    76
    \n-
    77 out[1][0][0] = 1-in[2];
    \n-
    78 out[1][0][1] = 0;
    \n-
    79 out[1][0][2] =-in[0];
    \n+
    72 template<class T , class Imp>
    \n+
    \n+\n+\n+
    75 {
    \n+
    76 template<class FEImp>
    \n+\n+
    78
    \n+
    79 protected:
    \n
    80
    \n-
    81 out[2][0][0] = 0;
    \n-
    82 out[2][0][1] = 1-in[2];
    \n-
    83 out[2][0][2] = -in[1];
    \n-
    84
    \n-
    85 out[3][0][0] = -in[2];
    \n-
    86 out[3][0][1] = -in[2];
    \n-
    87 out[3][0][2] = 1-in[0]-in[1];
    \n+
    \n+
    82 LocalBasisVirtualImp( const Imp &imp )
    \n+
    83 : impl_(imp)
    \n+
    84 {}
    \n+
    \n+
    85
    \n+
    86 public:
    \n+
    87 using Traits = T;
    \n
    88
    \n-
    89 out[4][0][0] = in[2];
    \n-
    90 out[4][0][1] = 0;
    \n-
    91 out[4][0][2] = in[0];
    \n-
    92
    \n-
    93 out[5][0][0] = 0;
    \n-
    94 out[5][0][1] = in[2];
    \n-
    95 out[5][0][2] = in[1];
    \n-
    96
    \n-
    97 //edges
    \n-
    98 out[6][0][0] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    99 out[6][0][1] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    100 out[6][0][2] = 2*(1-in[0]-in[1])*(0.5-in[0]-in[1])*(4-8*in[2]);
    \n-
    101
    \n-
    102 out[7][0][0] = (-1+4*in[0])*(4*in[2]-4*in[2]*in[2]);
    \n-
    103 out[7][0][1] = 0;
    \n-
    104 out[7][0][2] = 2*in[0]*(-0.5+in[0])*(4-8*in[2]);
    \n-
    105
    \n-
    106 out[8][0][0] = 0;
    \n-
    107 out[8][0][1] = (-1+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    108 out[8][0][2] = 2*in[1]*(-0.5+in[1])*(4-8*in[2]);
    \n-
    109
    \n-
    110 out[9][0][0] = (4-8*in[0]-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    111 out[9][0][1] = -4*in[0]*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    112 out[9][0][2] = 4*in[0]*(1-in[0]-in[1])*(-3+4*in[2]);
    \n-
    113
    \n-
    114 out[10][0][0] = (-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    115 out[10][0][1] = (4-4*in[0]-8*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    116 out[10][0][2] = 4*in[1]*(1-in[0]-in[1])*(-3+4*in[2]);
    \n-
    117
    \n-
    118 out[11][0][0] = 4*in[1]*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    119 out[11][0][1] = 4*in[0]*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    120 out[11][0][2] = 4*in[0]*in[1]*(-3+4*in[2]);
    \n-
    121
    \n-
    122 out[12][0][0] = (4-8*in[0]-4*in[1])*(-in[2]+2*in[2]*in[2]);
    \n-
    123 out[12][0][1] = (-4*in[0])*(-in[2]+2*in[2]*in[2]);
    \n-
    124 out[12][0][2] = 4*in[0]*(1-in[0]-in[1])*(-1+4*in[2]);
    \n-
    125
    \n-
    126 out[13][0][0] = -4*in[1]*(-in[2]+2*in[2]*in[2]);
    \n-
    127 out[13][0][1] = (4-4*in[0]-8*in[1])*(-in[2]+2*in[2]*in[2]);
    \n-
    128 out[13][0][2] = 4*in[1]*(1-in[0]-in[1])*(-1+4*in[2]);
    \n-
    129
    \n-
    130 out[14][0][0] = 4*in[1]*(-in[2]+2*in[2]*in[2]);
    \n-
    131 out[14][0][1] = 4*in[0]*(-in[2]+2*in[2]*in[2]);
    \n-
    132 out[14][0][2] = 4*in[0]*in[1]*(-1+4*in[2]);
    \n-
    133
    \n-
    134 //faces
    \n-
    135 out[15][0][0] = (4-8*in[0]-4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    136 out[15][0][1] = -4*in[0]*(4*in[2]-4*in[2]*in[2]);
    \n-
    137 out[15][0][2] = 4*in[0]*(1-in[0]-in[1])*(4-8*in[2]);
    \n-
    138
    \n-
    139 out[16][0][0] = -4*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n-
    140 out[16][0][1] = (4-4*in[0]-8*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    141 out[16][0][2] = 4*in[1]*(1-in[0]-in[1])*(4-8*in[2]);
    \n-
    142
    \n-
    143 out[17][0][0] = 4*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n-
    144 out[17][0][1] = 4*in[0]*(4*in[2]-4*in[2]*in[2]);
    \n-
    145 out[17][0][2] = 4*in[0]*in[1]*(4-8*in[2]);
    \n-
    146 }
    \n-
    \n-
    147
    \n-
    \n-
    149 void partial (const std::array<unsigned int, 3>& order,
    \n-
    150 const typename Traits::DomainType& in, // position
    \n-
    151 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    152 {
    \n-
    153 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    154 if (totalOrder == 0) {
    \n-
    155 evaluateFunction(in, out);
    \n-
    156 } else if (totalOrder == 1) {
    \n-
    157 out.resize(size());
    \n-
    158 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    159
    \n-
    160 switch (direction) {
    \n-
    161 case 0:
    \n-
    162 out[0] = in[2]-1;
    \n-
    163 out[1] = 1-in[2];
    \n-
    164 out[2] = 0;
    \n-
    165 out[3] = -in[2];
    \n-
    166 out[4] = in[2];
    \n-
    167 out[5] = 0;
    \n-
    168 out[6] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    169 out[7] = (-1+4*in[0])*(4*in[2]-4*in[2]*in[2]);
    \n-
    170 out[8] = 0;
    \n-
    171 out[9] = (4-8*in[0]-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    172 out[10] = (-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    173 out[11] = 4*in[1]*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    174 out[12] = (4-8*in[0]-4*in[1])*(-in[2]+2*in[2]*in[2]);
    \n-
    175 out[13] = -4*in[1]*(-in[2]+2*in[2]*in[2]);
    \n-
    176 out[14] = 4*in[1]*(-in[2]+2*in[2]*in[2]);
    \n-
    177 out[15] = (4-8*in[0]-4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    178 out[16] = -4*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n-
    179 out[17] = 4*in[1]*(4*in[2]-4*in[2]*in[2]);
    \n-
    180 break;
    \n-
    181 case 1:
    \n-
    182 out[0] = in[2]-1;
    \n-
    183 out[1] = 0;
    \n-
    184 out[2] = 1-in[2];
    \n-
    185 out[3] = -in[2];
    \n-
    186 out[4] = 0;
    \n-
    187 out[5] = in[2];
    \n-
    188 out[6] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    189 out[7] = 0;
    \n-
    190 out[8] = (-1+4*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    191 out[9] = -4*in[0]*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    192 out[10] = (4-4*in[0]-8*in[1])*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    193 out[11] = 4*in[0]*(1-3*in[2]+2*in[2]*in[2]);
    \n-
    194 out[12] = (-4*in[0])*(-in[2]+2*in[2]*in[2]);
    \n-
    195 out[13] = (4-4*in[0]-8*in[1])*(-in[2]+2*in[2]*in[2]);
    \n-
    196 out[14] = 4*in[0]*(-in[2]+2*in[2]*in[2]);
    \n-
    197 out[15] = -4*in[0]*(4*in[2]-4*in[2]*in[2]);
    \n-
    198 out[16] = (4-4*in[0]-8*in[1])*(4*in[2]-4*in[2]*in[2]);
    \n-
    199 out[17] = 4*in[0]*(4*in[2]-4*in[2]*in[2]);
    \n-
    200 break;
    \n-
    201 case 2:
    \n-
    202 out[0] = in[0]+in[1]-1;
    \n-
    203 out[1] =-in[0];
    \n-
    204 out[2] = -in[1];
    \n-
    205 out[3] = 1-in[0]-in[1];
    \n-
    206 out[4] = in[0];
    \n-
    207 out[5] = in[1];
    \n-
    208 out[6] = 2*(1-in[0]-in[1])*(0.5-in[0]-in[1])*(4-8*in[2]);
    \n-
    209 out[7] = 2*in[0]*(-0.5+in[0])*(4-8*in[2]);
    \n-
    210 out[8] = 2*in[1]*(-0.5+in[1])*(4-8*in[2]);
    \n-
    211 out[9] = 4*in[0]*(1-in[0]-in[1])*(-3+4*in[2]);
    \n-
    212 out[10] = 4*in[1]*(1-in[0]-in[1])*(-3+4*in[2]);
    \n-
    213 out[11] = 4*in[0]*in[1]*(-3+4*in[2]);
    \n-
    214 out[12] = 4*in[0]*(1-in[0]-in[1])*(-1+4*in[2]);
    \n-
    215 out[13] = 4*in[1]*(1-in[0]-in[1])*(-1+4*in[2]);
    \n-
    216 out[14] = 4*in[0]*in[1]*(-1+4*in[2]);
    \n-
    217 out[15] = 4*in[0]*(1-in[0]-in[1])*(4-8*in[2]);
    \n-
    218 out[16] = 4*in[1]*(1-in[0]-in[1])*(4-8*in[2]);
    \n-
    219 out[17] = 4*in[0]*in[1]*(4-8*in[2]);
    \n-
    220 break;
    \n-
    221 default:
    \n-
    222 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    223 }
    \n-
    224 } else {
    \n-
    225 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    226 }
    \n-
    227 }
    \n+
    \n+
    90 unsigned int size () const
    \n+
    91 {
    \n+
    92 return impl_.size();
    \n+
    93 }
    \n+
    \n+
    94
    \n+
    \n+
    96 unsigned int order () const
    \n+
    97 {
    \n+
    98 return impl_.order();
    \n+
    99 }
    \n+
    \n+
    100
    \n+
    \n+
    102 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    103 std::vector<typename Traits::RangeType>& out) const
    \n+
    104 {
    \n+
    105 impl_.evaluateFunction(in,out);
    \n+
    106 }
    \n+
    \n+
    107
    \n+
    \n+
    109 inline void evaluateJacobian(
    \n+
    110 const typename Traits::DomainType& in,
    \n+
    111 std::vector<typename Traits::JacobianType>& out) const
    \n+
    112 {
    \n+
    113 impl_.evaluateJacobian(in,out);
    \n+
    114 }
    \n+
    \n+
    115
    \n+
    \n+
    121 void partial(const std::array<unsigned int,Traits::dimDomain>& order,
    \n+
    122 const typename Traits::DomainType& in,
    \n+
    123 std::vector<typename Traits::RangeType>& out) const
    \n+
    124 {
    \n+
    125 impl_.partial(order,in,out);
    \n+
    126 }
    \n+
    \n+
    127
    \n+
    128 protected:
    \n+
    129 const Imp& impl_;
    \n+
    130 };
    \n
    \n+
    131
    \n+
    132
    \n+
    133
    \n+
    134 // -----------------------------------------------------------------
    \n+
    135 // Interpolation
    \n+
    136 // -----------------------------------------------------------------
    \n+
    137
    \n+
    146 template<class DomainType, class RangeType, class Imp>
    \n+
    \n+\n+
    148 : public LocalInterpolationVirtualInterface< DomainType, RangeType >
    \n+
    149 {
    \n+
    150 template<class FEImp>
    \n+\n+
    152
    \n+\n+
    154
    \n+
    155 protected:
    \n+
    156
    \n+
    \n+\n+
    159 : impl_(imp) {}
    \n+
    \n+
    160
    \n+
    161 public:
    \n+
    162
    \n+\n+
    164
    \n+\n+
    166
    \n+
    \n+
    168 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const
    \n+
    169 {
    \n+
    170 impl_.interpolate(f,out);
    \n+
    171 }
    \n+
    \n+
    172
    \n+
    173 protected:
    \n+
    174 const Imp& impl_;
    \n+
    175
    \n+
    176 };
    \n+
    \n+
    177
    \n+
    178
    \n+
    179
    \n+
    180 // -----------------------------------------------------------------
    \n+
    181 // Coefficients
    \n+
    182 // -----------------------------------------------------------------
    \n+
    183
    \n+
    190 template<class Imp>
    \n+
    \n+\n+\n+
    193 {
    \n+
    194 template<class FEImp>
    \n+\n+
    196
    \n+
    197 protected:
    \n+
    198
    \n+
    \n+\n+
    201 : impl_(imp)
    \n+
    202 {}
    \n+
    \n+
    203
    \n+
    204 public:
    \n+
    205
    \n+
    \n+
    207 std::size_t size () const
    \n+
    208 {
    \n+
    209 return impl_.size();
    \n+
    210 }
    \n+
    \n+
    211
    \n+
    \n+
    213 const LocalKey& localKey (std::size_t i) const
    \n+
    214 {
    \n+
    215 return impl_.localKey(i);
    \n+
    216 }
    \n+
    \n+
    217
    \n+
    218 protected:
    \n+
    219 const Imp& impl_;
    \n+
    220
    \n+
    221 };
    \n+
    \n+
    222
    \n+
    223
    \n+
    224
    \n+
    225 // -----------------------------------------------------------------
    \n+
    226 // Finite Element
    \n+
    227 // -----------------------------------------------------------------
    \n
    228
    \n-
    \n-
    231 unsigned int order() const
    \n-
    232 {
    \n-
    233 return 2;
    \n-
    234 }
    \n-
    \n-
    235
    \n-
    236 };
    \n-
    \n-
    237}
    \n-
    238#endif
    \n+
    237 template<class Imp>
    \n+
    \n+\n+
    239 : public LocalFiniteElementVirtualInterface<typename Imp::Traits::LocalBasisType::Traits>
    \n+
    240 {
    \n+
    241 using LocalBasisTraits = typename Imp::Traits::LocalBasisType::Traits;
    \n+\n+
    243
    \n+
    244 public:
    \n+
    245 typedef typename Interface::Traits Traits;
    \n+
    246
    \n+\n+
    254
    \n+\n+
    262
    \n+\n+
    270
    \n+
    \n+\n+
    272 {
    \n+
    273 delete impl_;
    \n+
    274 }
    \n+
    \n+
    275
    \n+
    \n+
    277 const typename Traits::LocalBasisType& localBasis () const
    \n+
    278 {
    \n+
    279 return localBasisImp_;
    \n+
    280 }
    \n+
    \n+
    281
    \n+
    \n+\n+
    284 {
    \n+\n+
    286 }
    \n+
    \n+
    287
    \n+
    \n+\n+
    290 {
    \n+\n+
    292 }
    \n+
    \n+
    293
    \n+
    \n+
    295 unsigned int size () const
    \n+
    296 {
    \n+
    297 return impl_->size();
    \n+
    298 }
    \n+
    \n+
    299
    \n+
    \n+
    301 const GeometryType type () const
    \n+
    302 {
    \n+
    303 return impl_->type();
    \n+
    304 }
    \n+
    \n+
    305
    \n+
    \n+\n+
    312 {
    \n+
    313 return new LocalFiniteElementVirtualImp<Imp>(*this);
    \n+
    314 }
    \n+
    \n+
    315
    \n+
    316 protected:
    \n+
    317 const Imp* impl_;
    \n+
    318
    \n+\n+\n+\n+\n+
    323 typename Imp::Traits::LocalInterpolationType> localInterpolationImp_;
    \n+
    324 };
    \n+
    \n+
    325}
    \n+
    326#endif
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Definition hierarchicalprismp2localbasis.hh:23
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
    export type traits for function signature
    Definition hierarchicalprismp2localbasis.hh:26
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalprismp2localbasis.hh:29
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition hierarchicalprismp2localbasis.hh:231
    \n-
    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 hierarchicalprismp2localbasis.hh:149
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalprismp2localbasis.hh:35
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalprismp2localbasis.hh:67
    \n+
    R RangeType
    range type
    Definition common/localbasis.hh:52
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    virtual base class for a local interpolation
    Definition virtualinterface.hh:133
    \n+
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:137
    \n+
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:140
    \n+
    virtual base class for a local basis
    Definition virtualinterface.hh:40
    \n+
    virtual base class for local coefficients
    Definition virtualinterface.hh:198
    \n+
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:225
    \n+
    class for wrapping a finite element using the virtual interface
    Definition virtualwrappers.hh:240
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition virtualwrappers.hh:277
    \n+
    virtual LocalFiniteElementVirtualImp< Imp > * clone() const
    clone this wrapper
    Definition virtualwrappers.hh:311
    \n+
    const LocalInterpolationVirtualImp< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType, typename Imp::Traits::LocalInterpolationType > localInterpolationImp_
    Definition virtualwrappers.hh:323
    \n+
    LocalFiniteElementVirtualImp(const Imp &imp)
    taking a LocalFiniteElementVirtualInterface implementation
    Definition virtualwrappers.hh:248
    \n+
    Interface::Traits Traits
    Definition virtualwrappers.hh:245
    \n+
    LocalFiniteElementVirtualImp()
    Default constructor. Assumes that the implementation class is default constructible as well.
    Definition virtualwrappers.hh:256
    \n+
    LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)
    Copy constructor needed for deep copy.
    Definition virtualwrappers.hh:264
    \n+
    ~LocalFiniteElementVirtualImp()
    Definition virtualwrappers.hh:271
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition virtualwrappers.hh:295
    \n+
    const GeometryType type() const
    Definition virtualwrappers.hh:301
    \n+
    const Imp * impl_
    Definition virtualwrappers.hh:317
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition virtualwrappers.hh:283
    \n+
    const LocalBasisVirtualImp< LocalBasisTraits, typename Imp::Traits::LocalBasisType > localBasisImp_
    Definition virtualwrappers.hh:319
    \n+
    const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType > localCoefficientsImp_
    Definition virtualwrappers.hh:320
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition virtualwrappers.hh:289
    \n+
    Definition virtualwrappers.hh:24
    \n+
    static Imp * clone(const Imp &imp)
    Definition virtualwrappers.hh:25
    \n+
    Definition virtualwrappers.hh:44
    \n+
    static Imp * clone(const Imp &imp)
    Definition virtualwrappers.hh:47
    \n+
    static Imp * create()
    Definition virtualwrappers.hh:52
    \n+
    LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::Traits > Interface
    Definition virtualwrappers.hh:45
    \n+
    class for wrapping a basis using the virtual interface
    Definition virtualwrappers.hh:75
    \n+
    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
    \n+
    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
    \n+
    const Imp & impl_
    Definition virtualwrappers.hh:129
    \n+
    unsigned int size() const
    Number of shape functions.
    Definition virtualwrappers.hh:90
    \n+
    T Traits
    Definition virtualwrappers.hh:87
    \n+
    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
    \n+
    LocalBasisVirtualImp(const Imp &imp)
    constructor taking an implementation of the interface
    Definition virtualwrappers.hh:82
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition virtualwrappers.hh:96
    \n+
    class for wrapping a local interpolation using the virtual interface
    Definition virtualwrappers.hh:149
    \n+
    virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const
    determine coefficients interpolating a given function
    Definition virtualwrappers.hh:168
    \n+
    const Imp & impl_
    Definition virtualwrappers.hh:174
    \n+
    Base::FunctionType FunctionType
    Definition virtualwrappers.hh:163
    \n+
    LocalInterpolationVirtualImp(const Imp &imp)
    constructor taking an implementation of the Dune::LocalInterpolationVirtualInterface
    Definition virtualwrappers.hh:158
    \n+
    Base::CoefficientType CoefficientType
    Definition virtualwrappers.hh:165
    \n+
    class for wrapping local coefficients using the virtual interface
    Definition virtualwrappers.hh:193
    \n+
    LocalCoefficientsVirtualImp(const Imp &imp)
    constructor taking an implementation of the Dune::LocalCoefficientsVirtualInterface
    Definition virtualwrappers.hh:200
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition virtualwrappers.hh:213
    \n+
    std::size_t size() const
    number of coefficients
    Definition virtualwrappers.hh:207
    \n+
    const Imp & impl_
    Definition virtualwrappers.hh:219
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,282 +1,489 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2\n-hierarchicalprismp2localbasis.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+virtualwrappers.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALBASIS_HH\n-6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH\n+6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH\n 7\n-12#include \n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n 13\n-14#include \n-15#include \n+14namespace _\bD_\bu_\bn_\be\n+15{\n 16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-18\n-19namespace _\bD_\bu_\bn_\be\n-20{\n-21 template\n-_\b2_\b2 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-23 {\n-24 public:\n-_\b2_\b6 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,1,Dune::\n-FieldVector, Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-27\n-_\b2_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-30 {\n-31 return 18;\n-32 }\n-33\n-_\b3_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-36 std::vector & out) const\n-37 {\n-38 out.resize(18);\n-39\n-40 out[0]=(1.0-in[0]-in[1])*(1.0-in[2]);\n-41 out[1]= in[0]*(1-in[2]);\n-42 out[2]=in[1]*(1-in[2]);\n-43 out[3]=in[2]*(1.0-in[0]-in[1]);\n-44 out[4]=in[0]*in[2];\n-45 out[5]=in[1]*in[2];\n+17 // forward declaration needed by friend declarations\n+18 template\n+19 class LocalFiniteElementVirtualImp;\n+20\n+21 // default clone method is the copy constructor\n+22 template\n+_\b2_\b3 struct _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br\n+24 {\n+_\b2_\b5 static Imp* _\bc_\bl_\bo_\bn_\be(const Imp& imp)\n+26 {\n+27 return new Imp(imp);\n+28 }\n+29 };\n+30\n+31 // if FE derives from virtual interface the clone method is used\n+32 template\n+33 struct LocalFiniteElementCloneFactoryHelper\n+34 {\n+35 static Imp* _\bc_\bl_\bo_\bn_\be(const Imp& imp)\n+36 {\n+37 return imp.clone();\n+38 }\n+39 };\n+40\n+41 // factory template to clone and create an objects\n+42 template\n+_\b4_\b3 struct _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+44 {\n+_\b4_\b5 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b> _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n 46\n-47 //edges\n-48 out[6]=2*(1.0-in[0]-in[1])*(0.5-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);\n-49 out[7]=2*in[0]*(-0.5+in[0])*(4*in[2]-4*in[2]*in[2]);\n-50 out[8]=2*in[1]*(-0.5+in[1])*(4*in[2]-4*in[2]*in[2]);\n-51 out[9]=4*in[0]*(1-in[0]-in[1])*(1-3*in[2]+2*in[2]*in[2]);\n-52 out[10]=4*in[1]*(1-in[0]-in[1])*(1-3*in[2]+2*in[2]*in[2]);\n-53 out[11]=4*in[0]*in[1]*(1-3*in[2]+2*in[2]*in[2]);\n-54 out[12]=4*in[0]*(1-in[0]-in[1])*(-in[2]+2*in[2]*in[2]);\n-55 out[13]=4*in[1]*(1-in[0]-in[1])*(-in[2]+2*in[2]*in[2]);\n-56 out[14]=4*in[0]*in[1]*(-in[2]+2*in[2]*in[2]);\n+_\b4_\b7 static Imp* _\bc_\bl_\bo_\bn_\be(const Imp& imp)\n+48 {\n+49 return _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br_\b<_\bI_\bm_\bp_\b,_\b _\bs_\bt_\bd_\b:_\b:_\bi_\bs_\b__\bb_\ba_\bs_\be_\b__\bo_\bf_\b<_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b,\n+_\bI_\bm_\bp_\b>_\b:_\b:_\bv_\ba_\bl_\bu_\be>_\b:_\b:_\bc_\bl_\bo_\bn_\be(imp);\n+50 }\n+51\n+_\b5_\b2 static Imp* _\bc_\br_\be_\ba_\bt_\be()\n+53 {\n+54 return new Imp;\n+55 }\n+56 };\n 57\n-58 //faces\n-59 out[15]=4*in[0]*(1-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);\n-60 out[16]=4*in[1]*(1-in[0]-in[1])*(4*in[2]-4*in[2]*in[2]);\n-61 out[17]=4*in[0]*in[1]*(4*in[2]-4*in[2]*in[2]);\n-62 }\n+58\n+59\n+60 // -----------------------------------------------------------------\n+61 // Basis\n+62 // -----------------------------------------------------------------\n 63\n 64\n 65\n-_\b6_\b7 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, //position\n-68 std::vector& out) const //return value\n-69 {\n-70 out.resize(18);\n-71\n-72 //vertices\n-73 out[0][0][0] = in[2]-1;\n-74 out[0][0][1] = in[2]-1;\n-75 out[0][0][2] = in[0]+in[1]-1;\n-76\n-77 out[1][0][0] = 1-in[2];\n-78 out[1][0][1] = 0;\n-79 out[1][0][2] =-in[0];\n+72 template\n+_\b7_\b3 class _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+74 : public _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+75 {\n+76 template\n+_\b7_\b7 friend class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp;\n+78\n+79 protected:\n 80\n-81 out[2][0][0] = 0;\n-82 out[2][0][1] = 1-in[2];\n-83 out[2][0][2] = -in[1];\n-84\n-85 out[3][0][0] = -in[2];\n-86 out[3][0][1] = -in[2];\n-87 out[3][0][2] = 1-in[0]-in[1];\n+_\b8_\b2 _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp( const Imp &imp )\n+83 : _\bi_\bm_\bp_\bl_\b_(imp)\n+84 {}\n+85\n+86 public:\n+_\b8_\b7 using _\bT_\br_\ba_\bi_\bt_\bs = T;\n 88\n-89 out[4][0][0] = in[2];\n-90 out[4][0][1] = 0;\n-91 out[4][0][2] = in[0];\n-92\n-93 out[5][0][0] = 0;\n-94 out[5][0][1] = in[2];\n-95 out[5][0][2] = in[1];\n-96\n-97 //edges\n-98 out[6][0][0] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n-99 out[6][0][1] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n-100 out[6][0][2] = 2*(1-in[0]-in[1])*(0.5-in[0]-in[1])*(4-8*in[2]);\n-101\n-102 out[7][0][0] = (-1+4*in[0])*(4*in[2]-4*in[2]*in[2]);\n-103 out[7][0][1] = 0;\n-104 out[7][0][2] = 2*in[0]*(-0.5+in[0])*(4-8*in[2]);\n-105\n-106 out[8][0][0] = 0;\n-107 out[8][0][1] = (-1+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n-108 out[8][0][2] = 2*in[1]*(-0.5+in[1])*(4-8*in[2]);\n-109\n-110 out[9][0][0] = (4-8*in[0]-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n-111 out[9][0][1] = -4*in[0]*(1-3*in[2]+2*in[2]*in[2]);\n-112 out[9][0][2] = 4*in[0]*(1-in[0]-in[1])*(-3+4*in[2]);\n-113\n-114 out[10][0][0] = (-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n-115 out[10][0][1] = (4-4*in[0]-8*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n-116 out[10][0][2] = 4*in[1]*(1-in[0]-in[1])*(-3+4*in[2]);\n-117\n-118 out[11][0][0] = 4*in[1]*(1-3*in[2]+2*in[2]*in[2]);\n-119 out[11][0][1] = 4*in[0]*(1-3*in[2]+2*in[2]*in[2]);\n-120 out[11][0][2] = 4*in[0]*in[1]*(-3+4*in[2]);\n-121\n-122 out[12][0][0] = (4-8*in[0]-4*in[1])*(-in[2]+2*in[2]*in[2]);\n-123 out[12][0][1] = (-4*in[0])*(-in[2]+2*in[2]*in[2]);\n-124 out[12][0][2] = 4*in[0]*(1-in[0]-in[1])*(-1+4*in[2]);\n-125\n-126 out[13][0][0] = -4*in[1]*(-in[2]+2*in[2]*in[2]);\n-127 out[13][0][1] = (4-4*in[0]-8*in[1])*(-in[2]+2*in[2]*in[2]);\n-128 out[13][0][2] = 4*in[1]*(1-in[0]-in[1])*(-1+4*in[2]);\n-129\n-130 out[14][0][0] = 4*in[1]*(-in[2]+2*in[2]*in[2]);\n-131 out[14][0][1] = 4*in[0]*(-in[2]+2*in[2]*in[2]);\n-132 out[14][0][2] = 4*in[0]*in[1]*(-1+4*in[2]);\n+_\b9_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+91 {\n+92 return _\bi_\bm_\bp_\bl_\b_.size();\n+93 }\n+94\n+_\b9_\b6 unsigned int _\bo_\br_\bd_\be_\br () const\n+97 {\n+98 return _\bi_\bm_\bp_\bl_\b_.order();\n+99 }\n+100\n+_\b1_\b0_\b2 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename Traits::DomainType& in,\n+103 std::vector& out) const\n+104 {\n+105 _\bi_\bm_\bp_\bl_\b_.evaluateFunction(in,out);\n+106 }\n+107\n+_\b1_\b0_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(\n+110 const typename Traits::DomainType& in,\n+111 std::vector& out) const\n+112 {\n+113 _\bi_\bm_\bp_\bl_\b_.evaluateJacobian(in,out);\n+114 }\n+115\n+_\b1_\b2_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array& _\bo_\br_\bd_\be_\br,\n+122 const typename Traits::DomainType& in,\n+123 std::vector& out) const\n+124 {\n+125 _\bi_\bm_\bp_\bl_\b_.partial(_\bo_\br_\bd_\be_\br,in,out);\n+126 }\n+127\n+128 protected:\n+_\b1_\b2_\b9 const Imp& _\bi_\bm_\bp_\bl_\b_;\n+130 };\n+131\n+132\n 133\n-134 //faces\n-135 out[15][0][0] = (4-8*in[0]-4*in[1])*(4*in[2]-4*in[2]*in[2]);\n-136 out[15][0][1] = -4*in[0]*(4*in[2]-4*in[2]*in[2]);\n-137 out[15][0][2] = 4*in[0]*(1-in[0]-in[1])*(4-8*in[2]);\n-138\n-139 out[16][0][0] = -4*in[1]*(4*in[2]-4*in[2]*in[2]);\n-140 out[16][0][1] = (4-4*in[0]-8*in[1])*(4*in[2]-4*in[2]*in[2]);\n-141 out[16][0][2] = 4*in[1]*(1-in[0]-in[1])*(4-8*in[2]);\n-142\n-143 out[17][0][0] = 4*in[1]*(4*in[2]-4*in[2]*in[2]);\n-144 out[17][0][1] = 4*in[0]*(4*in[2]-4*in[2]*in[2]);\n-145 out[17][0][2] = 4*in[0]*in[1]*(4-8*in[2]);\n-146 }\n-147\n-_\b1_\b4_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-150 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-151 std::vector& out) const // return value\n-152 {\n-153 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-154 if (totalOrder == 0) {\n-155 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-156 } else if (totalOrder == 1) {\n-157 out.resize(_\bs_\bi_\bz_\be());\n-158 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-159\n-160 switch (direction) {\n-161 case 0:\n-162 out[0] = in[2]-1;\n-163 out[1] = 1-in[2];\n-164 out[2] = 0;\n-165 out[3] = -in[2];\n-166 out[4] = in[2];\n-167 out[5] = 0;\n-168 out[6] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n-169 out[7] = (-1+4*in[0])*(4*in[2]-4*in[2]*in[2]);\n-170 out[8] = 0;\n-171 out[9] = (4-8*in[0]-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n-172 out[10] = (-4*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n-173 out[11] = 4*in[1]*(1-3*in[2]+2*in[2]*in[2]);\n-174 out[12] = (4-8*in[0]-4*in[1])*(-in[2]+2*in[2]*in[2]);\n-175 out[13] = -4*in[1]*(-in[2]+2*in[2]*in[2]);\n-176 out[14] = 4*in[1]*(-in[2]+2*in[2]*in[2]);\n-177 out[15] = (4-8*in[0]-4*in[1])*(4*in[2]-4*in[2]*in[2]);\n-178 out[16] = -4*in[1]*(4*in[2]-4*in[2]*in[2]);\n-179 out[17] = 4*in[1]*(4*in[2]-4*in[2]*in[2]);\n-180 break;\n-181 case 1:\n-182 out[0] = in[2]-1;\n-183 out[1] = 0;\n-184 out[2] = 1-in[2];\n-185 out[3] = -in[2];\n-186 out[4] = 0;\n-187 out[5] = in[2];\n-188 out[6] = (-3+4*in[0]+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n-189 out[7] = 0;\n-190 out[8] = (-1+4*in[1])*(4*in[2]-4*in[2]*in[2]);\n-191 out[9] = -4*in[0]*(1-3*in[2]+2*in[2]*in[2]);\n-192 out[10] = (4-4*in[0]-8*in[1])*(1-3*in[2]+2*in[2]*in[2]);\n-193 out[11] = 4*in[0]*(1-3*in[2]+2*in[2]*in[2]);\n-194 out[12] = (-4*in[0])*(-in[2]+2*in[2]*in[2]);\n-195 out[13] = (4-4*in[0]-8*in[1])*(-in[2]+2*in[2]*in[2]);\n-196 out[14] = 4*in[0]*(-in[2]+2*in[2]*in[2]);\n-197 out[15] = -4*in[0]*(4*in[2]-4*in[2]*in[2]);\n-198 out[16] = (4-4*in[0]-8*in[1])*(4*in[2]-4*in[2]*in[2]);\n-199 out[17] = 4*in[0]*(4*in[2]-4*in[2]*in[2]);\n-200 break;\n-201 case 2:\n-202 out[0] = in[0]+in[1]-1;\n-203 out[1] =-in[0];\n-204 out[2] = -in[1];\n-205 out[3] = 1-in[0]-in[1];\n-206 out[4] = in[0];\n-207 out[5] = in[1];\n-208 out[6] = 2*(1-in[0]-in[1])*(0.5-in[0]-in[1])*(4-8*in[2]);\n-209 out[7] = 2*in[0]*(-0.5+in[0])*(4-8*in[2]);\n-210 out[8] = 2*in[1]*(-0.5+in[1])*(4-8*in[2]);\n-211 out[9] = 4*in[0]*(1-in[0]-in[1])*(-3+4*in[2]);\n-212 out[10] = 4*in[1]*(1-in[0]-in[1])*(-3+4*in[2]);\n-213 out[11] = 4*in[0]*in[1]*(-3+4*in[2]);\n-214 out[12] = 4*in[0]*(1-in[0]-in[1])*(-1+4*in[2]);\n-215 out[13] = 4*in[1]*(1-in[0]-in[1])*(-1+4*in[2]);\n-216 out[14] = 4*in[0]*in[1]*(-1+4*in[2]);\n-217 out[15] = 4*in[0]*(1-in[0]-in[1])*(4-8*in[2]);\n-218 out[16] = 4*in[1]*(1-in[0]-in[1])*(4-8*in[2]);\n-219 out[17] = 4*in[0]*in[1]*(4-8*in[2]);\n-220 break;\n-221 default:\n-222 DUNE_THROW(RangeError, \"Component out of range.\");\n-223 }\n-224 } else {\n-225 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-226 }\n-227 }\n+134 // -----------------------------------------------------------------\n+135 // Interpolation\n+136 // -----------------------------------------------------------------\n+137\n+146 template\n+_\b1_\b4_\b7 class _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+148 : public _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< DomainType, RangeType >\n+149 {\n+150 template\n+_\b1_\b5_\b1 friend class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp;\n+152\n+153 typedef _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\b _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b _\b> _\bB_\ba_\bs_\be;\n+154\n+155 protected:\n+156\n+_\b1_\b5_\b8 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp( const Imp &imp)\n+159 : _\bi_\bm_\bp_\bl_\b_(imp) {}\n+160\n+161 public:\n+162\n+_\b1_\b6_\b3 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be;\n+164\n+_\b1_\b6_\b5 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\n+166\n+_\b1_\b6_\b8 virtual void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& f, std::\n+vector& out) const\n+169 {\n+170 _\bi_\bm_\bp_\bl_\b_.interpolate(f,out);\n+171 }\n+172\n+173 protected:\n+_\b1_\b7_\b4 const Imp& _\bi_\bm_\bp_\bl_\b_;\n+175\n+176 };\n+177\n+178\n+179\n+180 // -----------------------------------------------------------------\n+181 // Coefficients\n+182 // -----------------------------------------------------------------\n+183\n+190 template\n+_\b1_\b9_\b1 class _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+192 : public _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+193 {\n+194 template\n+_\b1_\b9_\b5 friend class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp;\n+196\n+197 protected:\n+198\n+_\b2_\b0_\b0 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp( const Imp &imp )\n+201 : _\bi_\bm_\bp_\bl_\b_(imp)\n+202 {}\n+203\n+204 public:\n+205\n+_\b2_\b0_\b7 std::size_t _\bs_\bi_\bz_\be () const\n+208 {\n+209 return _\bi_\bm_\bp_\bl_\b_.size();\n+210 }\n+211\n+_\b2_\b1_\b3 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+214 {\n+215 return _\bi_\bm_\bp_\bl_\b_.localKey(i);\n+216 }\n+217\n+218 protected:\n+_\b2_\b1_\b9 const Imp& _\bi_\bm_\bp_\bl_\b_;\n+220\n+221 };\n+222\n+223\n+224\n+225 // -----------------------------------------------------------------\n+226 // Finite Element\n+227 // -----------------------------------------------------------------\n 228\n-_\b2_\b3_\b1 unsigned int _\bo_\br_\bd_\be_\br() const\n-232 {\n-233 return 2;\n-234 }\n-235\n-236 };\n-237}\n-238#endif\n+237 template\n+_\b2_\b3_\b8 class _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+239 : public _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+240 {\n+241 using LocalBasisTraits = typename Imp::Traits::LocalBasisType::Traits;\n+242 using _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b>;\n+243\n+244 public:\n+_\b2_\b4_\b5 typedef typename _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n+246\n+_\b2_\b4_\b8 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp( const Imp &imp )\n+249 : _\bi_\bm_\bp_\bl_\b_(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by::_\bc_\bl_\bo_\bn_\be(imp)),\n+250 _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()),\n+251 _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs()),\n+252 _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n+253 {}\n+254\n+_\b2_\b5_\b6 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp()\n+257 : _\bi_\bm_\bp_\bl_\b_(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by::create()),\n+258 _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()),\n+259 _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs()),\n+260 _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n+261 {}\n+262\n+_\b2_\b6_\b4 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp(const _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp& other)\n+265 : _\bi_\bm_\bp_\bl_\b_(_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by::_\bc_\bl_\bo_\bn_\be(*other._\bi_\bm_\bp_\bl_\b_)),\n+266 _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()),\n+267 _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs()),\n+268 _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_(_\bi_\bm_\bp_\bl_\b_->_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n+269 {}\n+270\n+_\b2_\b7_\b1 _\b~_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp()\n+272 {\n+273 delete _\bi_\bm_\bp_\bl_\b_;\n+274 }\n+275\n+_\b2_\b7_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+278 {\n+279 return _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_;\n+280 }\n+281\n+_\b2_\b8_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+284 {\n+285 return _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_;\n+286 }\n+287\n+_\b2_\b8_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+290 {\n+291 return _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_;\n+292 }\n+293\n+_\b2_\b9_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+296 {\n+297 return _\bi_\bm_\bp_\bl_\b_->size();\n+298 }\n+299\n+_\b3_\b0_\b1 const GeometryType _\bt_\by_\bp_\be () const\n+302 {\n+303 return _\bi_\bm_\bp_\bl_\b_->type();\n+304 }\n+305\n+_\b3_\b1_\b1 virtual _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bI_\bm_\bp_\b>* _\bc_\bl_\bo_\bn_\be() const\n+312 {\n+313 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bI_\bm_\bp_\b>(*this);\n+314 }\n+315\n+316 protected:\n+_\b3_\b1_\b7 const Imp* _\bi_\bm_\bp_\bl_\b_;\n+318\n+_\b3_\b1_\b9 const _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b> _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_;\n+_\b3_\b2_\b0 const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be_\b> _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_;\n+321 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_;\n+324 };\n+325}\n+326#endif\n+_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R,\n-1 >, Dune::FieldMatrix< R, 1, 3 > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n+R RangeType\n+range type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for a local interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+std::function< RangeType(DomainType)> FunctionType\n+type of function to interpolate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be\n+RangeType::field_type CoefficientType\n+type of the coefficient vector in the interpolate method\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:140\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for a local basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for local coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:198\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for local finite elements with functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+class for wrapping a finite element using the virtual interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:277\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bc_\bl_\bo_\bn_\be\n+virtual LocalFiniteElementVirtualImp< Imp > * clone() const\n+clone this wrapper\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:311\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bI_\bm_\bp_\b_\n+const LocalInterpolationVirtualImp< typename LocalBasisTraits::DomainType,\n+typename LocalBasisTraits::RangeType, typename Imp::Traits::\n+LocalInterpolationType > localInterpolationImp_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:323\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+LocalFiniteElementVirtualImp(const Imp &imp)\n+taking a LocalFiniteElementVirtualInterface implementation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:248\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+Interface::Traits Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:245\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+LocalFiniteElementVirtualImp()\n+Default constructor. Assumes that the implementation class is default\n+constructible as well.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:256\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)\n+Copy constructor needed for deep copy.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:264\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+~LocalFiniteElementVirtualImp()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:271\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:231\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:295\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bt_\by_\bp_\be\n+const GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:301\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bm_\bp_\bl_\b_\n+const Imp * impl_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:317\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:283\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\b_\n+const LocalBasisVirtualImp< LocalBasisTraits, typename Imp::Traits::\n+LocalBasisType > localBasisImp_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:319\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bI_\bm_\bp_\b_\n+const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType\n+> localCoefficientsImp_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:320\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:289\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bc_\bl_\bo_\bn_\be\n+static Imp * clone(const Imp &imp)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\bl_\bo_\bn_\be\n+static Imp * clone(const Imp &imp)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Imp * create()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\bl_\bo_\bn_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::\n+Traits > Interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+class for wrapping a basis using the virtual interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, Traits::dimDomain > &order, const\n+typename Traits::DomainType &in, std::vector< typename Traits::RangeType >\n+&out) const\n+Evaluate partial derivatives of any order of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+Evaluate all basis function at given position.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bm_\bp_\bl_\b_\n+const Imp & impl_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+T Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:67\n+Evaluate jacobian of all shape functions at given position.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+LocalBasisVirtualImp(const Imp &imp)\n+constructor taking an implementation of the interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+class for wrapping a local interpolation using the virtual interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+virtual void interpolate(const FunctionType &f, std::vector< CoefficientType >\n+&out) const\n+determine coefficients interpolating a given function\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:168\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bm_\bp_\bl_\b_\n+const Imp & impl_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:174\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+Base::FunctionType FunctionType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+LocalInterpolationVirtualImp(const Imp &imp)\n+constructor taking an implementation of the Dune::\n+LocalInterpolationVirtualInterface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be\n+Base::CoefficientType CoefficientType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+class for wrapping local coefficients using the virtual interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:193\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+LocalCoefficientsVirtualImp(const Imp &imp)\n+constructor taking an implementation of the Dune::\n+LocalCoefficientsVirtualInterface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:200\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:213\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b:_\b:_\bi_\bm_\bp_\bl_\b_\n+const Imp & impl_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:219\n _\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalprismp2localinterpolation.hh File Reference\n+dune-localfunctions: localkey.hh File Reference\n \n \n \n \n \n \n \n@@ -65,31 +65,34 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    hierarchicalprismp2localinterpolation.hh File Reference
    \n+
    localkey.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n+
    #include <array>
    \n+#include <cstddef>
    \n+#include <ostream>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    class  Dune::HierarchicalPrismP2LocalInterpolation< LB >
    class  Dune::LocalKey
     Describe position of one degree of freedom. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,20 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hierarchicalprismp2localinterpolation.hh File Reference\n-#include \n+localkey.hh File Reference\n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+\u00a0 Describe position of one degree of freedom. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalprismp2localinterpolation.hh Source File\n+dune-localfunctions: localkey.hh Source File\n \n \n \n \n \n \n \n@@ -70,104 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    hierarchicalprismp2localinterpolation.hh
    \n+
    localkey.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALKEY_HH
    \n+
    6#define DUNE_LOCALKEY_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    15 template<class LB>
    \n-
    \n-\n-
    17 {
    \n-
    18 public:
    \n-
    19
    \n-
    20 template<typename F, typename C>
    \n-
    \n-
    21 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    22 {
    \n-
    23 typename LB::Traits::DomainType x;
    \n-
    24 typename LB::Traits::RangeType y;
    \n-
    25 out.resize(18);
    \n+
    8#include <array>
    \n+
    9#include <cstddef>
    \n+
    10#include <ostream>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    \n+\n+
    24 {
    \n+
    25 public:
    \n
    26
    \n-
    27 //First the vertex dofs
    \n-
    28 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);
    \n-
    29 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[1] = f(x);
    \n-
    30 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[2] = f(x);
    \n-
    31 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[3] = f(x);
    \n-
    32 x[0] = 1.0; x[1] = 0.0; x[2] = 1.0; out[4] = f(x);
    \n-
    33 x[0] = 0.0; x[1] = 1.0; x[2] = 1.0; out[5] = f(x);
    \n-
    34
    \n-
    35
    \n-
    36 // Then: the 9 edge dofs and the 3 face dofs
    \n-
    37 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    38 out[6] = y - 0.5*(out[0] + out[3]);
    \n+
    28 enum {
    \n+\n+
    38 };
    \n
    39
    \n-
    40 x[0] = 1.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    41 out[7] = y - 0.5*(out[1] + out[4]);
    \n-
    42
    \n-
    43 x[0] = 0.0; x[1] = 1.0; x[2] = 0.5; y = f(x);
    \n-
    44 out[8] = y - 0.5*(out[2] + out[5]);
    \n-
    45
    \n-
    46 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);
    \n-
    47 out[9] = y - 0.5*(out[0] + out[1]);
    \n-
    48
    \n-
    49 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n-
    50 out[10] = y - 0.5*(out[2] + out[0]);
    \n-
    51
    \n-
    52 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n-
    53 out[11] = y - 0.5*(out[2] + out[1]);
    \n-
    54
    \n-
    55 x[0] = 0.5; x[1] = 0.0; x[2] = 1.0; y = f(x);
    \n-
    56 out[12] = y - 0.5*(out[3] + out[4]);
    \n-
    57
    \n-
    58 x[0] = 0.0; x[1] = 0.5; x[2] = 1.0; y = f(x);
    \n-
    59 out[13] = y - 0.5*(out[3] + out[5]);
    \n-
    60
    \n-
    61 x[0] = 0.5; x[1] = 0.5; x[2] = 1.0; y = f(x);
    \n-
    62 out[14] = y - 0.5*(out[4] + out[5]);
    \n-
    63
    \n-
    64
    \n-
    65 //faces
    \n-
    66 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    67 out[15] = y - 0.25*(out[4] + out[1] + out[0] + out[3] );
    \n-
    68
    \n-
    69 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n-
    70 out[16] = y - 0.25*(out[2] + out[0] + out[3] + out[5] );
    \n-
    71
    \n-
    72 x[0] = 0.5; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n-
    73 out[17] = y - 0.25*(out[2] + out[1] + out[4] + out[5] );
    \n-
    74
    \n-
    75 }
    \n+
    \n+
    41 constexpr LocalKey () noexcept
    \n+
    42 : values_{}
    \n+
    43 {}
    \n+
    \n+
    44
    \n+
    \n+
    50 constexpr LocalKey (unsigned int s, unsigned int c, unsigned int i) noexcept
    \n+
    51 : values_{s,c,i}
    \n+
    52 {}
    \n+
    \n+
    53
    \n+
    55 [[nodiscard]]
    \n+
    \n+
    56 constexpr unsigned int subEntity () const noexcept
    \n+
    57 {
    \n+
    58 return values_[0];
    \n+
    59 }
    \n
    \n-
    76 };
    \n+
    60
    \n+
    62 [[nodiscard]]
    \n+
    \n+
    63 constexpr unsigned int codim () const noexcept
    \n+
    64 {
    \n+
    65 return values_[1];
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    69 [[nodiscard]]
    \n+
    \n+
    70 constexpr unsigned int index () const noexcept
    \n+
    71 {
    \n+
    72 return values_[2];
    \n+
    73 }
    \n
    \n-
    77}
    \n-
    78
    \n-
    79#endif
    \n+
    74
    \n+
    \n+
    76 constexpr void index (unsigned int i) noexcept
    \n+
    77 {
    \n+
    78 values_[2] = i;
    \n+
    79 }
    \n+
    \n+
    80
    \n+
    82 [[nodiscard]]
    \n+
    \n+
    83 bool operator< (const LocalKey& other) const noexcept
    \n+
    84 {
    \n+
    85 return values_ < other.values_;
    \n+
    86 }
    \n+
    \n+
    87
    \n+
    \n+
    89 friend std::ostream& operator<< (std::ostream& s, const LocalKey& localKey)
    \n+
    90 {
    \n+
    91 return s << "[ subEntity: " << localKey.subEntity()
    \n+
    92 << ", codim: " << localKey.codim()
    \n+
    93 << ", index: " << localKey.index() << " ]";
    \n+
    94 }
    \n+
    \n+
    95
    \n+
    96 private:
    \n+
    97
    \n+
    98 // We use an array to store the values in order to be able to use the array::operator< implementation
    \n+
    99 std::array<unsigned int,3> values_;
    \n+
    100
    \n+
    101 };
    \n+
    \n+
    102
    \n+
    103}
    \n+
    104#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition hierarchicalprismp2localinterpolation.hh:17
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Definition hierarchicalprismp2localinterpolation.hh:21
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    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
    \n+
    constexpr void index(unsigned int i) noexcept
    Set index component.
    Definition localkey.hh:76
    \n+
    constexpr unsigned int index() const noexcept
    Return offset within subentity.
    Definition localkey.hh:70
    \n+
    constexpr LocalKey(unsigned int s, unsigned int c, unsigned int i) noexcept
    Initialize all components.
    Definition localkey.hh:50
    \n+
    @ intersectionCodim
    Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
    Definition localkey.hh:37
    \n+
    constexpr unsigned int codim() const noexcept
    Return codim of associated entity.
    Definition localkey.hh:63
    \n+
    friend std::ostream & operator<<(std::ostream &s, const LocalKey &localKey)
    Write LocalKey object to output stream.
    Definition localkey.hh:89
    \n+
    constexpr LocalKey() noexcept
    Standard constructor for uninitialized local index.
    Definition localkey.hh:41
    \n+
    constexpr unsigned int subEntity() const noexcept
    Return number of associated subentity.
    Definition localkey.hh:56
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,96 +1,129 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2\n-hierarchicalprismp2localinterpolation.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+localkey.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH\n-6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALKEY_HH\n+6#define DUNE_LOCALKEY_HH\n 7\n-8#include \n-9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-15 template\n-_\b1_\b6 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-17 {\n-18 public:\n-19\n-20 template\n-_\b2_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-22 {\n-23 typename LB::Traits::DomainType x;\n-24 typename LB::Traits::RangeType y;\n-25 out.resize(18);\n+8#include \n+9#include \n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+_\b2_\b3 class _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+24 {\n+25 public:\n 26\n-27 //First the vertex dofs\n-28 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);\n-29 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[1] = f(x);\n-30 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[2] = f(x);\n-31 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[3] = f(x);\n-32 x[0] = 1.0; x[1] = 0.0; x[2] = 1.0; out[4] = f(x);\n-33 x[0] = 0.0; x[1] = 1.0; x[2] = 1.0; out[5] = f(x);\n-34\n-35\n-36 // Then: the 9 edge dofs and the 3 face dofs\n-37 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n-38 out[6] = y - 0.5*(out[0] + out[3]);\n+28 enum {\n+37 _\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bd_\bi_\bm=666\n+_\b3_\b8 };\n 39\n-40 x[0] = 1.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n-41 out[7] = y - 0.5*(out[1] + out[4]);\n-42\n-43 x[0] = 0.0; x[1] = 1.0; x[2] = 0.5; y = f(x);\n-44 out[8] = y - 0.5*(out[2] + out[5]);\n-45\n-46 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);\n-47 out[9] = y - 0.5*(out[0] + out[1]);\n-48\n-49 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);\n-50 out[10] = y - 0.5*(out[2] + out[0]);\n-51\n-52 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);\n-53 out[11] = y - 0.5*(out[2] + out[1]);\n-54\n-55 x[0] = 0.5; x[1] = 0.0; x[2] = 1.0; y = f(x);\n-56 out[12] = y - 0.5*(out[3] + out[4]);\n-57\n-58 x[0] = 0.0; x[1] = 0.5; x[2] = 1.0; y = f(x);\n-59 out[13] = y - 0.5*(out[3] + out[5]);\n+_\b4_\b1 constexpr _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by () noexcept\n+42 : values_{}\n+43 {}\n+44\n+_\b5_\b0 constexpr _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by (unsigned int s, unsigned int c, unsigned int i) noexcept\n+51 : values_{s,c,i}\n+52 {}\n+53\n+55 [[nodiscard]]\n+_\b5_\b6 constexpr unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by () const noexcept\n+57 {\n+58 return values_[0];\n+59 }\n 60\n-61 x[0] = 0.5; x[1] = 0.5; x[2] = 1.0; y = f(x);\n-62 out[14] = y - 0.5*(out[4] + out[5]);\n-63\n-64\n-65 //faces\n-66 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);\n-67 out[15] = y - 0.25*(out[4] + out[1] + out[0] + out[3] );\n-68\n-69 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);\n-70 out[16] = y - 0.25*(out[2] + out[0] + out[3] + out[5] );\n-71\n-72 x[0] = 0.5; x[1] = 0.5; x[2] = 0.5; y = f(x);\n-73 out[17] = y - 0.25*(out[2] + out[1] + out[4] + out[5] );\n+62 [[nodiscard]]\n+_\b6_\b3 constexpr unsigned int _\bc_\bo_\bd_\bi_\bm () const noexcept\n+64 {\n+65 return values_[1];\n+66 }\n+67\n+69 [[nodiscard]]\n+_\b7_\b0 constexpr unsigned int _\bi_\bn_\bd_\be_\bx () const noexcept\n+71 {\n+72 return values_[2];\n+73 }\n 74\n-75 }\n-76 };\n-77}\n-78\n-79#endif\n+_\b7_\b6 constexpr void _\bi_\bn_\bd_\be_\bx (unsigned int i) noexcept\n+77 {\n+78 values_[2] = i;\n+79 }\n+80\n+82 [[nodiscard]]\n+_\b8_\b3 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b (const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& other) const noexcept\n+84 {\n+85 return values_ < other.values_;\n+86 }\n+87\n+_\b8_\b9 friend std::ostream& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b (std::ostream& s, const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& localKey)\n+90 {\n+91 return s << \"[ subEntity: \" << localKey._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by()\n+92 << \", codim: \" << localKey._\bc_\bo_\bd_\bi_\bm()\n+93 << \", index: \" << localKey._\bi_\bn_\bd_\be_\bx() << \" ]\";\n+94 }\n+95\n+96 private:\n+97\n+98 // We use an array to store the values in order to be able to use the\n+array::operator< implementation\n+99 std::array values_;\n+100\n+101 };\n+102\n+103}\n+104#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localinterpolation.hh:17\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localinterpolation.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n+bool operator<(const LocalKey &other) const noexcept\n+Less-than operator so we can use this class as a key type in stl containers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+constexpr void index(unsigned int i) noexcept\n+Set index component.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+constexpr unsigned int index() const noexcept\n+Return offset within subentity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+constexpr LocalKey(unsigned int s, unsigned int c, unsigned int i) noexcept\n+Initialize all components.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bd_\bi_\bm\n+@ intersectionCodim\n+Codimension returned by LocalKey::codim() for degrees of freedom attached to an\n+intersection.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm\n+constexpr unsigned int codim() const noexcept\n+Return codim of associated entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n+friend std::ostream & operator<<(std::ostream &s, const LocalKey &localKey)\n+Write LocalKey object to output stream.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+constexpr LocalKey() noexcept\n+Standard constructor for uninitialized local index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n+constexpr unsigned int subEntity() const noexcept\n+Return number of associated subentity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:56\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalp2withelementbubble.hh File Reference\n+dune-localfunctions: localfiniteelementtraits.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,31 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    hierarchicalp2withelementbubble.hh File Reference
    \n+
    localfiniteelementtraits.hh File Reference
    \n
    \n
    \n-\n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::HierarchicalP2WithElementBubbleLocalFiniteElement< D, R, dim >
     Linear Lagrange functions enriched with quadratic edge bubble functions and an element bubble function. More...
    struct  Dune::LocalFiniteElementTraits< LB, LC, LI >
     traits helper struct More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,19 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hierarchicalp2withelementbubble.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b/\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n+localfiniteelementtraits.hh File Reference\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Linear Lagrange functions enriched with quadratic edge bubble functions\n- and an element bubble function. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bB_\b,_\b _\bL_\bC_\b,_\b _\bL_\bI_\b _\b>\n+\u00a0 traits helper struct _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalp2withelementbubble.hh Source File\n+dune-localfunctions: localfiniteelementtraits.hh Source File\n \n \n \n \n \n \n \n@@ -70,112 +70,50 @@\n
    \n \n \n \n \n \n \n
    \n-
    hierarchicalp2withelementbubble.hh
    \n+
    localfiniteelementtraits.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFINITEELEMENTTRAITS_HH
    \n+
    6#define DUNE_LOCALFINITEELEMENTTRAITS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8namespace Dune {
    \n
    9
    \n-\n-\n-
    12
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    32 template<class D, class R, int dim>
    \n-
    \n-\n-
    34 {
    \n-
    35 public:
    \n-\n-
    38
    \n-\n-
    41
    \n-\n-
    44
    \n-\n-
    47
    \n-
    48
    \n-
    \n-
    50 const LocalBasisType& localBasis () const
    \n-
    51 {
    \n-
    52 return basis_;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    \n-\n-
    57 {
    \n-
    58 return coefficients_;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-\n-
    63 {
    \n-
    64 return interpolation_;
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    \n-
    68 static constexpr std::size_t size () noexcept
    \n-
    69 {
    \n-
    70 return LocalBasisType::size();
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    74 static constexpr GeometryType type () noexcept
    \n-
    75 {
    \n-
    76 return GeometryTypes::simplex(dim);
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    79 private:
    \n-
    80 LocalCoefficientsType coefficients_{};
    \n-
    81 [[no_unique_address]] LocalBasisType basis_{};
    \n-
    82 [[no_unique_address]] LocalInterpolationType interpolation_{};
    \n-
    83 };
    \n-
    \n-
    84
    \n-
    85}
    \n-
    86
    \n-
    87#endif
    \n-\n-
    Hierarchical p2 shape functions for the simplex.
    \n+
    11 template<class LB, class LC, class LI>
    \n+
    \n+\n+
    13 {
    \n+
    16 typedef LB LocalBasisType;
    \n+
    17
    \n+\n+
    21
    \n+\n+
    25 };
    \n+
    \n+
    26
    \n+
    27}
    \n+
    28
    \n+
    29#endif
    \n
    Definition bdfmcube.hh:18
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    Linear Lagrange functions enriched with quadratic edge bubble functions and an element bubble functio...
    Definition hierarchicalp2withelementbubble.hh:34
    \n-
    HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > LocalBasisType
    Type of the local basis.
    Definition hierarchicalp2withelementbubble.hh:37
    \n-
    static constexpr std::size_t size() noexcept
    Returns the number of shape functions in this finite-element.
    Definition hierarchicalp2withelementbubble.hh:68
    \n-
    static constexpr GeometryType type() noexcept
    Returns the type of the geometry the finite-element is attached to.
    Definition hierarchicalp2withelementbubble.hh:74
    \n-
    const LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition hierarchicalp2withelementbubble.hh:50
    \n-
    const LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition hierarchicalp2withelementbubble.hh:62
    \n-
    HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim > LocalCoefficientsType
    Type of the local coefficients.
    Definition hierarchicalp2withelementbubble.hh:40
    \n-
    const LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition hierarchicalp2withelementbubble.hh:56
    \n-
    HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LocalBasisType, dim > LocalInterpolationType
    Type of the local interpolation.
    Definition hierarchicalp2withelementbubble.hh:43
    \n-
    P1 basis in dim-d enriched by quadratic edge bubble functions and an element bubble function of order...
    Definition hierarchicalsimplexp2withelementbubble.hh:46
    \n-
    static constexpr std::size_t size() noexcept
    Returns number of shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:105
    \n-
    The local keys of the hierarchical basis functions with element bubble.
    Definition hierarchicalsimplexp2withelementbubble.hh:229
    \n-\n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,138 +1,48 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n-hierarchicalp2withelementbubble.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+localfiniteelementtraits.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n-6#define DUNE_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFINITEELEMENTTRAITS_HH\n+6#define DUNE_LOCALFINITEELEMENTTRAITS_HH\n 7\n-8#include \n+8namespace _\bD_\bu_\bn_\be {\n 9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b/\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n-12\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-32 template\n-_\b3_\b3 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-34 {\n-35 public:\n-_\b3_\b7 using _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be =\n-_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>;\n-38\n-_\b4_\b0 using _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be =\n-_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b>;\n-41\n-_\b4_\b3 using _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be =\n-_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b,_\bd_\bi_\bm_\b>;\n-44\n-_\b4_\b6 using _\bT_\br_\ba_\bi_\bt_\bs =\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b,_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be_\b,_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\b>;\n-47\n-48\n-_\b5_\b0 const _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-51 {\n-52 return basis_;\n-53 }\n-54\n-_\b5_\b6 const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-57 {\n-58 return coefficients_;\n-59 }\n-60\n-_\b6_\b2 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-63 {\n-64 return interpolation_;\n-65 }\n-66\n-_\b6_\b8 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n-69 {\n-70 return _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bs_\bi_\bz_\be();\n-71 }\n-72\n-_\b7_\b4 static constexpr GeometryType _\bt_\by_\bp_\be () noexcept\n-75 {\n-76 return GeometryTypes::simplex(dim);\n-77 }\n-78\n-79 private:\n-80 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients_{};\n-81 [[no_unique_address]] _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be basis_{};\n-82 [[no_unique_address]] _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be interpolation_{};\n-83 };\n-84\n-85}\n-86\n-87#endif\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh\n-Hierarchical p2 shape functions for the simplex.\n+11 template\n+_\b1_\b2 struct _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+13 {\n+_\b1_\b6 typedef LB _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be;\n+17\n+_\b2_\b0 typedef LC _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be;\n+21\n+_\b2_\b4 typedef LI _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be;\n+25 };\n+26\n+27}\n+28\n+29#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n traits helper struct\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Linear Lagrange functions enriched with quadratic edge bubble functions and an\n-element bubble functio...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > LocalBasisType\n-Type of the local basis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size() noexcept\n-Returns the number of shape functions in this finite-element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type() noexcept\n-Returns the type of the geometry the finite-element is attached to.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const LocalBasisType & localBasis() const\n-Returns the local basis, i.e., the set of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const LocalInterpolationType & localInterpolation() const\n-Returns object that evaluates degrees of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >\n-LocalCoefficientsType\n-Type of the local coefficients.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const LocalCoefficientsType & localCoefficients() const\n-Returns the assignment of the degrees of freedom to the element subentities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LocalBasisType, dim >\n-LocalInterpolationType\n-Type of the local interpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-P1 basis in dim-d enriched by quadratic edge bubble functions and an element\n-bubble function of order...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size() noexcept\n-Returns number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-The local keys of the hierarchical basis functions with element bubble.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:229\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b,\n-_\bd_\bi_\bm_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalprismp2.hh File Reference\n+dune-localfunctions: nedelec1stkindcube.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalprismp2.hh File Reference
    \n+
    nedelec1stkindcube.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangeprism.hh>
    \n-#include "hierarchicalprismp2/hierarchicalprismp2localbasis.hh"
    \n-#include "hierarchicalprismp2/hierarchicalprismp2localinterpolation.hh"
    \n+
    #include <numeric>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/math.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    class  Dune::HierarchicalPrismP2LocalFiniteElement< D, R >
    class  Dune::Nedelec1stKindCubeLocalFiniteElement< D, R, dim, k >
     N\u00e9d\u00e9lec elements of the first kind for cube elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-us-ascii\n+utf-8\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hierarchicalprismp2.hh File Reference\n+nedelec1stkindcube.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n #include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n+\u00a0 N\u00c3\u00a9d\u00c3\u00a9lec elements of the first kind for cube elements. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalprismp2.hh Source File\n+dune-localfunctions: nedelec1stkindcube.hh Source File\n \n \n \n \n \n \n \n@@ -70,122 +70,518 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    hierarchicalprismp2.hh
    \n+
    nedelec1stkindcube.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <numeric>
    \n
    9
    \n-\n-\n-
    12
    \n-\n-\n-
    15
    \n+
    10#include <dune/common/fmatrix.hh>
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12#include <dune/common/math.hh>
    \n+
    13
    \n+
    14#include <dune/geometry/referenceelements.hh>
    \n+
    15#include <dune/geometry/type.hh>
    \n
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    22 template<class D, class R>
    \n-
    \n-\n-
    24 {
    \n-
    25
    \n-
    26
    \n-
    27 public:
    \n-\n-
    31 Impl::LagrangePrismLocalCoefficients<2>,
    \n-\n-
    33
    \n-\n-
    38
    \n-
    \n-
    41 const typename Traits::LocalBasisType& localBasis () const
    \n-
    42 {
    \n-
    43 return basis;
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    \n-\n-
    49 {
    \n-
    50 return coefficients;
    \n-
    51 }
    \n-
    \n-
    52
    \n-
    \n-\n-
    56 {
    \n-
    57 return interpolation;
    \n-
    58 }
    \n-
    \n-
    59
    \n-
    \n-
    61 unsigned int size () const
    \n-
    62 {
    \n-
    63 return basis.size();
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    \n-
    68 static constexpr GeometryType type ()
    \n-
    69 {
    \n-
    70 return GeometryTypes::prism;
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    73 private:
    \n-\n-
    75
    \n-
    77 Impl::LagrangePrismLocalCoefficients<2> coefficients;
    \n-
    78
    \n-\n-
    80 };
    \n-
    \n-
    81
    \n-
    82}
    \n-
    83
    \n-
    84#endif
    \n-\n-\n-
    Hierarchical prism p2 shape functions for the simplex.
    \n-\n+\n+\n+\n+
    20
    \n+
    21namespace Dune
    \n+
    22{
    \n+
    23namespace Impl
    \n+
    24{
    \n+
    37 template<class D, class R, int dim, int k>
    \n+
    38 class Nedelec1stKindCubeLocalBasis
    \n+
    39 {
    \n+
    40 // Number of edges of the reference cube
    \n+
    41 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
    \n+
    42
    \n+
    43 public:
    \n+
    44 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,
    \n+
    45 R,dim,FieldVector<R,dim>,
    \n+
    46 FieldMatrix<R,dim,dim> >;
    \n+
    47
    \n+
    54 Nedelec1stKindCubeLocalBasis()
    \n+
    55 {
    \n+
    56 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
    \n+
    57 }
    \n+
    58
    \n+
    61 Nedelec1stKindCubeLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
    \n+
    62 : Nedelec1stKindCubeLocalBasis()
    \n+
    63 {
    \n+
    64 for (std::size_t i=0; i<edgeOrientation_.size(); i++)
    \n+
    65 edgeOrientation_[i] *= edgeOrientation[i] ? -1.0 : 1.0;
    \n+
    66 }
    \n+
    67
    \n+
    69 static constexpr unsigned int size()
    \n+
    70 {
    \n+
    71 static_assert(dim==2 || dim==3, "Nedelec shape functions are implemented only for 2d and 3d cubes.");
    \n+
    72 if (dim==2)
    \n+
    73 return 2*k * (k+1);
    \n+
    74 if (dim==3)
    \n+
    75 return 3*k * (k+1) * (k+1);
    \n+
    76 }
    \n+
    77
    \n+
    83 void evaluateFunction(const typename Traits::DomainType& in,
    \n+
    84 std::vector<typename Traits::RangeType>& out) const
    \n+
    85 {
    \n+
    86 static_assert(k==1, "Evaluating N\u00e9d\u00e9lec shape functions is implemented only for first order.");
    \n+
    87 out.resize(size());
    \n+
    88
    \n+
    89 if (dim==2)
    \n+
    90 {
    \n+
    91 // First-order N\u00e9d\u00e9lec shape functions on a square are of the form
    \n+
    92 //
    \n+
    93 // (a, b)^T + (c y, d x)^T, a, b, c, d \\in R
    \n+
    94 //
    \n+
    95 // The following coefficients create the four basis vectors
    \n+
    96 // that are dual to the edge degrees of freedom:
    \n+
    97 //
    \n+
    98 // a[0] = 0 b[0] = 1 c[0] = 0 d[0] = -1
    \n+
    99 // a[1] = 0 b[1] = 0 c[1] = 0 d[1] = 1
    \n+
    100 // a[2] = 1 b[2] = 0 c[2] = 0 d[2] = -1
    \n+
    101 // a[3] = 0 b[3] = 0 c[3] = 0 d[3] = 1
    \n+
    102
    \n+
    103 out[0] = { 0, D(1) - in[0]};
    \n+
    104 out[1] = { 0, in[0]};
    \n+
    105 out[2] = { D(1) - in[1], 0};
    \n+
    106 out[3] = { in[1], 0};
    \n+
    107 }
    \n+
    108
    \n+
    109 if constexpr (dim==3)
    \n+
    110 {
    \n+
    111 // First-order N\u00e9d\u00e9lec shape functions on a cube are of the form
    \n+
    112 //
    \n+
    113 // (e1 yz)
    \n+
    114 // a + b x + c y + d z + (e2 xz) , a, b, c, d \\in R^3 and b[0]=c[1]=d[2]=0
    \n+
    115 // (e3 xy)
    \n+
    116 //
    \n+
    117 // The following coefficients create the twelve basis vectors
    \n+
    118 // that are dual to the edge degrees of freedom:
    \n+
    119 //
    \n+
    120 // a[0] = { 0, 0, 1} b[0] = { 0, 0, -1} c[0] = { 0, 0, -1} d[0] = { 0, 0, 0} e[0] = { 0, 0, 1}
    \n+
    121 // a[1] = { 0, 0, 0} b[1] = { 0, 0, 1} c[1] = { 0, 0, 0} d[1] = { 0, 0, 0} e[1] = { 0, 0, -1}
    \n+
    122 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 0} c[2] = { 0, 0, 1} d[2] = { 0, 0, 0} e[2] = { 0, 0, -1}
    \n+
    123 // a[3] = { 0, 0, 0} b[3] = { 0, 0, 0} c[3] = { 0, 0, 0} d[3] = { 0, 0, 0} e[3] = { 0, 0, 1}
    \n+
    124 //
    \n+
    125 // The following implementation uses these values, and simply
    \n+
    126 // skips all the zeros.
    \n+
    127
    \n+
    128 for (std::size_t i=0; i<out.size(); i++)
    \n+
    129 out[i] = {0,0,0};
    \n+
    130
    \n+
    131 out[0][2] = { 1 - in[0] - in[1] + in[0]*in[1]};
    \n+
    132 out[1][2] = { in[0] - in[0]*in[1]};
    \n+
    133 out[2][2] = { in[1] - in[0]*in[1]};
    \n+
    134 out[3][2] = { in[0]*in[1]};
    \n+
    135
    \n+
    136 out[4][1] = { 1 - in[0] - in[2] + in[0]*in[2]};
    \n+
    137 out[5][1] = { in[0] - in[0]*in[2]};
    \n+
    138 out[8][1] = { in[2] - in[0]*in[2]};
    \n+
    139 out[9][1] = { in[0]*in[2]};
    \n+
    140
    \n+
    141 out[6][0] = { 1 - in[1] - in[2] + in[1]*in[2]};
    \n+
    142 out[7][0] = { in[1] - in[1]*in[2]};
    \n+
    143 out[10][0] = { in[2] - in[1]*in[2]};
    \n+
    144 out[11][0] = { in[1]*in[2]};
    \n+
    145 }
    \n+
    146
    \n+
    147 for (std::size_t i=0; i<out.size(); i++)
    \n+
    148 out[i] *= edgeOrientation_[i];
    \n+
    149 }
    \n+
    150
    \n+
    156 void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    157 std::vector<typename Traits::JacobianType>& out) const
    \n+
    158 {
    \n+
    159 out.resize(size());
    \n+
    160 if (dim==2)
    \n+
    161 {
    \n+
    162 for (std::size_t i=0; i<out.size(); i++)
    \n+
    163 for (std::size_t j=0; j<dim; j++)
    \n+
    164 out[i][j] = { 0, 0};
    \n+
    165
    \n+
    166 out[0][1] = { -1, 0};
    \n+
    167 out[1][1] = { 1, 0};
    \n+
    168
    \n+
    169 out[2][0] = { 0, -1};
    \n+
    170 out[3][0] = { 0, 1};
    \n+
    171 }
    \n+
    172 if (dim==3)
    \n+
    173 {
    \n+
    174 for (std::size_t i=0; i<out.size(); i++)
    \n+
    175 for(std::size_t j=0;j<dim; j++)
    \n+
    176 out[i][j] = {0,0,0};
    \n+
    177
    \n+
    178
    \n+
    179 out[0][2] = {-1 +in[1], -1 + in[0], 0};
    \n+
    180 out[1][2] = { 1 -in[1], - in[0], 0};
    \n+
    181 out[2][2] = { -in[1], 1 - in[0], 0};
    \n+
    182 out[3][2] = { in[1], in[0], 0};
    \n+
    183
    \n+
    184 out[4][1] = {-1 +in[2], 0, -1 + in[0]};
    \n+
    185 out[5][1] = { 1 -in[2], 0, - in[0]};
    \n+
    186 out[8][1] = { -in[2], 0, 1 - in[0]};
    \n+
    187 out[9][1] = { in[2], 0, in[0]};
    \n+
    188
    \n+
    189 out[6][0] = { 0, -1 + in[2], -1 + in[1]};
    \n+
    190 out[7][0] = { 0, 1 - in[2], - in[1]};
    \n+
    191 out[10][0] = { 0, - in[2], 1 - in[1]};
    \n+
    192 out[11][0] = { 0, in[2], in[1]};
    \n+
    193
    \n+
    194 }
    \n+
    195
    \n+
    196 for (std::size_t i=0; i<out.size(); i++)
    \n+
    197 out[i] *= edgeOrientation_[i];
    \n+
    198
    \n+
    199 }
    \n+
    200
    \n+
    207 void partial(const std::array<unsigned int, dim>& order,
    \n+
    208 const typename Traits::DomainType& in,
    \n+
    209 std::vector<typename Traits::RangeType>& out) const
    \n+
    210 {
    \n+
    211 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    212 if (totalOrder == 0) {
    \n+
    213 evaluateFunction(in, out);
    \n+
    214 } else if (totalOrder == 1) {
    \n+
    215 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    216 out.resize(size());
    \n+
    217
    \n+
    218 if (dim==2)
    \n+
    219 {
    \n+
    220 if (direction==0)
    \n+
    221 {
    \n+
    222 out[0] = { 0, -1};
    \n+
    223 out[1] = { 0, 1};
    \n+
    224 out[2] = { 0, 0};
    \n+
    225 out[3] = { 0, 0};
    \n+
    226 }
    \n+
    227 else
    \n+
    228 {
    \n+
    229 out[0] = { 0, 0};
    \n+
    230 out[1] = { 0, 0};
    \n+
    231 out[2] = { -1, 0};
    \n+
    232 out[3] = { 1, 0};
    \n+
    233 }
    \n+
    234 }
    \n+
    235
    \n+
    236 if (dim==3)
    \n+
    237 {
    \n+
    238 switch (direction)
    \n+
    239 {
    \n+
    240 case 0:
    \n+
    241 out[0] = { 0, 0, -1 +in[1]};
    \n+
    242 out[1] = { 0, 0, 1 -in[1]};
    \n+
    243 out[2] = { 0, 0, -in[1]};
    \n+
    244 out[3] = { 0, 0, in[1]};
    \n+
    245
    \n+
    246 out[4] = { 0, -1 +in[2], 0};
    \n+
    247 out[5] = { 0, 1 -in[2], 0};
    \n+
    248 out[8] = { 0, -in[2], 0};
    \n+
    249 out[9] = { 0, in[2], 0};
    \n+
    250
    \n+
    251 out[6] = {0,0,0};
    \n+
    252 out[7] = {0,0,0};
    \n+
    253 out[10] = {0,0,0};
    \n+
    254 out[11] = {0,0,0};
    \n+
    255 break;
    \n+
    256
    \n+
    257 case 1:
    \n+
    258 out[0] = { 0, 0, -1 + in[0]};
    \n+
    259 out[1] = { 0, 0, - in[0]};
    \n+
    260 out[2] = { 0, 0, 1 - in[0]};
    \n+
    261 out[3] = { 0, 0, in[0]};
    \n+
    262
    \n+
    263 out[4] = {0,0,0};
    \n+
    264 out[5] = {0,0,0};
    \n+
    265 out[8] = {0,0,0};
    \n+
    266 out[9] = {0,0,0};
    \n+
    267
    \n+
    268 out[6] = { -1 + in[2], 0, 0};
    \n+
    269 out[7] = { 1 - in[2], 0, 0};
    \n+
    270 out[10] = { - in[2], 0, 0};
    \n+
    271 out[11] = { in[2], 0, 0};
    \n+
    272 break;
    \n+
    273
    \n+
    274 case 2:
    \n+
    275 out[0] = {0,0,0};
    \n+
    276 out[1] = {0,0,0};
    \n+
    277 out[2] = {0,0,0};
    \n+
    278 out[3] = {0,0,0};
    \n+
    279
    \n+
    280 out[4] = { 0, -1 + in[0], 0};
    \n+
    281 out[5] = { 0, - in[0], 0};
    \n+
    282 out[8] = { 0, 1 - in[0], 0};
    \n+
    283 out[9] = { 0, in[0], 0};
    \n+
    284
    \n+
    285 out[6] = { -1 + in[1], 0, 0};
    \n+
    286 out[7] = { - in[1], 0, 0};
    \n+
    287 out[10] = { 1 - in[1], 0, 0};
    \n+
    288 out[11] = { in[1], 0, 0};
    \n+
    289 break;
    \n+
    290 }
    \n+
    291 }
    \n+
    292
    \n+
    293 for (std::size_t i=0; i<out.size(); i++)
    \n+
    294 out[i] *= edgeOrientation_[i];
    \n+
    295
    \n+
    296 } else if (totalOrder == 2) {
    \n+
    297 out.resize(size());
    \n+
    298
    \n+
    299 if (dim==2)
    \n+
    300 for (std::size_t i = 0; i < size(); ++i)
    \n+
    301 for (std::size_t j = 0; j < dim; ++j)
    \n+
    302 out[i][j] = 0;
    \n+
    303
    \n+
    304 if (dim==3)
    \n+
    305 {
    \n+
    306 for(size_t i=0; i<out.size(); i++)
    \n+
    307 out[i] = { 0, 0, 0};
    \n+
    308
    \n+
    309 //case (1,1,0):
    \n+
    310 if( order[0] == 1 and order[1]==1)
    \n+
    311 {
    \n+
    312 out[0] = { 0, 0, 1};
    \n+
    313 out[1] = { 0, 0, -1};
    \n+
    314 out[2] = { 0, 0, -1};
    \n+
    315 out[3] = { 0, 0, 1};
    \n+
    316 }
    \n+
    317
    \n+
    318 //case (1,0,1):
    \n+
    319 if( order[0] == 1 and order[2]==1)
    \n+
    320 {
    \n+
    321 out[4] = { 0, 1, 0};
    \n+
    322 out[5] = { 0, -1, 0};
    \n+
    323 out[8] = { 0, -1, 0};
    \n+
    324 out[9] = { 0, 1, 0};
    \n+
    325 }
    \n+
    326
    \n+
    327 //case (0,1,1):
    \n+
    328 if( order[1] == 1 and order[2]==1)
    \n+
    329 {
    \n+
    330 out[6] = { 1, 0, 0};
    \n+
    331 out[7] = { -1, 0, 0};
    \n+
    332 out[10] = { -1, 0, 0};
    \n+
    333 out[11] = { 1, 0, 0};
    \n+
    334 }
    \n+
    335
    \n+
    336 for (std::size_t i=0; i<out.size(); i++)
    \n+
    337 out[i] *= edgeOrientation_[i];
    \n+
    338 }
    \n+
    339
    \n+
    340
    \n+
    341 }else {
    \n+
    342 out.resize(size());
    \n+
    343 for (std::size_t i = 0; i < size(); ++i)
    \n+
    344 for (std::size_t j = 0; j < dim; ++j)
    \n+
    345 out[i][j] = 0;
    \n+
    346 }
    \n+
    347
    \n+
    348 }
    \n+
    349
    \n+
    351 unsigned int order() const
    \n+
    352 {
    \n+
    353 if (dim==2)
    \n+
    354 return 2*k-1;
    \n+
    355 if (dim==3)
    \n+
    356 return 3*k-1;
    \n+
    357 }
    \n+
    358
    \n+
    359 private:
    \n+
    360
    \n+
    361 // Orientations of the cube edges
    \n+
    362 std::array<R,numberOfEdges> edgeOrientation_;
    \n+
    363 };
    \n+
    364
    \n+
    365
    \n+
    370 template <int dim, int k>
    \n+
    371 class Nedelec1stKindCubeLocalCoefficients
    \n+
    372 {
    \n+
    373 public:
    \n+
    375 Nedelec1stKindCubeLocalCoefficients ()
    \n+
    376 : localKey_(size())
    \n+
    377 {
    \n+
    378 static_assert(k==1, "Only first-order N\u00e9d\u00e9lec local coefficients are implemented.");
    \n+
    379 // Assign all degrees of freedom to edges
    \n+
    380 // TODO: This is correct only for first-order N\u00e9d\u00e9lec elements
    \n+
    381 for (std::size_t i=0; i<size(); i++)
    \n+
    382 localKey_[i] = LocalKey(i,dim-1,0);
    \n+
    383 }
    \n+
    384
    \n+
    386 std::size_t size() const
    \n+
    387 {
    \n+
    388 static_assert(dim==2 || dim==3, "N\u00e9d\u00e9lec shape functions are implemented only for 2d and 3d cubes.");
    \n+
    389 return (dim==2) ? 2*k * (k+1)
    \n+
    390 : 3*k * (k+1) * (k+1);
    \n+
    391 }
    \n+
    392
    \n+
    395 const LocalKey& localKey (std::size_t i) const
    \n+
    396 {
    \n+
    397 return localKey_[i];
    \n+
    398 }
    \n+
    399
    \n+
    400 private:
    \n+
    401 std::vector<LocalKey> localKey_;
    \n+
    402 };
    \n+
    403
    \n+
    408 template<class LB>
    \n+
    409 class Nedelec1stKindCubeLocalInterpolation
    \n+
    410 {
    \n+
    411 static constexpr auto dim = LB::Traits::dimDomain;
    \n+
    412 static constexpr auto size = LB::size();
    \n+
    413
    \n+
    414 // Number of edges of the reference cube
    \n+
    415 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
    \n+
    416
    \n+
    417 public:
    \n+
    418
    \n+
    420 Nedelec1stKindCubeLocalInterpolation (std::bitset<numberOfEdges> s = 0)
    \n+
    421 {
    \n+
    422 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::cube(dim));
    \n+
    423
    \n+
    424 for (std::size_t i=0; i<numberOfEdges; i++)
    \n+
    425 m_[i] = refElement.position(i,dim-1);
    \n+
    426
    \n+
    427 for (std::size_t i=0; i<numberOfEdges; i++)
    \n+
    428 {
    \n+
    429 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n+
    430 auto v0 = *vertexIterator;
    \n+
    431 auto v1 = *(++vertexIterator);
    \n+
    432
    \n+
    433 // By default, edges point from the vertex with the smaller index
    \n+
    434 // to the vertex with the larger index.
    \n+
    435 if (v0>v1)
    \n+
    436 std::swap(v0,v1);
    \n+
    437 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n+
    438 edge_[i] *= (s[i]) ? -1.0 : 1.0;
    \n+
    439 }
    \n+
    440 }
    \n+
    441
    \n+
    447 template<typename F, typename C>
    \n+
    448 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    449 {
    \n+
    450 out.resize(size);
    \n+
    451
    \n+
    452 for (std::size_t i=0; i<size; i++)
    \n+
    453 {
    \n+
    454 auto y = f(m_[i]);
    \n+
    455 out[i] = 0.0;
    \n+
    456 for (int j=0; j<dim; j++)
    \n+
    457 out[i] += y[j]*edge_[i][j];
    \n+
    458 }
    \n+
    459 }
    \n+
    460
    \n+
    461 private:
    \n+
    462 // Edge midpoints of the reference cube
    \n+
    463 std::array<typename LB::Traits::DomainType, numberOfEdges> m_;
    \n+
    464 // Edges of the reference cube
    \n+
    465 std::array<typename LB::Traits::DomainType, numberOfEdges> edge_;
    \n+
    466 };
    \n+
    467
    \n+
    468}
    \n+
    469
    \n+
    470
    \n+
    494 template<class D, class R, int dim, int k>
    \n+
    \n+\n+
    496 {
    \n+
    497 public:
    \n+\n+
    499 Impl::Nedelec1stKindCubeLocalCoefficients<dim,k>,
    \n+
    500 Impl::Nedelec1stKindCubeLocalInterpolation<Impl::Nedelec1stKindCubeLocalBasis<D,R,dim,k> > >;
    \n+
    501
    \n+
    502 static_assert(dim==2 || dim==3, "Nedelec elements are only implemented for 2d and 3d elements.");
    \n+
    503 static_assert(k==1, "Nedelec elements of the first kind are currently only implemented for order k==1.");
    \n+
    504
    \n+\n+
    508
    \n+
    \n+
    514 Nedelec1stKindCubeLocalFiniteElement (std::bitset<power(2,dim-1)*dim> s) :
    \n+
    515 basis_(s),
    \n+
    516 interpolation_(s)
    \n+
    517 {}
    \n+
    \n+
    518
    \n+
    \n+
    519 const typename Traits::LocalBasisType& localBasis () const
    \n+
    520 {
    \n+
    521 return basis_;
    \n+
    522 }
    \n+
    \n+
    523
    \n+
    \n+\n+
    525 {
    \n+
    526 return coefficients_;
    \n+
    527 }
    \n+
    \n+
    528
    \n+
    \n+\n+
    530 {
    \n+
    531 return interpolation_;
    \n+
    532 }
    \n+
    \n+
    533
    \n+
    \n+
    534 static constexpr unsigned int size ()
    \n+
    535 {
    \n+
    536 return Traits::LocalBasisType::size();
    \n+
    537 }
    \n+
    \n+
    538
    \n+
    \n+
    539 static constexpr GeometryType type ()
    \n+
    540 {
    \n+
    541 return GeometryTypes::cube(dim);
    \n+
    542 }
    \n+
    \n+
    543
    \n+
    544 private:
    \n+
    545 typename Traits::LocalBasisType basis_;
    \n+
    546 typename Traits::LocalCoefficientsType coefficients_;
    \n+
    547 typename Traits::LocalInterpolationType interpolation_;
    \n+
    548 };
    \n+
    \n+
    549
    \n+
    550}
    \n+
    551
    \n+
    552#endif
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Definition hierarchicalprismp2.hh:24
    \n-
    static constexpr GeometryType type()
    Definition hierarchicalprismp2.hh:68
    \n-
    HierarchicalPrismP2LocalFiniteElement()
    Definition hierarchicalprismp2.hh:36
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition hierarchicalprismp2.hh:55
    \n-
    LocalFiniteElementTraits< HierarchicalPrismP2LocalBasis< D, R >, Impl::LagrangePrismLocalCoefficients< 2 >, HierarchicalPrismP2LocalInterpolation< HierarchicalPrismP2LocalBasis< D, R > > > Traits
    Definition hierarchicalprismp2.hh:32
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition hierarchicalprismp2.hh:41
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition hierarchicalprismp2.hh:61
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition hierarchicalprismp2.hh:48
    \n-
    Definition hierarchicalprismp2localbasis.hh:23
    \n-
    Definition hierarchicalprismp2localinterpolation.hh:17
    \n+
    N\u00e9d\u00e9lec elements of the first kind for cube elements.
    Definition nedelec1stkindcube.hh:496
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition nedelec1stkindcube.hh:529
    \n+
    static constexpr unsigned int size()
    Definition nedelec1stkindcube.hh:534
    \n+
    Nedelec1stKindCubeLocalFiniteElement()=default
    Default constructor.
    \n+
    static constexpr GeometryType type()
    Definition nedelec1stkindcube.hh:539
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition nedelec1stkindcube.hh:524
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition nedelec1stkindcube.hh:519
    \n+
    Nedelec1stKindCubeLocalFiniteElement(std::bitset< power(2, dim-1) *dim > s)
    Constructor with explicitly given edge orientations.
    Definition nedelec1stkindcube.hh:514
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,132 +1,540 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n-hierarchicalprismp2.hh\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n+nedelec1stkindcube.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH\n-6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH\n+6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH\n 7\n-8#include \n+8#include \n 9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-12\n-13#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-14#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-15\n+10#include \n+11#include \n+12#include \n+13\n+14#include \n+15#include \n 16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-19\n-22 template\n-_\b2_\b3 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-24 {\n-25\n-26\n-27 public:\n-30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-31 Impl::LagrangePrismLocalCoefficients<2>,\n-_\b3_\b2 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > >\n-_\bT_\br_\ba_\bi_\bt_\bs;\n-33\n-_\b3_\b6 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-37 {}\n-38\n-_\b4_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-42 {\n-43 return basis;\n-44 }\n-45\n-_\b4_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-49 {\n-50 return coefficients;\n-51 }\n-52\n-_\b5_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-56 {\n-57 return interpolation;\n-58 }\n-59\n-_\b6_\b1 unsigned int _\bs_\bi_\bz_\be () const\n-62 {\n-63 return basis.size();\n-64 }\n-65\n-_\b6_\b8 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-69 {\n-70 return GeometryTypes::prism;\n-71 }\n-72\n-73 private:\n-74 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-75\n-77 Impl::LagrangePrismLocalCoefficients<2> coefficients;\n-78\n-79 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> >\n-interpolation;\n-80 };\n-81\n-82}\n-83\n-84#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be\n+22{\n+23namespace Impl\n+24{\n+37 template\n+38 class Nedelec1stKindCubeLocalBasis\n+39 {\n+40 // Number of edges of the reference cube\n+41 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;\n+42\n+43 public:\n+44 using Traits = LocalBasisTraits,\n+45 R,dim,FieldVector,\n+46 FieldMatrix >;\n+47\n+54 Nedelec1stKindCubeLocalBasis()\n+55 {\n+56 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);\n+57 }\n+58\n+61 Nedelec1stKindCubeLocalBasis(std::bitset edgeOrientation)\n+62 : Nedelec1stKindCubeLocalBasis()\n+63 {\n+64 for (std::size_t i=0; i& out) const\n+85 {\n+86 static_assert(k==1, \"Evaluating N\u00c3\u00a9d\u00c3\u00a9lec shape functions is implemented\n+only for first order.\");\n+87 out.resize(size());\n+88\n+89 if (dim==2)\n+90 {\n+91 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a square are of the form\n+92 //\n+93 // (a, b)^T + (c y, d x)^T, a, b, c, d \\in R\n+94 //\n+95 // The following coefficients create the four basis vectors\n+96 // that are dual to the edge degrees of freedom:\n+97 //\n+98 // a[0] = 0 b[0] = 1 c[0] = 0 d[0] = -1\n+99 // a[1] = 0 b[1] = 0 c[1] = 0 d[1] = 1\n+100 // a[2] = 1 b[2] = 0 c[2] = 0 d[2] = -1\n+101 // a[3] = 0 b[3] = 0 c[3] = 0 d[3] = 1\n+102\n+103 out[0] = { 0, D(1) - in[0]};\n+104 out[1] = { 0, in[0]};\n+105 out[2] = { D(1) - in[1], 0};\n+106 out[3] = { in[1], 0};\n+107 }\n+108\n+109 if constexpr (dim==3)\n+110 {\n+111 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a cube are of the form\n+112 //\n+113 // (e1 yz)\n+114 // a + b x + c y + d z + (e2 xz) , a, b, c, d \\in R^3 and b[0]=c[1]=d[2]=0\n+115 // (e3 xy)\n+116 //\n+117 // The following coefficients create the twelve basis vectors\n+118 // that are dual to the edge degrees of freedom:\n+119 //\n+120 // a[0] = { 0, 0, 1} b[0] = { 0, 0, -1} c[0] = { 0, 0, -1} d[0] = { 0, 0,\n+0} e[0] = { 0, 0, 1}\n+121 // a[1] = { 0, 0, 0} b[1] = { 0, 0, 1} c[1] = { 0, 0, 0} d[1] = { 0, 0, 0}\n+e[1] = { 0, 0, -1}\n+122 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 0} c[2] = { 0, 0, 1} d[2] = { 0, 0, 0}\n+e[2] = { 0, 0, -1}\n+123 // a[3] = { 0, 0, 0} b[3] = { 0, 0, 0} c[3] = { 0, 0, 0} d[3] = { 0, 0, 0}\n+e[3] = { 0, 0, 1}\n+124 //\n+125 // The following implementation uses these values, and simply\n+126 // skips all the zeros.\n+127\n+128 for (std::size_t i=0; i& out) const\n+158 {\n+159 out.resize(size());\n+160 if (dim==2)\n+161 {\n+162 for (std::size_t i=0; i& order,\n+208 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+209 std::vector& out) const\n+210 {\n+211 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+212 if (totalOrder == 0) {\n+213 evaluateFunction(in, out);\n+214 } else if (totalOrder == 1) {\n+215 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+216 out.resize(size());\n+217\n+218 if (dim==2)\n+219 {\n+220 if (direction==0)\n+221 {\n+222 out[0] = { 0, -1};\n+223 out[1] = { 0, 1};\n+224 out[2] = { 0, 0};\n+225 out[3] = { 0, 0};\n+226 }\n+227 else\n+228 {\n+229 out[0] = { 0, 0};\n+230 out[1] = { 0, 0};\n+231 out[2] = { -1, 0};\n+232 out[3] = { 1, 0};\n+233 }\n+234 }\n+235\n+236 if (dim==3)\n+237 {\n+238 switch (direction)\n+239 {\n+240 case 0:\n+241 out[0] = { 0, 0, -1 +in[1]};\n+242 out[1] = { 0, 0, 1 -in[1]};\n+243 out[2] = { 0, 0, -in[1]};\n+244 out[3] = { 0, 0, in[1]};\n+245\n+246 out[4] = { 0, -1 +in[2], 0};\n+247 out[5] = { 0, 1 -in[2], 0};\n+248 out[8] = { 0, -in[2], 0};\n+249 out[9] = { 0, in[2], 0};\n+250\n+251 out[6] = {0,0,0};\n+252 out[7] = {0,0,0};\n+253 out[10] = {0,0,0};\n+254 out[11] = {0,0,0};\n+255 break;\n+256\n+257 case 1:\n+258 out[0] = { 0, 0, -1 + in[0]};\n+259 out[1] = { 0, 0, - in[0]};\n+260 out[2] = { 0, 0, 1 - in[0]};\n+261 out[3] = { 0, 0, in[0]};\n+262\n+263 out[4] = {0,0,0};\n+264 out[5] = {0,0,0};\n+265 out[8] = {0,0,0};\n+266 out[9] = {0,0,0};\n+267\n+268 out[6] = { -1 + in[2], 0, 0};\n+269 out[7] = { 1 - in[2], 0, 0};\n+270 out[10] = { - in[2], 0, 0};\n+271 out[11] = { in[2], 0, 0};\n+272 break;\n+273\n+274 case 2:\n+275 out[0] = {0,0,0};\n+276 out[1] = {0,0,0};\n+277 out[2] = {0,0,0};\n+278 out[3] = {0,0,0};\n+279\n+280 out[4] = { 0, -1 + in[0], 0};\n+281 out[5] = { 0, - in[0], 0};\n+282 out[8] = { 0, 1 - in[0], 0};\n+283 out[9] = { 0, in[0], 0};\n+284\n+285 out[6] = { -1 + in[1], 0, 0};\n+286 out[7] = { - in[1], 0, 0};\n+287 out[10] = { 1 - in[1], 0, 0};\n+288 out[11] = { in[1], 0, 0};\n+289 break;\n+290 }\n+291 }\n+292\n+293 for (std::size_t i=0; i edgeOrientation_;\n+363 };\n+364\n+365\n+370 template \n+371 class Nedelec1stKindCubeLocalCoefficients\n+372 {\n+373 public:\n+375 Nedelec1stKindCubeLocalCoefficients ()\n+376 : localKey_(size())\n+377 {\n+378 static_assert(k==1, \"Only first-order N\u00c3\u00a9d\u00c3\u00a9lec local coefficients are\n+implemented.\");\n+379 // Assign all degrees of freedom to edges\n+380 // TODO: This is correct only for first-order N\u00c3\u00a9d\u00c3\u00a9lec elements\n+381 for (std::size_t i=0; i localKey_;\n+402 };\n+403\n+408 template\n+409 class Nedelec1stKindCubeLocalInterpolation\n+410 {\n+411 static constexpr auto dim = LB::Traits::dimDomain;\n+412 static constexpr auto size = LB::size();\n+413\n+414 // Number of edges of the reference cube\n+415 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;\n+416\n+417 public:\n+418\n+420 Nedelec1stKindCubeLocalInterpolation (std::bitset s = 0)\n+421 {\n+422 auto refElement = Dune::referenceElement(GeometryTypes::cube\n+(dim));\n+423\n+424 for (std::size_t i=0; iv1)\n+436 std::swap(v0,v1);\n+437 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);\n+438 edge_[i] *= (s[i]) ? -1.0 : 1.0;\n+439 }\n+440 }\n+441\n+447 template\n+448 void interpolate (const F& f, std::vector& out) const\n+449 {\n+450 out.resize(size);\n+451\n+452 for (std::size_t i=0; i m_;\n+464 // Edges of the reference cube\n+465 std::array edge_;\n+466 };\n+467\n+468}\n+469\n+470\n+494 template\n+_\b4_\b9_\b5 class _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+496 {\n+497 public:\n+_\b4_\b9_\b8 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n+_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>,\n+499 Impl::Nedelec1stKindCubeLocalCoefficients,\n+500 Impl::Nedelec1stKindCubeLocalInterpolation > >;\n+501\n+502 static_assert(dim==2 || dim==3, \"Nedelec elements are only implemented for\n+2d and 3d elements.\");\n+503 static_assert(k==1, \"Nedelec elements of the first kind are currently only\n+implemented for order k==1.\");\n+504\n+_\b5_\b0_\b7 _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt() = default;\n+508\n+_\b5_\b1_\b4 _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset s) :\n+515 basis_(s),\n+516 interpolation_(s)\n+517 {}\n+518\n+_\b5_\b1_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+520 {\n+521 return basis_;\n+522 }\n+523\n+_\b5_\b2_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+525 {\n+526 return coefficients_;\n+527 }\n+528\n+_\b5_\b2_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+530 {\n+531 return interpolation_;\n+532 }\n+533\n+_\b5_\b3_\b4 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n+535 {\n+536 return Traits::LocalBasisType::size();\n+537 }\n+538\n+_\b5_\b3_\b9 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+540 {\n+541 return GeometryTypes::cube(dim);\n+542 }\n+543\n+544 private:\n+545 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be basis_;\n+546 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients_;\n+547 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be interpolation_;\n+548 };\n+549\n+550}\n+551\n+552#endif\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-Hierarchical prism p2 shape functions for the simplex.\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n traits helper struct\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n LB LocalBasisType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n LC LocalCoefficientsType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n LI LocalInterpolationType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n-_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-HierarchicalPrismP2LocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+N\u00c3\u00a9d\u00c3\u00a9lec elements of the first kind for cube elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:496\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< HierarchicalPrismP2LocalBasis< D, R >, Impl::\n-LagrangePrismLocalCoefficients< 2 >, HierarchicalPrismP2LocalInterpolation<\n-HierarchicalPrismP2LocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:529\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr unsigned int size()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:534\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n+_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Nedelec1stKindCubeLocalFiniteElement()=default\n+Default constructor.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:539\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localbasis.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\br_\bi_\bs_\bm_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localinterpolation.hh:17\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:524\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:519\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n+_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Nedelec1stKindCubeLocalFiniteElement(std::bitset< power(2, dim-1) *dim > s)\n+Constructor with explicitly given edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:514\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalsimplexp2localinterpolation.hh File Reference\n+dune-localfunctions: nedelecsimplexprebasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,31 +65,38 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalsimplexp2localinterpolation.hh File Reference
    \n+
    nedelecsimplexprebasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n+
    #include <fstream>
    \n+#include <utility>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::HierarchicalSimplexP2LocalInterpolation< LB >
    struct  Dune::NedelecPreBasisFactory< dim, Field >
     
    struct  Dune::NedelecPreBasisFactory< dim, Field >::EvaluationBasisFactory< dd, FF >
     
    struct  Dune::NedelecVecMatrix< geometryId, Field >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,20 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hierarchicalsimplexp2localinterpolation.hh File Reference\n-#include \n+nedelecsimplexprebasis.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<\n+ _\bd_\bd_\b,_\b _\bF_\bF_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalsimplexp2localinterpolation.hh Source File\n+dune-localfunctions: nedelecsimplexprebasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,130 +70,353 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    hierarchicalsimplexp2localinterpolation.hh
    \n+
    nedelecsimplexprebasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    15 template<class LB>
    \n-
    \n-\n-
    17 {
    \n-
    18 public:
    \n+
    8#include <fstream>
    \n+
    9#include <utility>
    \n+
    10
    \n+
    11#include <dune/geometry/type.hh>
    \n+
    12
    \n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17 template < GeometryType::Id geometryId, class Field >
    \n+
    18 struct NedelecVecMatrix;
    \n
    19
    \n-
    20 template<typename F, typename C>
    \n-
    \n-
    21 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    22 {
    \n-
    23 typename LB::Traits::DomainType x;
    \n-
    24 typename LB::Traits::RangeType y;
    \n-
    25
    \n-
    26 static_assert(LB::Traits::dimDomain <= 3,
    \n-
    27 "LocalInterpolation for HierarchicalSimplexP2 finite elements"
    \n-
    28 " is only implemented for dimDomain <=3!");
    \n-
    29
    \n-
    30 switch ( int(LB::Traits::dimDomain)) {
    \n-
    31
    \n-
    32 case 1 :
    \n+
    23 template <unsigned int dim, class Field>
    \n+
    \n+\n+
    25 {
    \n+\n+
    27 typedef typename MBasisFactory::Object MBasis;
    \n+\n+\n+
    30
    \n+
    31 typedef const Basis Object;
    \n+
    32 typedef std::size_t Key;
    \n
    33
    \n-
    34 out.resize(3);
    \n-
    35
    \n-
    36 // First: the two vertex dofs
    \n-
    37 x[0] = 0.0; out[0] = f(x);
    \n-
    38 x[0] = 1.0; out[2] = f(x);
    \n+
    34 template <unsigned int dd, class FF>
    \n+
    \n+\n+
    36 {
    \n+\n+
    38 };
    \n+
    \n
    39
    \n-
    40 // Then: the edge dof
    \n-
    41 x[0] = 0.5; y = f(x);
    \n-
    42 out[1] = y - 0.5*(out[0] + out[2]);
    \n-
    43
    \n-
    44 break;
    \n-
    45
    \n-
    46
    \n-
    47 case 2 :
    \n-
    48
    \n-
    49 out.resize(6);
    \n-
    50
    \n-
    51 // First: the three vertex dofs
    \n-
    52 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);
    \n-
    53 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);
    \n-
    54 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);
    \n-
    55
    \n-
    56 // Then: the three edge dofs
    \n-
    57 x[0] = 0.5; x[1] = 0.0; y = f(x);
    \n-
    58 out[1] = y - 0.5*(out[0] + out[2]);
    \n-
    59
    \n-
    60 x[0] = 0.0; x[1] = 0.5; y = f(x);
    \n-
    61 out[3] = y - 0.5*(out[0] + out[5]);
    \n-
    62
    \n-
    63 x[0] = 0.5; x[1] = 0.5; y = f(x);
    \n-
    64 out[4] = y - 0.5*(out[2] + out[5]);
    \n-
    65
    \n-
    66 break;
    \n-
    67
    \n-
    68 case 3 :
    \n-
    69
    \n-
    70 out.resize(10);
    \n-
    71
    \n-
    72 // First: the four vertex dofs
    \n-
    73 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);
    \n-
    74 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[2] = f(x);
    \n-
    75 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[5] = f(x);
    \n-
    76 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[9] = f(x);
    \n-
    77
    \n-
    78 // Then: the six edge dofs
    \n-
    79 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);
    \n-
    80 out[1] = y - 0.5*(out[0] + out[2]);
    \n-
    81
    \n-
    82 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n-
    83 out[3] = y - 0.5*(out[0] + out[5]);
    \n-
    84
    \n-
    85 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n-
    86 out[4] = y - 0.5*(out[2] + out[5]);
    \n-
    87
    \n-
    88 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    89 out[6] = y - 0.5*(out[0] + out[9]);
    \n-
    90
    \n-
    91 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    92 out[7] = y - 0.5*(out[2] + out[9]);
    \n-
    93
    \n-
    94 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n-
    95 out[8] = y - 0.5*(out[5] + out[9]);
    \n-
    96
    \n-
    97 break;
    \n-
    98
    \n-
    99 }
    \n-
    100 }
    \n+
    40 template< GeometryType::Id geometryId >
    \n+
    \n+
    41 static Object *create ( Key order )
    \n+
    42 {
    \n+
    43 /*
    \n+
    44 * The nedelec parameter begins at 1.
    \n+
    45 * This is the numbering used by J.C. Nedelec himself.
    \n+
    46 * See "Mixed Finite Elements in \\R^3" published in 1980.
    \n+
    47 *
    \n+
    48 * This construction is based on the construction of Raviart-Thomas elements.
    \n+
    49 * There the numbering starts at 0.
    \n+
    50 * Because of this we reduce the order internally by 1.
    \n+
    51 */
    \n+
    52 order--;
    \n+\n+
    54 MBasis *mbasis = MBasisFactory::template create<geometryId>(order+1);
    \n+
    55 std::remove_const_t<Object>* tmBasis = new std::remove_const_t<Object>(*mbasis);
    \n+
    56 tmBasis->fill(vecMatrix);
    \n+
    57 return tmBasis;
    \n+
    58 }
    \n
    \n-
    101
    \n-
    102 };
    \n+
    59 static void release( Object *object ) { delete object; }
    \n+
    60 };
    \n
    \n-
    103}
    \n+
    61
    \n+
    62 template <GeometryType::Id geometryId, class Field>
    \n+
    \n+\n+
    64 {
    \n+
    65 static constexpr GeometryType geometry = geometryId;
    \n+
    66 static const unsigned int dim = geometry.dim();
    \n+\n+\n+
    \n+
    69 NedelecVecMatrix(std::size_t order)
    \n+
    70 {
    \n+
    71 /*
    \n+
    72 * Construction of Nedelec elements see "Mixed Finite Elements in \\R^3" by Nedelec, 1980.
    \n+
    73 *
    \n+
    74 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree $\\leq k$.
    \n+
    75 * The space of Nedelec functions in $n$ dimensions with index $k$ is defined as
    \n+
    76 *
    \n+
    77 * \\begin{equation*}
    \n+
    78 * Ned_k := (\\P_{n,k-1})^n \\oplus \\{p \\in (\\P_{n,k})^n: <p,x>=0 \\}
    \n+
    79 * \\end{equation*}
    \n+
    80 * with $x=(x,y)$ in two dimensions and $x=(x,y,z)$ in three dimensions.
    \n+
    81 *
    \n+
    82 * For $Ned_k$ holds
    \n+
    83 * \\begin{equation*}
    \n+
    84 * (\\P_{n,k-1})^n \\subset Ned_k \\subset (\\P_{n,k})^n.
    \n+
    85 * \\end{equation*}
    \n+
    86 *
    \n+
    87 * We construct $(\\P_{n,k})^n$ and and only use the monomials contained in $Ned$.
    \n+
    88 *
    \n+
    89 */
    \n+
    90 if( (dim!=2 && dim!=3) || !geometry.isSimplex())
    \n+
    91 DUNE_THROW(Dune::NotImplemented,"High order nedelec elements are only supported by simplices in 2d and 3d");
    \n+
    92
    \n+
    93 MIBasis basis(order+1);
    \n+
    94 FieldVector< MI, dim > x;
    \n+
    95 /*
    \n+
    96 * Init MultiIndices
    \n+
    97 * x[0]=(1,0,0) x
    \n+
    98 * x[1]=(0,1,0) y
    \n+
    99 * x[2]=(0,0,1) z
    \n+
    100 */
    \n+
    101 for( unsigned int i = 0; i < dim; ++i )
    \n+
    102 x[i].set(i,1);
    \n+
    103 std::vector< MI > val( basis.size() );
    \n
    104
    \n-
    105#endif
    \n+
    105 // val now contains all monomials in $n$ dimensions with degree $\\leq order+1$
    \n+
    106 basis.evaluate( x, val );
    \n+
    107
    \n+
    108 col_ = basis.size();
    \n+
    109
    \n+
    110 // get $\\dim (\\P_{n,order-1})$
    \n+
    111 unsigned int notHomogen = 0;
    \n+
    112 if (order>0)
    \n+
    113 notHomogen = basis.sizes()[order-1];
    \n+
    114
    \n+
    115 // the number of basis functions for the set of homogeneous polynomials with degree $order$
    \n+
    116 unsigned int homogen = basis.sizes()[order]-notHomogen;
    \n+
    117
    \n+
    118 /*
    \n+
    119 * 2D:
    \n+
    120 * \\begin{equation*}
    \n+
    121 * Ned_{order} = (\\P_{order-1})^2 \\oplus (-y,x)^T \\widetilde \\P_{order-1}
    \n+
    122 * \\end{equation*}
    \n+
    123 *
    \n+
    124 * It gets more complicated in higher dimensions.
    \n+
    125 *
    \n+
    126 * 3D:
    \n+
    127 * \\begin{equation*}
    \n+
    128 * Ned_{order} = (\\P_{n,order-1})^3 \\oplus (z,0,-x)^T \\widetilde \\P_{n,order-1} \\oplus (-y,x,0)^T \\widetilde \\P_{n,order-1} \\oplus (0,-z,y)^T \\widetilde \\P_{n-1,order-1}
    \n+
    129 * \\end{equation*}
    \n+
    130 *
    \n+
    131 * Note the last term. The index $n-1$ is on purpose.
    \n+
    132 * Else i.e. k=2
    \n+
    133 *
    \n+
    134 * (0,z,-y)^T x = (z,0,-x)^T y - (y,-x,0)^T z.
    \n+
    135 *
    \n+
    136 */
    \n+
    137
    \n+
    138 /*
    \n+
    139 * compute the number of rows for the coefficient matrix
    \n+
    140 *
    \n+
    141 * row_ = dim* \\dim Ned_{order}
    \n+
    142 */
    \n+
    143 if (dim == 2)
    \n+
    144 row_ = (notHomogen*dim+homogen*(dim+1))*dim;
    \n+
    145 else if (dim==3)
    \n+
    146 {
    \n+
    147 // get dim \\P_{n-1,order-1}
    \n+
    148 int homogenTwoVariables = 0;
    \n+
    149 for( int w = notHomogen; w<notHomogen + homogen; w++)
    \n+
    150 if (val[w].z(0)==0)
    \n+
    151 homogenTwoVariables++;
    \n+
    152 row_ = (notHomogen*dim+homogen*(dim+2) + homogenTwoVariables)*dim;
    \n+
    153 }
    \n+
    154
    \n+
    155 mat_ = new Field*[row_];
    \n+
    156 int row = 0;
    \n+
    157
    \n+
    158 /* Assign the correct values for the nonhomogeneous polymonials $p\\in (\\P_{n,order-1})^dim$
    \n+
    159 * A basis function is represented by $dim$ rows.
    \n+
    160 */
    \n+
    161 for (unsigned int i=0; i<notHomogen+homogen; ++i)
    \n+
    162 {
    \n+
    163 for (unsigned int r=0; r<dim; ++r)
    \n+
    164 {
    \n+
    165 for (unsigned int rr=0; rr<dim; ++rr)
    \n+
    166 {
    \n+
    167 // init row to zero
    \n+
    168 mat_[row] = new Field[col_];
    \n+
    169 for (unsigned int j=0; j<col_; ++j)
    \n+
    170 mat_[row][j] = 0.;
    \n+
    171
    \n+
    172 if (r==rr)
    \n+
    173 mat_[row][i] = 1.;
    \n+
    174 ++row;
    \n+
    175 }
    \n+
    176 }
    \n+
    177 }
    \n+
    178
    \n+
    179 /* Assign the correct values for the homogeneous polymonials $p\\in Ned_{order} \\backslash (\\P_{n,order-1})^dim$
    \n+
    180 * A basis function is represented by $dim$ rows.
    \n+
    181 */
    \n+
    182 for (unsigned int i=0; i<homogen; ++i)
    \n+
    183 {
    \n+
    184 // get a monomial $ p \\in \\P_{n,order}\\backslash \\P_{n,order-1}$
    \n+
    185 MI xval = val[notHomogen+i];
    \n+
    186 if(dim==2)
    \n+
    187 {
    \n+
    188 for (unsigned int r=0; r<dim; ++r)
    \n+
    189 {
    \n+
    190 // init rows to zero
    \n+
    191 mat_[row+r] = new Field[col_];
    \n+
    192 for (unsigned int j=0; j<col_; ++j)
    \n+
    193 mat_[row+r][j] = 0.;
    \n+
    194 }
    \n+
    195
    \n+
    196 /* set $(-y,x)^T p$ with a homogeneous monomial $p$
    \n+
    197 *
    \n+
    198 * The loop over the monomials is needed to obtain the corresponding column index.
    \n+
    199 */
    \n+
    200 for (int w=homogen+notHomogen; w<val.size(); ++w)
    \n+
    201 {
    \n+
    202 if (val[w] == xval*x[0])
    \n+
    203 mat_[row+1][w] = 1.;
    \n+
    204 if (val[w] == xval*x[1])
    \n+
    205 mat_[row][w] = -1.;
    \n+
    206 }
    \n+
    207 row +=dim;
    \n+
    208 }
    \n+
    209 else if(dim==3)
    \n+
    210 {
    \n+
    211 int skipLastDim = xval.z(0)>0;
    \n+
    212 /*
    \n+
    213 * Init 9 rows to zero.
    \n+
    214 * If the homogeneous monomial has a positive x-exponent (0,-z,y) gets skipped ( see example for the Nedelec space in 3D )
    \n+
    215 * In this case only 6 rows get initialised.
    \n+
    216 */
    \n+
    217 for (unsigned int r=0; r<dim*(dim-skipLastDim); ++r)
    \n+
    218 {
    \n+
    219 // init rows to zero
    \n+
    220 mat_[row+r] = new Field[col_];
    \n+
    221 for (unsigned int j=0; j<col_; ++j)
    \n+
    222 mat_[row+r][j] = 0.;
    \n+
    223 }
    \n+
    224
    \n+
    225 /*
    \n+
    226 * first $dim$ rows are for (z,0,-x)
    \n+
    227 *
    \n+
    228 * second $dim$ rows are for (-y,x,0)
    \n+
    229 *
    \n+
    230 * third $dim$ rows are for (0,-z,y)
    \n+
    231 *
    \n+
    232 */
    \n+
    233 for (unsigned int r=0; r<dim - skipLastDim; ++r)
    \n+
    234 {
    \n+
    235 int index = (r+dim-1)%dim;
    \n+
    236 for (int w=homogen+notHomogen; w<val.size(); ++w)
    \n+
    237 {
    \n+
    238 if (val[w] == xval*x[index])
    \n+
    239 mat_[row+r][w] = 1.;
    \n+
    240 if (val[w] == xval*x[r])
    \n+
    241 mat_[row+index][w] = -1.;
    \n+
    242 }
    \n+
    243 row +=dim;
    \n+
    244 }
    \n+
    245
    \n+
    246 }
    \n+
    247 }
    \n+
    248 }
    \n+
    \n+
    249
    \n+
    \n+\n+
    251 {
    \n+
    252 for (unsigned int i=0; i<rows(); ++i) {
    \n+
    253 delete [] mat_[i];
    \n+
    254 }
    \n+
    255 delete [] mat_;
    \n+
    256 }
    \n+
    \n+
    257
    \n+
    \n+
    258 unsigned int cols() const {
    \n+
    259 return col_;
    \n+
    260 }
    \n+
    \n+
    261
    \n+
    \n+
    262 unsigned int rows() const {
    \n+
    263 return row_;
    \n+
    264 }
    \n+
    \n+
    265
    \n+
    266 template <class Vector>
    \n+
    \n+
    267 void row( const unsigned int row, Vector &vec ) const
    \n+
    268 {
    \n+
    269 const unsigned int N = cols();
    \n+
    270 assert( vec.size() == N );
    \n+
    271 for (unsigned int i=0; i<N; ++i)
    \n+
    272 field_cast(mat_[row][i],vec[i]);
    \n+
    273 }
    \n+
    \n+
    274
    \n+
    275 unsigned int row_,col_;
    \n+
    276 Field **mat_;
    \n+
    277 };
    \n+
    \n+
    278
    \n+
    279
    \n+
    280}
    \n+
    281#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition hierarchicalsimplexp2localinterpolation.hh:17
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Definition hierarchicalsimplexp2localinterpolation.hh:21
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    Definition nedelecsimplexprebasis.hh:64
    \n+
    NedelecVecMatrix(std::size_t order)
    Definition nedelecsimplexprebasis.hh:69
    \n+
    MultiIndex< dim, Field > MI
    Definition nedelecsimplexprebasis.hh:67
    \n+
    unsigned int row_
    Definition nedelecsimplexprebasis.hh:275
    \n+
    unsigned int cols() const
    Definition nedelecsimplexprebasis.hh:258
    \n+
    ~NedelecVecMatrix()
    Definition nedelecsimplexprebasis.hh:250
    \n+
    MonomialBasis< geometryId, MI > MIBasis
    Definition nedelecsimplexprebasis.hh:68
    \n+
    unsigned int col_
    Definition nedelecsimplexprebasis.hh:275
    \n+
    static const unsigned int dim
    Definition nedelecsimplexprebasis.hh:66
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition nedelecsimplexprebasis.hh:267
    \n+
    static constexpr GeometryType geometry
    Definition nedelecsimplexprebasis.hh:65
    \n+
    unsigned int rows() const
    Definition nedelecsimplexprebasis.hh:262
    \n+
    Field ** mat_
    Definition nedelecsimplexprebasis.hh:276
    \n+
    Definition nedelecsimplexprebasis.hh:25
    \n+
    static void release(Object *object)
    Definition nedelecsimplexprebasis.hh:59
    \n+
    MBasisFactory::Object MBasis
    Definition nedelecsimplexprebasis.hh:27
    \n+
    static Object * create(Key order)
    Definition nedelecsimplexprebasis.hh:41
    \n+
    PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis
    Definition nedelecsimplexprebasis.hh:29
    \n+
    const Basis Object
    Definition nedelecsimplexprebasis.hh:31
    \n+
    StandardEvaluator< MBasis > EvalMBasis
    Definition nedelecsimplexprebasis.hh:28
    \n+
    MonomialBasisProvider< dim, Field > MBasisFactory
    Definition nedelecsimplexprebasis.hh:26
    \n+
    std::size_t Key
    Definition nedelecsimplexprebasis.hh:32
    \n+
    Definition nedelecsimplexprebasis.hh:36
    \n+
    MonomialBasisProvider< dd, FF > Type
    Definition nedelecsimplexprebasis.hh:37
    \n+
    Definition basisevaluator.hh:131
    \n+
    Definition monomialbasis.hh:440
    \n+
    unsigned int size() const
    Definition monomialbasis.hh:476
    \n+
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:498
    \n+
    const unsigned int * sizes(unsigned int order) const
    Definition monomialbasis.hh:465
    \n+
    Definition monomialbasis.hh:780
    \n+
    Definition multiindex.hh:38
    \n+
    int z(int i) const
    Definition multiindex.hh:92
    \n+
    Definition polynomialbasis.hh:348
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,122 +1,406 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2\n-hierarchicalsimplexp2localinterpolation.hh\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+nedelecsimplexprebasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH\n-6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH\n 7\n-8#include \n-9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-15 template\n-_\b1_\b6 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-17 {\n-18 public:\n+8#include \n+9#include \n+10\n+11#include \n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17 template < GeometryType::Id geometryId, class Field >\n+18 struct NedelecVecMatrix;\n 19\n-20 template\n-_\b2_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-22 {\n-23 typename LB::Traits::DomainType x;\n-24 typename LB::Traits::RangeType y;\n-25\n-26 static_assert(LB::Traits::dimDomain <= 3,\n-27 \"LocalInterpolation for HierarchicalSimplexP2 finite elements\"\n-28 \" is only implemented for dimDomain <=3!\");\n-29\n-30 switch ( int(LB::Traits::dimDomain)) {\n-31\n-32 case 1 :\n+23 template \n+_\b2_\b4 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+25 {\n+_\b2_\b6 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bM_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b2_\b7 typedef typename MBasisFactory::Object _\bM_\bB_\ba_\bs_\bi_\bs;\n+_\b2_\b8 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\bM_\bB_\ba_\bs_\bi_\bs_\b> _\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs;\n+_\b2_\b9 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs_\b,_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\b> >\n+_\bB_\ba_\bs_\bi_\bs;\n+30\n+_\b3_\b1 typedef const _\bB_\ba_\bs_\bi_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n+_\b3_\b2 typedef std::size_t _\bK_\be_\by;\n 33\n-34 out.resize(3);\n-35\n-36 // First: the two vertex dofs\n-37 x[0] = 0.0; out[0] = f(x);\n-38 x[0] = 1.0; out[2] = f(x);\n+34 template \n+_\b3_\b5 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+36 {\n+_\b3_\b7 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n+38 };\n 39\n-40 // Then: the edge dof\n-41 x[0] = 0.5; y = f(x);\n-42 out[1] = y - 0.5*(out[0] + out[2]);\n-43\n-44 break;\n-45\n-46\n-47 case 2 :\n-48\n-49 out.resize(6);\n-50\n-51 // First: the three vertex dofs\n-52 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);\n-53 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);\n-54 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);\n-55\n-56 // Then: the three edge dofs\n-57 x[0] = 0.5; x[1] = 0.0; y = f(x);\n-58 out[1] = y - 0.5*(out[0] + out[2]);\n-59\n-60 x[0] = 0.0; x[1] = 0.5; y = f(x);\n-61 out[3] = y - 0.5*(out[0] + out[5]);\n-62\n-63 x[0] = 0.5; x[1] = 0.5; y = f(x);\n-64 out[4] = y - 0.5*(out[2] + out[5]);\n-65\n-66 break;\n-67\n-68 case 3 :\n-69\n-70 out.resize(10);\n-71\n-72 // First: the four vertex dofs\n-73 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);\n-74 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[2] = f(x);\n-75 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[5] = f(x);\n-76 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[9] = f(x);\n-77\n-78 // Then: the six edge dofs\n-79 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);\n-80 out[1] = y - 0.5*(out[0] + out[2]);\n-81\n-82 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);\n-83 out[3] = y - 0.5*(out[0] + out[5]);\n-84\n-85 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);\n-86 out[4] = y - 0.5*(out[2] + out[5]);\n-87\n-88 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n-89 out[6] = y - 0.5*(out[0] + out[9]);\n-90\n-91 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);\n-92 out[7] = y - 0.5*(out[2] + out[9]);\n-93\n-94 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);\n-95 out[8] = y - 0.5*(out[5] + out[9]);\n-96\n-97 break;\n-98\n-99 }\n-100 }\n-101\n-102 };\n-103}\n+40 template< GeometryType::Id geometryId >\n+_\b4_\b1 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( _\bK_\be_\by order )\n+42 {\n+43 /*\n+44 * The nedelec parameter begins at 1.\n+45 * This is the numbering used by J.C. Nedelec himself.\n+46 * See \"Mixed Finite Elements in \\R^3\" published in 1980.\n+47 *\n+48 * This construction is based on the construction of Raviart-Thomas elements.\n+49 * There the numbering starts at 0.\n+50 * Because of this we reduce the order internally by 1.\n+51 */\n+52 order--;\n+53 _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bF_\bi_\be_\bl_\bd_\b> vecMatrix(order);\n+54 _\bM_\bB_\ba_\bs_\bi_\bs *mbasis = MBasisFactory::template create(order+1);\n+55 std::remove_const_t* tmBasis = new std::remove_const_t\n+(*mbasis);\n+56 tmBasis->fill(vecMatrix);\n+57 return tmBasis;\n+58 }\n+_\b5_\b9 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+60 };\n+61\n+62 template \n+_\b6_\b3 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n+64 {\n+_\b6_\b5 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n+_\b6_\b6 static const unsigned int _\bd_\bi_\bm = _\bg_\be_\bo_\bm_\be_\bt_\br_\by._\bd_\bi_\bm();\n+_\b6_\b7 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bM_\bI;\n+_\b6_\b8 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bM_\bI_\b> _\bM_\bI_\bB_\ba_\bs_\bi_\bs;\n+_\b6_\b9 _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx(std::size_t order)\n+70 {\n+71 /*\n+72 * Construction of Nedelec elements see \"Mixed Finite Elements in \\R^3\" by\n+Nedelec, 1980.\n+73 *\n+74 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree\n+$\\leq k$.\n+75 * The space of Nedelec functions in $n$ dimensions with index $k$ is defined\n+as\n+76 *\n+77 * \\begin{equation*}\n+78 * Ned_k := (\\P_{n,k-1})^n \\oplus \\{p \\in (\\P_{n,k})^n: =0 \\}\n+79 * \\end{equation*}\n+80 * with $x=(x,y)$ in two dimensions and $x=(x,y,z)$ in three dimensions.\n+81 *\n+82 * For $Ned_k$ holds\n+83 * \\begin{equation*}\n+84 * (\\P_{n,k-1})^n \\subset Ned_k \\subset (\\P_{n,k})^n.\n+85 * \\end{equation*}\n+86 *\n+87 * We construct $(\\P_{n,k})^n$ and and only use the monomials contained in\n+$Ned$.\n+88 *\n+89 */\n+90 if( (_\bd_\bi_\bm!=2 && _\bd_\bi_\bm!=3) || !_\bg_\be_\bo_\bm_\be_\bt_\br_\by.isSimplex())\n+91 DUNE_THROW(Dune::NotImplemented,\"High order nedelec elements are only\n+supported by simplices in 2d and 3d\");\n+92\n+93 _\bM_\bI_\bB_\ba_\bs_\bi_\bs basis(order+1);\n+94 FieldVector< MI, dim > x;\n+95 /*\n+96 * Init MultiIndices\n+97 * x[0]=(1,0,0) x\n+98 * x[1]=(0,1,0) y\n+99 * x[2]=(0,0,1) z\n+100 */\n+101 for( unsigned int i = 0; i < _\bd_\bi_\bm; ++i )\n+102 x[i].set(i,1);\n+103 std::vector< MI > val( basis._\bs_\bi_\bz_\be() );\n 104\n-105#endif\n+105 // val now contains all monomials in $n$ dimensions with degree $\\leq\n+order+1$\n+106 basis._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( x, val );\n+107\n+108 _\bc_\bo_\bl_\b_ = basis._\bs_\bi_\bz_\be();\n+109\n+110 // get $\\dim (\\P_{n,order-1})$\n+111 unsigned int notHomogen = 0;\n+112 if (order>0)\n+113 notHomogen = basis._\bs_\bi_\bz_\be_\bs()[order-1];\n+114\n+115 // the number of basis functions for the set of homogeneous polynomials\n+with degree $order$\n+116 unsigned int homogen = basis._\bs_\bi_\bz_\be_\bs()[order]-notHomogen;\n+117\n+118 /*\n+119 * 2D:\n+120 * \\begin{equation*}\n+121 * Ned_{order} = (\\P_{order-1})^2 \\oplus (-y,x)^T \\widetilde \\P_{order-1}\n+122 * \\end{equation*}\n+123 *\n+124 * It gets more complicated in higher dimensions.\n+125 *\n+126 * 3D:\n+127 * \\begin{equation*}\n+128 * Ned_{order} = (\\P_{n,order-1})^3 \\oplus (z,0,-x)^T \\widetilde \\P_\n+{n,order-1} \\oplus (-y,x,0)^T \\widetilde \\P_{n,order-1} \\oplus (0,-z,y)^T\n+\\widetilde \\P_{n-1,order-1}\n+129 * \\end{equation*}\n+130 *\n+131 * Note the last term. The index $n-1$ is on purpose.\n+132 * Else i.e. k=2\n+133 *\n+134 * (0,z,-y)^T x = (z,0,-x)^T y - (y,-x,0)^T z.\n+135 *\n+136 */\n+137\n+138 /*\n+139 * compute the number of rows for the coefficient matrix\n+140 *\n+141 * row_ = dim* \\dim Ned_{order}\n+142 */\n+143 if (_\bd_\bi_\bm == 2)\n+144 _\br_\bo_\bw_\b_ = (notHomogen*_\bd_\bi_\bm+homogen*(_\bd_\bi_\bm+1))*_\bd_\bi_\bm;\n+145 else if (_\bd_\bi_\bm==3)\n+146 {\n+147 // get dim \\P_{n-1,order-1}\n+148 int homogenTwoVariables = 0;\n+149 for( int w = notHomogen; w0;\n+212 /*\n+213 * Init 9 rows to zero.\n+214 * If the homogeneous monomial has a positive x-exponent (0,-z,y) gets\n+skipped ( see example for the Nedelec space in 3D )\n+215 * In this case only 6 rows get initialised.\n+216 */\n+217 for (unsigned int r=0; r<_\bd_\bi_\bm*(_\bd_\bi_\bm-skipLastDim); ++r)\n+218 {\n+219 // init rows to zero\n+220 _\bm_\ba_\bt_\b_[_\br_\bo_\bw+r] = new Field[_\bc_\bo_\bl_\b_];\n+221 for (unsigned int j=0; j<_\bc_\bo_\bl_\b_; ++j)\n+222 _\bm_\ba_\bt_\b_[_\br_\bo_\bw+r][j] = 0.;\n+223 }\n+224\n+225 /*\n+226 * first $dim$ rows are for (z,0,-x)\n+227 *\n+228 * second $dim$ rows are for (-y,x,0)\n+229 *\n+230 * third $dim$ rows are for (0,-z,y)\n+231 *\n+232 */\n+233 for (unsigned int r=0; r<_\bd_\bi_\bm - skipLastDim; ++r)\n+234 {\n+235 int index = (r+_\bd_\bi_\bm-1)%_\bd_\bi_\bm;\n+236 for (int w=homogen+notHomogen; w\n+_\b2_\b6_\b7 void _\br_\bo_\bw( const unsigned int _\br_\bo_\bw, Vector &vec ) const\n+268 {\n+269 const unsigned int N = _\bc_\bo_\bl_\bs();\n+270 assert( vec.size() == N );\n+271 for (unsigned int i=0; i &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localinterpolation.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n+NedelecVecMatrix(std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\bI\n+MultiIndex< dim, Field > MI\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\b_\n+unsigned int row_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:275\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\bs\n+unsigned int cols() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:258\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\b~_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n+~NedelecVecMatrix()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:250\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\bI_\bB_\ba_\bs_\bi_\bs\n+MonomialBasis< geometryId, MI > MIBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\b_\n+unsigned int col_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:275\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bd_\bi_\bm\n+static const unsigned int dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw\n+void row(const unsigned int row, Vector &vec) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:267\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+static constexpr GeometryType geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs\n+unsigned int rows() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:262\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\ba_\bt_\b_\n+Field ** mat_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:276\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bB_\ba_\bs_\bi_\bs\n+MBasisFactory::Object MBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(Key order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const Basis Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs\n+StandardEvaluator< MBasis > EvalMBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+MonomialBasisProvider< dim, Field > MBasisFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+std::size_t Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n+MonomialBasisProvider< dd, FF > Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:440\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:476\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n+values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:498\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n+const unsigned int * sizes(unsigned int order) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:465\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:780\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bz\n+int z(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalsimplexp2localbasis.hh File Reference\n+dune-localfunctions: nedelecsimplexinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,55 +65,57 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalsimplexp2localbasis.hh File Reference
    \n+
    nedelecsimplexinterpolation.hh File Reference
    \n
    \n
    \n-\n-

    Hierarchical p2 shape functions for the simplex. \n-More...

    \n-
    #include <numeric>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n+
    #include <fstream>
    \n+#include <utility>
    \n+#include <numeric>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/localfunctions/utility/interpolationhelper.hh>
    \n+#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n+#include <dune/localfunctions/orthonormal/orthonormalbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n \n-\n-\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n \n

    \n Classes

    class  Dune::HierarchicalSimplexP2LocalBasis< D, R, dim >
    class  Dune::LocalCoefficientsContainer
     
    struct  Dune::NedelecCoefficientsFactory< dim >
     
    class  Dune::HierarchicalSimplexP2LocalBasis< D, R, 1 >
     Hierarchical P2 basis in 1d. More...
    struct  Dune::NedelecL2InterpolationBuilder< dim, Field >
     
    class  Dune::HierarchicalSimplexP2LocalBasis< D, R, 2 >
     Hierarchical P2 basis in 2d. More...
    class  Dune::NedelecL2Interpolation< dimension, F >
     An L2-based interpolation for Nedelec. More...
     
    class  Dune::HierarchicalSimplexP2LocalBasis< D, R, 3 >
     Hierarchical P2 basis in 3d. More...
    struct  Dune::NedelecL2InterpolationFactory< dim, Field >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-

    Detailed Description

    \n-

    Hierarchical p2 shape functions for the simplex.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,35 +1,39 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hierarchicalsimplexp2localbasis.hh File Reference\n-Hierarchical p2 shape functions for the simplex. _\bM_\bo_\br_\be_\b._\b._\b.\n+nedelecsimplexinterpolation.hh File Reference\n+#include \n+#include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>\n-\u00a0 Hierarchical P2 basis in 1d. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>\n-\u00a0 Hierarchical P2 basis in 2d. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>\n-\u00a0 Hierarchical P2 basis in 3d. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b>\n+\u00a0 An L2-based interpolation for Nedelec. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Hierarchical p2 shape functions for the simplex.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalsimplexp2localbasis.hh Source File\n+dune-localfunctions: nedelecsimplexinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,367 +70,817 @@\n \n \n \n \n \n \n \n
    \n-
    hierarchicalsimplexp2localbasis.hh
    \n+
    nedelecsimplexinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH
    \n-
    6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH
    \n
    7
    \n-
    12#include <numeric>
    \n+
    8#include <fstream>
    \n+
    9#include <utility>
    \n+
    10#include <numeric>
    \n+
    11
    \n+
    12#include <dune/common/exceptions.hh>
    \n
    13
    \n-
    14#include <dune/common/fvector.hh>
    \n-
    15#include <dune/common/fmatrix.hh>
    \n-
    16
    \n-\n-
    18
    \n-
    19namespace Dune
    \n-
    20{
    \n-
    21 template<class D, class R, int dim>
    \n-
    \n-\n-
    23 {
    \n-
    24 public:
    \n-
    \n-\n-
    26 {
    \n-
    27 DUNE_THROW(Dune::NotImplemented,"HierarchicalSimplexP2LocalBasis not implemented for dim > 3.");
    \n-
    28 }
    \n-
    \n-
    29 };
    \n-
    \n-
    30
    \n-
    46 template<class D, class R>
    \n-
    \n-\n-
    48 {
    \n-
    49 public:
    \n-
    51 typedef LocalBasisTraits<D,1,Dune::FieldVector<D,1>,R,1,Dune::FieldVector<R,1>,
    \n-
    52 Dune::FieldMatrix<R,1,1> > Traits;
    \n-
    53
    \n-
    \n-
    55 unsigned int size () const
    \n-
    56 {
    \n-
    57 return 3;
    \n-
    58 }
    \n-
    \n-
    59
    \n-
    \n-
    61 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    62 std::vector<typename Traits::RangeType>& out) const
    \n-
    63 {
    \n-
    64 out.resize(3);
    \n-
    65
    \n-
    66 out[0] = 1-in[0];
    \n-
    67 out[1] = 1-4*(in[0]-0.5)*(in[0]-0.5);
    \n-
    68 out[2] = in[0];
    \n-
    69 }
    \n+
    14#include <dune/geometry/quadraturerules.hh>
    \n+
    15#include <dune/geometry/referenceelements.hh>
    \n+
    16#include <dune/geometry/type.hh>
    \n+
    17
    \n+\n+\n+\n+\n+
    22
    \n+
    23namespace Dune
    \n+
    24{
    \n+
    25
    \n+
    26 // Internal Forward Declarations
    \n+
    27 // -----------------------------
    \n+
    28
    \n+
    32 template < unsigned int dim, class Field >
    \n+
    33 struct NedelecL2InterpolationFactory;
    \n+
    34
    \n+
    35
    \n+
    36
    \n+
    37 // LocalCoefficientsContainer
    \n+
    38 // --------------------------
    \n+
    39
    \n+
    \n+\n+
    41 {
    \n+\n+
    43
    \n+
    44 public:
    \n+
    45 template <class Setter>
    \n+
    \n+
    46 LocalCoefficientsContainer ( const Setter &setter )
    \n+
    47 {
    \n+
    48 setter.setLocalKeys(localKey_);
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    51 const LocalKey &localKey ( const unsigned int i ) const
    \n+
    52 {
    \n+
    53 assert( i < size() );
    \n+
    54 return localKey_[ i ];
    \n+
    55 }
    \n+
    \n+
    56
    \n+
    \n+
    57 std::size_t size () const
    \n+
    58 {
    \n+
    59 return localKey_.size();
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    62 private:
    \n+
    63 std::vector< LocalKey > localKey_;
    \n+
    64 };
    \n
    \n+
    65
    \n+
    66
    \n+
    67
    \n+
    68 // NedelecCoefficientsFactory
    \n+
    69 // --------------------------------
    \n
    70
    \n-
    72 inline void
    \n-
    \n-
    73 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    74 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    75 {
    \n-
    76 out.resize(3);
    \n-
    77
    \n-
    78 out[0][0][0] = -1;
    \n-
    79 out[1][0][0] = 4-8*in[0];
    \n-
    80 out[2][0][0] = 1;
    \n-
    81 }
    \n-
    \n-
    82
    \n-
    \n-
    84 void partial (const std::array<unsigned int, 1>& order,
    \n-
    85 const typename Traits::DomainType& in, // position
    \n-
    86 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    87 {
    \n-
    88 auto totalOrder = order[0];
    \n-
    89 if (totalOrder == 0) {
    \n-
    90 evaluateFunction(in, out);
    \n-
    91 } else if (totalOrder == 1) {
    \n-
    92 out.resize(size());
    \n-
    93 out[0] = -1;
    \n-
    94 out[1] = 4-8*in[0];
    \n-
    95 out[2] = 1;
    \n-
    96 } else if (totalOrder == 2) {
    \n-
    97 out.resize(size());
    \n-
    98 out[0] = 0;
    \n-
    99 out[1] = -8;
    \n-
    100 out[2] = 0;
    \n-
    101 } else {
    \n-
    102 out.resize(size());
    \n-
    103 out[0] = out[1] = out[2] = 0;
    \n-
    104 }
    \n-
    105 }
    \n-
    \n-
    106
    \n-
    \n-
    109 unsigned int order () const
    \n-
    110 {
    \n-
    111 return 2;
    \n-
    112 }
    \n-
    \n-
    113
    \n-
    114 };
    \n-
    \n-
    115
    \n-
    136 template<class D, class R>
    \n-
    \n-\n-
    138 {
    \n-
    139 public:
    \n-
    141 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,1,Dune::FieldVector<R,1>,
    \n-
    142 Dune::FieldMatrix<R,1,2> > Traits;
    \n-
    143
    \n-
    \n-
    145 unsigned int size () const
    \n-
    146 {
    \n-
    147 return 6;
    \n+
    71 template < unsigned int dim >
    \n+
    \n+\n+
    73 {
    \n+
    74 typedef std::size_t Key;
    \n+\n+
    76
    \n+
    77 template< GeometryType::Id geometryId >
    \n+
    \n+
    78 static Object *create( const Key &key )
    \n+
    79 {
    \n+
    80 typedef NedelecL2InterpolationFactory< dim, double > InterpolationFactory;
    \n+
    81 if( !supports< geometryId >( key ) )
    \n+
    82 return nullptr;
    \n+
    83 typename InterpolationFactory::Object *interpolation = InterpolationFactory::template create< geometryId >( key );
    \n+
    84 Object *localKeys = new Object( *interpolation );
    \n+
    85 InterpolationFactory::release( interpolation );
    \n+
    86 return localKeys;
    \n+
    87 }
    \n+
    \n+
    88
    \n+
    89 template< GeometryType::Id geometryId >
    \n+
    \n+
    90 static bool supports ( const Key &key )
    \n+
    91 {
    \n+
    92 GeometryType gt = geometryId;
    \n+
    93 return gt.isTriangle() || gt.isTetrahedron() ;
    \n+
    94 }
    \n+
    \n+
    95 static void release( Object *object ) { delete object; }
    \n+
    96 };
    \n+
    \n+
    97
    \n+
    98
    \n+
    99
    \n+
    100 // NedelecL2InterpolationBuilder
    \n+
    101 // ------------------------
    \n+
    102
    \n+
    103 // L2 Interpolation requires:
    \n+
    104 // - for element
    \n+
    105 // - test basis
    \n+
    106 // - for each face (dynamic)
    \n+
    107 // - test basis
    \n+
    108 // - tangents
    \n+
    109 // - for each edge (dynamic)
    \n+
    110 // - test basis
    \n+
    111 // - tangent
    \n+
    112 template< unsigned int dim, class Field >
    \n+
    \n+\n+
    114 {
    \n+
    115 static const unsigned int dimension = dim;
    \n+
    116
    \n+
    117 // for the dofs associated to the element
    \n+\n+\n+
    120
    \n+
    121 // for the dofs associated to the faces
    \n+\n+\n+
    124
    \n+
    125 // for the dofs associated to the edges
    \n+\n+\n+
    128
    \n+
    129 // the tangent of the edges
    \n+
    130 typedef FieldVector< Field, dimension > Tangent;
    \n+
    131
    \n+
    132 // the normal and the tangents of the faces
    \n+
    133 typedef FieldVector< Field, dimension > Normal;
    \n+
    134 typedef std::array<FieldVector< Field, dimension >,dim-1> FaceTangents;
    \n+
    135
    \n+\n+
    137
    \n+\n+\n+
    140
    \n+
    \n+\n+
    142 {
    \n+
    143 TestBasisFactory::release( testBasis_ );
    \n+
    144 for( FaceStructure &f : faceStructure_ )
    \n+\n+
    146 for( EdgeStructure& e : edgeStructure_ )
    \n+\n
    148 }
    \n
    \n
    149
    \n-
    \n-
    151 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    152 std::vector<typename Traits::RangeType>& out) const
    \n-
    153 {
    \n-
    154 out.resize(6);
    \n-
    155
    \n-
    156 out[0] = 1 - in[0] - in[1];
    \n-
    157 out[1] = 4*in[0]*(1-in[0]-in[1]);
    \n-
    158 out[2] = in[0];
    \n-
    159 out[3] = 4*in[1]*(1-in[0]-in[1]);
    \n-
    160 out[4] = 4*in[0]*in[1];
    \n-
    161 out[5] = in[1];
    \n-
    162
    \n+
    \n+
    150 unsigned int topologyId () const
    \n+
    151 {
    \n+
    152 return geometry_.id();
    \n+
    153 }
    \n+
    \n+
    154
    \n+
    \n+
    155 GeometryType type () const
    \n+
    156 {
    \n+
    157 return geometry_;
    \n+
    158 }
    \n+
    \n+
    159
    \n+
    \n+
    160 std::size_t order () const
    \n+
    161 {
    \n+
    162 return order_;
    \n
    163 }
    \n
    \n
    164
    \n-
    166 inline void
    \n-
    \n-
    167 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    168 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    169 {
    \n-
    170 out.resize(6);
    \n-
    171
    \n-
    172 out[0][0][0] = -1; out[0][0][1] = -1;
    \n-
    173 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];
    \n-
    174 out[2][0][0] = 1; out[2][0][1] = 0;
    \n-
    175 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];
    \n-
    176 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];
    \n-
    177 out[5][0][0] = 0; out[5][0][1] = 1;
    \n-
    178 }
    \n-
    \n-
    179
    \n-
    \n-
    181 void partial (const std::array<unsigned int, 2>& order,
    \n-
    182 const typename Traits::DomainType& in, // position
    \n-
    183 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    184 {
    \n-
    185 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    186 if (totalOrder == 0) {
    \n-
    187 evaluateFunction(in, out);
    \n-
    188 } else if (totalOrder == 1) {
    \n-
    189 out.resize(size());
    \n-
    190 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    191
    \n-
    192 switch (direction) {
    \n-
    193 case 0:
    \n-
    194 out[0] = -1;
    \n-
    195 out[1] = 4-8*in[0]-4*in[1];
    \n-
    196 out[2] = 1;
    \n-
    197 out[3] = -4*in[1];
    \n-
    198 out[4] = 4*in[1];
    \n-
    199 out[5] = 0;
    \n-
    200 break;
    \n-
    201 case 1:
    \n-
    202 out[0] = -1;
    \n-
    203 out[1] = -4*in[0];
    \n-
    204 out[2] = 0;
    \n-
    205 out[3] = 4-4*in[0]-8*in[1];
    \n-
    206 out[4] = 4*in[0];
    \n-
    207 out[5] = 1;
    \n-
    208 break;
    \n-
    209 default:
    \n-
    210 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    211 }
    \n-
    212 } else {
    \n-
    213 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    214 }
    \n-
    215 }
    \n-
    \n-
    216
    \n-
    \n-
    219 unsigned int order () const
    \n-
    220 {
    \n-
    221 return 2;
    \n-
    222 }
    \n-
    \n-
    223
    \n-
    224 };
    \n-
    \n-
    225
    \n-
    250 template<class D, class R>
    \n-
    \n-\n-
    252 {
    \n-
    253 public:
    \n-
    255 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
    \n-
    256 Dune::FieldMatrix<R,1,3> > Traits;
    \n-
    257
    \n-
    \n-
    259 unsigned int size () const
    \n-
    260 {
    \n-
    261 return 10;
    \n-
    262 }
    \n-
    \n+
    165 // number of faces
    \n+
    \n+
    166 unsigned int faceSize () const
    \n+
    167 {
    \n+
    168 return numberOfFaces_;
    \n+
    169 }
    \n+
    \n+
    170
    \n+
    171 // number of edges
    \n+
    \n+
    172 unsigned int edgeSize () const
    \n+
    173 {
    \n+
    174 return numberOfEdges_;
    \n+
    175 }
    \n+
    \n+
    176
    \n+
    177 // basis associated to the element
    \n+
    \n+\n+
    179 {
    \n+
    180 return testBasis_;
    \n+
    181 }
    \n+
    \n+
    182
    \n+
    183 // basis associated to face f
    \n+
    \n+
    184 TestFaceBasis *testFaceBasis ( unsigned int f ) const
    \n+
    185 {
    \n+
    186 assert( f < faceSize() );
    \n+
    187 return faceStructure_[ f ].basis_;
    \n+
    188 }
    \n+
    \n+
    189
    \n+
    190 // basis associated to edge e
    \n+
    \n+
    191 TestEdgeBasis *testEdgeBasis ( unsigned int e ) const
    \n+
    192 {
    \n+
    193 assert( e < edgeSize() );
    \n+
    194 return edgeStructure_[ e ].basis_;
    \n+
    195 }
    \n+
    \n+
    196
    \n+
    \n+
    197 const Tangent& edgeTangent ( unsigned int e ) const
    \n+
    198 {
    \n+
    199 assert( e < edgeSize() );
    \n+
    200 return edgeStructure_[ e ].tangent_;
    \n+
    201 }
    \n+
    \n+
    202
    \n+
    \n+
    203 const FaceTangents& faceTangents ( unsigned int f ) const
    \n+
    204 {
    \n+
    205 assert( f < faceSize() );
    \n+
    206 return faceStructure_[ f ].faceTangents_;
    \n+
    207 }
    \n+
    \n+
    208
    \n+
    \n+
    209 const Normal &normal ( unsigned int f ) const
    \n+
    210 {
    \n+
    211 assert( f < faceSize() );
    \n+
    212 return faceStructure_[ f ].normal_;
    \n+
    213 }
    \n+
    \n+
    214
    \n+
    215 template< GeometryType::Id geometryId >
    \n+
    \n+
    216 void build ( std::size_t order )
    \n+
    217 {
    \n+
    218 constexpr GeometryType geometry = geometryId;
    \n+
    219 order_ = order;
    \n+
    220 geometry_ = geometry;
    \n+
    221
    \n+
    222 /*
    \n+
    223 * The Nedelec parameter begins at 1.
    \n+
    224 * This is the numbering used by J.C. Nedelec himself.
    \n+
    225 * See "Mixed Finite Elements in \\R^3" published in 1980.
    \n+
    226 *
    \n+
    227 * This construction is based on the construction of Raviart-Thomas elements.
    \n+
    228 * There the numbering starts at 0.
    \n+
    229 * Because of this we reduce the order internally by 1.
    \n+
    230 */
    \n+
    231 order--;
    \n+
    232
    \n+
    233 // if dimension == 2: order-1 on element
    \n+
    234 // if dimension == 3: order-2 on element
    \n+
    235 int requiredOrder = static_cast<int>(dimension==3);
    \n+
    236 testBasis_ = (order > requiredOrder ? TestBasisFactory::template create< geometry >( order-1-requiredOrder ) : nullptr);
    \n+
    237
    \n+
    238 const auto &refElement = ReferenceElements< Field, dimension >::general( type() );
    \n+
    239
    \n+
    240 numberOfFaces_ = refElement.size( 1 );
    \n+
    241 faceStructure_.reserve( numberOfFaces_ );
    \n+
    242
    \n+
    243 // compute the basis, tangents and normals of each face
    \n+
    244 for (std::size_t i=0; i<numberOfFaces_; i++)
    \n+
    245 {
    \n+
    246 FieldVector<Field,dimension> zero(0);
    \n+\n+
    248 faceTangents.fill(zero);
    \n+
    249
    \n+
    250 // use the first dim-1 vertices of a face to compute the tangents
    \n+
    251 auto vertices = refElement.subEntities(i,1,dim).begin();
    \n+
    252 auto vertex1 = *vertices;
    \n+
    253 for(int j=1; j<dim;j++)
    \n+
    254 {
    \n+
    255 auto vertex2 = vertices[j];
    \n+
    256
    \n+
    257 faceTangents[j-1] = refElement.position(vertex2,dim) - refElement.position(vertex1,dim);
    \n+
    258
    \n+
    259 // By default, edges point from the vertex with the smaller index
    \n+
    260 // to the vertex with the larger index.
    \n+
    261 if (vertex1>vertex2)
    \n+
    262 faceTangents[j-1] *=-1;
    \n
    263
    \n-
    \n-
    265 void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    266 std::vector<typename Traits::RangeType>& out) const
    \n-
    267 {
    \n-
    268 out.resize(10);
    \n-
    269
    \n-
    270 out[0] = 1 - in[0] - in[1] - in[2];
    \n-
    271 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);
    \n-
    272 out[2] = in[0];
    \n-
    273 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);
    \n-
    274 out[4] = 4 * in[0] * in[1];
    \n-
    275 out[5] = in[1];
    \n-
    276 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);
    \n-
    277 out[7] = 4 * in[0] * in[2];
    \n-
    278 out[8] = 4 * in[1] * in[2];
    \n-
    279 out[9] = in[2];
    \n-
    280 }
    \n-
    \n-
    281
    \n-
    \n-
    283 void evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    284 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    285 {
    \n-
    286 out.resize(10);
    \n-
    287
    \n-
    288 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;
    \n-
    289 out[1][0][0] = 4-8*in[0]-4*in[1]-4*in[2]; out[1][0][1] = -4*in[0]; out[1][0][2] = -4*in[0];
    \n-
    290 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    291 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1]-4*in[2]; out[3][0][2] = -4*in[1];
    \n-
    292 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;
    \n-
    293 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;
    \n-
    294 out[6][0][0] = -4*in[2]; out[6][0][1] = -4*in[2]; out[6][0][2] = 4-4*in[0]-4*in[1]-8*in[2];
    \n-
    295 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];
    \n-
    296 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];
    \n-
    297 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;
    \n-
    298 }
    \n-
    \n-
    299
    \n-
    \n-
    301 void partial (const std::array<unsigned int, 3>& order,
    \n-
    302 const typename Traits::DomainType& in, // position
    \n-
    303 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    304 {
    \n-
    305 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    306 if (totalOrder == 0) {
    \n-
    307 evaluateFunction(in, out);
    \n-
    308 } else if (totalOrder == 1) {
    \n-
    309 out.resize(size());
    \n-
    310 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    311
    \n-
    312 switch (direction) {
    \n-
    313 case 0:
    \n-
    314 out[0] = -1;
    \n-
    315 out[1] = 4-8*in[0]-4*in[1]-4*in[2];
    \n-
    316 out[2] = 1;
    \n-
    317 out[3] = -4*in[1];
    \n-
    318 out[4] = 4*in[1];
    \n-
    319 out[5] = 0;
    \n-
    320 out[6] = -4*in[2];
    \n-
    321 out[7] = 4*in[2];
    \n-
    322 out[8] = 0;
    \n-
    323 out[9] = 0;
    \n-
    324 break;
    \n-
    325 case 1:
    \n-
    326 out[0] = -1;
    \n-
    327 out[1] = -4*in[0];
    \n-
    328 out[2] = 0;
    \n-
    329 out[3] = 4-4*in[0]-8*in[1]-4*in[2];
    \n-
    330 out[4] = 4*in[0];
    \n-
    331 out[5] = 1;
    \n-
    332 out[6] = -4*in[2];
    \n-
    333 out[7] = 0;
    \n-
    334 out[8] = 4*in[2];
    \n-
    335 out[9] = 0;
    \n-
    336 break;
    \n-
    337 case 2:
    \n-
    338 out[0] = -1;
    \n-
    339 out[1] = -4*in[0];
    \n-
    340 out[2] = 0;
    \n-
    341 out[3] = -4*in[1];
    \n-
    342 out[4] = 0;
    \n-
    343 out[5] = 0;
    \n-
    344 out[6] = 4-4*in[0]-4*in[1]-8*in[2];
    \n-
    345 out[7] = 4*in[0];
    \n-
    346 out[8] = 4*in[1];
    \n-
    347 out[9] = 1;
    \n-
    348 break;
    \n-
    349 default:
    \n-
    350 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    351 }
    \n-
    352 } else {
    \n-
    353 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    354 }
    \n-
    355 }
    \n-
    \n-
    356
    \n-
    \n-
    359 unsigned int order () const
    \n-
    360 {
    \n-
    361 return 2;
    \n-
    362 }
    \n-
    \n-
    363
    \n-
    364 };
    \n-
    \n-
    365}
    \n-
    366#endif
    \n+
    264 vertex1 = vertex2;
    \n+
    265 }
    \n+
    266
    \n+
    267 /* For simplices or cubes of arbitrary dimension you could just use
    \n+
    268 *
    \n+
    269 * ```
    \n+
    270 * GeometryType faceGeometry = Impl::getBase(geometry_);
    \n+
    271 * TestFaceBasis *faceBasis = ( dim == 3 && order > 0 ? TestFaceBasisFactory::template create< faceGeometry >( order-1 ) : nullptr);
    \n+
    272 * ```
    \n+
    273 *
    \n+
    274 * For i.e. Prisms and Pyramids in 3d this does not work because they contain squares and triangles as faces.
    \n+
    275 * And depending on the dynamic face index a different face geometry is needed.
    \n+
    276 *
    \n+
    277 */
    \n+
    278 TestFaceBasis *faceBasis = ( dim == 3 && order > 0 ? Impl::IfGeometryType< CreateFaceBasis, dimension-1 >::apply( refElement.type( i, 1 ), order-1 ) : nullptr);
    \n+
    279 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal(i), faceTangents );
    \n+
    280 }
    \n+
    281 assert( faceStructure_.size() == numberOfFaces_ );
    \n+
    282
    \n+
    283 numberOfEdges_ = refElement.size( dim-1 );
    \n+
    284 edgeStructure_.reserve( numberOfEdges_ );
    \n+
    285
    \n+
    286 // compute the basis and tangent of each edge
    \n+
    287 for (std::size_t i=0; i<numberOfEdges_; i++)
    \n+
    288 {
    \n+
    289 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n+
    290 auto v0 = *vertexIterator;
    \n+
    291 auto v1 = *(++vertexIterator);
    \n+
    292
    \n+
    293 // By default, edges point from the vertex with the smaller index
    \n+
    294 // to the vertex with the larger index.
    \n+
    295 if (v0>v1)
    \n+
    296 std::swap(v0,v1);
    \n+
    297 auto tangent = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n+
    298
    \n+
    299 TestEdgeBasis *edgeBasis = Impl::IfGeometryType< CreateEdgeBasis, 1 >::apply( refElement.type( i, dim-1 ), order );
    \n+
    300 edgeStructure_.emplace_back( edgeBasis, tangent );
    \n+
    301 }
    \n+
    302 assert( edgeStructure_.size() == numberOfEdges_ );
    \n+
    303 }
    \n+
    \n+
    304
    \n+
    305 private:
    \n+
    306
    \n+
    307 // helper struct for edges
    \n+
    308 struct EdgeStructure
    \n+
    309 {
    \n+
    310 EdgeStructure( TestEdgeBasis *teb, const Tangent &t )
    \n+
    311 : basis_( teb ), tangent_( t )
    \n+
    312 {}
    \n+
    313
    \n+
    314 TestEdgeBasis *basis_;
    \n+
    315 const Dune::FieldVector< Field, dimension > tangent_;
    \n+
    316 };
    \n+
    317
    \n+
    318 template< GeometryType::Id edgeGeometryId >
    \n+
    319 struct CreateEdgeBasis
    \n+
    320 {
    \n+
    321 static TestEdgeBasis *apply ( std::size_t order ) { return TestEdgeBasisFactory::template create< edgeGeometryId >( order ); }
    \n+
    322 };
    \n+
    323
    \n+
    324 // helper struct for faces
    \n+
    325 struct FaceStructure
    \n+
    326 {
    \n+
    327 FaceStructure( TestFaceBasis *tfb, const Normal& normal, const FaceTangents& faceTangents )
    \n+
    328 : basis_( tfb ), normal_(normal), faceTangents_( faceTangents )
    \n+
    329 {}
    \n+
    330
    \n+
    331 TestFaceBasis *basis_;
    \n+
    332 const Dune::FieldVector< Field, dimension > normal_;
    \n+
    333 const FaceTangents faceTangents_;
    \n+
    334 };
    \n+
    335
    \n+
    336 template< GeometryType::Id faceGeometryId >
    \n+
    337 struct CreateFaceBasis
    \n+
    338 {
    \n+
    339 static TestFaceBasis *apply ( std::size_t order ) { return TestFaceBasisFactory::template create< faceGeometryId >( order ); }
    \n+
    340 };
    \n+
    341
    \n+
    342 TestBasis *testBasis_ = nullptr;
    \n+
    343 std::vector< FaceStructure > faceStructure_;
    \n+
    344 unsigned int numberOfFaces_;
    \n+
    345 std::vector< EdgeStructure > edgeStructure_;
    \n+
    346 unsigned int numberOfEdges_;
    \n+
    347 GeometryType geometry_;
    \n+
    348 std::size_t order_;
    \n+
    349 };
    \n+
    \n+
    350
    \n+
    351
    \n+
    352
    \n+
    353 // NedelecL2Interpolation
    \n+
    354 // ----------------------------
    \n+
    355
    \n+
    361 template< unsigned int dimension, class F>
    \n+
    \n+\n+
    363 : public InterpolationHelper< F ,dimension >
    \n+
    364 {
    \n+\n+\n+
    367
    \n+
    368 public:
    \n+
    369 typedef F Field;
    \n+\n+\n+
    372
    \n+
    \n+\n+
    374 : order_(0),
    \n+
    375 size_(0)
    \n+
    376 {}
    \n+
    \n+
    377
    \n+
    378 template< class Function, class Vector,
    \n+
    379 decltype(std::declval<Vector>().size(),bool{}) = true,
    \n+
    380 decltype(std::declval<Vector>().resize(0u),bool{}) = true>
    \n+
    \n+
    381 void interpolate ( const Function &function, Vector &coefficients ) const
    \n+
    382 {
    \n+
    383 coefficients.resize(size());
    \n+
    384 typename Base::template Helper<Function,Vector,true> func( function,coefficients );
    \n+
    385 interpolate(func);
    \n+
    386 }
    \n+
    \n+
    387
    \n+
    388 template< class Basis, class Matrix,
    \n+
    389 decltype(std::declval<Matrix>().rows(),bool{}) = true,
    \n+
    390 decltype(std::declval<Matrix>().cols(),bool{}) = true,
    \n+
    391 decltype(std::declval<Matrix>().resize(0u,0u),bool{}) = true>
    \n+
    \n+
    392 void interpolate ( const Basis &basis, Matrix &matrix ) const
    \n+
    393 {
    \n+
    394 matrix.resize( size(), basis.size() );
    \n+
    395 typename Base::template Helper<Basis,Matrix,false> func( basis,matrix );
    \n+
    396 interpolate(func);
    \n+
    397 }
    \n+
    \n+
    398
    \n+
    \n+
    399 std::size_t order() const
    \n+
    400 {
    \n+
    401 return order_;
    \n+
    402 }
    \n+
    \n+
    \n+
    403 std::size_t size() const
    \n+
    404 {
    \n+
    405 return size_;
    \n+
    406 }
    \n+
    \n+
    407
    \n+
    408 template <GeometryType::Id geometryId>
    \n+
    \n+
    409 void build( std::size_t order )
    \n+
    410 {
    \n+
    411 size_ = 0;
    \n+
    412 order_ = order;
    \n+
    413 builder_.template build<geometryId>(order_);
    \n+
    414 if (builder_.testBasis())
    \n+
    415 size_ += dimension*builder_.testBasis()->size();
    \n+
    416
    \n+
    417 for ( unsigned int f=0; f<builder_.faceSize(); ++f )
    \n+
    418 if (builder_.testFaceBasis(f))
    \n+
    419 size_ += (dimension-1)*builder_.testFaceBasis(f)->size();
    \n+
    420
    \n+
    421 for ( unsigned int e=0; e<builder_.edgeSize(); ++e )
    \n+
    422 if (builder_.testEdgeBasis(e))
    \n+\n+
    424 }
    \n+
    \n+
    425
    \n+
    \n+
    426 void setLocalKeys(std::vector< LocalKey > &keys) const
    \n+
    427 {
    \n+
    428 keys.resize(size());
    \n+
    429 unsigned int row = 0;
    \n+
    430 for (unsigned int e=0; e<builder_.edgeSize(); ++e)
    \n+
    431 {
    \n+
    432 if (builder_.edgeSize())
    \n+
    433 for (unsigned int i=0; i<builder_.testEdgeBasis(e)->size(); ++i,++row)
    \n+
    434 keys[row] = LocalKey(e,dimension-1,i);
    \n+
    435 }
    \n+
    436 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n+
    437 {
    \n+
    438 if (builder_.faceSize())
    \n+
    439 for (unsigned int i=0; i<builder_.testFaceBasis(f)->size()*(dimension-1); ++i,++row)
    \n+
    440 keys[row] = LocalKey(f,1,i);
    \n+
    441 }
    \n+
    442
    \n+
    443 if (builder_.testBasis())
    \n+
    444 for (unsigned int i=0; i<builder_.testBasis()->size()*dimension; ++i,++row)
    \n+
    445 keys[row] = LocalKey(0,0,i);
    \n+
    446 assert( row == size() );
    \n+
    447 }
    \n+
    \n+
    448
    \n+
    449 protected:
    \n+
    450 template< class Func, class Container, bool type >
    \n+
    \n+
    451 void interpolate ( typename Base::template Helper<Func,Container,type> &func ) const
    \n+
    452 {
    \n+
    453 const Dune::GeometryType geoType( builder_.topologyId(), dimension );
    \n+
    454
    \n+
    455 std::vector<Field> testBasisVal;
    \n+
    456
    \n+
    457 for (unsigned int i=0; i<size(); ++i)
    \n+
    458 for (unsigned int j=0; j<func.size(); ++j)
    \n+
    459 func.set(i,j,0);
    \n+
    460
    \n+
    461 unsigned int row = 0;
    \n+
    462
    \n+
    463 // edge dofs:
    \n+
    464 typedef Dune::QuadratureRule<Field, 1> EdgeQuadrature;
    \n+
    465 typedef Dune::QuadratureRules<Field, 1> EdgeQuadratureRules;
    \n+
    466
    \n+
    467 const auto &refElement = Dune::ReferenceElements< Field, dimension >::general( geoType );
    \n+
    468
    \n+
    469 for (unsigned int e=0; e<builder_.edgeSize(); ++e)
    \n+
    470 {
    \n+
    471 if (!builder_.testEdgeBasis(e))
    \n+
    472 continue;
    \n+
    473 testBasisVal.resize(builder_.testEdgeBasis(e)->size());
    \n+
    474
    \n+
    475 const auto &geometry = refElement.template geometry< dimension-1 >( e );
    \n+
    476 const Dune::GeometryType subGeoType( geometry.type().id(), 1 );
    \n+
    477 const EdgeQuadrature &edgeQuad = EdgeQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n+
    478
    \n+
    479 const unsigned int quadratureSize = edgeQuad.size();
    \n+
    480 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n+
    481 {
    \n+
    482 if (dimension>1)
    \n+
    483 builder_.testEdgeBasis(e)->template evaluate<0>(edgeQuad[qi].position(),testBasisVal);
    \n+
    484 else
    \n+
    485 testBasisVal[0] = 1.;
    \n+
    486 computeEdgeDofs(row,
    \n+
    487 testBasisVal,
    \n+
    488 func.evaluate( geometry.global( edgeQuad[qi].position() ) ),
    \n+\n+
    490 edgeQuad[qi].weight(),
    \n+
    491 func);
    \n+
    492 }
    \n+
    493
    \n+
    494 row += builder_.testEdgeBasis(e)->size();
    \n+
    495 }
    \n+
    496
    \n+
    497 // face dofs:
    \n+
    498 typedef Dune::QuadratureRule<Field, dimension-1> FaceQuadrature;
    \n+
    499 typedef Dune::QuadratureRules<Field, dimension-1> FaceQuadratureRules;
    \n+
    500
    \n+
    501 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n+
    502 {
    \n+
    503 if (builder_.testFaceBasis(f))
    \n+
    504 {
    \n+
    505 testBasisVal.resize(builder_.testFaceBasis(f)->size());
    \n+
    506
    \n+
    507 const auto &geometry = refElement.template geometry< 1 >( f );
    \n+
    508 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );
    \n+
    509 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n+
    510
    \n+
    511 const unsigned int quadratureSize = faceQuad.size();
    \n+
    512 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n+
    513 {
    \n+
    514 if (dimension>1)
    \n+
    515 builder_.testFaceBasis(f)->template evaluate<0>(faceQuad[qi].position(),testBasisVal);
    \n+
    516 else
    \n+
    517 testBasisVal[0] = 1.;
    \n+
    518
    \n+
    519 computeFaceDofs( row,
    \n+
    520 testBasisVal,
    \n+
    521 func.evaluate( geometry.global( faceQuad[qi].position() ) ),
    \n+\n+
    523 builder_.normal(f),
    \n+
    524 faceQuad[qi].weight(),
    \n+
    525 func);
    \n+
    526 }
    \n+
    527
    \n+
    528 row += builder_.testFaceBasis(f)->size()*(dimension-1);
    \n+
    529 }
    \n+
    530 }
    \n+
    531
    \n+
    532 // element dofs
    \n+
    533 if (builder_.testBasis())
    \n+
    534 {
    \n+
    535 testBasisVal.resize(builder_.testBasis()->size());
    \n+
    536
    \n+
    537 typedef Dune::QuadratureRule<Field, dimension> Quadrature;
    \n+
    538 typedef Dune::QuadratureRules<Field, dimension> QuadratureRules;
    \n+
    539 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );
    \n+
    540
    \n+
    541 const unsigned int quadratureSize = elemQuad.size();
    \n+
    542 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n+
    543 {
    \n+
    544 builder_.testBasis()->template evaluate<0>(elemQuad[qi].position(),testBasisVal);
    \n+
    545 computeInteriorDofs(row,
    \n+
    546 testBasisVal,
    \n+
    547 func.evaluate(elemQuad[qi].position()),
    \n+
    548 elemQuad[qi].weight(),
    \n+
    549 func );
    \n+
    550 }
    \n+
    551
    \n+
    552 row += builder_.testBasis()->size()*dimension;
    \n+
    553 }
    \n+
    554 assert(row==size());
    \n+
    555 }
    \n+
    \n+
    556
    \n+
    557 private:
    \n+
    567 template <class MVal, class NedVal,class Matrix>
    \n+
    568 void computeEdgeDofs (unsigned int startRow,
    \n+
    569 const MVal &mVal,
    \n+
    570 const NedVal &nedVal,
    \n+
    571 const FieldVector<Field,dimension> &tangent,
    \n+
    572 const Field &weight,
    \n+
    573 Matrix &matrix) const
    \n+
    574 {
    \n+
    575 const unsigned int endRow = startRow+mVal.size();
    \n+
    576 typename NedVal::const_iterator nedIter = nedVal.begin();
    \n+
    577 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)
    \n+
    578 {
    \n+
    579 Field cFactor = (*nedIter)*tangent;
    \n+
    580 typename MVal::const_iterator mIter = mVal.begin();
    \n+
    581 for (unsigned int row = startRow; row!=endRow; ++mIter, ++row )
    \n+
    582 matrix.add(row,col, (weight*cFactor)*(*mIter) );
    \n+
    583
    \n+
    584 assert( mIter == mVal.end() );
    \n+
    585 }
    \n+
    586 }
    \n+
    587
    \n+
    598 template <class MVal, class NedVal,class Matrix>
    \n+
    599 void computeFaceDofs (unsigned int startRow,
    \n+
    600 const MVal &mVal,
    \n+
    601 const NedVal &nedVal,
    \n+
    602 const FaceTangents& faceTangents,
    \n+
    603 const FieldVector<Field,dimension> &normal,
    \n+
    604 const Field &weight,
    \n+
    605 Matrix &matrix) const
    \n+
    606 {
    \n+
    607 const unsigned int endRow = startRow+mVal.size()*(dimension-1);
    \n+
    608 typename NedVal::const_iterator nedIter = nedVal.begin();
    \n+
    609 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)
    \n+
    610 {
    \n+
    611 auto const& u=*nedIter;
    \n+
    612 auto const& n=normal;
    \n+
    613 FieldVector<Field,dimension> nedTimesNormal = { u[1]*n[2]-u[2]*n[1],
    \n+
    614 u[2]*n[0]-u[0]*n[2],
    \n+
    615 u[0]*n[1]-u[1]*n[0]};
    \n+
    616 typename MVal::const_iterator mIter = mVal.begin();
    \n+
    617 for (unsigned int row = startRow; row!=endRow; ++mIter)
    \n+
    618 {
    \n+
    619 for(int i=0; i<dimension-1;i++)
    \n+
    620 {
    \n+
    621 auto test = *mIter*faceTangents[i];
    \n+
    622 matrix.add(row+i,col, weight*(nedTimesNormal*test) );
    \n+
    623 }
    \n+
    624 row += dimension-1;
    \n+
    625 }
    \n+
    626
    \n+
    627 assert( mIter == mVal.end() );
    \n+
    628 }
    \n+
    629 }
    \n+
    630
    \n+
    639 template <class MVal, class NedVal,class Matrix>
    \n+
    640 void computeInteriorDofs (unsigned int startRow,
    \n+
    641 const MVal &mVal,
    \n+
    642 const NedVal &nedVal,
    \n+
    643 Field weight,
    \n+
    644 Matrix &matrix) const
    \n+
    645 {
    \n+
    646 const unsigned int endRow = startRow+mVal.size()*dimension;
    \n+
    647 typename NedVal::const_iterator nedIter = nedVal.begin();
    \n+
    648 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)
    \n+
    649 {
    \n+
    650 typename MVal::const_iterator mIter = mVal.begin();
    \n+
    651 for (unsigned int row = startRow; row!=endRow; ++mIter,row+=dimension )
    \n+
    652 for (unsigned int i=0; i<dimension; ++i)
    \n+
    653 matrix.add(row+i,col, (weight*(*mIter))*(*nedIter)[i] );
    \n+
    654
    \n+
    655 assert( mIter == mVal.end() );
    \n+
    656 }
    \n+
    657 }
    \n+
    658
    \n+
    659 public:
    \n+\n+
    661 std::size_t order_;
    \n+
    662 std::size_t size_;
    \n+
    663 };
    \n+
    \n+
    664
    \n+
    665 template < unsigned int dim, class Field >
    \n+
    \n+\n+
    667 {
    \n+\n+\n+
    670 typedef std::size_t Key;
    \n+
    671 typedef typename std::remove_const<Object>::type NonConstObject;
    \n+
    672
    \n+
    673 template <GeometryType::Id geometryId>
    \n+
    \n+
    674 static Object *create( const Key &key )
    \n+
    675 {
    \n+
    676 if ( !supports<geometryId>(key) )
    \n+
    677 return 0;
    \n+
    678 NonConstObject *interpol = new NonConstObject();
    \n+
    679 interpol->template build<geometryId>(key);
    \n+
    680 return interpol;
    \n+
    681 }
    \n+
    \n+
    682
    \n+
    683 template <GeometryType::Id geometryId>
    \n+
    \n+
    684 static bool supports( const Key &key )
    \n+
    685 {
    \n+
    686 GeometryType gt = geometryId;
    \n+
    687 return gt.isTriangle() || gt.isTetrahedron() ;
    \n+
    688 }
    \n+
    \n+
    689 static void release( Object *object ) { delete object; }
    \n+
    690 };
    \n+
    \n+
    691
    \n+
    692} // namespace Dune
    \n+
    693
    \n+
    694#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Definition hierarchicalsimplexp2localbasis.hh:23
    \n-
    HierarchicalSimplexP2LocalBasis()
    Definition hierarchicalsimplexp2localbasis.hh:25
    \n-
    unsigned int order() const
    Polynomial order of the shape functions (2, in this case)
    Definition hierarchicalsimplexp2localbasis.hh:109
    \n-
    LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 1 > > Traits
    export type traits for function signature
    Definition hierarchicalsimplexp2localbasis.hh:52
    \n-
    void partial(const std::array< unsigned int, 1 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:84
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:55
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:73
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:61
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 2 > > Traits
    export type traits for function signature
    Definition hierarchicalsimplexp2localbasis.hh:142
    \n-
    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 hierarchicalsimplexp2localbasis.hh:181
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:145
    \n-
    unsigned int order() const
    Polynomial order of the shape functions (2 in this case)
    Definition hierarchicalsimplexp2localbasis.hh:219
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:167
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:151
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
    export type traits for function signature
    Definition hierarchicalsimplexp2localbasis.hh:256
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:265
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:283
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:259
    \n-
    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 hierarchicalsimplexp2localbasis.hh:301
    \n-
    unsigned int order() const
    Polynomial order of the shape functions (2 in this case)
    Definition hierarchicalsimplexp2localbasis.hh:359
    \n-\n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Definition nedelecsimplexinterpolation.hh:667
    \n+
    static Object * create(const Key &key)
    Definition nedelecsimplexinterpolation.hh:674
    \n+
    const NedelecL2Interpolation< dim, Field > Object
    Definition nedelecsimplexinterpolation.hh:669
    \n+
    NedelecL2InterpolationBuilder< dim, Field > Builder
    Definition nedelecsimplexinterpolation.hh:668
    \n+
    std::size_t Key
    Definition nedelecsimplexinterpolation.hh:670
    \n+
    static bool supports(const Key &key)
    Definition nedelecsimplexinterpolation.hh:684
    \n+
    std::remove_const< Object >::type NonConstObject
    Definition nedelecsimplexinterpolation.hh:671
    \n+
    static void release(Object *object)
    Definition nedelecsimplexinterpolation.hh:689
    \n+
    Definition nedelecsimplexinterpolation.hh:41
    \n+
    LocalCoefficientsContainer(const Setter &setter)
    Definition nedelecsimplexinterpolation.hh:46
    \n+
    const LocalKey & localKey(const unsigned int i) const
    Definition nedelecsimplexinterpolation.hh:51
    \n+
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:57
    \n+
    Definition nedelecsimplexinterpolation.hh:73
    \n+
    static Object * create(const Key &key)
    Definition nedelecsimplexinterpolation.hh:78
    \n+
    static bool supports(const Key &key)
    Definition nedelecsimplexinterpolation.hh:90
    \n+
    const LocalCoefficientsContainer Object
    Definition nedelecsimplexinterpolation.hh:75
    \n+
    std::size_t Key
    Definition nedelecsimplexinterpolation.hh:74
    \n+
    static void release(Object *object)
    Definition nedelecsimplexinterpolation.hh:95
    \n+
    Definition nedelecsimplexinterpolation.hh:114
    \n+
    TestEdgeBasis * testEdgeBasis(unsigned int e) const
    Definition nedelecsimplexinterpolation.hh:191
    \n+
    ~NedelecL2InterpolationBuilder()
    Definition nedelecsimplexinterpolation.hh:141
    \n+
    GeometryType type() const
    Definition nedelecsimplexinterpolation.hh:155
    \n+
    TestBasisFactory::Object TestBasis
    Definition nedelecsimplexinterpolation.hh:119
    \n+
    FieldVector< Field, dimension > Tangent
    Definition nedelecsimplexinterpolation.hh:130
    \n+
    TestFaceBasisFactory::Object TestFaceBasis
    Definition nedelecsimplexinterpolation.hh:123
    \n+
    TestFaceBasis * testFaceBasis(unsigned int f) const
    Definition nedelecsimplexinterpolation.hh:184
    \n+
    TestEdgeBasisFactory::Object TestEdgeBasis
    Definition nedelecsimplexinterpolation.hh:127
    \n+
    FieldVector< Field, dimension > Normal
    Definition nedelecsimplexinterpolation.hh:133
    \n+
    void build(std::size_t order)
    Definition nedelecsimplexinterpolation.hh:216
    \n+
    OrthonormalBasisFactory< dimension, Field > TestBasisFactory
    Definition nedelecsimplexinterpolation.hh:118
    \n+
    OrthonormalBasisFactory< dimension-1, Field > TestFaceBasisFactory
    Definition nedelecsimplexinterpolation.hh:122
    \n+
    const FaceTangents & faceTangents(unsigned int f) const
    Definition nedelecsimplexinterpolation.hh:203
    \n+
    unsigned int faceSize() const
    Definition nedelecsimplexinterpolation.hh:166
    \n+
    TestBasis * testBasis() const
    Definition nedelecsimplexinterpolation.hh:178
    \n+
    std::array< FieldVector< Field, dimension >, dim-1 > FaceTangents
    Definition nedelecsimplexinterpolation.hh:134
    \n+
    OrthonormalBasisFactory< 1, Field > TestEdgeBasisFactory
    Definition nedelecsimplexinterpolation.hh:126
    \n+
    const Tangent & edgeTangent(unsigned int e) const
    Definition nedelecsimplexinterpolation.hh:197
    \n+
    NedelecL2InterpolationBuilder(NedelecL2InterpolationBuilder &&)=delete
    \n+
    std::size_t order() const
    Definition nedelecsimplexinterpolation.hh:160
    \n+
    unsigned int edgeSize() const
    Definition nedelecsimplexinterpolation.hh:172
    \n+
    unsigned int topologyId() const
    Definition nedelecsimplexinterpolation.hh:150
    \n+
    NedelecL2InterpolationBuilder(const NedelecL2InterpolationBuilder &)=delete
    \n+
    static const unsigned int dimension
    Definition nedelecsimplexinterpolation.hh:115
    \n+\n+
    const Normal & normal(unsigned int f) const
    Definition nedelecsimplexinterpolation.hh:209
    \n+
    An L2-based interpolation for Nedelec.
    Definition nedelecsimplexinterpolation.hh:364
    \n+
    Builder::FaceTangents FaceTangents
    Definition nedelecsimplexinterpolation.hh:371
    \n+
    F Field
    Definition nedelecsimplexinterpolation.hh:369
    \n+
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:403
    \n+
    void interpolate(typename Base::template Helper< Func, Container, type > &func) const
    Definition nedelecsimplexinterpolation.hh:451
    \n+
    std::size_t order_
    Definition nedelecsimplexinterpolation.hh:661
    \n+
    NedelecL2InterpolationBuilder< dimension, Field > Builder
    Definition nedelecsimplexinterpolation.hh:370
    \n+
    std::size_t size_
    Definition nedelecsimplexinterpolation.hh:662
    \n+
    NedelecL2Interpolation()
    Definition nedelecsimplexinterpolation.hh:373
    \n+
    void interpolate(const Function &function, Vector &coefficients) const
    Definition nedelecsimplexinterpolation.hh:381
    \n+
    void build(std::size_t order)
    Definition nedelecsimplexinterpolation.hh:409
    \n+
    std::size_t order() const
    Definition nedelecsimplexinterpolation.hh:399
    \n+
    void setLocalKeys(std::vector< LocalKey > &keys) const
    Definition nedelecsimplexinterpolation.hh:426
    \n+
    Builder builder_
    Definition nedelecsimplexinterpolation.hh:660
    \n+
    Definition orthonormalbasis.hh:20
    \n+
    static void release(Object *object)
    Definition orthonormalbasis.hh:57
    \n+
    Definition interpolationhelper.hh:21
    \n+
    Definition interpolationhelper.hh:23
    \n+
    Definition polynomialbasis.hh:65
    \n+
    unsigned int size() const
    Definition polynomialbasis.hh:113
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,403 +1,895 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2\n-hierarchicalsimplexp2localbasis.hh\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+nedelecsimplexinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH\n-6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH\n 7\n-12#include \n+8#include \n+9#include \n+10#include \n+11\n+12#include \n 13\n-14#include \n-15#include \n-16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-18\n-19namespace _\bD_\bu_\bn_\be\n-20{\n-21 template\n-_\b2_\b2 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-23 {\n-24 public:\n-_\b2_\b5 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n-26 {\n-27 DUNE_THROW(Dune::NotImplemented,\"HierarchicalSimplexP2LocalBasis not\n-implemented for dim > 3.\");\n-28 }\n-29 };\n-30\n-46 template\n-_\b4_\b7 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-48 {\n-49 public:\n-51 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b1_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b1_\b>,R,1,Dune::\n-FieldVector,\n-_\b5_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-53\n-_\b5_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-56 {\n-57 return 3;\n-58 }\n-59\n-_\b6_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-62 std::vector& out) const\n-63 {\n-64 out.resize(3);\n+14#include \n+15#include \n+16#include \n+17\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+22\n+23namespace _\bD_\bu_\bn_\be\n+24{\n+25\n+26 // Internal Forward Declarations\n+27 // -----------------------------\n+28\n+32 template < unsigned int dim, class Field >\n+33 struct NedelecL2InterpolationFactory;\n+34\n+35\n+36\n+37 // LocalCoefficientsContainer\n+38 // --------------------------\n+39\n+_\b4_\b0 class _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+41 {\n+42 typedef _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bT_\bh_\bi_\bs;\n+43\n+44 public:\n+45 template \n+_\b4_\b6 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br ( const Setter &setter )\n+47 {\n+48 setter.setLocalKeys(localKey_);\n+49 }\n+50\n+_\b5_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by ( const unsigned int i ) const\n+52 {\n+53 assert( i < _\bs_\bi_\bz_\be() );\n+54 return localKey_[ i ];\n+55 }\n+56\n+_\b5_\b7 std::size_t _\bs_\bi_\bz_\be () const\n+58 {\n+59 return localKey_.size();\n+60 }\n+61\n+62 private:\n+63 std::vector< LocalKey > localKey_;\n+64 };\n 65\n-66 out[0] = 1-in[0];\n-67 out[1] = 1-4*(in[0]-0.5)*(in[0]-0.5);\n-68 out[2] = in[0];\n-69 }\n+66\n+67\n+68 // NedelecCoefficientsFactory\n+69 // --------------------------------\n 70\n-72 inline void\n-_\b7_\b3 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-74 std::vector& out) const // return value\n-75 {\n-76 out.resize(3);\n-77\n-78 out[0][0][0] = -1;\n-79 out[1][0][0] = 4-8*in[0];\n-80 out[2][0][0] = 1;\n-81 }\n-82\n-_\b8_\b4 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-85 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-86 std::vector& out) const // return value\n-87 {\n-88 auto totalOrder = order[0];\n-89 if (totalOrder == 0) {\n-90 evaluateFunction(in, out);\n-91 } else if (totalOrder == 1) {\n-92 out.resize(size());\n-93 out[0] = -1;\n-94 out[1] = 4-8*in[0];\n-95 out[2] = 1;\n-96 } else if (totalOrder == 2) {\n-97 out.resize(size());\n-98 out[0] = 0;\n-99 out[1] = -8;\n-100 out[2] = 0;\n-101 } else {\n-102 out.resize(size());\n-103 out[0] = out[1] = out[2] = 0;\n-104 }\n-105 }\n-106\n-_\b1_\b0_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-110 {\n-111 return 2;\n-112 }\n-113\n-114 };\n-115\n-136 template\n-_\b1_\b3_\b7 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-138 {\n-139 public:\n-141 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,1,Dune::\n-FieldVector,\n-_\b1_\b4_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-143\n-_\b1_\b4_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-146 {\n-147 return 6;\n+71 template < unsigned int dim >\n+_\b7_\b2 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+73 {\n+_\b7_\b4 typedef std::size_t _\bK_\be_\by;\n+_\b7_\b5 typedef const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bO_\bb_\bj_\be_\bc_\bt;\n+76\n+77 template< GeometryType::Id geometryId >\n+_\b7_\b8 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n+79 {\n+80 typedef _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b> InterpolationFactory;\n+81 if( !supports< geometryId >( key ) )\n+82 return nullptr;\n+83 typename InterpolationFactory::Object *interpolation =\n+InterpolationFactory::template create< geometryId >( key );\n+84 _\bO_\bb_\bj_\be_\bc_\bt *localKeys = new _\bO_\bb_\bj_\be_\bc_\bt( *interpolation );\n+85 InterpolationFactory::release( interpolation );\n+86 return localKeys;\n+87 }\n+88\n+89 template< GeometryType::Id geometryId >\n+_\b9_\b0 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n+91 {\n+92 GeometryType gt = geometryId;\n+93 return gt.isTriangle() || gt.isTetrahedron() ;\n+94 }\n+_\b9_\b5 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+96 };\n+97\n+98\n+99\n+100 // NedelecL2InterpolationBuilder\n+101 // ------------------------\n+102\n+103 // L2 Interpolation requires:\n+104 // - for element\n+105 // - test basis\n+106 // - for each face (dynamic)\n+107 // - test basis\n+108 // - tangents\n+109 // - for each edge (dynamic)\n+110 // - test basis\n+111 // - tangent\n+112 template< unsigned int dim, class Field >\n+_\b1_\b1_\b3 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+114 {\n+_\b1_\b1_\b5 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+116\n+117 // for the dofs associated to the element\n+_\b1_\b1_\b8 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b1_\b1_\b9 typedef typename _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs;\n+120\n+121 // for the dofs associated to the faces\n+_\b1_\b2_\b2 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-1, Field > _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b1_\b2_\b3 typedef typename _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs;\n+124\n+125 // for the dofs associated to the edges\n+_\b1_\b2_\b6 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\b1_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b1_\b2_\b7 typedef typename _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs;\n+128\n+129 // the tangent of the edges\n+_\b1_\b3_\b0 typedef FieldVector< Field, dimension > _\bT_\ba_\bn_\bg_\be_\bn_\bt;\n+131\n+132 // the normal and the tangents of the faces\n+_\b1_\b3_\b3 typedef FieldVector< Field, dimension > _\bN_\bo_\br_\bm_\ba_\bl;\n+_\b1_\b3_\b4 typedef std::array,dim-1> _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs;\n+135\n+_\b1_\b3_\b6 _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br () = default;\n+137\n+_\b1_\b3_\b8 _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ( const _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br & ) =\n+delete;\n+_\b1_\b3_\b9 _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ( _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br && ) =\n+delete;\n+140\n+_\b1_\b4_\b1 _\b~_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ()\n+142 {\n+143 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( testBasis_ );\n+144 for( FaceStructure &f : faceStructure_ )\n+145 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( f.basis_ );\n+146 for( EdgeStructure& e : edgeStructure_ )\n+147 _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( e.basis_ );\n 148 }\n 149\n-_\b1_\b5_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-152 std::vector& out) const\n-153 {\n-154 out.resize(6);\n-155\n-156 out[0] = 1 - in[0] - in[1];\n-157 out[1] = 4*in[0]*(1-in[0]-in[1]);\n-158 out[2] = in[0];\n-159 out[3] = 4*in[1]*(1-in[0]-in[1]);\n-160 out[4] = 4*in[0]*in[1];\n-161 out[5] = in[1];\n-162\n+_\b1_\b5_\b0 unsigned int _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd () const\n+151 {\n+152 return geometry_.id();\n+153 }\n+154\n+_\b1_\b5_\b5 GeometryType _\bt_\by_\bp_\be () const\n+156 {\n+157 return geometry_;\n+158 }\n+159\n+_\b1_\b6_\b0 std::size_t _\bo_\br_\bd_\be_\br () const\n+161 {\n+162 return order_;\n 163 }\n 164\n-166 inline void\n-_\b1_\b6_\b7 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-168 std::vector& out) const // return value\n-169 {\n-170 out.resize(6);\n-171\n-172 out[0][0][0] = -1; out[0][0][1] = -1;\n-173 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];\n-174 out[2][0][0] = 1; out[2][0][1] = 0;\n-175 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];\n-176 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];\n-177 out[5][0][0] = 0; out[5][0][1] = 1;\n-178 }\n-179\n-_\b1_\b8_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-182 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-183 std::vector& out) const // return value\n-184 {\n-185 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-186 if (totalOrder == 0) {\n-187 evaluateFunction(in, out);\n-188 } else if (totalOrder == 1) {\n-189 out.resize(size());\n-190 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-191\n-192 switch (direction) {\n-193 case 0:\n-194 out[0] = -1;\n-195 out[1] = 4-8*in[0]-4*in[1];\n-196 out[2] = 1;\n-197 out[3] = -4*in[1];\n-198 out[4] = 4*in[1];\n-199 out[5] = 0;\n-200 break;\n-201 case 1:\n-202 out[0] = -1;\n-203 out[1] = -4*in[0];\n-204 out[2] = 0;\n-205 out[3] = 4-4*in[0]-8*in[1];\n-206 out[4] = 4*in[0];\n-207 out[5] = 1;\n-208 break;\n-209 default:\n-210 DUNE_THROW(RangeError, \"Component out of range.\");\n-211 }\n-212 } else {\n-213 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-214 }\n-215 }\n-216\n-_\b2_\b1_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-220 {\n-221 return 2;\n-222 }\n-223\n-224 };\n-225\n-250 template\n-_\b2_\b5_\b1 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-252 {\n-253 public:\n-255 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,1,Dune::\n-FieldVector,\n-_\b2_\b5_\b6 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-257\n-_\b2_\b5_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-260 {\n-261 return 10;\n-262 }\n+165 // number of faces\n+_\b1_\b6_\b6 unsigned int _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be () const\n+167 {\n+168 return numberOfFaces_;\n+169 }\n+170\n+171 // number of edges\n+_\b1_\b7_\b2 unsigned int _\be_\bd_\bg_\be_\bS_\bi_\bz_\be () const\n+173 {\n+174 return numberOfEdges_;\n+175 }\n+176\n+177 // basis associated to the element\n+_\b1_\b7_\b8 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs () const\n+179 {\n+180 return testBasis_;\n+181 }\n+182\n+183 // basis associated to face f\n+_\b1_\b8_\b4 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs ( unsigned int f ) const\n+185 {\n+186 assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n+187 return faceStructure_[ f ].basis_;\n+188 }\n+189\n+190 // basis associated to edge e\n+_\b1_\b9_\b1 _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs ( unsigned int e ) const\n+192 {\n+193 assert( e < _\be_\bd_\bg_\be_\bS_\bi_\bz_\be() );\n+194 return edgeStructure_[ e ].basis_;\n+195 }\n+196\n+_\b1_\b9_\b7 const _\bT_\ba_\bn_\bg_\be_\bn_\bt& _\be_\bd_\bg_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt ( unsigned int e ) const\n+198 {\n+199 assert( e < _\be_\bd_\bg_\be_\bS_\bi_\bz_\be() );\n+200 return edgeStructure_[ e ].tangent_;\n+201 }\n+202\n+_\b2_\b0_\b3 const _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs& _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs ( unsigned int f ) const\n+204 {\n+205 assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n+206 return faceStructure_[ f ].faceTangents_;\n+207 }\n+208\n+_\b2_\b0_\b9 const _\bN_\bo_\br_\bm_\ba_\bl &_\bn_\bo_\br_\bm_\ba_\bl ( unsigned int f ) const\n+210 {\n+211 assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n+212 return faceStructure_[ f ].normal_;\n+213 }\n+214\n+215 template< GeometryType::Id geometryId >\n+_\b2_\b1_\b6 void _\bb_\bu_\bi_\bl_\bd ( std::size_t _\bo_\br_\bd_\be_\br )\n+217 {\n+218 constexpr GeometryType geometry = geometryId;\n+219 order_ = _\bo_\br_\bd_\be_\br;\n+220 geometry_ = geometry;\n+221\n+222 /*\n+223 * The Nedelec parameter begins at 1.\n+224 * This is the numbering used by J.C. Nedelec himself.\n+225 * See \"Mixed Finite Elements in \\R^3\" published in 1980.\n+226 *\n+227 * This construction is based on the construction of Raviart-Thomas\n+elements.\n+228 * There the numbering starts at 0.\n+229 * Because of this we reduce the order internally by 1.\n+230 */\n+231 _\bo_\br_\bd_\be_\br--;\n+232\n+233 // if dimension == 2: order-1 on element\n+234 // if dimension == 3: order-2 on element\n+235 int requiredOrder = static_cast(_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn==3);\n+236 testBasis_ = (_\bo_\br_\bd_\be_\br > requiredOrder ? TestBasisFactory::template create<\n+geometry >( _\bo_\br_\bd_\be_\br-1-requiredOrder ) : nullptr);\n+237\n+238 const auto &refElement = ReferenceElements< Field, dimension >::general\n+( _\bt_\by_\bp_\be() );\n+239\n+240 numberOfFaces_ = refElement.size( 1 );\n+241 faceStructure_.reserve( numberOfFaces_ );\n+242\n+243 // compute the basis, tangents and normals of each face\n+244 for (std::size_t i=0; i zero(0);\n+247 _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs;\n+248 _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs.fill(zero);\n+249\n+250 // use the first dim-1 vertices of a face to compute the tangents\n+251 auto vertices = refElement.subEntities(i,1,dim).begin();\n+252 auto vertex1 = *vertices;\n+253 for(int j=1; jvertex2)\n+262 _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs[j-1] *=-1;\n 263\n-_\b2_\b6_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-266 std::vector& out) const\n-267 {\n-268 out.resize(10);\n-269\n-270 out[0] = 1 - in[0] - in[1] - in[2];\n-271 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);\n-272 out[2] = in[0];\n-273 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);\n-274 out[4] = 4 * in[0] * in[1];\n-275 out[5] = in[1];\n-276 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);\n-277 out[7] = 4 * in[0] * in[2];\n-278 out[8] = 4 * in[1] * in[2];\n-279 out[9] = in[2];\n+264 vertex1 = vertex2;\n+265 }\n+266\n+267 /* For simplices or cubes of arbitrary dimension you could just use\n+268 *\n+269 * ```\n+270 * GeometryType faceGeometry = Impl::getBase(geometry_);\n+271 * TestFaceBasis *faceBasis = ( dim == 3 && order > 0 ?\n+TestFaceBasisFactory::template create< faceGeometry >( order-1 ) : nullptr);\n+272 * ```\n+273 *\n+274 * For i.e. Prisms and Pyramids in 3d this does not work because they\n+contain squares and triangles as faces.\n+275 * And depending on the dynamic face index a different face geometry is\n+needed.\n+276 *\n+277 */\n+278 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *faceBasis = ( dim == 3 && _\bo_\br_\bd_\be_\br > 0 ? Impl::IfGeometryType<\n+CreateFaceBasis, dimension-1 >::apply( refElement.type( i, 1 ), _\bo_\br_\bd_\be_\br-1 ) :\n+nullptr);\n+279 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal\n+(i), _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs );\n 280 }\n-281\n-_\b2_\b8_\b3 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-284 std::vector& out) const // return value\n-285 {\n-286 out.resize(10);\n-287\n-288 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;\n-289 out[1][0][0] = 4-8*in[0]-4*in[1]-4*in[2]; out[1][0][1] = -4*in[0]; out[1]\n-[0][2] = -4*in[0];\n-290 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;\n-291 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1]-4*in[2]; out[3]\n-[0][2] = -4*in[1];\n-292 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;\n-293 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;\n-294 out[6][0][0] = -4*in[2]; out[6][0][1] = -4*in[2]; out[6][0][2] = 4-4*in[0]-\n-4*in[1]-8*in[2];\n-295 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];\n-296 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];\n-297 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;\n-298 }\n-299\n-_\b3_\b0_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-302 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-303 std::vector& out) const // return value\n-304 {\n-305 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-306 if (totalOrder == 0) {\n-307 evaluateFunction(in, out);\n-308 } else if (totalOrder == 1) {\n-309 out.resize(size());\n-310 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-311\n-312 switch (direction) {\n-313 case 0:\n-314 out[0] = -1;\n-315 out[1] = 4-8*in[0]-4*in[1]-4*in[2];\n-316 out[2] = 1;\n-317 out[3] = -4*in[1];\n-318 out[4] = 4*in[1];\n-319 out[5] = 0;\n-320 out[6] = -4*in[2];\n-321 out[7] = 4*in[2];\n-322 out[8] = 0;\n-323 out[9] = 0;\n-324 break;\n-325 case 1:\n-326 out[0] = -1;\n-327 out[1] = -4*in[0];\n-328 out[2] = 0;\n-329 out[3] = 4-4*in[0]-8*in[1]-4*in[2];\n-330 out[4] = 4*in[0];\n-331 out[5] = 1;\n-332 out[6] = -4*in[2];\n-333 out[7] = 0;\n-334 out[8] = 4*in[2];\n-335 out[9] = 0;\n-336 break;\n-337 case 2:\n-338 out[0] = -1;\n-339 out[1] = -4*in[0];\n-340 out[2] = 0;\n-341 out[3] = -4*in[1];\n-342 out[4] = 0;\n-343 out[5] = 0;\n-344 out[6] = 4-4*in[0]-4*in[1]-8*in[2];\n-345 out[7] = 4*in[0];\n-346 out[8] = 4*in[1];\n-347 out[9] = 1;\n-348 break;\n-349 default:\n-350 DUNE_THROW(RangeError, \"Component out of range.\");\n-351 }\n-352 } else {\n-353 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-354 }\n-355 }\n-356\n-_\b3_\b5_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-360 {\n-361 return 2;\n-362 }\n-363\n-364 };\n-365}\n-366#endif\n+281 assert( faceStructure_.size() == numberOfFaces_ );\n+282\n+283 numberOfEdges_ = refElement.size( dim-1 );\n+284 edgeStructure_.reserve( numberOfEdges_ );\n+285\n+286 // compute the basis and tangent of each edge\n+287 for (std::size_t i=0; iv1)\n+296 std::swap(v0,v1);\n+297 auto tangent = refElement.position(v1,dim) - refElement.position(v0,dim);\n+298\n+299 _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *edgeBasis = Impl::IfGeometryType< CreateEdgeBasis, 1 >::\n+apply( refElement.type( i, dim-1 ), _\bo_\br_\bd_\be_\br );\n+300 edgeStructure_.emplace_back( edgeBasis, tangent );\n+301 }\n+302 assert( edgeStructure_.size() == numberOfEdges_ );\n+303 }\n+304\n+305 private:\n+306\n+307 // helper struct for edges\n+308 struct EdgeStructure\n+309 {\n+310 EdgeStructure( _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *teb, const _\bT_\ba_\bn_\bg_\be_\bn_\bt &t )\n+311 : basis_( teb ), tangent_( t )\n+312 {}\n+313\n+314 _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *basis_;\n+315 const Dune::FieldVector< Field, dimension > tangent_;\n+316 };\n+317\n+318 template< GeometryType::Id edgeGeometryId >\n+319 struct CreateEdgeBasis\n+320 {\n+321 static _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *apply ( std::size_t _\bo_\br_\bd_\be_\br ) { return\n+TestEdgeBasisFactory::template create< edgeGeometryId >( _\bo_\br_\bd_\be_\br ); }\n+322 };\n+323\n+324 // helper struct for faces\n+325 struct FaceStructure\n+326 {\n+327 FaceStructure( _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *tfb, const _\bN_\bo_\br_\bm_\ba_\bl& _\bn_\bo_\br_\bm_\ba_\bl, const\n+_\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs& _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs )\n+328 : basis_( tfb ), normal_(_\bn_\bo_\br_\bm_\ba_\bl), faceTangents_( _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs )\n+329 {}\n+330\n+331 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *basis_;\n+332 const Dune::FieldVector< Field, dimension > normal_;\n+333 const _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs faceTangents_;\n+334 };\n+335\n+336 template< GeometryType::Id faceGeometryId >\n+337 struct CreateFaceBasis\n+338 {\n+339 static _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *apply ( std::size_t _\bo_\br_\bd_\be_\br ) { return\n+TestFaceBasisFactory::template create< faceGeometryId >( _\bo_\br_\bd_\be_\br ); }\n+340 };\n+341\n+342 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *testBasis_ = nullptr;\n+343 std::vector< FaceStructure > faceStructure_;\n+344 unsigned int numberOfFaces_;\n+345 std::vector< EdgeStructure > edgeStructure_;\n+346 unsigned int numberOfEdges_;\n+347 GeometryType geometry_;\n+348 std::size_t order_;\n+349 };\n+350\n+351\n+352\n+353 // NedelecL2Interpolation\n+354 // ----------------------------\n+355\n+361 template< unsigned int dimension, class F>\n+_\b3_\b6_\b2 class _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+363 : public _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br< F ,dimension >\n+364 {\n+365 typedef _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n+366 typedef _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b> _\bB_\ba_\bs_\be;\n+367\n+368 public:\n+_\b3_\b6_\b9 typedef F _\bF_\bi_\be_\bl_\bd;\n+_\b3_\b7_\b0 typedef _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\bu_\bi_\bl_\bd_\be_\br;\n+_\b3_\b7_\b1 typedef typename _\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs;\n+372\n+_\b3_\b7_\b3 _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n+374 : _\bo_\br_\bd_\be_\br_\b_(0),\n+375 _\bs_\bi_\bz_\be_\b_(0)\n+376 {}\n+377\n+378 template< class Function, class Vector,\n+379 decltype(std::declval().size(),bool{}) = true,\n+380 decltype(std::declval().resize(0u),bool{}) = true>\n+_\b3_\b8_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, Vector &coefficients ) const\n+382 {\n+383 coefficients.resize(_\bs_\bi_\bz_\be());\n+384 typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\bV_\be_\bc_\bt_\bo_\br_\b,_\bt_\br_\bu_\be_\b> func\n+( function,coefficients );\n+385 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n+386 }\n+387\n+388 template< class Basis, class Matrix,\n+389 decltype(std::declval().rows(),bool{}) = true,\n+390 decltype(std::declval().cols(),bool{}) = true,\n+391 decltype(std::declval().resize(0u,0u),bool{}) = true>\n+_\b3_\b9_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Basis &basis, Matrix &matrix ) const\n+393 {\n+394 matrix.resize( _\bs_\bi_\bz_\be(), basis.size() );\n+395 typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bB_\ba_\bs_\bi_\bs_\b,_\bM_\ba_\bt_\br_\bi_\bx_\b,_\bf_\ba_\bl_\bs_\be_\b> func( basis,matrix );\n+396 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n+397 }\n+398\n+_\b3_\b9_\b9 std::size_t _\bo_\br_\bd_\be_\br() const\n+400 {\n+401 return _\bo_\br_\bd_\be_\br_\b_;\n+402 }\n+_\b4_\b0_\b3 std::size_t _\bs_\bi_\bz_\be() const\n+404 {\n+405 return _\bs_\bi_\bz_\be_\b_;\n+406 }\n+407\n+408 template \n+_\b4_\b0_\b9 void _\bb_\bu_\bi_\bl_\bd( std::size_t _\bo_\br_\bd_\be_\br )\n+410 {\n+411 _\bs_\bi_\bz_\be_\b_ = 0;\n+412 _\bo_\br_\bd_\be_\br_\b_ = _\bo_\br_\bd_\be_\br;\n+413 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_.template build(_\bo_\br_\bd_\be_\br_\b_);\n+414 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n+415 _\bs_\bi_\bz_\be_\b_ += dimension*_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be();\n+416\n+417 for ( unsigned int f=0; f<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be(); ++f )\n+418 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f))\n+419 _\bs_\bi_\bz_\be_\b_ += (dimension-1)*_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be();\n+420\n+421 for ( unsigned int e=0; e<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be(); ++e )\n+422 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e))\n+423 _\bs_\bi_\bz_\be_\b_ += _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->_\bs_\bi_\bz_\be();\n+424 }\n+425\n+_\b4_\b2_\b6 void _\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs(std::vector< LocalKey > &keys) const\n+427 {\n+428 keys.resize(_\bs_\bi_\bz_\be());\n+429 unsigned int row = 0;\n+430 for (unsigned int e=0; e<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be(); ++e)\n+431 {\n+432 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be())\n+433 for (unsigned int i=0; i<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->_\bs_\bi_\bz_\be(); ++i,++row)\n+434 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(e,dimension-1,i);\n+435 }\n+436 for (unsigned int f=0; f<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be(); ++f)\n+437 {\n+438 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be())\n+439 for (unsigned int i=0; i<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be()*(dimension-1);\n+++i,++row)\n+440 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(f,1,i);\n+441 }\n+442\n+443 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n+444 for (unsigned int i=0; i<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be()*dimension; ++i,++row)\n+445 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n+446 assert( row == _\bs_\bi_\bz_\be() );\n+447 }\n+448\n+449 protected:\n+450 template< class Func, class Container, bool type >\n+_\b4_\b5_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\bu_\bn_\bc_\b,_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b,_\bt_\by_\bp_\be_\b>\n+&func ) const\n+452 {\n+453 const Dune::GeometryType geoType( _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd(), dimension );\n+454\n+455 std::vector testBasisVal;\n+456\n+457 for (unsigned int i=0; i<_\bs_\bi_\bz_\be(); ++i)\n+458 for (unsigned int j=0; j EdgeQuadrature;\n+465 typedef Dune::QuadratureRules EdgeQuadratureRules;\n+466\n+467 const auto &refElement = Dune::ReferenceElements< Field, dimension >::\n+general( geoType );\n+468\n+469 for (unsigned int e=0; e<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be(); ++e)\n+470 {\n+471 if (!_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e))\n+472 continue;\n+473 testBasisVal.resize(_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->_\bs_\bi_\bz_\be());\n+474\n+475 const auto &geometry = refElement.template geometry< dimension-1 >( e );\n+476 const Dune::GeometryType subGeoType( geometry.type().id(), 1 );\n+477 const EdgeQuadrature &edgeQuad = EdgeQuadratureRules::rule( subGeoType,\n+2*_\bo_\br_\bd_\be_\br_\b_+2 );\n+478\n+479 const unsigned int quadratureSize = edgeQuad.size();\n+480 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n+481 {\n+482 if (dimension>1)\n+483 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->template evaluate<0>(edgeQuad[qi].position\n+(),testBasisVal);\n+484 else\n+485 testBasisVal[0] = 1.;\n+486 computeEdgeDofs(row,\n+487 testBasisVal,\n+488 func.evaluate( geometry.global( edgeQuad[qi].position() ) ),\n+489 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt(e),\n+490 edgeQuad[qi].weight(),\n+491 func);\n+492 }\n+493\n+494 row += _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->_\bs_\bi_\bz_\be();\n+495 }\n+496\n+497 // face dofs:\n+498 typedef Dune::QuadratureRule<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadrature;\n+499 typedef Dune::QuadratureRules<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadratureRules;\n+500\n+501 for (unsigned int f=0; f<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be(); ++f)\n+502 {\n+503 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f))\n+504 {\n+505 testBasisVal.resize(_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be());\n+506\n+507 const auto &geometry = refElement.template geometry< 1 >( f );\n+508 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );\n+509 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType,\n+2*_\bo_\br_\bd_\be_\br_\b_+2 );\n+510\n+511 const unsigned int quadratureSize = faceQuad.size();\n+512 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n+513 {\n+514 if (dimension>1)\n+515 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->template evaluate<0>(faceQuad[qi].position\n+(),testBasisVal);\n+516 else\n+517 testBasisVal[0] = 1.;\n+518\n+519 computeFaceDofs( row,\n+520 testBasisVal,\n+521 func.evaluate( geometry.global( faceQuad[qi].position() ) ),\n+522 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs(f),\n+523 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bn_\bo_\br_\bm_\ba_\bl(f),\n+524 faceQuad[qi].weight(),\n+525 func);\n+526 }\n+527\n+528 row += _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be()*(dimension-1);\n+529 }\n+530 }\n+531\n+532 // element dofs\n+533 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n+534 {\n+535 testBasisVal.resize(_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be());\n+536\n+537 typedef Dune::QuadratureRule Quadrature;\n+538 typedef Dune::QuadratureRules QuadratureRules;\n+539 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*_\bo_\br_\bd_\be_\br_\b_+1 );\n+540\n+541 const unsigned int quadratureSize = elemQuad.size();\n+542 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n+543 {\n+544 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->template evaluate<0>(elemQuad[qi].position\n+(),testBasisVal);\n+545 computeInteriorDofs(row,\n+546 testBasisVal,\n+547 func.evaluate(elemQuad[qi].position()),\n+548 elemQuad[qi].weight(),\n+549 func );\n+550 }\n+551\n+552 row += _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be()*dimension;\n+553 }\n+554 assert(row==_\bs_\bi_\bz_\be());\n+555 }\n+556\n+557 private:\n+567 template \n+568 void computeEdgeDofs (unsigned int startRow,\n+569 const MVal &mVal,\n+570 const NedVal &nedVal,\n+571 const FieldVector &tangent,\n+572 const _\bF_\bi_\be_\bl_\bd &weight,\n+573 Matrix &matrix) const\n+574 {\n+575 const unsigned int endRow = startRow+mVal.size();\n+576 typename NedVal::const_iterator nedIter = nedVal.begin();\n+577 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)\n+578 {\n+579 _\bF_\bi_\be_\bl_\bd cFactor = (*nedIter)*tangent;\n+580 typename MVal::const_iterator mIter = mVal.begin();\n+581 for (unsigned int row = startRow; row!=endRow; ++mIter, ++row )\n+582 matrix.add(row,col, (weight*cFactor)*(*mIter) );\n+583\n+584 assert( mIter == mVal.end() );\n+585 }\n+586 }\n+587\n+598 template \n+599 void computeFaceDofs (unsigned int startRow,\n+600 const MVal &mVal,\n+601 const NedVal &nedVal,\n+602 const _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs& faceTangents,\n+603 const FieldVector &normal,\n+604 const _\bF_\bi_\be_\bl_\bd &weight,\n+605 Matrix &matrix) const\n+606 {\n+607 const unsigned int endRow = startRow+mVal.size()*(dimension-1);\n+608 typename NedVal::const_iterator nedIter = nedVal.begin();\n+609 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)\n+610 {\n+611 auto const& u=*nedIter;\n+612 auto const& n=normal;\n+613 FieldVector nedTimesNormal = { u[1]*n[2]-u[2]*n[1],\n+614 u[2]*n[0]-u[0]*n[2],\n+615 u[0]*n[1]-u[1]*n[0]};\n+616 typename MVal::const_iterator mIter = mVal.begin();\n+617 for (unsigned int row = startRow; row!=endRow; ++mIter)\n+618 {\n+619 for(int i=0; i\n+640 void computeInteriorDofs (unsigned int startRow,\n+641 const MVal &mVal,\n+642 const NedVal &nedVal,\n+643 _\bF_\bi_\be_\bl_\bd weight,\n+644 Matrix &matrix) const\n+645 {\n+646 const unsigned int endRow = startRow+mVal.size()*dimension;\n+647 typename NedVal::const_iterator nedIter = nedVal.begin();\n+648 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)\n+649 {\n+650 typename MVal::const_iterator mIter = mVal.begin();\n+651 for (unsigned int row = startRow; row!=endRow; ++mIter,row+=dimension )\n+652 for (unsigned int i=0; i\n+_\b6_\b6_\b6 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+667 {\n+_\b6_\b6_\b8 typedef _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\bu_\bi_\bl_\bd_\be_\br;\n+_\b6_\b6_\b9 typedef const _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bO_\bb_\bj_\be_\bc_\bt;\n+_\b6_\b7_\b0 typedef std::size_t _\bK_\be_\by;\n+_\b6_\b7_\b1 typedef typename std::remove_const::type _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt;\n+672\n+673 template \n+_\b6_\b7_\b4 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n+675 {\n+676 if ( !supports(key) )\n+677 return 0;\n+678 _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt *interpol = new _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt();\n+679 interpol->template build(key);\n+680 return interpol;\n+681 }\n+682\n+683 template \n+_\b6_\b8_\b4 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs( const _\bK_\be_\by &key )\n+685 {\n+686 GeometryType gt = geometryId;\n+687 return gt.isTriangle() || gt.isTetrahedron() ;\n+688 }\n+_\b6_\b8_\b9 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+690 };\n+691\n+692} // namespace Dune\n+693\n+694#endif // #ifndef\n+DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH\n+_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh\n+_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-HierarchicalSimplexP2LocalBasis()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions (2, in this case)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R,\n-1 >, Dune::FieldMatrix< R, 1, 1 > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 1 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:667\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:674\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const NedelecL2Interpolation< dim, Field > Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:669\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\bu_\bi_\bl_\bd_\be_\br\n+NedelecL2InterpolationBuilder< dim, Field > Builder\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:668\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+std::size_t Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:670\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n+static bool supports(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:684\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt\n+std::remove_const< Object >::type NonConstObject\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:671\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:689\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+LocalCoefficientsContainer(const Setter &setter)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(const unsigned int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n+static bool supports(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const LocalCoefficientsContainer Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+std::size_t Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs\n+TestEdgeBasis * testEdgeBasis(unsigned int e) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\b~_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+~NedelecL2InterpolationBuilder()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs\n+TestBasisFactory::Object TestBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\ba_\bn_\bg_\be_\bn_\bt\n+FieldVector< Field, dimension > Tangent\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs\n+TestFaceBasisFactory::Object TestFaceBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:123\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs\n+TestFaceBasis * testFaceBasis(unsigned int f) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:184\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs\n+TestEdgeBasisFactory::Object TestEdgeBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< Field, dimension > Normal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n+void build(std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+OrthonormalBasisFactory< dimension, Field > TestBasisFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+OrthonormalBasisFactory< dimension-1, Field > TestFaceBasisFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs\n+const FaceTangents & faceTangents(unsigned int f) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:203\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be\n+unsigned int faceSize() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs\n+TestBasis * testBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:178\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs\n+std::array< FieldVector< Field, dimension >, dim-1 > FaceTangents\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+OrthonormalBasisFactory< 1, Field > TestEdgeBasisFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:126\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\be_\bd_\bg_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt\n+const Tangent & edgeTangent(unsigned int e) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+NedelecL2InterpolationBuilder(NedelecL2InterpolationBuilder &&)=delete\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\be_\bd_\bg_\be_\bS_\bi_\bz_\be\n+unsigned int edgeSize() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:172\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd\n+unsigned int topologyId() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:150\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+NedelecL2InterpolationBuilder(const NedelecL2InterpolationBuilder &)=delete\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+NedelecL2InterpolationBuilder()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bn_\bo_\br_\bm_\ba_\bl\n+const Normal & normal(unsigned int f) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:209\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+An L2-based interpolation for Nedelec.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:364\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs\n+Builder::FaceTangents FaceTangents\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:371\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:369\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:403\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(typename Base::template Helper< Func, Container, type > &func)\n+const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:451\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n+std::size_t order_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:661\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bu_\bi_\bl_\bd_\be_\br\n+NedelecL2InterpolationBuilder< dimension, Field > Builder\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:370\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bi_\bz_\be_\b_\n+std::size_t size_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:662\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+NedelecL2Interpolation()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:373\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const Function &function, Vector &coefficients) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:381\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n+void build(std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:409\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:399\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs\n+void setLocalKeys(std::vector< LocalKey > &keys) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:426\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_\n+Builder builder_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:660\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R,\n-1 >, Dune::FieldMatrix< R, 1, 2 > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:181\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions (2 in this case)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:219\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R,\n-1 >, Dune::FieldMatrix< R, 1, 3 > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:256\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:265\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:283\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:259\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:301\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions (2 in this case)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:359\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:113\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalp2.hh File Reference\n+dune-localfunctions: nedelecsimplexbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalp2.hh File Reference
    \n+
    nedelecsimplexbasis.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n-#include "hierarchicalp2/hierarchicalsimplexp2localbasis.hh"
    \n-#include "hierarchicalp2/hierarchicalsimplexp2localinterpolation.hh"
    \n+
    #include <fstream>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/localfunctions/utility/defaultbasisfactory.hh>
    \n+#include "nedelecsimplexinterpolation.hh"
    \n+#include "nedelecsimplexprebasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n \n

    \n Classes

    class  Dune::HierarchicalP2LocalFiniteElement< D, R, dim >
    struct  Dune::NedelecBasisFactory< dim, SF, CF >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hierarchicalp2.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+nedelecsimplexbasis.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+#include \"_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include \"_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalp2.hh Source File\n+dune-localfunctions: nedelecsimplexbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,55 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    hierarchicalp2.hh
    \n+
    nedelecsimplexbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH
    \n-
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-\n-
    12
    \n-\n-\n+
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH
    \n+
    6
    \n+
    7#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH
    \n+
    8
    \n+
    9#include <fstream>
    \n+
    10#include <dune/common/exceptions.hh>
    \n+
    11
    \n+\n+\n+\n
    15
    \n
    16namespace Dune
    \n
    17{
    \n-
    18
    \n-
    21 template<class D, class R, int dim>
    \n-
    \n-\n-
    23 {
    \n-
    24
    \n-
    25 static_assert(1 <= dim && dim <= 3,
    \n-
    26 "HierarchicalP2LocalFiniteElement only implemented for dim==1, 2, 3.");
    \n-
    27
    \n-
    28 public:
    \n-\n-\n-\n-\n-
    35
    \n-\n-
    40
    \n-
    \n-
    43 const typename Traits::LocalBasisType& localBasis () const
    \n-
    44 {
    \n-
    45 return basis;
    \n-
    46 }
    \n-
    \n-
    47
    \n-
    \n-\n-
    51 {
    \n-
    52 return coefficients;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    \n-\n-
    58 {
    \n-
    59 return interpolation;
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    \n-
    63 unsigned int size () const
    \n-
    64 {
    \n-
    65 return basis.size();
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    70 static constexpr GeometryType type ()
    \n-
    71 {
    \n-
    72 return GeometryTypes::simplex(dim);
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-\n-
    77
    \n-
    78 typename Traits::LocalCoefficientsType coefficients;
    \n-
    79
    \n-\n-
    81 };
    \n-
    \n-
    82
    \n-
    83}
    \n-
    84
    \n-
    85#endif
    \n-\n-\n-\n-
    Hierarchical p2 shape functions for the simplex.
    \n+
    38 template< unsigned int dim, class SF, class CF >
    \n+
    \n+\n+
    40 : public DefaultBasisFactory< NedelecPreBasisFactory<dim,CF>,
    \n+
    41 NedelecL2InterpolationFactory<dim,CF>,
    \n+
    42 dim,dim,SF,CF >
    \n+
    43 {};
    \n+
    \n+
    44}
    \n+
    45
    \n+
    46#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Definition hierarchicalp2.hh:23
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition hierarchicalp2.hh:43
    \n-
    HierarchicalP2LocalFiniteElement()
    Definition hierarchicalp2.hh:38
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition hierarchicalp2.hh:63
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition hierarchicalp2.hh:50
    \n-
    LocalFiniteElementTraits< HierarchicalSimplexP2LocalBasis< D, R, dim >, typename LagrangeSimplexLocalFiniteElement< D, R, dim, 2 >::Traits::LocalCoefficientsType, HierarchicalSimplexP2LocalInterpolation< HierarchicalSimplexP2LocalBasis< D, R, dim > > > Traits
    Definition hierarchicalp2.hh:34
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition hierarchicalp2.hh:57
    \n-
    static constexpr GeometryType type()
    Definition hierarchicalp2.hh:70
    \n-
    Definition hierarchicalsimplexp2localbasis.hh:23
    \n-
    Definition hierarchicalsimplexp2localinterpolation.hh:17
    \n+
    Definition nedelecsimplexbasis.hh:43
    \n+
    Definition defaultbasisfactory.hh:38
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,137 +1,49 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n-hierarchicalp2.hh\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+nedelecsimplexbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH\n-6#define DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH\n-7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-12\n-13#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-14#include \"_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH\n+6\n+7#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH\n+8\n+9#include \n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+13#include \"_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+14#include \"_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n 15\n 16namespace _\bD_\bu_\bn_\be\n 17{\n-18\n-21 template\n-_\b2_\b2 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-23 {\n-24\n-25 static_assert(1 <= dim && dim <= 3,\n-26 \"HierarchicalP2LocalFiniteElement only implemented for dim==1, 2, 3.\");\n-27\n-28 public:\n-31 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-32 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,\n-33 typename _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\b2_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be,\n-_\b3_\b4\n-_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>\n-> > _\bT_\br_\ba_\bi_\bt_\bs;\n-35\n-_\b3_\b8 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-39 {}\n-40\n-_\b4_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-44 {\n-45 return basis;\n-46 }\n-47\n-_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-51 {\n-52 return coefficients;\n-53 }\n-54\n-_\b5_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-58 {\n-59 return interpolation;\n-60 }\n-61\n-_\b6_\b3 unsigned int _\bs_\bi_\bz_\be () const\n-64 {\n-65 return basis.size();\n-66 }\n-67\n-_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-71 {\n-72 return GeometryTypes::simplex(dim);\n-73 }\n-74\n-75 private:\n-76 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> basis;\n-77\n-78 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients;\n-79\n-80\n-_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>\n-> interpolation;\n-81 };\n-82\n-83}\n-84\n-85#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b2_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-Hierarchical p2 shape functions for the simplex.\n+38 template< unsigned int dim, class SF, class CF >\n+_\b3_\b9 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+40 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< NedelecPreBasisFactory,\n+41 NedelecL2InterpolationFactory,\n+42 dim,dim,SF,CF >\n+43 {};\n+44}\n+45\n+46#endif // #ifndef\n+DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH\n+_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-HierarchicalP2LocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< HierarchicalSimplexP2LocalBasis< D, R, dim >,\n-typename LagrangeSimplexLocalFiniteElement< D, R, dim, 2 >::Traits::\n-LocalCoefficientsType, HierarchicalSimplexP2LocalInterpolation<\n-HierarchicalSimplexP2LocalBasis< D, R, dim > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localbasis.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localinterpolation.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:38\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalp1withelementbubble.hh File Reference\n+dune-localfunctions: nedelec1stkindsimplex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,45 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalp1withelementbubble.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    nedelec1stkindsimplex.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/enriched/simplexp1bubble.hh>
    \n+
    #include <numeric>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::Nedelec1stKindSimplexLocalFiniteElement< D, R, dim, k >
     N\u00e9d\u00e9lec elements of the first kind for simplex elements. More...
     
    \n \n \n \n-

    \n Namespaces

    namespace  Dune
     
    \n-\n-\n-\n-\n-\n

    \n-Typedefs

    template<class D , class R , int dim>
    using Dune::HierarchicalP1WithElementBubbleLocalFiniteElement = SimplexP1BubbleLocalFiniteElement< D, R, dim >
     Linear Lagrange functions enriched with an element bubble function.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-us-ascii\n+utf-8\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-hierarchicalp1withelementbubble.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+nedelec1stkindsimplex.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n+\u00a0 N\u00c3\u00a9d\u00c3\u00a9lec elements of the first kind for simplex elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b1_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt =\n- _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt< D, R, dim >\n-\u00a0 Linear Lagrange functions enriched with an element bubble function.\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalp1withelementbubble.hh Source File\n+dune-localfunctions: nedelec1stkindsimplex.hh Source File\n \n \n \n \n \n \n \n@@ -70,41 +70,423 @@\n
    \n \n \n \n \n \n \n
    \n-
    hierarchicalp1withelementbubble.hh
    \n+
    nedelec1stkindsimplex.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH
    \n
    7
    \n-\n+
    8#include <numeric>
    \n
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    16 template<class D, class R, int dim>
    \n-\n-\n-
    19}
    \n-
    20
    \n-
    21#endif // DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n-\n+
    10#include <dune/common/fmatrix.hh>
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12
    \n+
    13#include <dune/geometry/referenceelements.hh>
    \n+
    14#include <dune/geometry/type.hh>
    \n+
    15
    \n+\n+\n+\n+
    19
    \n+
    20namespace Dune
    \n+
    21{
    \n+
    22namespace Impl
    \n+
    23{
    \n+
    36 template<class D, class R, int dim, int k>
    \n+
    37 class Nedelec1stKindSimplexLocalBasis
    \n+
    38 {
    \n+
    39 // Number of edges of the reference simplex
    \n+
    40 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
    \n+
    41
    \n+
    42 public:
    \n+
    43 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,
    \n+
    44 R,dim,FieldVector<R,dim>,
    \n+
    45 FieldMatrix<R,dim,dim> >;
    \n+
    46
    \n+
    53 Nedelec1stKindSimplexLocalBasis()
    \n+
    54 {
    \n+
    55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
    \n+
    56 }
    \n+
    57
    \n+
    60 Nedelec1stKindSimplexLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
    \n+
    61 : Nedelec1stKindSimplexLocalBasis()
    \n+
    62 {
    \n+
    63 for (std::size_t i=0; i<edgeOrientation_.size(); i++)
    \n+
    64 edgeOrientation_[i] *= edgeOrientation[i] ? -1.0 : 1.0;
    \n+
    65 }
    \n+
    66
    \n+
    68 static constexpr unsigned int size()
    \n+
    69 {
    \n+
    70 static_assert(dim==2 || dim==3, "Nedelec shape functions are implemented only for 2d and 3d simplices.");
    \n+
    71 if (dim==2)
    \n+
    72 return k * (k+2);
    \n+
    73 if (dim==3)
    \n+
    74 return k * (k+2) * (k+3) / 2;
    \n+
    75 }
    \n+
    76
    \n+
    82 void evaluateFunction(const typename Traits::DomainType& in,
    \n+
    83 std::vector<typename Traits::RangeType>& out) const
    \n+
    84 {
    \n+
    85 static_assert(k==1, "Evaluating N\u00e9d\u00e9lec shape functions is implemented only for first order.");
    \n+
    86 out.resize(size());
    \n+
    87
    \n+
    88 if (dim==2)
    \n+
    89 {
    \n+
    90 // First-order N\u00e9d\u00e9lec shape functions on a triangle are of the form
    \n+
    91 //
    \n+
    92 // (a1, a2) + b(-x2, x1)^T, a_1, a_2, b \\in R
    \n+
    93 out[0] = {D(1) - in[1], in[0]};
    \n+
    94 out[1] = {in[1], -in[0]+D(1)};
    \n+
    95 out[2] = {-in[1], in[0]};
    \n+
    96 }
    \n+
    97
    \n+
    98 if constexpr (dim==3)
    \n+
    99 {
    \n+
    100 // First-order N\u00e9d\u00e9lec shape functions on a tetrahedron are of the form
    \n+
    101 //
    \n+
    102 // a + b \\times x, a, b \\in R^3
    \n+
    103 //
    \n+
    104 // The following coefficients create the six basis vectors
    \n+
    105 // that are dual to the edge degrees of freedom:
    \n+
    106 //
    \n+
    107 // a[0] = { 1, 0, 0} b[0] = { 0, -1, 1}
    \n+
    108 // a[1] = { 0, 1, 0} b[1] = { 1, 0, -1}
    \n+
    109 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 1}
    \n+
    110 // a[3] = { 0, 0, 1} b[3] = {-1, 1, 0}
    \n+
    111 // a[4] = { 0, 0, 0} b[4] = { 0, -1, 0}
    \n+
    112 // a[5] = { 0, 0, 0} b[5] = { 1, 0, 0}
    \n+
    113 //
    \n+
    114 // The following implementation uses these values, and simply
    \n+
    115 // skips all the zeros.
    \n+
    116
    \n+
    117 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };
    \n+
    118 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};
    \n+
    119 out[2] = { - in[1] , in[0] , 0 };
    \n+
    120 out[3] = { in[2], in[2], 1 - in[0] - in[1]};
    \n+
    121 out[4] = { -in[2], 0 , in[0] };
    \n+
    122 out[5] = { 0 , -in[2], in[1]};
    \n+
    123 }
    \n+
    124
    \n+
    125 for (std::size_t i=0; i<out.size(); i++)
    \n+
    126 out[i] *= edgeOrientation_[i];
    \n+
    127 }
    \n+
    128
    \n+
    134 void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    135 std::vector<typename Traits::JacobianType>& out) const
    \n+
    136 {
    \n+
    137 out.resize(size());
    \n+
    138 if (dim==2)
    \n+
    139 {
    \n+
    140 out[0][0] = { 0, -1};
    \n+
    141 out[0][1] = { 1, 0};
    \n+
    142
    \n+
    143 out[1][0] = { 0, 1};
    \n+
    144 out[1][1] = {-1, 0};
    \n+
    145
    \n+
    146 out[2][0] = { 0, -1};
    \n+
    147 out[2][1] = { 1, 0};
    \n+
    148 }
    \n+
    149 if (dim==3)
    \n+
    150 {
    \n+
    151 out[0][0] = { 0,-1,-1};
    \n+
    152 out[0][1] = { 1, 0, 0};
    \n+
    153 out[0][2] = { 1, 0, 0};
    \n+
    154
    \n+
    155 out[1][0] = { 0, 1, 0};
    \n+
    156 out[1][1] = {-1, 0, -1};
    \n+
    157 out[1][2] = { 0, 1, 0};
    \n+
    158
    \n+
    159 out[2][0] = { 0, -1, 0};
    \n+
    160 out[2][1] = { 1, 0, 0};
    \n+
    161 out[2][2] = { 0, 0, 0};
    \n+
    162
    \n+
    163 out[3][0] = { 0, 0, 1};
    \n+
    164 out[3][1] = { 0, 0, 1};
    \n+
    165 out[3][2] = {-1, -1, 0};
    \n+
    166
    \n+
    167 out[4][0] = { 0, 0, -1};
    \n+
    168 out[4][1] = { 0, 0, 0};
    \n+
    169 out[4][2] = { 1, 0, 0};
    \n+
    170
    \n+
    171 out[5][0] = { 0, 0, 0};
    \n+
    172 out[5][1] = { 0, 0, -1};
    \n+
    173 out[5][2] = { 0, 1, 0};
    \n+
    174 }
    \n+
    175
    \n+
    176 for (std::size_t i=0; i<out.size(); i++)
    \n+
    177 out[i] *= edgeOrientation_[i];
    \n+
    178
    \n+
    179 }
    \n+
    180
    \n+
    187 void partial(const std::array<unsigned int, dim>& order,
    \n+
    188 const typename Traits::DomainType& in,
    \n+
    189 std::vector<typename Traits::RangeType>& out) const
    \n+
    190 {
    \n+
    191 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    192 if (totalOrder == 0) {
    \n+
    193 evaluateFunction(in, out);
    \n+
    194 } else if (totalOrder == 1) {
    \n+
    195 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    196 out.resize(size());
    \n+
    197
    \n+
    198 if (dim==2)
    \n+
    199 {
    \n+
    200 if (direction==0)
    \n+
    201 {
    \n+
    202 out[0] = {0, 1};
    \n+
    203 out[1] = {0, -1};
    \n+
    204 out[2] = {0, 1};
    \n+
    205 }
    \n+
    206 else
    \n+
    207 {
    \n+
    208 out[0] = {-1, 0};
    \n+
    209 out[1] = { 1, 0};
    \n+
    210 out[2] = {-1, 0};
    \n+
    211 }
    \n+
    212 }
    \n+
    213
    \n+
    214 if (dim==3)
    \n+
    215 {
    \n+
    216 switch (direction)
    \n+
    217 {
    \n+
    218 case 0:
    \n+
    219 out[0] = { 0, 1, 1};
    \n+
    220 out[1] = { 0,-1, 0};
    \n+
    221 out[2] = { 0, 1, 0};
    \n+
    222 out[3] = { 0, 0,-1};
    \n+
    223 out[4] = { 0, 0, 1};
    \n+
    224 out[5] = { 0, 0, 0};
    \n+
    225 break;
    \n+
    226
    \n+
    227 case 1:
    \n+
    228 out[0] = {-1, 0, 0};
    \n+
    229 out[1] = { 1, 0, 1};
    \n+
    230 out[2] = {-1, 0, 0};
    \n+
    231 out[3] = { 0, 0,-1};
    \n+
    232 out[4] = { 0, 0, 0};
    \n+
    233 out[5] = { 0, 0, 1};
    \n+
    234 break;
    \n+
    235
    \n+
    236 case 2:
    \n+
    237 out[0] = {-1, 0, 0};
    \n+
    238 out[1] = { 0,-1, 0};
    \n+
    239 out[2] = { 0, 0, 0};
    \n+
    240 out[3] = { 1, 1, 0};
    \n+
    241 out[4] = {-1, 0, 0};
    \n+
    242 out[5] = { 0,-1, 0};
    \n+
    243 break;
    \n+
    244 }
    \n+
    245 }
    \n+
    246
    \n+
    247 for (std::size_t i=0; i<out.size(); i++)
    \n+
    248 out[i] *= edgeOrientation_[i];
    \n+
    249
    \n+
    250 } else {
    \n+
    251 out.resize(size());
    \n+
    252 for (std::size_t i = 0; i < size(); ++i)
    \n+
    253 for (std::size_t j = 0; j < dim; ++j)
    \n+
    254 out[i][j] = 0;
    \n+
    255 }
    \n+
    256
    \n+
    257 }
    \n+
    258
    \n+
    260 unsigned int order() const
    \n+
    261 {
    \n+
    262 return k;
    \n+
    263 }
    \n+
    264
    \n+
    265 private:
    \n+
    266
    \n+
    267 // Orientations of the simplex edges
    \n+
    268 std::array<R,numberOfEdges> edgeOrientation_;
    \n+
    269 };
    \n+
    270
    \n+
    271
    \n+
    276 template <int dim, int k>
    \n+
    277 class Nedelec1stKindSimplexLocalCoefficients
    \n+
    278 {
    \n+
    279 public:
    \n+
    281 Nedelec1stKindSimplexLocalCoefficients ()
    \n+
    282 : localKey_(size())
    \n+
    283 {
    \n+
    284 static_assert(k==1, "Only first-order N\u00e9d\u00e9lec local coefficients are implemented.");
    \n+
    285 // Assign all degrees of freedom to edges
    \n+
    286 // TODO: This is correct only for first-order N\u00e9d\u00e9lec elements
    \n+
    287 for (std::size_t i=0; i<size(); i++)
    \n+
    288 localKey_[i] = LocalKey(i,dim-1,0);
    \n+
    289 }
    \n+
    290
    \n+
    292 std::size_t size() const
    \n+
    293 {
    \n+
    294 static_assert(dim==2 || dim==3, "N\u00e9d\u00e9lec shape functions are implemented only for 2d and 3d simplices.");
    \n+
    295 return (dim==2) ? k * (k+2)
    \n+
    296 : k * (k+2) * (k+3) / 2;
    \n+
    297 }
    \n+
    298
    \n+
    301 const LocalKey& localKey (std::size_t i) const
    \n+
    302 {
    \n+
    303 return localKey_[i];
    \n+
    304 }
    \n+
    305
    \n+
    306 private:
    \n+
    307 std::vector<LocalKey> localKey_;
    \n+
    308 };
    \n+
    309
    \n+
    314 template<class LB>
    \n+
    315 class Nedelec1stKindSimplexLocalInterpolation
    \n+
    316 {
    \n+
    317 static constexpr auto dim = LB::Traits::dimDomain;
    \n+
    318 static constexpr auto size = LB::size();
    \n+
    319
    \n+
    320 // Number of edges of the reference simplex
    \n+
    321 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
    \n+
    322
    \n+
    323 public:
    \n+
    324
    \n+
    326 Nedelec1stKindSimplexLocalInterpolation (std::bitset<numberOfEdges> s = 0)
    \n+
    327 {
    \n+
    328 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::simplex(dim));
    \n+
    329
    \n+
    330 for (std::size_t i=0; i<numberOfEdges; i++)
    \n+
    331 m_[i] = refElement.position(i,dim-1);
    \n+
    332
    \n+
    333 for (std::size_t i=0; i<numberOfEdges; i++)
    \n+
    334 {
    \n+
    335 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n+
    336 auto v0 = *vertexIterator;
    \n+
    337 auto v1 = *(++vertexIterator);
    \n+
    338 // By default, edges point from the vertex with the smaller index
    \n+
    339 // to the vertex with the larger index.
    \n+
    340 if (v0>v1)
    \n+
    341 std::swap(v0,v1);
    \n+
    342 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n+
    343 edge_[i] *= (s[i]) ? -1.0 : 1.0;
    \n+
    344 }
    \n+
    345 }
    \n+
    346
    \n+
    352 template<typename F, typename C>
    \n+
    353 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    354 {
    \n+
    355 out.resize(size);
    \n+
    356
    \n+
    357 for (std::size_t i=0; i<size; i++)
    \n+
    358 {
    \n+
    359 auto y = f(m_[i]);
    \n+
    360 out[i] = 0.0;
    \n+
    361 for (int j=0; j<dim; j++)
    \n+
    362 out[i] += y[j]*edge_[i][j];
    \n+
    363 }
    \n+
    364 }
    \n+
    365
    \n+
    366 private:
    \n+
    367 // Edge midpoints of the reference simplex
    \n+
    368 std::array<typename LB::Traits::DomainType, numberOfEdges> m_;
    \n+
    369 // Edges of the reference simplex
    \n+
    370 std::array<typename LB::Traits::DomainType, numberOfEdges> edge_;
    \n+
    371 };
    \n+
    372
    \n+
    373}
    \n+
    374
    \n+
    375
    \n+
    401 template<class D, class R, int dim, int k>
    \n+
    \n+\n+
    403 {
    \n+
    404 public:
    \n+\n+
    406 Impl::Nedelec1stKindSimplexLocalCoefficients<dim,k>,
    \n+
    407 Impl::Nedelec1stKindSimplexLocalInterpolation<Impl::Nedelec1stKindSimplexLocalBasis<D,R,dim,k> > >;
    \n+
    408
    \n+
    409 static_assert(dim==2 || dim==3, "Nedelec elements are only implemented for 2d and 3d elements.");
    \n+
    410 static_assert(k==1, "Nedelec elements of the first kind are currently only implemented for order k==1.");
    \n+
    411
    \n+\n+
    415
    \n+
    \n+
    421 Nedelec1stKindSimplexLocalFiniteElement (std::bitset<dim*(dim+1)/2> s) :
    \n+
    422 basis_(s),
    \n+
    423 interpolation_(s)
    \n+
    424 {}
    \n+
    \n+
    425
    \n+
    \n+
    426 const typename Traits::LocalBasisType& localBasis () const
    \n+
    427 {
    \n+
    428 return basis_;
    \n+
    429 }
    \n+
    \n+
    430
    \n+
    \n+\n+
    432 {
    \n+
    433 return coefficients_;
    \n+
    434 }
    \n+
    \n+
    435
    \n+
    \n+\n+
    437 {
    \n+
    438 return interpolation_;
    \n+
    439 }
    \n+
    \n+
    440
    \n+
    \n+
    441 static constexpr unsigned int size ()
    \n+
    442 {
    \n+
    443 return Traits::LocalBasisType::size();
    \n+
    444 }
    \n+
    \n+
    445
    \n+
    \n+
    446 static constexpr GeometryType type ()
    \n+
    447 {
    \n+
    448 return GeometryTypes::simplex(dim);
    \n+
    449 }
    \n+
    \n+
    450
    \n+
    451 private:
    \n+
    452 typename Traits::LocalBasisType basis_;
    \n+
    453 typename Traits::LocalCoefficientsType coefficients_;
    \n+
    454 typename Traits::LocalInterpolationType interpolation_;
    \n+
    455 };
    \n+
    \n+
    456
    \n+
    457}
    \n+
    458
    \n+
    459#endif
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Linear Lagrange functions enriched with an element bubble function.
    Definition simplexp1bubble.hh:45
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    N\u00e9d\u00e9lec elements of the first kind for simplex elements.
    Definition nedelec1stkindsimplex.hh:403
    \n+
    static constexpr unsigned int size()
    Definition nedelec1stkindsimplex.hh:441
    \n+
    Nedelec1stKindSimplexLocalFiniteElement()=default
    Default constructor.
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition nedelec1stkindsimplex.hh:436
    \n+
    Nedelec1stKindSimplexLocalFiniteElement(std::bitset< dim *(dim+1)/2 > s)
    Constructor with explicitly given edge orientations.
    Definition nedelec1stkindsimplex.hh:421
    \n+
    static constexpr GeometryType type()
    Definition nedelec1stkindsimplex.hh:446
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition nedelec1stkindsimplex.hh:426
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition nedelec1stkindsimplex.hh:431
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,35 +1,441 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n-hierarchicalp1withelementbubble.hh\n+ * _\bn_\be_\bd_\be_\bl_\be_\bc\n+nedelec1stkindsimplex.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n-6#define DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH\n+6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n+8#include \n 9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-16 template\n-_\b1_\b7 using _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bP_\b1_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-18 = _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>;\n-19}\n-20\n-21#endif // DUNE_HIERARCHICAL_P1_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH\n-_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh\n+10#include \n+11#include \n+12\n+13#include \n+14#include \n+15\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+19\n+20namespace _\bD_\bu_\bn_\be\n+21{\n+22namespace Impl\n+23{\n+36 template\n+37 class Nedelec1stKindSimplexLocalBasis\n+38 {\n+39 // Number of edges of the reference simplex\n+40 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;\n+41\n+42 public:\n+43 using Traits = LocalBasisTraits,\n+44 R,dim,FieldVector,\n+45 FieldMatrix >;\n+46\n+53 Nedelec1stKindSimplexLocalBasis()\n+54 {\n+55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);\n+56 }\n+57\n+60 Nedelec1stKindSimplexLocalBasis(std::bitset edgeOrientation)\n+61 : Nedelec1stKindSimplexLocalBasis()\n+62 {\n+63 for (std::size_t i=0; i& out) const\n+84 {\n+85 static_assert(k==1, \"Evaluating N\u00c3\u00a9d\u00c3\u00a9lec shape functions is implemented\n+only for first order.\");\n+86 out.resize(size());\n+87\n+88 if (dim==2)\n+89 {\n+90 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a triangle are of the form\n+91 //\n+92 // (a1, a2) + b(-x2, x1)^T, a_1, a_2, b \\in R\n+93 out[0] = {D(1) - in[1], in[0]};\n+94 out[1] = {in[1], -in[0]+D(1)};\n+95 out[2] = {-in[1], in[0]};\n+96 }\n+97\n+98 if constexpr (dim==3)\n+99 {\n+100 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a tetrahedron are of the form\n+101 //\n+102 // a + b \\times x, a, b \\in R^3\n+103 //\n+104 // The following coefficients create the six basis vectors\n+105 // that are dual to the edge degrees of freedom:\n+106 //\n+107 // a[0] = { 1, 0, 0} b[0] = { 0, -1, 1}\n+108 // a[1] = { 0, 1, 0} b[1] = { 1, 0, -1}\n+109 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 1}\n+110 // a[3] = { 0, 0, 1} b[3] = {-1, 1, 0}\n+111 // a[4] = { 0, 0, 0} b[4] = { 0, -1, 0}\n+112 // a[5] = { 0, 0, 0} b[5] = { 1, 0, 0}\n+113 //\n+114 // The following implementation uses these values, and simply\n+115 // skips all the zeros.\n+116\n+117 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };\n+118 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};\n+119 out[2] = { - in[1] , in[0] , 0 };\n+120 out[3] = { in[2], in[2], 1 - in[0] - in[1]};\n+121 out[4] = { -in[2], 0 , in[0] };\n+122 out[5] = { 0 , -in[2], in[1]};\n+123 }\n+124\n+125 for (std::size_t i=0; i& out) const\n+136 {\n+137 out.resize(size());\n+138 if (dim==2)\n+139 {\n+140 out[0][0] = { 0, -1};\n+141 out[0][1] = { 1, 0};\n+142\n+143 out[1][0] = { 0, 1};\n+144 out[1][1] = {-1, 0};\n+145\n+146 out[2][0] = { 0, -1};\n+147 out[2][1] = { 1, 0};\n+148 }\n+149 if (dim==3)\n+150 {\n+151 out[0][0] = { 0,-1,-1};\n+152 out[0][1] = { 1, 0, 0};\n+153 out[0][2] = { 1, 0, 0};\n+154\n+155 out[1][0] = { 0, 1, 0};\n+156 out[1][1] = {-1, 0, -1};\n+157 out[1][2] = { 0, 1, 0};\n+158\n+159 out[2][0] = { 0, -1, 0};\n+160 out[2][1] = { 1, 0, 0};\n+161 out[2][2] = { 0, 0, 0};\n+162\n+163 out[3][0] = { 0, 0, 1};\n+164 out[3][1] = { 0, 0, 1};\n+165 out[3][2] = {-1, -1, 0};\n+166\n+167 out[4][0] = { 0, 0, -1};\n+168 out[4][1] = { 0, 0, 0};\n+169 out[4][2] = { 1, 0, 0};\n+170\n+171 out[5][0] = { 0, 0, 0};\n+172 out[5][1] = { 0, 0, -1};\n+173 out[5][2] = { 0, 1, 0};\n+174 }\n+175\n+176 for (std::size_t i=0; i& order,\n+188 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+189 std::vector& out) const\n+190 {\n+191 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+192 if (totalOrder == 0) {\n+193 evaluateFunction(in, out);\n+194 } else if (totalOrder == 1) {\n+195 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+196 out.resize(size());\n+197\n+198 if (dim==2)\n+199 {\n+200 if (direction==0)\n+201 {\n+202 out[0] = {0, 1};\n+203 out[1] = {0, -1};\n+204 out[2] = {0, 1};\n+205 }\n+206 else\n+207 {\n+208 out[0] = {-1, 0};\n+209 out[1] = { 1, 0};\n+210 out[2] = {-1, 0};\n+211 }\n+212 }\n+213\n+214 if (dim==3)\n+215 {\n+216 switch (direction)\n+217 {\n+218 case 0:\n+219 out[0] = { 0, 1, 1};\n+220 out[1] = { 0,-1, 0};\n+221 out[2] = { 0, 1, 0};\n+222 out[3] = { 0, 0,-1};\n+223 out[4] = { 0, 0, 1};\n+224 out[5] = { 0, 0, 0};\n+225 break;\n+226\n+227 case 1:\n+228 out[0] = {-1, 0, 0};\n+229 out[1] = { 1, 0, 1};\n+230 out[2] = {-1, 0, 0};\n+231 out[3] = { 0, 0,-1};\n+232 out[4] = { 0, 0, 0};\n+233 out[5] = { 0, 0, 1};\n+234 break;\n+235\n+236 case 2:\n+237 out[0] = {-1, 0, 0};\n+238 out[1] = { 0,-1, 0};\n+239 out[2] = { 0, 0, 0};\n+240 out[3] = { 1, 1, 0};\n+241 out[4] = {-1, 0, 0};\n+242 out[5] = { 0,-1, 0};\n+243 break;\n+244 }\n+245 }\n+246\n+247 for (std::size_t i=0; i edgeOrientation_;\n+269 };\n+270\n+271\n+276 template \n+277 class Nedelec1stKindSimplexLocalCoefficients\n+278 {\n+279 public:\n+281 Nedelec1stKindSimplexLocalCoefficients ()\n+282 : localKey_(size())\n+283 {\n+284 static_assert(k==1, \"Only first-order N\u00c3\u00a9d\u00c3\u00a9lec local coefficients are\n+implemented.\");\n+285 // Assign all degrees of freedom to edges\n+286 // TODO: This is correct only for first-order N\u00c3\u00a9d\u00c3\u00a9lec elements\n+287 for (std::size_t i=0; i localKey_;\n+308 };\n+309\n+314 template\n+315 class Nedelec1stKindSimplexLocalInterpolation\n+316 {\n+317 static constexpr auto dim = LB::Traits::dimDomain;\n+318 static constexpr auto size = LB::size();\n+319\n+320 // Number of edges of the reference simplex\n+321 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;\n+322\n+323 public:\n+324\n+326 Nedelec1stKindSimplexLocalInterpolation (std::bitset s = 0)\n+327 {\n+328 auto refElement = Dune::referenceElement(GeometryTypes::simplex\n+(dim));\n+329\n+330 for (std::size_t i=0; iv1)\n+341 std::swap(v0,v1);\n+342 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);\n+343 edge_[i] *= (s[i]) ? -1.0 : 1.0;\n+344 }\n+345 }\n+346\n+352 template\n+353 void interpolate (const F& f, std::vector& out) const\n+354 {\n+355 out.resize(size);\n+356\n+357 for (std::size_t i=0; i m_;\n+369 // Edges of the reference simplex\n+370 std::array edge_;\n+371 };\n+372\n+373}\n+374\n+375\n+401 template\n+_\b4_\b0_\b2 class _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+403 {\n+404 public:\n+_\b4_\b0_\b5 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n+_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>,\n+406 Impl::Nedelec1stKindSimplexLocalCoefficients,\n+407 Impl::Nedelec1stKindSimplexLocalInterpolation > >;\n+408\n+409 static_assert(dim==2 || dim==3, \"Nedelec elements are only implemented for\n+2d and 3d elements.\");\n+410 static_assert(k==1, \"Nedelec elements of the first kind are currently only\n+implemented for order k==1.\");\n+411\n+_\b4_\b1_\b4 _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt() = default;\n+415\n+_\b4_\b2_\b1 _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset s) :\n+422 basis_(s),\n+423 interpolation_(s)\n+424 {}\n+425\n+_\b4_\b2_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+427 {\n+428 return basis_;\n+429 }\n+430\n+_\b4_\b3_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+432 {\n+433 return coefficients_;\n+434 }\n+435\n+_\b4_\b3_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+437 {\n+438 return interpolation_;\n+439 }\n+440\n+_\b4_\b4_\b1 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n+442 {\n+443 return Traits::LocalBasisType::size();\n+444 }\n+445\n+_\b4_\b4_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+447 {\n+448 return GeometryTypes::simplex(dim);\n+449 }\n+450\n+451 private:\n+452 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be basis_;\n+453 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients_;\n+454 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be interpolation_;\n+455 };\n+456\n+457}\n+458\n+459#endif\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Linear Lagrange functions enriched with an element bubble function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+N\u00c3\u00a9d\u00c3\u00a9lec elements of the first kind for simplex elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:403\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr unsigned int size()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:441\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n+_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Nedelec1stKindSimplexLocalFiniteElement()=default\n+Default constructor.\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:436\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n+_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Nedelec1stKindSimplexLocalFiniteElement(std::bitset< dim *(dim+1)/2 > s)\n+Constructor with explicitly given edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:421\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:446\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:426\n+_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:431\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalsimplexp2withelementbubble.hh File Reference\n+dune-localfunctions: dualq1localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,59 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalsimplexp2withelementbubble.hh File Reference
    \n+
    dualq1localinterpolation.hh File Reference
    \n
    \n
    \n-\n-

    Hierarchical p2 shape functions for the simplex. \n-More...

    \n
    #include <array>
    \n-#include <cassert>
    \n-#include <numeric>
    \n-#include <stdexcept>
    \n #include <vector>
    \n #include <dune/common/fvector.hh>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/common/math.hh>
    \n-#include <dune/geometry/referenceelement.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n+\n \n

    \n Classes

    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim >
     P1 basis in dim-d enriched by quadratic edge bubble functions and an element bubble function of order dim+1. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >
     The local keys of the hierarchical basis functions with element bubble. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LB, dim >
    class  Dune::DualQ1LocalInterpolation< dim, LB >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-

    Detailed Description

    \n-

    Hierarchical p2 shape functions for the simplex.

    \n-
    \n+\n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,42 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bq_\b1\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hierarchicalsimplexp2withelementbubble.hh File Reference\n-Hierarchical p2 shape functions for the simplex. _\bM_\bo_\br_\be_\b._\b._\b.\n+dualq1localinterpolation.hh File Reference\n #include \n-#include \n-#include \n-#include \n #include \n #include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 P1 basis in dim-d enriched by quadratic edge bubble functions and an\n- element bubble function of order dim+1. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 The local keys of the hierarchical basis functions with element bubble.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b,_\b _\bd_\bi_\bm\n- _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\b,_\b _\bL_\bB_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Hierarchical p2 shape functions for the simplex.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalsimplexp2withelementbubble.hh Source File\n+dune-localfunctions: dualq1localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,340 +70,106 @@\n \n \n \n \n \n \n \n
    \n-
    hierarchicalsimplexp2withelementbubble.hh
    \n+
    dualq1localinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH
    \n-
    6#define DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_DUAL_Q1_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_DUAL_Q1_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    12#include <array>
    \n-
    13#include <cassert>
    \n-
    14#include <numeric>
    \n-
    15#include <stdexcept>
    \n-
    16#include <vector>
    \n-
    17
    \n-
    18#include <dune/common/fvector.hh>
    \n-
    19#include <dune/common/fmatrix.hh>
    \n-
    20#include <dune/common/math.hh>
    \n-
    21
    \n-
    22#include <dune/geometry/referenceelement.hh>
    \n-
    23
    \n-\n-\n-
    26
    \n-
    27namespace Dune
    \n-
    28{
    \n-
    44 template<class D, class R, int dim>
    \n-
    \n-\n-
    46 {
    \n-\n-
    48
    \n-
    50 using DomainType = FieldVector<D,dim>;
    \n+
    8#include <array>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    20 template<int dim, class LB>
    \n+
    \n+\n+
    22 {
    \n+
    23 public:
    \n+
    24
    \n+
    \n+
    25 void setCoefficients(const std::array<Dune::FieldVector<typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)>& coefficients)
    \n+
    26 {
    \n+
    27 coefficients_ = coefficients;
    \n+
    28 }
    \n+
    \n+
    29
    \n+
    30
    \n+
    32 template<typename F, typename C>
    \n+
    \n+
    33 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    34 {
    \n+
    35 typename LB::Traits::DomainType x;
    \n+
    36
    \n+
    37 const int size = 1<<dim;
    \n+
    38
    \n+
    39 // compute Q1 interpolation coefficients
    \n+
    40 Dune::FieldVector<C,size> q1Coefficients;
    \n+
    41
    \n+
    42 for (int i=0; i< (1<<dim); i++) {
    \n+
    43
    \n+
    44 // Generate coordinate of the i-th corner of the reference cube
    \n+
    45 // We could use the ReferenceElement for this as well, but it is
    \n+
    46 // still not clear how dune-localfunctions should have access to them.
    \n+
    47 for (int j=0; j<dim; j++)
    \n+
    48 x[j] = (i & (1<<j)) ? 1.0 : 0.0;
    \n+
    49
    \n+
    50 q1Coefficients[i] = f(x);
    \n
    51
    \n-
    53 using RangeType = FieldVector<R,1>;
    \n-
    54
    \n-
    56 using JacobianType = FieldMatrix<R,1,dim>;
    \n-
    57
    \n-
    58 // Number of vertices
    \n-
    59 static constexpr int numVertices = dim+1;
    \n-
    60
    \n-
    61 // Number of edges (or zero for dim==1)
    \n-
    62 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);
    \n-
    63
    \n-
    64 // helper function to evaluate the vertex basis functions
    \n-
    65 template <class It>
    \n-
    66 static constexpr It evaluateVertexFunctions (const DomainType& in, It outIt)
    \n-
    67 {
    \n-
    68 *outIt = 1;
    \n-
    69 for (int i = 0; i < dim; ++i)
    \n-
    70 *outIt -= in[i];
    \n-
    71 ++outIt;
    \n-
    72 for (int i = 0; i < dim; ++i)
    \n-
    73 *outIt++ = in[i];
    \n-
    74 return outIt;
    \n-
    75 }
    \n-
    76
    \n-
    77 // helper function to evaluate the basis functions
    \n-
    78 template <class It>
    \n-
    79 static constexpr It evaluateAllFunctions (const DomainType& in, It outIt)
    \n-
    80 {
    \n-
    81 It vertexValues = outIt;
    \n-
    82 outIt = evaluateVertexFunctions(in, outIt);
    \n-
    83
    \n-
    84 if constexpr(dim > 1) {
    \n-
    85 auto refElem = referenceElement<D,dim>(GeometryTypes::simplex(dim));
    \n-
    86 for (int i = 0; i < numEdges; ++i) {
    \n-
    87 const int v0 = refElem.subEntity(i,dim-1,0,dim);
    \n-
    88 const int v1 = refElem.subEntity(i,dim-1,1,dim);
    \n-
    89 *outIt++ = 4 * vertexValues[v0] * vertexValues[v1];
    \n-
    90 }
    \n-
    91 }
    \n-
    92
    \n-
    93 // element bubble function
    \n-
    94 *outIt = power(dim+1, dim+1);
    \n-
    95 for (int i = 0; i < numVertices; ++i)
    \n-
    96 *outIt *= vertexValues[i];
    \n-
    97 return outIt;
    \n-
    98 }
    \n-
    99
    \n-
    100 public:
    \n-\n-
    103
    \n-
    \n-
    105 static constexpr std::size_t size () noexcept
    \n-
    106 {
    \n-
    107 return numVertices + numEdges + 1;
    \n-
    108 }
    \n-
    \n-
    109
    \n-
    \n-
    111 static constexpr void evaluateFunction (const DomainType& in,
    \n-
    112 std::vector<RangeType>& out)
    \n-
    113 {
    \n-
    114 out.resize(size());
    \n-
    115 evaluateAllFunctions(in,out.begin());
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    \n-
    119 static constexpr void evaluateJacobian (const DomainType& in,
    \n-
    120 std::vector<JacobianType>& out)
    \n-
    121 {
    \n-
    122 out.resize(size());
    \n-
    123
    \n-
    124 // vertex basis functions
    \n-
    125 RangeType tmp = 1;
    \n-
    126 for (int i = 0; i < dim; ++i) {
    \n-
    127 out[0][0][i] = -1;
    \n-
    128 for (int j = 0; j < dim; ++j)
    \n-
    129 out[j+1][0][i] = (i == j);
    \n-
    130 tmp -= in[i];
    \n-
    131 }
    \n-
    132
    \n-
    133 int n = numVertices;
    \n-
    134 std::array<RangeType,numVertices> shapeValues;
    \n-
    135 evaluateVertexFunctions(in, shapeValues.begin());
    \n-
    136
    \n-
    137 // edge basis functions
    \n-
    138 if constexpr(dim > 1) {
    \n-
    139 auto refElem = referenceElement<D,dim>(GeometryTypes::simplex(dim));
    \n-
    140 for (int i = 0; i < numEdges; ++i,++n) {
    \n-
    141 const int v0 = refElem.subEntity(i,dim-1,0,dim);
    \n-
    142 const int v1 = refElem.subEntity(i,dim-1,1,dim);
    \n-
    143 for (int j = 0; j < dim; ++j)
    \n-
    144 out[n][0][j] = 4 * (out[v0][0][j] * shapeValues[v1] + shapeValues[v0] * out[v1][0][j]);
    \n-
    145 }
    \n-
    146 }
    \n-
    147
    \n-
    148 // element bubble function
    \n-
    149 for (int i = 0; i < dim; ++i) {
    \n-
    150 out[n][0][i] = power(dim+1, dim+1) * (tmp - in[i]);
    \n-
    151 for (int j = i+1; j < dim+i; ++j)
    \n-
    152 out[n][0][i] *= in[j % dim];
    \n-
    153 }
    \n-
    154 }
    \n-
    \n-
    155
    \n-
    \n-
    157 static constexpr void partial (const std::array<unsigned int, dim>& order,
    \n-
    158 const DomainType& in,
    \n-
    159 std::vector<RangeType>& out)
    \n-
    160 {
    \n-
    161 unsigned int totalOrder = 0;
    \n-
    162 for (int i = 0; i < dim; ++i)
    \n-
    163 totalOrder += order[i];
    \n-
    164
    \n-
    165 switch (totalOrder) {
    \n-
    166 case 0:
    \n-
    167 evaluateFunction(in,out);
    \n-
    168 break;
    \n-
    169 case 1: {
    \n-
    170 out.resize(size());
    \n-
    171 int d = 0; // the direction of differentiation
    \n-
    172 for (int i = 0; i < dim; ++i)
    \n-
    173 d += i * order[i];
    \n-
    174
    \n-
    175 // vertex basis functions
    \n-
    176 RangeType tmp = 1;
    \n-
    177 for (int i = 0; i < dim; ++i) {
    \n-
    178 out[0] = -1;
    \n-
    179 for (int j = 0; j < dim; ++j)
    \n-
    180 out[j+1] = (dim == j);
    \n-
    181 tmp -= in[i];
    \n-
    182 }
    \n-
    183
    \n-
    184 int n = numVertices;
    \n-
    185 std::array<RangeType,numVertices> shapeValues;
    \n-
    186 evaluateVertexFunctions(in, shapeValues.begin());
    \n-
    187
    \n-
    188 // edge basis functions
    \n-
    189 if constexpr(dim > 1) {
    \n-
    190 auto refElem = referenceElement<D,dim>(GeometryTypes::simplex(dim));
    \n-
    191 for (int i = 0; i < numEdges; ++i,++n) {
    \n-
    192 const int v0 = refElem.subEntity(i,dim-1,0,dim);
    \n-
    193 const int v1 = refElem.subEntity(i,dim-1,1,dim);
    \n-
    194 out[n] = 4 * (out[v0] * shapeValues[v1] + shapeValues[v0] * out[v1]);
    \n-
    195 }
    \n-
    196 }
    \n-
    197
    \n-
    198 // element bubble function
    \n-
    199 out[n] = power(dim+1, dim+1) * (tmp - in[d]);
    \n-
    200 for (int j = d+1; j < dim+d; ++j)
    \n-
    201 out[n] *= in[j % dim];
    \n-
    202 } break;
    \n-
    203 default:
    \n-
    204 throw std::runtime_error("Desired derivative order is not implemented");
    \n-
    205 }
    \n-
    206 }
    \n-
    \n-
    207
    \n-
    \n-
    209 static constexpr unsigned int order () noexcept
    \n-
    210 {
    \n-
    211 return dim+1;
    \n-
    212 }
    \n-
    \n-
    213 };
    \n-
    \n-
    214
    \n-
    215
    \n-
    227 template <int dim>
    \n-
    \n-\n-
    229 {
    \n-
    230 // Number of vertices
    \n-
    231 static constexpr int numVertices = dim+1;
    \n-
    232
    \n-
    233 // Number of edges (or zero for dim==1)
    \n-
    234 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);
    \n-
    235
    \n-
    236 public:
    \n-
    \n-\n-
    239 {
    \n-
    240 int n = 0;
    \n-
    241 for (int i = 0; i < numVertices; ++i)
    \n-
    242 li_[n++] = LocalKey(i,dim,0); // Vertex
    \n-
    243 if constexpr(dim > 1) {
    \n-
    244 for (int i = 0; i < numEdges; ++i)
    \n-
    245 li_[n++] = LocalKey(i,dim-1,0); // Edges
    \n-
    246 }
    \n-
    247 li_[n++] = LocalKey(0,0,0); // Element
    \n-
    248 }
    \n+
    52 }
    \n+
    53
    \n+
    54 out.resize(size);
    \n+
    55
    \n+
    56 // solve a linear system to compute the dual coefficients
    \n+
    57 Dune::FieldMatrix<C,size,size> mat;
    \n+
    58
    \n+
    59 for (int i=0; i<size; i++)
    \n+
    60 for (int j=0; j<size; j++)
    \n+
    61 mat[i][j] = coefficients_[j][i];
    \n+
    62
    \n+
    63 // now solve for the weights
    \n+
    64 Dune::FieldVector<C,size> sol(0);
    \n+
    65
    \n+
    66 mat.solve(sol,q1Coefficients);
    \n+
    67
    \n+
    68 // write result in out vector
    \n+
    69 for (int i=0; i<size; i++)
    \n+
    70 out[i] = sol[i];
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    73 private:
    \n+
    74 std::array<Dune::FieldVector<typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)> coefficients_;
    \n+
    75 };
    \n
    \n-
    249
    \n-
    \n-
    251 static constexpr std::size_t size () noexcept
    \n-
    252 {
    \n-
    253 return numVertices + numEdges + 1;
    \n-
    254 }
    \n-
    \n-
    255
    \n-
    \n-
    257 const LocalKey& localKey (std::size_t i) const noexcept
    \n-
    258 {
    \n-
    259 return li_[i];
    \n-
    260 }
    \n-
    \n-
    261
    \n-
    262 private:
    \n-
    263 std::array<LocalKey, numVertices+numEdges+1> li_;
    \n-
    264 };
    \n-
    \n-
    265
    \n-
    269 template<class LB, int dim>
    \n-
    \n-\n-
    271 {
    \n-
    272 using LocalBasis = LB;
    \n-
    273 using DomainType = typename LB::Traits::DomainType;
    \n-
    274 using RangeType = typename LB::Traits::RangeType;
    \n-
    275
    \n-
    276 // Number of vertices
    \n-
    277 static constexpr int numVertices = dim+1;
    \n-
    278
    \n-
    279 // Number of edges (or zero for dim==1)
    \n-
    280 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);
    \n-
    281
    \n-
    282 public:
    \n-
    290 template<class F, class C,
    \n-
    291 class R = std::invoke_result_t<F, DomainType>,
    \n-
    292 std::enable_if_t<std::is_convertible_v<R, C>, int> = 0>
    \n-
    \n-
    293 static constexpr void interpolate (const F& f, std::vector<C>& out)
    \n-
    294 {
    \n-
    295 auto refElem = referenceElement<typename LB::Traits::DomainFieldType,dim>(GeometryTypes::simplex(dim));
    \n-
    296
    \n-
    297 out.resize(LB::size());
    \n-
    298 int n = 0;
    \n-
    299
    \n-
    300 // vertices
    \n-
    301 assert(numVertices == refElem.size(dim));
    \n-
    302 for (int i = 0; i < numVertices; ++i)
    \n-
    303 out[n++] = f(refElem.position(i,dim));
    \n-
    304
    \n-
    305 std::array<RangeType,LB::size()> shapeValues;
    \n-
    306
    \n-
    307 // edge bubbles
    \n-
    308 if constexpr(dim > 1) {
    \n-
    309 assert(numEdges == refElem.size(dim-1));
    \n-
    310 for (int i = 0; i < numEdges; ++i) {
    \n-
    311 R y = f(refElem.position(i,dim-1));
    \n-
    312 LB::evaluateVertexFunctions(refElem.position(i,dim-1), shapeValues.begin());
    \n-
    313 for (int j = 0; j < numVertices; ++j)
    \n-
    314 y -= out[j]*shapeValues[j];
    \n-
    315 out[n++] = y;
    \n-
    316 }
    \n-
    317 }
    \n-
    318
    \n-
    319 // element bubble
    \n-
    320 R y = f(refElem.position(0,0));
    \n-
    321 LB::evaluateAllFunctions(refElem.position(0,0), shapeValues.begin());
    \n-
    322 for (int j = 0; j < numVertices+numEdges; ++j)
    \n-
    323 y -= out[j]*shapeValues[j];
    \n-
    324 out[n++] = y;
    \n-
    325 }
    \n-
    \n-
    326 };
    \n-
    \n-
    327
    \n-
    328} // end namespace Dune
    \n-
    329
    \n-
    330#endif // DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH
    \n-\n+
    76
    \n+
    77}
    \n+
    78
    \n+
    79#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    P1 basis in dim-d enriched by quadratic edge bubble functions and an element bubble function of order...
    Definition hierarchicalsimplexp2withelementbubble.hh:46
    \n-
    static constexpr void evaluateFunction(const DomainType &in, std::vector< RangeType > &out)
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:111
    \n-
    static constexpr void partial(const std::array< unsigned int, dim > &order, const DomainType &in, std::vector< RangeType > &out)
    Evaluate partial derivatives of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:157
    \n-
    static constexpr unsigned int order() noexcept
    Polynomial order of the shape functions (4 in this case)
    Definition hierarchicalsimplexp2withelementbubble.hh:209
    \n-
    static constexpr void evaluateJacobian(const DomainType &in, std::vector< JacobianType > &out)
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:119
    \n-
    static constexpr std::size_t size() noexcept
    Returns number of shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:105
    \n-
    The local keys of the hierarchical basis functions with element bubble.
    Definition hierarchicalsimplexp2withelementbubble.hh:229
    \n-
    HierarchicalSimplexP2WithElementBubbleLocalCoefficients() noexcept
    Default constructor, initializes the local keys.
    Definition hierarchicalsimplexp2withelementbubble.hh:238
    \n-
    static constexpr std::size_t size() noexcept
    Returns number of coefficients.
    Definition hierarchicalsimplexp2withelementbubble.hh:251
    \n-
    const LocalKey & localKey(std::size_t i) const noexcept
    Returns the i'th local key.
    Definition hierarchicalsimplexp2withelementbubble.hh:257
    \n-
    Definition hierarchicalsimplexp2withelementbubble.hh:271
    \n-
    static constexpr void interpolate(const F &f, std::vector< C > &out)
    Local interpolation of the function f.
    Definition hierarchicalsimplexp2withelementbubble.hh:293
    \n-\n+
    Definition dualq1localinterpolation.hh:22
    \n+
    void setCoefficients(const std::array< Dune::FieldVector< typename LB::Traits::RangeFieldType,(1<< dim)>,(1<< dim)> &coefficients)
    Definition dualq1localinterpolation.hh:25
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Local interpolation of a function.
    Definition dualq1localinterpolation.hh:33
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,355 +1,102 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl\n- * _\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be\n-hierarchicalsimplexp2withelementbubble.hh\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bq_\b1\n+dualq1localinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH\n-6#define DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH\n+5#ifndef DUNE_DUAL_Q1_LOCALINTERPOLATION_HH\n+6#define DUNE_DUAL_Q1_LOCALINTERPOLATION_HH\n 7\n-12#include \n-13#include \n-14#include \n-15#include \n-16#include \n-17\n-18#include \n-19#include \n-20#include \n-21\n-22#include \n-23\n-24#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-25#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-26\n-27namespace _\bD_\bu_\bn_\be\n-28{\n-44 template\n-_\b4_\b5 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-46 {\n-_\b4_\b7 template friend class\n-_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-48\n-50 using DomainType = FieldVector;\n+8#include \n+9#include \n+10\n+11#include \n+12#include \n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+20 template\n+_\b2_\b1 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+22 {\n+23 public:\n+24\n+_\b2_\b5 void _\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const std::array ,(1<& coefficients)\n+26 {\n+27 coefficients_ = coefficients;\n+28 }\n+29\n+30\n+32 template\n+_\b3_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+34 {\n+35 typename LB::Traits::DomainType x;\n+36\n+37 const int size = 1< q1Coefficients;\n+41\n+42 for (int i=0; i< (1<;\n-54\n-56 using JacobianType = FieldMatrix;\n-57\n-58 // Number of vertices\n-59 static constexpr int numVertices = dim+1;\n-60\n-61 // Number of edges (or zero for dim==1)\n-62 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);\n-63\n-64 // helper function to evaluate the vertex basis functions\n-65 template \n-66 static constexpr It evaluateVertexFunctions (const DomainType& in, It outIt)\n-67 {\n-68 *outIt = 1;\n-69 for (int i = 0; i < dim; ++i)\n-70 *outIt -= in[i];\n-71 ++outIt;\n-72 for (int i = 0; i < dim; ++i)\n-73 *outIt++ = in[i];\n-74 return outIt;\n-75 }\n+52 }\n+53\n+54 out.resize(size);\n+55\n+56 // solve a linear system to compute the dual coefficients\n+57 Dune::FieldMatrix mat;\n+58\n+59 for (int i=0; i sol(0);\n+65\n+66 mat.solve(sol,q1Coefficients);\n+67\n+68 // write result in out vector\n+69 for (int i=0; i\n+,(1< coefficients_;\n+75 };\n 76\n-77 // helper function to evaluate the basis functions\n-78 template \n-79 static constexpr It evaluateAllFunctions (const DomainType& in, It outIt)\n-80 {\n-81 It vertexValues = outIt;\n-82 outIt = evaluateVertexFunctions(in, outIt);\n-83\n-84 if constexpr(dim > 1) {\n-85 auto refElem = referenceElement(GeometryTypes::simplex(dim));\n-86 for (int i = 0; i < numEdges; ++i) {\n-87 const int v0 = refElem.subEntity(i,dim-1,0,dim);\n-88 const int v1 = refElem.subEntity(i,dim-1,1,dim);\n-89 *outIt++ = 4 * vertexValues[v0] * vertexValues[v1];\n-90 }\n-91 }\n-92\n-93 // element bubble function\n-94 *outIt = power(dim+1, dim+1);\n-95 for (int i = 0; i < numVertices; ++i)\n-96 *outIt *= vertexValues[i];\n-97 return outIt;\n-98 }\n-99\n-100 public:\n-_\b1_\b0_\b2 using _\bT_\br_\ba_\bi_\bt_\bs =\n-_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\b,_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be_\b,_\bR_\b,_\b1_\b,_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be_\b,_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bT_\by_\bp_\be_\b>;\n-103\n-_\b1_\b0_\b5 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n-106 {\n-107 return numVertices + numEdges + 1;\n-108 }\n-109\n-_\b1_\b1_\b1 static constexpr void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const DomainType& in,\n-112 std::vector& out)\n-113 {\n-114 out.resize(_\bs_\bi_\bz_\be());\n-115 evaluateAllFunctions(in,out.begin());\n-116 }\n-117\n-_\b1_\b1_\b9 static constexpr void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const DomainType& in,\n-120 std::vector& out)\n-121 {\n-122 out.resize(_\bs_\bi_\bz_\be());\n-123\n-124 // vertex basis functions\n-125 RangeType tmp = 1;\n-126 for (int i = 0; i < dim; ++i) {\n-127 out[0][0][i] = -1;\n-128 for (int j = 0; j < dim; ++j)\n-129 out[j+1][0][i] = (i == j);\n-130 tmp -= in[i];\n-131 }\n-132\n-133 int n = numVertices;\n-134 std::array shapeValues;\n-135 evaluateVertexFunctions(in, shapeValues.begin());\n-136\n-137 // edge basis functions\n-138 if constexpr(dim > 1) {\n-139 auto refElem = referenceElement(GeometryTypes::simplex(dim));\n-140 for (int i = 0; i < numEdges; ++i,++n) {\n-141 const int v0 = refElem.subEntity(i,dim-1,0,dim);\n-142 const int v1 = refElem.subEntity(i,dim-1,1,dim);\n-143 for (int j = 0; j < dim; ++j)\n-144 out[n][0][j] = 4 * (out[v0][0][j] * shapeValues[v1] + shapeValues[v0] * out\n-[v1][0][j]);\n-145 }\n-146 }\n-147\n-148 // element bubble function\n-149 for (int i = 0; i < dim; ++i) {\n-150 out[n][0][i] = power(dim+1, dim+1) * (tmp - in[i]);\n-151 for (int j = i+1; j < dim+i; ++j)\n-152 out[n][0][i] *= in[j % dim];\n-153 }\n-154 }\n-155\n-_\b1_\b5_\b7 static constexpr void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-158 const DomainType& in,\n-159 std::vector& out)\n-160 {\n-161 unsigned int totalOrder = 0;\n-162 for (int i = 0; i < dim; ++i)\n-163 totalOrder += _\bo_\br_\bd_\be_\br[i];\n-164\n-165 switch (totalOrder) {\n-166 case 0:\n-167 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in,out);\n-168 break;\n-169 case 1: {\n-170 out.resize(_\bs_\bi_\bz_\be());\n-171 int d = 0; // the direction of differentiation\n-172 for (int i = 0; i < dim; ++i)\n-173 d += i * _\bo_\br_\bd_\be_\br[i];\n-174\n-175 // vertex basis functions\n-176 RangeType tmp = 1;\n-177 for (int i = 0; i < dim; ++i) {\n-178 out[0] = -1;\n-179 for (int j = 0; j < dim; ++j)\n-180 out[j+1] = (dim == j);\n-181 tmp -= in[i];\n-182 }\n-183\n-184 int n = numVertices;\n-185 std::array shapeValues;\n-186 evaluateVertexFunctions(in, shapeValues.begin());\n-187\n-188 // edge basis functions\n-189 if constexpr(dim > 1) {\n-190 auto refElem = referenceElement(GeometryTypes::simplex(dim));\n-191 for (int i = 0; i < numEdges; ++i,++n) {\n-192 const int v0 = refElem.subEntity(i,dim-1,0,dim);\n-193 const int v1 = refElem.subEntity(i,dim-1,1,dim);\n-194 out[n] = 4 * (out[v0] * shapeValues[v1] + shapeValues[v0] * out[v1]);\n-195 }\n-196 }\n-197\n-198 // element bubble function\n-199 out[n] = power(dim+1, dim+1) * (tmp - in[d]);\n-200 for (int j = d+1; j < dim+d; ++j)\n-201 out[n] *= in[j % dim];\n-202 } break;\n-203 default:\n-204 throw std::runtime_error(\"Desired derivative order is not implemented\");\n-205 }\n-206 }\n-207\n-_\b2_\b0_\b9 static constexpr unsigned int _\bo_\br_\bd_\be_\br () noexcept\n-210 {\n-211 return dim+1;\n-212 }\n-213 };\n-214\n-215\n-227 template \n-_\b2_\b2_\b8 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-229 {\n-230 // Number of vertices\n-231 static constexpr int numVertices = dim+1;\n-232\n-233 // Number of edges (or zero for dim==1)\n-234 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);\n-235\n-236 public:\n-_\b2_\b3_\b8 _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () noexcept\n-239 {\n-240 int n = 0;\n-241 for (int i = 0; i < numVertices; ++i)\n-242 li_[n++] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim,0); // Vertex\n-243 if constexpr(dim > 1) {\n-244 for (int i = 0; i < numEdges; ++i)\n-245 li_[n++] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim-1,0); // Edges\n-246 }\n-247 li_[n++] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0); // Element\n-248 }\n-249\n-_\b2_\b5_\b1 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n-252 {\n-253 return numVertices + numEdges + 1;\n-254 }\n-255\n-_\b2_\b5_\b7 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const noexcept\n-258 {\n-259 return li_[i];\n-260 }\n-261\n-262 private:\n-263 std::array li_;\n-264 };\n-265\n-269 template\n-_\b2_\b7_\b0 class _\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-271 {\n-272 using LocalBasis = LB;\n-273 using DomainType = typename LB::Traits::DomainType;\n-274 using RangeType = typename LB::Traits::RangeType;\n-275\n-276 // Number of vertices\n-277 static constexpr int numVertices = dim+1;\n-278\n-279 // Number of edges (or zero for dim==1)\n-280 static constexpr int numEdges = (dim > 1 ? ((dim+1)*dim / 2) : 0);\n-281\n-282 public:\n-290 template,\n-292 std::enable_if_t, int> = 0>\n-_\b2_\b9_\b3 static constexpr void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out)\n-294 {\n-295 auto refElem = referenceElement\n-(GeometryTypes::simplex(dim));\n-296\n-297 out.resize(LB::size());\n-298 int n = 0;\n-299\n-300 // vertices\n-301 assert(numVertices == refElem.size(dim));\n-302 for (int i = 0; i < numVertices; ++i)\n-303 out[n++] = f(refElem.position(i,dim));\n-304\n-305 std::array shapeValues;\n-306\n-307 // edge bubbles\n-308 if constexpr(dim > 1) {\n-309 assert(numEdges == refElem.size(dim-1));\n-310 for (int i = 0; i < numEdges; ++i) {\n-311 R y = f(refElem.position(i,dim-1));\n-312 LB::evaluateVertexFunctions(refElem.position(i,dim-1), shapeValues.begin\n-());\n-313 for (int j = 0; j < numVertices; ++j)\n-314 y -= out[j]*shapeValues[j];\n-315 out[n++] = y;\n-316 }\n-317 }\n-318\n-319 // element bubble\n-320 R y = f(refElem.position(0,0));\n-321 LB::evaluateAllFunctions(refElem.position(0,0), shapeValues.begin());\n-322 for (int j = 0; j < numVertices+numEdges; ++j)\n-323 y -= out[j]*shapeValues[j];\n-324 out[n++] = y;\n-325 }\n-326 };\n-327\n-328} // end namespace Dune\n-329\n-330#endif // DUNE_HIERARCHICAL_SIMPLEX_P2_WITH_ELEMENT_BUBBLE_LOCALBASIS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+77}\n+78\n+79#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-P1 basis in dim-d enriched by quadratic edge bubble functions and an element\n-bubble function of order...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-static constexpr void evaluateFunction(const DomainType &in, std::vector<\n-RangeType > &out)\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-static constexpr void partial(const std::array< unsigned int, dim > &order,\n-const DomainType &in, std::vector< RangeType > &out)\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:157\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-static constexpr unsigned int order() noexcept\n-Polynomial order of the shape functions (4 in this case)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:209\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-static constexpr void evaluateJacobian(const DomainType &in, std::vector<\n-JacobianType > &out)\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size() noexcept\n-Returns number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-The local keys of the hierarchical basis functions with element bubble.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:229\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:\n-_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-HierarchicalSimplexP2WithElementBubbleLocalCoefficients() noexcept\n-Default constructor, initializes the local keys.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size() noexcept\n-Returns number of coefficients.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:251\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const noexcept\n-Returns the i'th local key.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:257\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:271\n-_\bD_\bu_\bn_\be_\b:_\b:_\bH_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b2_\bW_\bi_\bt_\bh_\bE_\bl_\be_\bm_\be_\bn_\bt_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-static constexpr void interpolate(const F &f, std::vector< C > &out)\n-Local interpolation of the function f.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:293\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+void setCoefficients(const std::array< Dune::FieldVector< typename LB::Traits::\n+RangeFieldType,(1<< dim)>,(1<< dim)> &coefficients)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Local interpolation of a function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.hh:33\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: mimetic.hh File Reference\n+dune-localfunctions: dualq1localcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,35 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    mimetic.hh File Reference
    \n+
    dualq1localcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "common/localfiniteelementtraits.hh"
    \n-#include "mimetic/mimeticall.hh"
    \n+
    #include <cstddef>
    \n+#include <iostream>
    \n+#include <vector>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    class  Dune::MimeticLocalFiniteElement< D, R, dim >
    class  Dune::DualQ1LocalCoefficients< dim >
     Layout map for dual Q1 elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,20 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bq_\b1\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-mimetic.hh File Reference\n-#include \n-#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bm_\bi_\bm_\be_\bt_\bi_\bc_\b/_\bm_\bi_\bm_\be_\bt_\bi_\bc_\ba_\bl_\bl_\b._\bh_\bh\"\n+dualq1localcoefficients.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Layout map for dual Q1 elements. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: mimetic.hh Source File\n+dune-localfunctions: dualq1localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,112 +70,79 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    mimetic.hh
    \n+
    dualq1localcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_MIMETICLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_MIMETICLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-
    11#include "mimetic/mimeticall.hh"
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    22 template<class D, class R, int dim>
    \n-
    \n-\n-
    24 {
    \n-
    25 Dune::GeometryType gt;
    \n-\n-
    27 MimeticLocalCoefficients coefficients;
    \n-\n-
    29
    \n-
    30 public:
    \n-\n-\n-\n+
    8#include <cstddef>
    \n+
    9#include <iostream>
    \n+
    10#include <vector>
    \n+
    11
    \n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    24 template <int dim>
    \n+
    \n+\n+
    26 {
    \n+
    27 public:
    \n+
    \n+\n+
    30 {
    \n+
    31 for (std::size_t i=0; i<(1<<dim); i++)
    \n+
    32 li[i] = LocalKey(i,dim,0);
    \n+
    33 }
    \n+
    \n
    34
    \n-
    \n-\n-
    36 {}
    \n-
    \n-
    37
    \n-
    \n-
    38 MimeticLocalFiniteElement (Dune::GeometryType::BasicType basicType)
    \n-
    39 : gt(basicType,dim)
    \n-
    40 {}
    \n+
    \n+
    36 std::size_t size () const
    \n+
    37 {
    \n+
    38 return 1<<dim;
    \n+
    39 }
    \n
    \n-
    41
    \n+
    40
    \n
    \n-
    42 MimeticLocalFiniteElement (Dune::GeometryType::BasicType basicType, unsigned int variant)
    \n-
    43 : gt(basicType,dim), basis(variant), coefficients(variant)
    \n-
    44 {}
    \n-
    \n-
    45
    \n-
    \n-
    46 const typename Traits::LocalBasisType& localBasis () const
    \n-
    47 {
    \n-
    48 return basis;
    \n-
    49 }
    \n+
    42 const LocalKey& localKey (std::size_t i) const
    \n+
    43 {
    \n+
    44 return li[i];
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    47 private:
    \n+
    48 std::vector<LocalKey> li;
    \n+
    49 };
    \n
    \n
    50
    \n-
    \n-\n-
    52 {
    \n-
    53 return coefficients;
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    \n-\n-
    57 {
    \n-
    58 return interpolation;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    61 Dune::GeometryType type () const { return gt; }
    \n-
    62 };
    \n-
    \n-
    63}
    \n-
    64
    \n-
    65#endif
    \n-\n-\n+
    51}
    \n+
    52
    \n+
    53#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Definition mimetic.hh:24
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition mimetic.hh:56
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition mimetic.hh:46
    \n-
    MimeticLocalFiniteElement(Dune::GeometryType::BasicType basicType, unsigned int variant)
    Definition mimetic.hh:42
    \n-
    MimeticLocalFiniteElement()
    Definition mimetic.hh:35
    \n-
    MimeticLocalFiniteElement(Dune::GeometryType::BasicType basicType)
    Definition mimetic.hh:38
    \n-
    Dune::GeometryType type() const
    Definition mimetic.hh:61
    \n-
    Dune::LocalFiniteElementTraits< MimeticLocalBasis< D, R, dim >, MimeticLocalCoefficients, MimeticLocalInterpolation< MimeticLocalBasis< D, R, dim > > > Traits
    Definition mimetic.hh:33
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition mimetic.hh:51
    \n-
    Definition mimeticall.hh:23
    \n-
    Definition mimeticall.hh:74
    \n-
    !
    Definition mimeticall.hh:88
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for dual Q1 elements.
    Definition dualq1localcoefficients.hh:26
    \n+
    std::size_t size() const
    number of coefficients
    Definition dualq1localcoefficients.hh:36
    \n+
    DualQ1LocalCoefficients()
    Standard constructor.
    Definition dualq1localcoefficients.hh:29
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition dualq1localcoefficients.hh:42
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,122 +1,77 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-mimetic.hh\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bq_\b1\n+dualq1localcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_MIMETICLOCALFINITEELEMENT_HH\n-6#define DUNE_MIMETICLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH\n+6#define DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9\n-10#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-11#include \"_\bm_\bi_\bm_\be_\bt_\bi_\bc_\b/_\bm_\bi_\bm_\be_\bt_\bi_\bc_\ba_\bl_\bl_\b._\bh_\bh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-22 template\n-_\b2_\b3 class _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-24 {\n-25 Dune::GeometryType gt;\n-26 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> basis;\n-27 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-28 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> > interpolation;\n-29\n-30 public:\n-31 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,\n-32 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+8#include \n+9#include \n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+24 template \n+_\b2_\b5 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+26 {\n+27 public:\n+_\b2_\b9 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(1< li;\n+49 };\n 50\n-_\b5_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-52 {\n-53 return coefficients;\n-54 }\n-55\n-_\b5_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-57 {\n-58 return interpolation;\n-59 }\n-60\n-_\b6_\b1 Dune::GeometryType _\bt_\by_\bp_\be () const { return gt; }\n-62 };\n-63}\n-64\n-65#endif\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bm_\bi_\bm_\be_\bt_\bi_\bc_\ba_\bl_\bl_\b._\bh_\bh\n+51}\n+52\n+53#endif\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-MimeticLocalFiniteElement(Dune::GeometryType::BasicType basicType, unsigned int\n-variant)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-MimeticLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-MimeticLocalFiniteElement(Dune::GeometryType::BasicType basicType)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-Dune::GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-Dune::LocalFiniteElementTraits< MimeticLocalBasis< D, R, dim >,\n-MimeticLocalCoefficients, MimeticLocalInterpolation< MimeticLocalBasis< D, R,\n-dim > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-!\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for dual Q1 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+DualQ1LocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:42\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: simplexp1bubble.hh File Reference\n+dune-localfunctions: dualp1.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,36 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    simplexp1bubble.hh File Reference
    \n+
    dualp1.hh File Reference
    \n
    \n
    \n \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::SimplexP1BubbleLocalFiniteElement< D, R, dim >
     Linear Lagrange functions enriched with an element bubble function. More...
    class  Dune::DualP1LocalFiniteElement< D, R, dim, faceDual >
     The local dual p1 finite element on simplices. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-simplexp1bubble.hh File Reference\n+dualp1.hh File Reference\n #include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Linear Lagrange functions enriched with an element bubble function.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b _\b>\n+\u00a0 The local dual p1 finite element on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: simplexp1bubble.hh Source File\n+dune-localfunctions: dualp1.hh Source File\n \n \n \n \n \n \n \n@@ -70,116 +70,118 @@\n
    \n \n \n \n \n \n \n
    \n-
    simplexp1bubble.hh
    \n+
    dualp1.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH
    \n
    7
    \n
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-\n-\n-\n-\n+\n+\n+\n+\n
    14
    \n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    43 template<class D, class R, int dim>
    \n-
    \n-\n-
    45 {
    \n-
    46 public:
    \n-\n-
    49
    \n-\n-
    52
    \n-\n-
    55
    \n-\n-
    58
    \n-
    59
    \n-
    \n-
    61 const LocalBasisType& localBasis () const
    \n-
    62 {
    \n-
    63 return basis_;
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    \n-\n-
    68 {
    \n-
    69 return coefficients_;
    \n-
    70 }
    \n-
    \n-
    71
    \n-
    \n-\n-
    74 {
    \n-
    75 return interpolation_;
    \n-
    76 }
    \n-
    \n-
    77
    \n-
    \n-
    79 static constexpr std::size_t size () noexcept
    \n-
    80 {
    \n-
    81 return LocalBasisType::size();
    \n-
    82 }
    \n-
    \n-
    83
    \n-
    \n-
    85 static constexpr GeometryType type () noexcept
    \n-
    86 {
    \n-
    87 return GeometryTypes::simplex(dim);
    \n-
    88 }
    \n-
    \n-
    89
    \n-
    90 private:
    \n-
    91 LocalCoefficientsType coefficients_{};
    \n-
    92 [[no_unique_address]] LocalBasisType basis_{};
    \n-
    93 [[no_unique_address]] LocalInterpolationType interpolation_{};
    \n-
    94 };
    \n-
    \n-
    95
    \n-
    96} // end namespace Dune
    \n-
    97
    \n-
    98#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH
    \n-\n+
    15namespace Dune
    \n+
    16{
    \n+
    17
    \n+
    33 template<class D, class R, int dim, bool faceDual=false>
    \n+
    \n+\n+
    35 {
    \n+
    36 public:
    \n+\n+\n+
    41
    \n+
    \n+\n+
    45 {}
    \n+
    \n+
    46
    \n+
    \n+
    49 const typename Traits::LocalBasisType& localBasis () const
    \n+
    50 {
    \n+
    51 return basis;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    57 {
    \n+
    58 return coefficients;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+\n+
    64 {
    \n+
    65 return interpolation;
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    \n+
    69 unsigned int size () const
    \n+
    70 {
    \n+
    71 return basis.size();
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    \n+
    76 static constexpr GeometryType type ()
    \n+
    77 {
    \n+
    78 return GeometryTypes::simplex(dim);
    \n+
    79 }
    \n+
    \n+
    80
    \n+
    81 private:
    \n+\n+\n+\n+
    85 };
    \n+
    \n+
    86
    \n+
    87
    \n+
    88
    \n+
    89}
    \n+
    90
    \n+
    91#endif
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    Linear Lagrange functions enriched with an element bubble function.
    Definition simplexp1bubble.hh:45
    \n-
    const LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition simplexp1bubble.hh:73
    \n-
    SimplexP1BubbleLocalBasis< D, R, dim > LocalBasisType
    Type of the local basis.
    Definition simplexp1bubble.hh:48
    \n-
    const LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition simplexp1bubble.hh:67
    \n-
    const LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition simplexp1bubble.hh:61
    \n-
    SimplexP1BubbleLocalCoefficients< dim > LocalCoefficientsType
    Type of the local coefficients.
    Definition simplexp1bubble.hh:51
    \n-
    static constexpr std::size_t size() noexcept
    Returns the number of shape functions in this finite-element.
    Definition simplexp1bubble.hh:79
    \n-
    SimplexP1BubbleLocalInterpolation< LocalBasisType > LocalInterpolationType
    Type of the local interpolation.
    Definition simplexp1bubble.hh:54
    \n-
    static constexpr GeometryType type() noexcept
    Returns the type of the geometry the finite-element is attached to.
    Definition simplexp1bubble.hh:85
    \n-
    P1 basis in dim-d enriched by an (order dim+1) element bubble function.
    Definition enriched/simplexp1bubble/localbasis.hh:35
    \n-
    static constexpr std::size_t size() noexcept
    Returns number of shape functions.
    Definition enriched/simplexp1bubble/localbasis.hh:55
    \n-
    The Local keys associated to the dim-d local basis functions.
    Definition enriched/simplexp1bubble/localcoefficients.hh:24
    \n-\n-\n-\n-\n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    The local dual p1 finite element on simplices.
    Definition dualp1.hh:35
    \n+
    DualP1LocalFiniteElement()
    Definition dualp1.hh:44
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition dualp1.hh:69
    \n+
    LocalFiniteElementTraits< DualP1LocalBasis< D, R, dim, faceDual >, DualP1LocalCoefficients< dim >, DualP1LocalInterpolation< dim, DualP1LocalBasis< D, R, dim, faceDual > > > Traits
    Definition dualp1.hh:40
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition dualp1.hh:63
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition dualp1.hh:49
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition dualp1.hh:56
    \n+
    static constexpr GeometryType type()
    Definition dualp1.hh:76
    \n+
    Dual Lagrange shape functions on the simplex.
    Definition dualp1localbasis.hh:35
    \n+
    Local coefficients for dual simplex P1 elements.
    Definition dualp1localcoefficients.hh:24
    \n+
    Definition dualp1localinterpolation.hh:17
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,133 +1,130 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n-simplexp1bubble.hh\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+dualp1.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH\n-6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH\n+6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH\n 7\n 8#include \n 9\n 10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+11#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n 14\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-43 template\n-_\b4_\b4 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-45 {\n-46 public:\n-_\b4_\b8 using _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be = _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>;\n-49\n-_\b5_\b1 using _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be = _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b>;\n-52\n-_\b5_\b4 using _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be =\n-_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b>;\n-55\n-_\b5_\b7 using _\bT_\br_\ba_\bi_\bt_\bs =\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b,_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be_\b,_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\b>;\n-58\n-59\n-_\b6_\b1 const _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-62 {\n-63 return basis_;\n-64 }\n-65\n-_\b6_\b7 const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-68 {\n-69 return coefficients_;\n-70 }\n-71\n-_\b7_\b3 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-74 {\n-75 return interpolation_;\n-76 }\n-77\n-_\b7_\b9 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n-80 {\n-81 return _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bs_\bi_\bz_\be();\n-82 }\n-83\n-_\b8_\b5 static constexpr GeometryType _\bt_\by_\bp_\be () noexcept\n-86 {\n-87 return GeometryTypes::simplex(dim);\n-88 }\n-89\n-90 private:\n-91 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients_{};\n-92 [[no_unique_address]] _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be basis_{};\n-93 [[no_unique_address]] _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be interpolation_{};\n-94 };\n-95\n-96} // end namespace Dune\n-97\n-98#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17\n+33 template\n+_\b3_\b4 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+35 {\n+36 public:\n+39 typedef\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b>,_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b>,\n+_\b4_\b0 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+41\n+_\b4_\b4 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+45 {}\n+46\n+_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+50 {\n+51 return basis;\n+52 }\n+53\n+_\b5_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+57 {\n+58 return coefficients;\n+59 }\n+60\n+_\b6_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+64 {\n+65 return interpolation;\n+66 }\n+67\n+_\b6_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+70 {\n+71 return basis.size();\n+72 }\n+73\n+_\b7_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+77 {\n+78 return GeometryTypes::simplex(dim);\n+79 }\n+80\n+81 private:\n+82 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> basis;\n+83 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b> coefficients;\n+84 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> >\n+interpolation;\n+85 };\n+86\n+87\n+88\n+89}\n+90\n+91#endif\n _\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n traits helper struct\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Linear Lagrange functions enriched with an element bubble function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const LocalInterpolationType & localInterpolation() const\n-Returns object that evaluates degrees of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-SimplexP1BubbleLocalBasis< D, R, dim > LocalBasisType\n-Type of the local basis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const LocalCoefficientsType & localCoefficients() const\n-Returns the assignment of the degrees of freedom to the element subentities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const LocalBasisType & localBasis() const\n-Returns the local basis, i.e., the set of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-SimplexP1BubbleLocalCoefficients< dim > LocalCoefficientsType\n-Type of the local coefficients.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size() noexcept\n-Returns the number of shape functions in this finite-element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-SimplexP1BubbleLocalInterpolation< LocalBasisType > LocalInterpolationType\n-Type of the local interpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type() noexcept\n-Returns the type of the geometry the finite-element is attached to.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-P1 basis in dim-d enriched by an (order dim+1) element bubble function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size() noexcept\n-Returns number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localbasis.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-The Local keys associated to the dim-d local basis functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b _\b>\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+The local dual p1 finite element on simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+DualP1LocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< DualP1LocalBasis< D, R, dim, faceDual >,\n+DualP1LocalCoefficients< dim >, DualP1LocalInterpolation< dim,\n+DualP1LocalBasis< D, R, dim, faceDual > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Dual Lagrange shape functions on the simplex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Local coefficients for dual simplex P1 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localinterpolation.hh:17\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannacherturek2dlocalbasis.hh File Reference\n+dune-localfunctions: dualpq1factory.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    rannacherturek2dlocalbasis.hh File Reference
    \n+
    dualpq1factory.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n+\n \n

    \n Classes

    struct  Dune::RannacherTurek2DLocalBasis< D, R >
    class  Dune::DualPQ1LocalFiniteElementCache< D, R, dim, faceDual >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-rannacherturek2dlocalbasis.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+dualpq1factory.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannacherturek2dlocalbasis.hh Source File\n+dune-localfunctions: dualpq1factory.hh Source File\n \n \n \n \n \n \n \n@@ -70,159 +70,118 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannacherturek2dlocalbasis.hh
    \n+
    dualpq1factory.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH
    \n-
    6#define DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include <dune/common/fvector.hh>
    \n-
    12#include <dune/common/fmatrix.hh>
    \n-
    13
    \n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    22 template< class D, class R >
    \n-
    \n-\n-
    24 {
    \n-\n-
    26 R, 1, FieldVector< R, 1 >,
    \n-
    27 FieldMatrix< R, 1, 2 > > Traits;
    \n-
    28
    \n-
    \n-
    30 unsigned int size () const
    \n-
    31 {
    \n-
    32 return 4;
    \n-
    33 }
    \n-
    \n-
    34
    \n-
    \n-
    36 inline void evaluateFunction ( const typename Traits::DomainType &in,
    \n-
    37 std::vector< typename Traits::RangeType > &out ) const
    \n-
    38 {
    \n-
    39 out.resize(4);
    \n-
    40 typename Traits::DomainFieldType qbase = in[0]*in[0]-in[1]*in[1];
    \n-
    41 out[0] = .75 - 2*in[0] + in[1] + qbase;
    \n-
    42 out[1] = -.25 + in[1] + qbase;
    \n-
    43 out[2] = .75 + in[0] - 2*in[1] - qbase;
    \n-
    44 out[3] = -.25 + in[0] - qbase;
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    \n-
    48 inline void evaluateJacobian ( const typename Traits::DomainType &in,
    \n-
    49 std::vector< typename Traits::JacobianType > &out ) const
    \n-
    50 {
    \n-
    51 out.resize(4);
    \n-
    52
    \n-
    53 // see http://www.dune-project.org/doc/doxygen/html/classDune_1_1C1LocalBasisInterface.html#d6f8368f8aa43439cc7ef10419f6e2ea
    \n-
    54 // out[i][j][k] = d_k \\phi^i_j , where \\phi^i_j is the j'th component of the i'th shape function.
    \n-
    55
    \n-
    56 out[0][0][0] = -2 + 2*in[0]; out[0][0][1] = 1 - 2*in[1];
    \n-
    57 out[1][0][0] = 2*in[0]; out[1][0][1] = 1 - 2*in[1];
    \n-
    58 out[2][0][0] = 1 - 2*in[0]; out[2][0][1] = -2 + 2*in[1];
    \n-
    59 out[3][0][0] = 1 - 2*in[0]; out[3][0][1] = 2*in[1];
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    \n-
    63 void partial (const std::array<unsigned int, 2>& order,
    \n-
    64 const typename Traits::DomainType& in, // position
    \n-
    65 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    66 {
    \n-
    67 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    68 if (totalOrder == 0) {
    \n-
    69 evaluateFunction(in, out);
    \n-
    70 } else if (totalOrder == 1) {
    \n-
    71 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    72 out.resize(size());
    \n-
    73
    \n-
    74 switch (direction) {
    \n-
    75 case 0:
    \n-
    76 out[0] = -2 + 2*in[0];
    \n-
    77 out[1] = 2*in[0];
    \n-
    78 out[2] = 1 - 2*in[0];
    \n-
    79 out[3] = 1 - 2*in[0];
    \n-
    80 break;
    \n-
    81 case 1:
    \n-
    82 out[0] = 1 - 2*in[1];
    \n-
    83 out[1] = 1 - 2*in[1];
    \n-
    84 out[2] = -2 + 2*in[1];
    \n-
    85 out[3] = 2*in[1];
    \n-
    86 break;
    \n-
    87 default:
    \n-
    88 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    89 }
    \n-
    90 } else if (totalOrder == 2) {
    \n-
    91 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 2));
    \n-
    92 out.resize(size());
    \n-
    93
    \n-
    94 switch (direction) {
    \n-
    95 case 0:
    \n-
    96 out[0] = out[1] = 2;
    \n-
    97 out[2] = out[3] =-2;
    \n-
    98 break;
    \n-
    99 case 1:
    \n-
    100 out[0] = out[1] =-2;
    \n-
    101 out[2] = out[3] = 2;
    \n-
    102 break;
    \n-
    103 default:
    \n-
    104 out[0] = out[1] = out[2] = out[3] = 0;
    \n-
    105 break;
    \n-
    106 }
    \n-
    107 } else {
    \n-
    108 out[0] = out[1] = out[2] = out[3] = 0;
    \n-
    109 }
    \n-
    110 }
    \n-
    \n-
    111
    \n-
    \n-
    113 unsigned int order () const
    \n-
    114 {
    \n-
    115 // must be 2 here since it contains x^2 and x^2
    \n-
    116 return 2;
    \n-
    117 }
    \n-
    \n-
    118 };
    \n-
    \n-
    119
    \n-
    120} //namespace Dune
    \n-
    121
    \n-
    122#endif // #ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH
    \n+
    8#include <map>
    \n+
    9
    \n+\n+\n+
    12
    \n+\n+
    14
    \n+
    15namespace Dune {
    \n+
    16
    \n+
    17template<class D, class R, int dim, bool faceDual=false>
    \n+
    \n+\n+
    19{
    \n+
    20protected:
    \n+\n+\n+\n+\n+
    25 typedef std::map<Dune::GeometryType,FE*> FEMap;
    \n+
    26
    \n+
    27public:
    \n+\n+
    30
    \n+
    \n+\n+
    32 {
    \n+
    33 typename FEMap::iterator it = cache_.begin();
    \n+
    34 typename FEMap::iterator end = cache_.end();
    \n+
    35 for(; it!=end; ++it)
    \n+
    36 delete it->second;
    \n+
    37 }
    \n+
    \n+
    38
    \n+
    \n+
    40 static FE* create(const Dune::GeometryType& gt)
    \n+
    41 {
    \n+
    42 if (gt.isSimplex())
    \n+\n+
    44 if (gt.isCube())
    \n+\n+
    46 return 0;
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    \n+
    50 const FiniteElementType& get(const Dune::GeometryType& gt) const
    \n+
    51 {
    \n+
    52 typename FEMap::const_iterator it = cache_.find(gt);
    \n+
    53 if (it==cache_.end())
    \n+
    54 {
    \n+
    55 FiniteElementType* fe = create(gt);
    \n+
    56
    \n+
    57 if (fe==0)
    \n+
    58 DUNE_THROW(Dune::NotImplemented,"No Dual P/Q1 like local finite element available for geometry type " << gt);
    \n+
    59
    \n+
    60 cache_[gt] = fe;
    \n+
    61 return *fe;
    \n+
    62 }
    \n+
    63 return *(it->second);
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    66protected:
    \n+
    67 mutable FEMap cache_;
    \n+
    68};
    \n+
    \n+
    69
    \n+
    70} // namespace Dune
    \n+
    71
    \n+
    72#endif // DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    DF DomainFieldType
    Export type for domain field.
    Definition common/localbasis.hh:37
    \n-
    Definition rannacherturek2dlocalbasis.hh:24
    \n-
    LocalBasisTraits< D, 2, FieldVector< D, 2 >, R, 1, FieldVector< R, 1 >, FieldMatrix< R, 1, 2 > > Traits
    Definition rannacherturek2dlocalbasis.hh:27
    \n-
    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 rannacherturek2dlocalbasis.hh:63
    \n-
    unsigned int size() const
    number of shape functions
    Definition rannacherturek2dlocalbasis.hh:30
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    evaluate all shape functions
    Definition rannacherturek2dlocalbasis.hh:36
    \n-
    unsigned int order() const
    polynomial order of the shape functions
    Definition rannacherturek2dlocalbasis.hh:113
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    evaluate jacobian of all shape functions
    Definition rannacherturek2dlocalbasis.hh:48
    \n-\n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:225
    \n+
    class for wrapping a finite element using the virtual interface
    Definition virtualwrappers.hh:240
    \n+
    The local dual p1 finite element on simplices.
    Definition dualp1.hh:35
    \n+
    Definition dualpq1factory.hh:19
    \n+
    Dune::DualP1LocalFiniteElement< D, R, dim, faceDual > DualP1
    Definition dualpq1factory.hh:21
    \n+
    ~DualPQ1LocalFiniteElementCache()
    Definition dualpq1factory.hh:31
    \n+
    FEMap cache_
    Definition dualpq1factory.hh:67
    \n+
    DualP1::Traits::LocalBasisType::Traits T
    Definition dualpq1factory.hh:23
    \n+
    static FE * create(const Dune::GeometryType &gt)
    create finite element for given GeometryType
    Definition dualpq1factory.hh:40
    \n+
    FE FiniteElementType
    Type of the finite elements stored in this cache.
    Definition dualpq1factory.hh:29
    \n+
    const FiniteElementType & get(const Dune::GeometryType &gt) const
    Get local finite element for given GeometryType.
    Definition dualpq1factory.hh:50
    \n+
    Dune::LocalFiniteElementVirtualInterface< T > FE
    Definition dualpq1factory.hh:24
    \n+
    std::map< Dune::GeometryType, FE * > FEMap
    Definition dualpq1factory.hh:25
    \n+
    Dune::DualQ1LocalFiniteElement< D, R, dim, faceDual > DualQ1
    Definition dualpq1factory.hh:22
    \n+
    The local dual Q1 finite element on cubes.
    Definition dualq1.hh:42
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,174 +1,137 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd\n-rannacherturek2dlocalbasis.hh\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+dualpq1factory.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH\n-6#define DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH\n+6#define DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-22 template< class D, class R >\n-_\b2_\b3 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-24 {\n-25 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\b,_\b _\b2_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bD_\b,_\b _\b2_\b _\b>,\n-26 R, 1, FieldVector< R, 1 >,\n-_\b2_\b7 FieldMatrix< R, 1, 2 > > _\bT_\br_\ba_\bi_\bt_\bs;\n-28\n-_\b3_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-31 {\n-32 return 4;\n-33 }\n-34\n-_\b3_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be &in,\n-37 std::vector< typename Traits::RangeType > &out ) const\n-38 {\n-39 out.resize(4);\n-40 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be qbase = in[0]*in[0]-in[1]*in[1];\n-41 out[0] = .75 - 2*in[0] + in[1] + qbase;\n-42 out[1] = -.25 + in[1] + qbase;\n-43 out[2] = .75 + in[0] - 2*in[1] - qbase;\n-44 out[3] = -.25 + in[0] - qbase;\n-45 }\n-46\n-_\b4_\b8 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be &in,\n-49 std::vector< typename Traits::JacobianType > &out ) const\n-50 {\n-51 out.resize(4);\n-52\n-53 // see http://www.dune-project.org/doc/doxygen/html/\n-classDune_1_1C1LocalBasisInterface.html#d6f8368f8aa43439cc7ef10419f6e2ea\n-54 // out[i][j][k] = d_k \\phi^i_j , where \\phi^i_j is the j'th component of the\n-i'th shape function.\n-55\n-56 out[0][0][0] = -2 + 2*in[0]; out[0][0][1] = 1 - 2*in[1];\n-57 out[1][0][0] = 2*in[0]; out[1][0][1] = 1 - 2*in[1];\n-58 out[2][0][0] = 1 - 2*in[0]; out[2][0][1] = -2 + 2*in[1];\n-59 out[3][0][0] = 1 - 2*in[0]; out[3][0][1] = 2*in[1];\n-60 }\n-61\n-_\b6_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-64 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-65 std::vector& out) const // return value\n-66 {\n-67 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-68 if (totalOrder == 0) {\n-69 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-70 } else if (totalOrder == 1) {\n-71 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n-_\bo_\br_\bd_\be_\br.end(), 1));\n-72 out.resize(_\bs_\bi_\bz_\be());\n-73\n-74 switch (direction) {\n-75 case 0:\n-76 out[0] = -2 + 2*in[0];\n-77 out[1] = 2*in[0];\n-78 out[2] = 1 - 2*in[0];\n-79 out[3] = 1 - 2*in[0];\n-80 break;\n-81 case 1:\n-82 out[0] = 1 - 2*in[1];\n-83 out[1] = 1 - 2*in[1];\n-84 out[2] = -2 + 2*in[1];\n-85 out[3] = 2*in[1];\n-86 break;\n-87 default:\n-88 DUNE_THROW(RangeError, \"Component out of range.\");\n-89 }\n-90 } else if (totalOrder == 2) {\n-91 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n-_\bo_\br_\bd_\be_\br.end(), 2));\n-92 out.resize(_\bs_\bi_\bz_\be());\n-93\n-94 switch (direction) {\n-95 case 0:\n-96 out[0] = out[1] = 2;\n-97 out[2] = out[3] =-2;\n-98 break;\n-99 case 1:\n-100 out[0] = out[1] =-2;\n-101 out[2] = out[3] = 2;\n-102 break;\n-103 default:\n-104 out[0] = out[1] = out[2] = out[3] = 0;\n-105 break;\n-106 }\n-107 } else {\n-108 out[0] = out[1] = out[2] = out[3] = 0;\n-109 }\n-110 }\n-111\n-_\b1_\b1_\b3 unsigned int _\bo_\br_\bd_\be_\br () const\n-114 {\n-115 // must be 2 here since it contains x^2 and x^2\n-116 return 2;\n-117 }\n-118 };\n-119\n-120} //namespace Dune\n-121\n-122#endif // #ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh>\n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+14\n+15namespace _\bD_\bu_\bn_\be {\n+16\n+17template\n+_\b1_\b8class _\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+19{\n+20protected:\n+_\b2_\b1 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> _\bD_\bu_\ba_\bl_\bP_\b1;\n+_\b2_\b2 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> _\bD_\bu_\ba_\bl_\bQ_\b1;\n+_\b2_\b3 typedef typename _\bD_\bu_\ba_\bl_\bP_\b1_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT;\n+_\b2_\b4 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b> _\bF_\bE;\n+_\b2_\b5 typedef std::map _\bF_\bE_\bM_\ba_\bp;\n+26\n+27public:\n+_\b2_\b9 typedef _\bF_\bE _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n+30\n+_\b3_\b1 _\b~_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be()\n+32 {\n+33 typename FEMap::iterator it = _\bc_\ba_\bc_\bh_\be_\b_.begin();\n+34 typename FEMap::iterator end = _\bc_\ba_\bc_\bh_\be_\b_.end();\n+35 for(; it!=end; ++it)\n+36 delete it->second;\n+37 }\n+38\n+_\b4_\b0 static _\bF_\bE* _\bc_\br_\be_\ba_\bt_\be(const Dune::GeometryType& gt)\n+41 {\n+42 if (gt.isSimplex())\n+43 return new _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bD_\bu_\ba_\bl_\bP_\b1_\b>(_\bD_\bu_\ba_\bl_\bP_\b1());\n+44 if (gt.isCube())\n+45 return new _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bD_\bu_\ba_\bl_\bQ_\b1_\b>(_\bD_\bu_\ba_\bl_\bQ_\b1());\n+46 return 0;\n+47 }\n+48\n+_\b5_\b0 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& _\bg_\be_\bt(const Dune::GeometryType& gt) const\n+51 {\n+52 typename FEMap::const_iterator it = _\bc_\ba_\bc_\bh_\be_\b_.find(gt);\n+53 if (it==_\bc_\ba_\bc_\bh_\be_\b_.end())\n+54 {\n+55 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be* fe = _\bc_\br_\be_\ba_\bt_\be(gt);\n+56\n+57 if (fe==0)\n+58 DUNE_THROW(Dune::NotImplemented,\"No Dual P/Q1 like local finite element\n+available for geometry type \" << gt);\n+59\n+60 _\bc_\ba_\bc_\bh_\be_\b_[gt] = fe;\n+61 return *fe;\n+62 }\n+63 return *(it->second);\n+64 }\n+65\n+66protected:\n+_\b6_\b7 mutable _\bF_\bE_\bM_\ba_\bp _\bc_\ba_\bc_\bh_\be_\b_;\n+68};\n+69\n+70} // namespace Dune\n+71\n+72#endif // DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH\n+_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh\n+_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n-DF DomainFieldType\n-Export type for domain field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, FieldVector< D, 2 >, R, 1, FieldVector< R, 1 >,\n-FieldMatrix< R, 1, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-evaluate all shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-polynomial order of the shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-evaluate jacobian of all shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:48\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for local finite elements with functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+class for wrapping a finite element using the virtual interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+The local dual p1 finite element on simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1\n+Dune::DualP1LocalFiniteElement< D, R, dim, faceDual > DualP1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\b~_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+~DualPQ1LocalFiniteElementCache()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bc_\ba_\bc_\bh_\be_\b_\n+FEMap cache_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bT\n+DualP1::Traits::LocalBasisType::Traits T\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static FE * create(const Dune::GeometryType >)\n+create finite element for given GeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+FE FiniteElementType\n+Type of the finite elements stored in this cache.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n+const FiniteElementType & get(const Dune::GeometryType >) const\n+Get local finite element for given GeometryType.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bE\n+Dune::LocalFiniteElementVirtualInterface< T > FE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bE_\bM_\ba_\bp\n+std::map< Dune::GeometryType, FE * > FEMap\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1\n+Dune::DualQ1LocalFiniteElement< D, R, dim, faceDual > DualQ1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+The local dual Q1 finite element on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:42\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannachertureklocalbasis.hh File Reference\n+dune-localfunctions: dualq1.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    rannachertureklocalbasis.hh File Reference
    \n+
    dualq1.hh File Reference
    \n
    \n
    \n-
    #include "rannacherturek2d/rannacherturek2dlocalbasis.hh"
    \n-#include "rannacherturek3d/rannacherturek3dlocalbasis.hh"
    \n+
    #include <array>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n+#include "dualq1/dualq1localbasis.hh"
    \n+#include "dualq1/dualq1localcoefficients.hh"
    \n+#include "dualq1/dualq1localinterpolation.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::RannacherTurekLocalBasis< D, R, 2 >
     
    struct  Dune::RannacherTurekLocalBasis< D, R, 3 >
    class  Dune::DualQ1LocalFiniteElement< D, R, dim, faceDual >
     The local dual Q1 finite element on cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,30 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-rannachertureklocalbasis.hh File Reference\n-#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+dualq1.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b _\b>\n+\u00a0 The local dual Q1 finite element on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannachertureklocalbasis.hh Source File\n+dune-localfunctions: dualq1.hh Source File\n \n \n \n \n \n \n \n@@ -70,60 +70,264 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannachertureklocalbasis.hh
    \n+
    dualq1.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n-
    6#define DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_DUAL_Q1_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_DUAL_Q1_LOCALFINITEELEMENT_HH
    \n
    7
    \n-\n-\n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    13
    \n-
    24 template< class D, class R, unsigned int d >
    \n-\n-
    26
    \n-
    27 template< class D, class R >
    \n-
    \n-
    28 struct RannacherTurekLocalBasis< D, R, 2 >
    \n-
    29 : public RannacherTurek2DLocalBasis< D, R >
    \n-
    30 {};
    \n-
    \n-
    31
    \n-
    32 template< class D, class R >
    \n-
    \n-
    33 struct RannacherTurekLocalBasis< D, R, 3 >
    \n-
    34 : public RannacherTurek3DLocalBasis< D, R >
    \n-
    35 {};
    \n-
    \n-
    36
    \n-
    37} // namespace Dune
    \n-
    38
    \n-
    39#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n-\n-\n+
    8#include <array>
    \n+
    9
    \n+
    10#include <dune/common/fvector.hh>
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \n+
    13#include <dune/geometry/type.hh>
    \n+
    14#include <dune/geometry/referenceelements.hh>
    \n+
    15#include <dune/geometry/quadraturerules.hh>
    \n+
    16
    \n+\n+\n+\n+\n+\n+
    22
    \n+
    23namespace Dune
    \n+
    24{
    \n+
    40 template<class D, class R, int dim, bool faceDual=false>
    \n+
    \n+\n+
    42 {
    \n+
    43 public:
    \n+\n+\n+
    48
    \n+
    \n+\n+
    52 {
    \n+
    53 if (faceDual)
    \n+
    54 setupFaceDualCoefficients();
    \n+
    55 else
    \n+
    56 setupDualCoefficients();
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+
    61 const typename Traits::LocalBasisType& localBasis () const
    \n+
    62 {
    \n+
    63 return basis;
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    \n+\n+
    69 {
    \n+
    70 return coefficients;
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    \n+\n+
    76 {
    \n+
    77 return interpolation;
    \n+
    78 }
    \n+
    \n+
    79
    \n+
    \n+
    81 unsigned int size () const
    \n+
    82 {
    \n+
    83 return basis.size();
    \n+
    84 }
    \n+
    \n+
    85
    \n+
    \n+
    88 static constexpr GeometryType type ()
    \n+
    89 {
    \n+
    90 return GeometryTypes::cube(dim);
    \n+
    91 }
    \n+
    \n+
    92
    \n+
    93 private:
    \n+
    95 void setupFaceDualCoefficients();
    \n+
    96
    \n+
    98 void setupDualCoefficients();
    \n+
    99
    \n+\n+
    101 DualQ1LocalCoefficients<dim> coefficients;
    \n+\n+
    103 };
    \n+
    \n+
    104
    \n+
    105 template<class D, class R, int dim, bool faceDual>
    \n+
    106 void DualQ1LocalFiniteElement<D,R,dim,faceDual>::setupDualCoefficients()
    \n+
    107 {
    \n+
    108
    \n+
    109 const int size = 1 <<dim;
    \n+
    110 std::array<Dune::FieldVector<R, size>, size> coeffs;
    \n+
    111
    \n+
    112 // dual basis functions are linear combinations of Lagrange elements
    \n+
    113 // compute these coefficients here because the basis and the local interpolation needs them
    \n+
    114 const auto& quad = Dune::QuadratureRules<D,dim>::rule(type(), 2*dim);
    \n+
    115
    \n+
    116 // assemble mass matrix on the reference element
    \n+
    117 Dune::FieldMatrix<R, size, size> massMat;
    \n+
    118 massMat = 0;
    \n+
    119
    \n+
    120 // and the integrals of the lagrange shape functions
    \n+
    121 std::vector<Dune::FieldVector<R,1> > integral(size);
    \n+
    122 for (int i=0; i<size; i++)
    \n+
    123 integral[i] = 0;
    \n+
    124
    \n+
    125 Dune::Impl::LagrangeCubeLocalBasis<D,R,dim,1> q1Basis;
    \n+
    126 for(size_t pt=0; pt<quad.size(); pt++) {
    \n+
    127
    \n+
    128 const Dune::FieldVector<D ,dim>& pos = quad[pt].position();
    \n+
    129 std::vector<Dune::FieldVector<R,1> > q1Values(size);
    \n+
    130 q1Basis.evaluateFunction(pos,q1Values);
    \n+
    131
    \n+
    132 D weight = quad[pt].weight();
    \n+
    133
    \n+
    134 for (int k=0; k<size; k++) {
    \n+
    135 integral[k] += q1Values[k]*weight;
    \n+
    136
    \n+
    137 for (int l=0; l<=k; l++)
    \n+
    138 massMat[k][l] += weight*(q1Values[k]*q1Values[l]);
    \n+
    139 }
    \n+
    140 }
    \n+
    141
    \n+
    142 // make matrix symmetric
    \n+
    143 for (int i=0; i<size-1; i++)
    \n+
    144 for (int j=i+1; j<size; j++)
    \n+
    145 massMat[i][j] = massMat[j][i];
    \n+
    146
    \n+
    147 //solve for the coefficients
    \n+
    148
    \n+
    149 for (int i=0; i<size; i++) {
    \n+
    150
    \n+
    151 Dune::FieldVector<R, size> rhs(0);
    \n+
    152 rhs[i] = integral[i];
    \n+
    153
    \n+
    154 coeffs[i] = 0;
    \n+
    155 massMat.solve(coeffs[i] ,rhs);
    \n+
    156
    \n+
    157 }
    \n+
    158
    \n+
    159 basis.setCoefficients(coeffs);
    \n+
    160 interpolation.setCoefficients(coeffs);
    \n+
    161 }
    \n+
    162
    \n+
    163 template<class D, class R, int dim, bool faceDual>
    \n+
    164 void DualQ1LocalFiniteElement<D,R,dim,faceDual>::setupFaceDualCoefficients()
    \n+
    165 {
    \n+
    166
    \n+
    167 const int size = 1 <<dim;
    \n+
    168 std::array<Dune::FieldVector<R, size>, size> coeffs;
    \n+
    169
    \n+
    170 // dual basis functions are linear combinations of Lagrange elements
    \n+
    171 Dune::Impl::LagrangeCubeLocalBasis<D,R,dim,1> q1Basis;
    \n+
    172
    \n+
    173 const auto& refElement = Dune::ReferenceElements<D,dim>::general(type());
    \n+
    174
    \n+
    175 // loop over faces
    \n+
    176 for (int i=0; i<refElement.size(1);i++) {
    \n+
    177
    \n+
    178 const auto& quad = Dune::QuadratureRules<D,dim-1>::rule(refElement.type(i,1),2*dim);
    \n+
    179
    \n+
    180 // for each face assemble the mass matrix over the face of all
    \n+
    181 // non-vanishing basis functions,
    \n+
    182 // for cubes refElement.size(i,1,dim)=size/2
    \n+
    183 Dune::FieldMatrix<R, size/2, size/2> massMat;
    \n+
    184 massMat = 0;
    \n+
    185
    \n+
    186 // get geometry
    \n+
    187 const auto& geometry = refElement.template geometry<1>(i);
    \n+
    188
    \n+
    189 // and the integrals of the lagrange shape functions
    \n+
    190 std::vector<Dune::FieldVector<R,1> > integral(size/2);
    \n+
    191 for (int k=0; k<size/2; k++)
    \n+
    192 integral[k] = 0;
    \n+
    193
    \n+
    194 for(size_t pt=0; pt<quad.size(); pt++) {
    \n+
    195
    \n+
    196 const auto& pos = quad[pt].position();
    \n+
    197 const auto& elementPos = geometry.global(pos);
    \n+
    198
    \n+
    199 std::vector<Dune::FieldVector<R,1> > q1Values(size);
    \n+
    200 q1Basis.evaluateFunction(elementPos,q1Values);
    \n+
    201
    \n+
    202 D weight = quad[pt].weight();
    \n+
    203
    \n+
    204 for (int k=0; k<refElement.size(i,1,dim); k++) {
    \n+
    205 int row = refElement.subEntity(i,1,k,dim);
    \n+
    206 integral[k] += q1Values[row]*weight;
    \n+
    207
    \n+
    208 for (int l=0; l<refElement.size(i,1,dim); l++) {
    \n+
    209 int col = refElement.subEntity(i,1,l,dim);
    \n+
    210 massMat[k][l] += weight*(q1Values[row]*q1Values[col]);
    \n+
    211 }
    \n+
    212 }
    \n+
    213 }
    \n+
    214
    \n+
    215 // solve for the coefficients
    \n+
    216 // note that we possibly overwrite coefficients for neighbouring faces
    \n+
    217 // this is okay since the coefficients are symmetric
    \n+
    218 for (int l=0; l<refElement.size(i,1,dim); l++) {
    \n+
    219
    \n+
    220 int row = refElement.subEntity(i,1,l,dim);
    \n+
    221 Dune::FieldVector<R, size/2> rhs(0);
    \n+
    222 rhs[l] = integral[l];
    \n+
    223
    \n+
    224 Dune::FieldVector<R, size/2> x(0);
    \n+
    225 massMat.solve(x ,rhs);
    \n+
    226
    \n+
    227 for (int k=0; k<refElement.size(i,1,dim); k++) {
    \n+
    228 int col = refElement.subEntity(i,1,k,dim);
    \n+
    229 coeffs[row][col]=x[k];
    \n+
    230 }
    \n+
    231 }
    \n+
    232 }
    \n+
    233
    \n+
    234 basis.setCoefficients(coeffs);
    \n+
    235 interpolation.setCoefficients(coeffs);
    \n+
    236 }
    \n+
    237}
    \n+
    238#endif
    \n+\n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition rannacherturek2dlocalbasis.hh:24
    \n-
    Definition rannacherturek3dlocalbasis.hh:24
    \n-
    Rannacher-Turek shape functions.
    Definition rannachertureklocalbasis.hh:25
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    The local dual Q1 finite element on cubes.
    Definition dualq1.hh:42
    \n+
    LocalFiniteElementTraits< DualQ1LocalBasis< D, R, dim >, DualQ1LocalCoefficients< dim >, DualQ1LocalInterpolation< dim, DualQ1LocalBasis< D, R, dim > > > Traits
    Definition dualq1.hh:47
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition dualq1.hh:81
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition dualq1.hh:75
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition dualq1.hh:61
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition dualq1.hh:68
    \n+
    DualQ1LocalFiniteElement()
    Definition dualq1.hh:51
    \n+
    static constexpr GeometryType type()
    Definition dualq1.hh:88
    \n+
    Dual Lagrange shape functions of order 1 on the reference cube.
    Definition dualq1localbasis.hh:30
    \n+
    Layout map for dual Q1 elements.
    Definition dualq1localcoefficients.hh:26
    \n+
    Definition dualq1localinterpolation.hh:22
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,52 +1,278 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n-rannachertureklocalbasis.hh\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+dualq1.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH\n-6#define DUNE_RANNACHER_TUREK_LOCALBASIS_HH\n+5#ifndef DUNE_DUAL_Q1_LOCALFINITEELEMENT_HH\n+6#define DUNE_DUAL_Q1_LOCALFINITEELEMENT_HH\n 7\n-8#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-9#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\b/_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n-13\n-24 template< class D, class R, unsigned int d >\n-_\b2_\b5 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs;\n-26\n-27 template< class D, class R >\n-_\b2_\b8 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs< D, R, 2 >\n-29 : public _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs< D, R >\n-30 {};\n-31\n-32 template< class D, class R >\n-_\b3_\b3 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs< D, R, 3 >\n-34 : public _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs< D, R >\n-35 {};\n-36\n-37} // namespace Dune\n-38\n-39#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH\n-_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+8#include \n+9\n+10#include \n+11#include \n+12\n+13#include \n+14#include \n+15#include \n+16\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+19#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+20#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+21#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+22\n+23namespace _\bD_\bu_\bn_\be\n+24{\n+40 template\n+_\b4_\b1 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+42 {\n+43 public:\n+46 typedef\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b>,\n+_\b4_\b7 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+48\n+_\b5_\b1 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+52 {\n+53 if (faceDual)\n+54 setupFaceDualCoefficients();\n+55 else\n+56 setupDualCoefficients();\n+57 }\n+58\n+_\b6_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+62 {\n+63 return basis;\n+64 }\n+65\n+_\b6_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+69 {\n+70 return coefficients;\n+71 }\n+72\n+_\b7_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+76 {\n+77 return interpolation;\n+78 }\n+79\n+_\b8_\b1 unsigned int _\bs_\bi_\bz_\be () const\n+82 {\n+83 return basis.size();\n+84 }\n+85\n+_\b8_\b8 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+89 {\n+90 return GeometryTypes::cube(dim);\n+91 }\n+92\n+93 private:\n+95 void setupFaceDualCoefficients();\n+96\n+98 void setupDualCoefficients();\n+99\n+100 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> basis;\n+101 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b> coefficients;\n+102 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> > interpolation;\n+103 };\n+104\n+105 template\n+106 void DualQ1LocalFiniteElement::setupDualCoefficients()\n+107 {\n+108\n+109 const int size = 1 <, size> coeffs;\n+111\n+112 // dual basis functions are linear combinations of Lagrange elements\n+113 // compute these coefficients here because the basis and the local\n+interpolation needs them\n+114 const auto& quad = Dune::QuadratureRules::rule(type(), 2*dim);\n+115\n+116 // assemble mass matrix on the reference element\n+117 Dune::FieldMatrix massMat;\n+118 massMat = 0;\n+119\n+120 // and the integrals of the lagrange shape functions\n+121 std::vector > integral(size);\n+122 for (int i=0; i q1Basis;\n+126 for(size_t pt=0; pt& pos = quad[pt].position();\n+129 std::vector > q1Values(size);\n+130 q1Basis.evaluateFunction(pos,q1Values);\n+131\n+132 D weight = quad[pt].weight();\n+133\n+134 for (int k=0; k rhs(0);\n+152 rhs[i] = integral[i];\n+153\n+154 coeffs[i] = 0;\n+155 massMat.solve(coeffs[i] ,rhs);\n+156\n+157 }\n+158\n+159 basis.setCoefficients(coeffs);\n+160 interpolation.setCoefficients(coeffs);\n+161 }\n+162\n+163 template\n+164 void DualQ1LocalFiniteElement::setupFaceDualCoefficients\n+()\n+165 {\n+166\n+167 const int size = 1 <, size> coeffs;\n+169\n+170 // dual basis functions are linear combinations of Lagrange elements\n+171 Dune::Impl::LagrangeCubeLocalBasis q1Basis;\n+172\n+173 const auto& refElement = Dune::ReferenceElements::general(type());\n+174\n+175 // loop over faces\n+176 for (int i=0; i::rule(refElement.type\n+(i,1),2*dim);\n+179\n+180 // for each face assemble the mass matrix over the face of all\n+181 // non-vanishing basis functions,\n+182 // for cubes refElement.size(i,1,dim)=size/2\n+183 Dune::FieldMatrix massMat;\n+184 massMat = 0;\n+185\n+186 // get geometry\n+187 const auto& geometry = refElement.template geometry<1>(i);\n+188\n+189 // and the integrals of the lagrange shape functions\n+190 std::vector > integral(size/2);\n+191 for (int k=0; k > q1Values(size);\n+200 q1Basis.evaluateFunction(elementPos,q1Values);\n+201\n+202 D weight = quad[pt].weight();\n+203\n+204 for (int k=0; k rhs(0);\n+222 rhs[l] = integral[l];\n+223\n+224 Dune::FieldVector x(0);\n+225 massMat.solve(x ,rhs);\n+226\n+227 for (int k=0; k,\n+DualQ1LocalCoefficients< dim >, DualQ1LocalInterpolation< dim,\n+DualQ1LocalBasis< D, R, dim > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+DualQ1LocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Dual Lagrange shape functions of order 1 on the reference cube.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for dual Q1 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.hh:22\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannacherturek3dlocalbasis.hh File Reference\n+dune-localfunctions: dualp1localcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    rannacherturek3dlocalbasis.hh File Reference
    \n+
    dualp1localcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n+
    #include <cstddef>
    \n #include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    class  Dune::RannacherTurek3DLocalBasis< D, R >
    class  Dune::DualP1LocalCoefficients< dim >
     Local coefficients for dual simplex P1 elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bp_\b1\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-rannacherturek3dlocalbasis.hh File Reference\n-#include \n+dualp1localcoefficients.hh File Reference\n+#include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Local coefficients for dual simplex P1 elements. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannacherturek3dlocalbasis.hh Source File\n+dune-localfunctions: dualp1localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,167 +70,78 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannacherturek3dlocalbasis.hh
    \n+
    dualp1localcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \n-
    6#define DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <numeric>
    \n+
    8#include <cstddef>
    \n
    9#include <vector>
    \n
    10
    \n-
    11#include <dune/common/fvector.hh>
    \n-
    12#include <dune/common/fmatrix.hh>
    \n-
    13
    \n-\n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    22 template< class D, class R >
    \n+
    22 template <int dim>
    \n
    \n-\n+\n
    24 {
    \n-
    25 static const int coefficients[ 6 ][ 6 ];
    \n-
    26
    \n-
    27 public:
    \n-\n-
    29 R, 1, FieldVector< R, 1 >,
    \n-
    30 FieldMatrix< R, 1, 3 > > Traits;
    \n-
    31
    \n-
    \n-
    33 unsigned int size () const
    \n-
    34 {
    \n-
    35 return 6;
    \n-
    36 }
    \n-
    \n-
    37
    \n-
    \n-
    39 inline void evaluateFunction ( const typename Traits::DomainType &in,
    \n-
    40 std::vector< typename Traits::RangeType > &out ) const
    \n+
    25 public:
    \n+
    \n+\n+
    28 {
    \n+
    29 for (std::size_t i=0; i<size(); i++)
    \n+
    30 li[i] = LocalKey(i,dim,0);
    \n+
    31 }
    \n+
    \n+
    32
    \n+
    \n+
    34 std::size_t size () const
    \n+
    35 {
    \n+
    36 return dim+1;
    \n+
    37 }
    \n+
    \n+
    38
    \n+
    \n+
    40 const LocalKey& localKey (std::size_t i) const
    \n
    41 {
    \n-
    42 typedef typename Traits::RangeFieldType RangeFieldType;
    \n-
    43 RangeFieldType y[ 6 ] = { 1, in[ 0 ], in[ 1 ], in[ 2 ],
    \n-
    44 in[ 0 ]*in[ 0 ] - in[ 1 ]*in[ 1 ],
    \n-
    45 in[ 1 ]*in[ 1 ] - in[ 2 ]*in[ 2 ] };
    \n-
    46 out.resize( size() );
    \n-
    47 for( unsigned int i = 0; i < size(); ++i )
    \n-
    48 {
    \n-
    49 out[ i ] = RangeFieldType( 0 );
    \n-
    50 for( unsigned int j = 0; j < 6; ++j )
    \n-
    51 out[ i ] += coefficients[ i ][ j ]*y[ j ];
    \n-
    52 out[ i ] /= RangeFieldType( 3 );
    \n-
    53 }
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    \n-
    57 inline void evaluateJacobian ( const typename Traits::DomainType &in,
    \n-
    58 std::vector< typename Traits::JacobianType > &out ) const
    \n-
    59 {
    \n-
    60 typedef typename Traits::RangeFieldType RangeFieldType;
    \n-
    61 RangeFieldType y0[ 5 ] = { 1, 0, 0, 2*in[ 0 ], 0 };
    \n-
    62 RangeFieldType y1[ 5 ] = { 0, 1, 0, -2*in[ 1 ], 2*in[ 1 ] };
    \n-
    63 RangeFieldType y2[ 5 ] = { 0, 0, 1, 0, -2*in[ 2 ] };
    \n-
    64
    \n-
    65 out.resize( size() );
    \n-
    66 for( unsigned int i = 0; i < size(); ++i )
    \n-
    67 {
    \n-
    68 out[ i ] = RangeFieldType( 0 );
    \n-
    69 for( unsigned int j = 0; j < 5; ++j )
    \n-
    70 {
    \n-
    71 out[ i ][ 0 ][ 0 ] += coefficients[ i ][ j+1 ]*y0[ j ];
    \n-
    72 out[ i ][ 0 ][ 1 ] += coefficients[ i ][ j+1 ]*y1[ j ];
    \n-
    73 out[ i ][ 0 ][ 2 ] += coefficients[ i ][ j+1 ]*y2[ j ];
    \n-
    74 }
    \n-
    75 out[ i ] /= RangeFieldType( 3 );
    \n-
    76 }
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    80 void partial (const std::array<unsigned int, 3>& order,
    \n-
    81 const typename Traits::DomainType& in, // position
    \n-
    82 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    83 {
    \n-
    84 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    85 if (totalOrder == 0) {
    \n-
    86 evaluateFunction(in, out);
    \n-
    87 } else if (totalOrder == 1) {
    \n-
    88 out.resize(size());
    \n-
    89 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    90
    \n-
    91 using RangeFieldType = typename Traits::RangeFieldType;
    \n-
    92 RangeFieldType y[3][5] = { { 1.0, 0.0, 0.0, 2*in[0], 0.0 },
    \n-
    93 { 0.0, 1.0, 0.0, -2*in[1], 2*in[1] },
    \n-
    94 { 0.0, 0.0, 1.0, 0.0, -2*in[2] } };
    \n-
    95
    \n-
    96 for (std::size_t i = 0; i < size(); ++i) {
    \n-
    97 out[i] = RangeFieldType{0};
    \n-
    98 for (std::size_t j = 0; j < 5; ++j)
    \n-
    99 out[i] += coefficients[i][j+1] * y[direction][j];
    \n-
    100 out[i] /= RangeFieldType{3};
    \n-
    101 }
    \n-
    102 } else {
    \n-
    103 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    104 }
    \n-
    105 }
    \n-
    \n-
    106
    \n-
    \n-
    108 unsigned int order () const
    \n-
    109 {
    \n-
    110 return 2;
    \n-
    111 }
    \n-
    \n-
    112 };
    \n-
    \n-
    113
    \n-
    114
    \n-
    115
    \n-
    116 // RannacherTurek3DLocalBasis::coefficients
    \n-
    117 // ----------------------------------------
    \n-
    118
    \n-
    119 template< class D, class R >
    \n-
    120 const int RannacherTurek3DLocalBasis< D, R >
    \n-
    121 ::coefficients[ 6 ][ 6 ] = {{ 2, -7, 2, 2, 4, 2 },
    \n-
    122 { -1, -1, 2, 2, 4, 2 },
    \n-
    123 { 2, 2, -7, 2, -2, 2 },
    \n-
    124 { -1, 2, -1, 2, -2, 2 },
    \n-
    125 { 2, 2, 2, -7, -2, -4 },
    \n-
    126 { -1, 2, 2, -1, -2, -4 }};
    \n-
    127
    \n-
    128} //namespace Dune
    \n-
    129
    \n-
    130#endif // #ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \n+
    42 return li[i];
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    45 private:
    \n+
    46 std::vector<LocalKey> li;
    \n+
    47 };
    \n+
    \n+
    48
    \n+
    49}
    \n+
    50
    \n+
    51#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    RF RangeFieldType
    Export type for range field.
    Definition common/localbasis.hh:46
    \n-
    Definition rannacherturek3dlocalbasis.hh:24
    \n-
    LocalBasisTraits< D, 3, FieldVector< D, 3 >, R, 1, FieldVector< R, 1 >, FieldMatrix< R, 1, 3 > > Traits
    Definition rannacherturek3dlocalbasis.hh:30
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    evaluate all shape functions
    Definition rannacherturek3dlocalbasis.hh:39
    \n-
    unsigned int size() const
    number of shape functions
    Definition rannacherturek3dlocalbasis.hh:33
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    evaluate jacobian of all shape functions
    Definition rannacherturek3dlocalbasis.hh:57
    \n-
    unsigned int order() const
    polynomial order of the shape functions
    Definition rannacherturek3dlocalbasis.hh:108
    \n-
    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 rannacherturek3dlocalbasis.hh:80
    \n-\n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Local coefficients for dual simplex P1 elements.
    Definition dualp1localcoefficients.hh:24
    \n+
    DualP1LocalCoefficients()
    Standard constructor.
    Definition dualp1localcoefficients.hh:27
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition dualp1localcoefficients.hh:40
    \n+
    std::size_t size() const
    number of coefficients
    Definition dualp1localcoefficients.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,179 +1,76 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\b3_\bd\n-rannacherturek3dlocalbasis.hh\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bp_\b1\n+dualp1localcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH\n-6#define DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH\n+5#ifndef DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH\n+6#define DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n+8#include \n 9#include \n 10\n-11#include \n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n 15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-22 template< class D, class R >\n-_\b2_\b3 class _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+22 template \n+_\b2_\b3 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n 24 {\n-25 static const int coefficients[ 6 ][ 6 ];\n-26\n-27 public:\n-28 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\b,_\b _\b3_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bD_\b,_\b _\b3_\b _\b>,\n-29 R, 1, FieldVector< R, 1 >,\n-_\b3_\b0 FieldMatrix< R, 1, 3 > > _\bT_\br_\ba_\bi_\bt_\bs;\n-31\n-_\b3_\b3 unsigned int _\bs_\bi_\bz_\be () const\n-34 {\n-35 return 6;\n-36 }\n-37\n-_\b3_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be &in,\n-40 std::vector< typename Traits::RangeType > &out ) const\n+25 public:\n+_\b2_\b7 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(_\bs_\bi_\bz_\be())\n+28 {\n+29 for (std::size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n+30 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim,0);\n+31 }\n+32\n+_\b3_\b4 std::size_t _\bs_\bi_\bz_\be () const\n+35 {\n+36 return dim+1;\n+37 }\n+38\n+_\b4_\b0 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n 41 {\n-42 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be RangeFieldType;\n-43 RangeFieldType y[ 6 ] = { 1, in[ 0 ], in[ 1 ], in[ 2 ],\n-44 in[ 0 ]*in[ 0 ] - in[ 1 ]*in[ 1 ],\n-45 in[ 1 ]*in[ 1 ] - in[ 2 ]*in[ 2 ] };\n-46 out.resize( _\bs_\bi_\bz_\be() );\n-47 for( unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i )\n-48 {\n-49 out[ i ] = RangeFieldType( 0 );\n-50 for( unsigned int j = 0; j < 6; ++j )\n-51 out[ i ] += coefficients[ i ][ j ]*y[ j ];\n-52 out[ i ] /= RangeFieldType( 3 );\n-53 }\n-54 }\n-55\n-_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be &in,\n-58 std::vector< typename Traits::JacobianType > &out ) const\n-59 {\n-60 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be RangeFieldType;\n-61 RangeFieldType y0[ 5 ] = { 1, 0, 0, 2*in[ 0 ], 0 };\n-62 RangeFieldType y1[ 5 ] = { 0, 1, 0, -2*in[ 1 ], 2*in[ 1 ] };\n-63 RangeFieldType y2[ 5 ] = { 0, 0, 1, 0, -2*in[ 2 ] };\n-64\n-65 out.resize( _\bs_\bi_\bz_\be() );\n-66 for( unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i )\n-67 {\n-68 out[ i ] = RangeFieldType( 0 );\n-69 for( unsigned int j = 0; j < 5; ++j )\n-70 {\n-71 out[ i ][ 0 ][ 0 ] += coefficients[ i ][ j+1 ]*y0[ j ];\n-72 out[ i ][ 0 ][ 1 ] += coefficients[ i ][ j+1 ]*y1[ j ];\n-73 out[ i ][ 0 ][ 2 ] += coefficients[ i ][ j+1 ]*y2[ j ];\n-74 }\n-75 out[ i ] /= RangeFieldType( 3 );\n-76 }\n-77 }\n-78\n-_\b8_\b0 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-81 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-82 std::vector& out) const // return value\n-83 {\n-84 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-85 if (totalOrder == 0) {\n-86 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-87 } else if (totalOrder == 1) {\n-88 out.resize(_\bs_\bi_\bz_\be());\n-89 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n-_\bo_\br_\bd_\be_\br.end(), 1));\n-90\n-91 using RangeFieldType = typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be;\n-92 RangeFieldType y[3][5] = { { 1.0, 0.0, 0.0, 2*in[0], 0.0 },\n-93 { 0.0, 1.0, 0.0, -2*in[1], 2*in[1] },\n-94 { 0.0, 0.0, 1.0, 0.0, -2*in[2] } };\n-95\n-96 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i) {\n-97 out[i] = RangeFieldType{0};\n-98 for (std::size_t j = 0; j < 5; ++j)\n-99 out[i] += coefficients[i][j+1] * y[direction][j];\n-100 out[i] /= RangeFieldType{3};\n-101 }\n-102 } else {\n-103 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-104 }\n-105 }\n-106\n-_\b1_\b0_\b8 unsigned int _\bo_\br_\bd_\be_\br () const\n-109 {\n-110 return 2;\n-111 }\n-112 };\n-113\n-114\n-115\n-116 // RannacherTurek3DLocalBasis::coefficients\n-117 // ----------------------------------------\n-118\n-119 template< class D, class R >\n-120 const int RannacherTurek3DLocalBasis< D, R >\n-121 ::coefficients[ 6 ][ 6 ] = {{ 2, -7, 2, 2, 4, 2 },\n-122 { -1, -1, 2, 2, 4, 2 },\n-123 { 2, 2, -7, 2, -2, 2 },\n-124 { -1, 2, -1, 2, -2, 2 },\n-125 { 2, 2, 2, -7, -2, -4 },\n-126 { -1, 2, 2, -1, -2, -4 }};\n-127\n-128} //namespace Dune\n-129\n-130#endif // #ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH\n+42 return li[i];\n+43 }\n+44\n+45 private:\n+46 std::vector li;\n+47 };\n+48\n+49}\n+50\n+51#endif\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd_\bT_\by_\bp_\be\n-RF RangeFieldType\n-Export type for range field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, FieldVector< D, 3 >, R, 1, FieldVector< R, 1 >,\n-FieldMatrix< R, 1, 3 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-evaluate all shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-evaluate jacobian of all shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-polynomial order of the shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek3dlocalbasis.hh:80\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Local coefficients for dual simplex P1 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+DualP1LocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:34\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannachertureklocalcoefficients.hh File Reference\n+dune-localfunctions: dualp1localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,31 @@\n \n \n \n \n \n \n \n
    \n \n-
    rannachertureklocalcoefficients.hh File Reference
    \n+
    dualp1localinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <array>
    \n-#include <cassert>
    \n-#include <cstddef>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+
    #include <vector>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    struct  Dune::RannacherTurekLocalCoefficients< d >
     layout for Rannacher-Turek elements More...
    class  Dune::DualP1LocalInterpolation< dim, LB >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,20 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bp_\b1\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-rannachertureklocalcoefficients.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+dualp1localinterpolation.hh File Reference\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\b _\b>\n-\u00a0 layout for Rannacher-Turek elements _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\b,_\b _\bL_\bB_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannachertureklocalcoefficients.hh Source File\n+dune-localfunctions: dualp1localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,96 +70,85 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannachertureklocalcoefficients.hh
    \n+
    dualp1localinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_DUAL_P1_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_DUAL_P1_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <algorithm>
    \n-
    9#include <array>
    \n-
    10#include <cassert>
    \n-
    11#include <cstddef>
    \n-
    12
    \n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    25 template< unsigned int d >
    \n-
    \n-\n-
    27 {
    \n-
    \n-\n-
    29 {
    \n-
    30 for( std::size_t i = 0; i < 2*d; ++i )
    \n-
    31 localKeys_[ i ] = LocalKey( i, 1, 0 );
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    \n-\n-
    35 {
    \n-
    36 (*this) = other;
    \n-
    37 }
    \n-
    \n-
    38
    \n-
    \n-\n-
    40 {
    \n-
    41 std::copy( other.localKeys_.begin(), other.localKeys_.end(), localKeys_.begin() );
    \n-
    42 return *this;
    \n-
    43 }
    \n-
    \n+
    8#include <vector>
    \n+
    9
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    15 template<int dim, class LB>
    \n+
    \n+\n+
    17 {
    \n+
    18 public:
    \n+
    20 template<typename F, typename C>
    \n+
    \n+
    21 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    22 {
    \n+
    23 typename LB::Traits::DomainType x;
    \n+
    24 // If the dual functions are dual on the faces,
    \n+
    25 // then adjust the interpolation weights
    \n+
    26 const int faceDual(LB::faceDual);
    \n+
    27
    \n+
    28 // compute P1 interpolation coefficients
    \n+
    29 std::vector<C> p1Interpolation(dim+1);
    \n+
    30
    \n+
    31 // vertex 0
    \n+
    32 for (int i=0; i<dim; i++)
    \n+
    33 x[i] = 0;
    \n+
    34 p1Interpolation[0] = f(x);
    \n+
    35
    \n+
    36 // remaining vertices
    \n+
    37 for (int i=0; i<dim; i++) {
    \n+
    38 for (int j=0; j<dim; j++)
    \n+
    39 x[j] = (i==j);
    \n+
    40
    \n+
    41 p1Interpolation[i+1] = f(x);
    \n+
    42
    \n+
    43 }
    \n
    44
    \n-
    \n-
    46 std::size_t size () const
    \n-
    47 {
    \n-
    48 return 2*d;
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    52 const LocalKey &localKey ( std::size_t i ) const
    \n-
    53 {
    \n-
    54 assert( i < 2*d );
    \n-
    55 return localKeys_[ i ];
    \n+
    45 // compute dual coefficients from the Lagrange ones
    \n+
    46 out.resize(dim+1);
    \n+
    47 for (int i=0; i<dim+1; i++) {
    \n+
    48 out[i] = 2*p1Interpolation[i]/(dim+2-faceDual);
    \n+
    49
    \n+
    50 for (int j=0; j<i; j++)
    \n+
    51 out[i] += p1Interpolation[j]/(dim+2-faceDual);
    \n+
    52
    \n+
    53 for (int j=i+1; j<=dim; j++)
    \n+
    54 out[i] += p1Interpolation[j]/(dim+2-faceDual);
    \n+
    55 }
    \n
    56 }
    \n
    \n
    57
    \n-
    58 private:
    \n-
    59 std::array< LocalKey, 2*d > localKeys_;
    \n-
    60 };
    \n-
    \n-
    61
    \n-
    62} // namespace Dune
    \n-
    63
    \n-
    64#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH
    \n-\n+
    58 };
    \n+
    \n+
    59}
    \n+
    60
    \n+
    61#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    layout for Rannacher-Turek elements
    Definition rannachertureklocalcoefficients.hh:27
    \n-
    RannacherTurekLocalCoefficients()
    Definition rannachertureklocalcoefficients.hh:28
    \n-
    RannacherTurekLocalCoefficients(const RannacherTurekLocalCoefficients &other)
    Definition rannachertureklocalcoefficients.hh:34
    \n-
    RannacherTurekLocalCoefficients & operator=(const RannacherTurekLocalCoefficients &other)
    Definition rannachertureklocalcoefficients.hh:39
    \n-
    const LocalKey & localKey(std::size_t i) const
    map index i to local key
    Definition rannachertureklocalcoefficients.hh:52
    \n-
    std::size_t size() const
    number of coefficients
    Definition rannachertureklocalcoefficients.hh:46
    \n+
    Definition dualp1localinterpolation.hh:17
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Local interpolation of a function.
    Definition dualp1localinterpolation.hh:21
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,96 +1,78 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n-rannachertureklocalcoefficients.hh\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bp_\b1\n+dualp1localinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH\n-6#define DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_DUAL_P1_LOCALINTERPOLATION_HH\n+6#define DUNE_DUAL_P1_LOCALINTERPOLATION_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-25 template< unsigned int d >\n-_\b2_\b6 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-27 {\n-_\b2_\b8 _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs ()\n-29 {\n-30 for( std::size_t i = 0; i < 2*d; ++i )\n-31 localKeys_[ i ] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( i, 1, 0 );\n-32 }\n-33\n-_\b3_\b4 _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs ( const _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-&other )\n-35 {\n-36 (*this) = other;\n-37 }\n-38\n-_\b3_\b9 _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const\n-_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs &other )\n-40 {\n-41 std::copy( other.localKeys_.begin(), other.localKeys_.end(),\n-localKeys_.begin() );\n-42 return *this;\n+8#include \n+9\n+10namespace _\bD_\bu_\bn_\be\n+11{\n+15 template\n+_\b1_\b6 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+17 {\n+18 public:\n+20 template\n+_\b2_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+22 {\n+23 typename LB::Traits::DomainType x;\n+24 // If the dual functions are dual on the faces,\n+25 // then adjust the interpolation weights\n+26 const int faceDual(LB::faceDual);\n+27\n+28 // compute P1 interpolation coefficients\n+29 std::vector p1Interpolation(dim+1);\n+30\n+31 // vertex 0\n+32 for (int i=0; i localKeys_;\n-60 };\n-61\n-62} // namespace Dune\n-63\n-64#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+58 };\n+59}\n+60\n+61#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-layout for Rannacher-Turek elements\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RannacherTurekLocalCoefficients()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RannacherTurekLocalCoefficients(const RannacherTurekLocalCoefficients &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-RannacherTurekLocalCoefficients & operator=(const\n-RannacherTurekLocalCoefficients &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-map index i to local key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localinterpolation.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Local interpolation of a function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localinterpolation.hh:21\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannachertureklocalinterpolation.hh File Reference\n+dune-localfunctions: dualp1localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,35 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    rannachertureklocalinterpolation.hh File Reference
    \n+
    dualp1localbasis.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <vector>
    \n+
    #include <numeric>
    \n #include <dune/common/fvector.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n #include <dune/localfunctions/common/localbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RannacherTurekLocalInterpolation< D, R, d >
     please doc me More...
    class  Dune::DualP1LocalBasis< D, R, dim, faceDualT >
     Dual Lagrange shape functions on the simplex. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bp_\b1\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-rannachertureklocalinterpolation.hh File Reference\n-#include \n-#include \n+dualp1localbasis.hh File Reference\n+#include \n #include \n-#include \n+#include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n-\u00a0 please doc me _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\bT_\b _\b>\n+\u00a0 Dual Lagrange shape functions on the simplex. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannachertureklocalinterpolation.hh Source File\n+dune-localfunctions: dualp1localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,84 +70,146 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannachertureklocalinterpolation.hh
    \n+
    dualp1localbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_DUAL_P1_LOCALBASIS_HH
    \n+
    6#define DUNE_DUAL_P1_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include <dune/common/fvector.hh>
    \n-
    12
    \n-
    13#include <dune/geometry/referenceelements.hh>
    \n-
    14
    \n-\n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    29 template< class D, class R, unsigned int d >
    \n-
    \n-\n-
    31 {
    \n-\n-
    33 R, 1, FieldVector< R, 1 >,
    \n-
    34 FieldMatrix< R, 1, d > > Traits;
    \n-
    35
    \n+
    8#include <numeric>
    \n+
    9
    \n+
    10#include <dune/common/fvector.hh>
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    33 template<class D, class R, int dim, bool faceDualT=false>
    \n+
    \n+\n+
    35 {
    \n
    36 public:
    \n-
    37 template< class F, class C >
    \n-
    \n-
    38 void interpolate ( const F &f, std::vector< C > &out ) const
    \n-
    39 {
    \n-
    40 typedef typename Traits::DomainType DomainType;
    \n-
    41
    \n-
    42 // get cubic reference element
    \n-
    43 auto referenceElement = ReferenceElements< D, d >::cube();
    \n-
    44
    \n-
    45 const int size = 2*d;
    \n-
    46 assert( size == referenceElement.size( 1 ) );
    \n-
    47
    \n-
    48 // resize vector
    \n-
    49 out.resize( size );
    \n-
    50
    \n-
    51 // evaluate local function in barycenter of codim 1 subentities
    \n-
    52 for( int i = 0; i < size; ++i )
    \n-
    53 {
    \n-
    54 const DomainType &x = referenceElement.position( i, 1 );
    \n-
    55 out[ i ] = f(x);
    \n-
    56 }
    \n-
    57 }
    \n+
    38 static const bool faceDual = faceDualT;
    \n+
    40 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>,
    \n+
    41 Dune::FieldMatrix<R,1,dim> > Traits;
    \n+
    42
    \n+
    \n+
    44 unsigned int size () const
    \n+
    45 {
    \n+
    46 return dim+1;
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    \n+
    50 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    51 std::vector<typename Traits::RangeType>& out) const
    \n+
    52 {
    \n+
    53 // evaluate P1 basis functions
    \n+
    54 std::vector<typename Traits::RangeType> p1Values(size());
    \n+
    55
    \n+
    56 p1Values[0] = 1.0;
    \n+
    57
    \n+
    58 for (int i=0; i<dim; i++) {
    \n+
    59 p1Values[0] -= in[i];
    \n+
    60 p1Values[i+1] = in[i];
    \n+
    61 }
    \n+
    62
    \n+
    63 // compute dual basis function values as a linear combination of the Lagrange values
    \n+
    64 out.resize(size());
    \n+
    65
    \n+
    66 for (int i=0; i<=dim; i++) {
    \n+
    67 out[i] = (dim+!faceDual)*p1Values[i];
    \n+
    68 for (int j=0; j<i; j++)
    \n+
    69 out[i] -= p1Values[j];
    \n+
    70
    \n+
    71 for (int j=i+1; j<=dim; j++)
    \n+
    72 out[i] -= p1Values[j];
    \n+
    73 }
    \n+
    74 }
    \n+
    \n+
    75
    \n+
    77 inline void
    \n+
    \n+\n+
    79 std::vector<typename Traits::JacobianType>& out) const
    \n+
    80 {
    \n+
    81 // evaluate P1 jacobians
    \n+
    82 std::vector<typename Traits::JacobianType> p1Jacs(size());
    \n+
    83
    \n+
    84 for (int i=0; i<dim; i++)
    \n+
    85 p1Jacs[0][0][i] = -1;
    \n+
    86
    \n+
    87 for (int i=0; i<dim; i++)
    \n+
    88 for (int j=0; j<dim; j++)
    \n+
    89 p1Jacs[i+1][0][j] = (i==j);
    \n+
    90
    \n+
    91 // compute dual basis jacobians as linear combination of the Lagrange jacobians
    \n+
    92 out.resize(size());
    \n+
    93
    \n+
    94 for (size_t i=0; i<=dim; i++) {
    \n+
    95 out[i][0] = 0;
    \n+
    96 out[i][0].axpy(dim+!faceDual,p1Jacs[i][0]);
    \n+
    97
    \n+
    98 for (size_t j=0; j<i; j++)
    \n+
    99 out[i][0] -= p1Jacs[j][0];
    \n+
    100
    \n+
    101 for (int j=i+1; j<=dim; j++)
    \n+
    102 out[i][0] -= p1Jacs[j][0];
    \n+
    103 }
    \n+
    104 }
    \n+
    \n+
    105
    \n+
    \n+
    107 void partial (const std::array<unsigned int, dim>& order,
    \n+
    108 const typename Traits::DomainType& in, // position
    \n+
    109 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    110 {
    \n+
    111 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    112 if (totalOrder == 0) {
    \n+
    113 evaluateFunction(in, out);
    \n+
    114 } else {
    \n+
    115 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    116 }
    \n+
    117 }
    \n+
    \n+
    118
    \n+
    \n+
    120 unsigned int order () const
    \n+
    121 {
    \n+
    122 return 1;
    \n+
    123 }
    \n
    \n-
    58
    \n-
    59 };
    \n+
    124 };
    \n
    \n-
    60
    \n-
    61} // namespace Dune
    \n-
    62
    \n-
    63#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH
    \n+
    125}
    \n+
    126#endif
    \n
    Definition bdfmcube.hh:18
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    please doc me
    Definition rannachertureklocalinterpolation.hh:31
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Definition rannachertureklocalinterpolation.hh:38
    \n+
    Dual Lagrange shape functions on the simplex.
    Definition dualp1localbasis.hh:35
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition dualp1localbasis.hh:120
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition dualp1localbasis.hh:50
    \n+
    static const bool faceDual
    Determines if the basis is only biorthogonal on adjacent faces.
    Definition dualp1localbasis.hh:38
    \n+
    void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition dualp1localbasis.hh:107
    \n+
    unsigned int size() const
    number of shape functions
    Definition dualp1localbasis.hh:44
    \n+
    LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    export type traits for function signature
    Definition dualp1localbasis.hh:41
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition dualp1localbasis.hh:78
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,82 +1,163 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n-rannachertureklocalinterpolation.hh\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bp_\b1\n+dualp1localbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH\n-6#define DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_DUAL_P1_LOCALBASIS_HH\n+6#define DUNE_DUAL_P1_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12\n-13#include \n-14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-19\n-29 template< class D, class R, unsigned int d >\n-_\b3_\b0 class _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-31 {\n-32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\b,_\b _\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bD_\b,_\b _\bd_\b _\b>,\n-33 R, 1, FieldVector< R, 1 >,\n-34 FieldMatrix< R, 1, d > > _\bT_\br_\ba_\bi_\bt_\bs;\n-35\n+8#include \n+9\n+10#include \n+11#include \n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+33 template\n+_\b3_\b4 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+35 {\n 36 public:\n-37 template< class F, class C >\n-_\b3_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const F &f, std::vector< C > &out ) const\n-39 {\n-40 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be DomainType;\n-41\n-42 // get cubic reference element\n-43 auto referenceElement = ReferenceElements< D, d >::cube();\n-44\n-45 const int size = 2*d;\n-46 assert( size == referenceElement.size( 1 ) );\n-47\n-48 // resize vector\n-49 out.resize( size );\n-50\n-51 // evaluate local function in barycenter of codim 1 subentities\n-52 for( int i = 0; i < size; ++i )\n-53 {\n-54 const DomainType &x = referenceElement.position( i, 1 );\n-55 out[ i ] = f(x);\n-56 }\n-57 }\n-58\n-59 };\n-60\n-61} // namespace Dune\n+_\b3_\b8 static const bool _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl = faceDualT;\n+40 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\bi_\bm_\b>,R,1,Dune::\n+FieldVector,\n+_\b4_\b1 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+42\n+_\b4_\b4 unsigned int _\bs_\bi_\bz_\be () const\n+45 {\n+46 return dim+1;\n+47 }\n+48\n+_\b5_\b0 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+51 std::vector& out) const\n+52 {\n+53 // evaluate P1 basis functions\n+54 std::vector p1Values(_\bs_\bi_\bz_\be());\n+55\n+56 p1Values[0] = 1.0;\n+57\n+58 for (int i=0; i& out) const\n+80 {\n+81 // evaluate P1 jacobians\n+82 std::vector p1Jacs(_\bs_\bi_\bz_\be());\n+83\n+84 for (int i=0; i& _\bo_\br_\bd_\be_\br,\n+108 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+109 std::vector& out) const // return value\n+110 {\n+111 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+112 if (totalOrder == 0) {\n+113 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+114 } else {\n+115 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+116 }\n+117 }\n+118\n+_\b1_\b2_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n+121 {\n+122 return 1;\n+123 }\n+124 };\n+125}\n+126#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n Type traits for LocalBasisVirtualInterface.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-please doc me\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalinterpolation.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalinterpolation.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Dual Lagrange shape functions on the simplex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:120\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl\n+static const bool faceDual\n+Determines if the basis is only biorthogonal on adjacent faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, dim > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector<\n+R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:78\n _\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomiallocalinterpolation.hh File Reference\n+dune-localfunctions: refinedp0localcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,35 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    monomiallocalinterpolation.hh File Reference
    \n+
    refinedp0localcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+
    #include <cstddef>
    \n+#include <iostream>
    \n+#include <vector>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    class  Dune::MonomialLocalInterpolation< LB, size >
    class  Dune::RefinedP0LocalCoefficients< k >
     Layout map for RefinedP0 elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-monomiallocalinterpolation.hh File Reference\n+refinedp0localcoefficients.hh File Reference\n+#include \n+#include \n #include \n-#include \n-#include \n-#include \n-#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b,_\b _\bs_\bi_\bz_\be_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bk_\b _\b>\n+\u00a0 Layout map for RefinedP0 elements. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomiallocalinterpolation.hh Source File\n+dune-localfunctions: refinedp0localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,114 +70,85 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    monomiallocalinterpolation.hh
    \n+
    refinedp0localcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_REFINED_P0_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_REFINED_P0_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12
    \n-
    13#include <dune/geometry/type.hh>
    \n-
    14#include <dune/geometry/quadraturerules.hh>
    \n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    22 template<class LB, unsigned int size>
    \n-
    \n-\n-
    24 {
    \n-
    25 typedef typename LB::Traits::DomainType D;
    \n-
    26 typedef typename LB::Traits::DomainFieldType DF;
    \n-
    27 static const int dimD=LB::Traits::dimDomain;
    \n-
    28 typedef typename LB::Traits::RangeType R;
    \n-
    29 typedef typename LB::Traits::RangeFieldType RF;
    \n-
    30
    \n-
    31 typedef QuadratureRule<DF,dimD> QR;
    \n-
    32 typedef typename QR::iterator QRiterator;
    \n-
    33
    \n-
    34 public:
    \n-
    \n-
    35 MonomialLocalInterpolation (const GeometryType &gt_,
    \n-
    36 const LB &lb_)
    \n-
    37 : gt(gt_), lb(lb_), Minv(0)
    \n-
    38 , qr(QuadratureRules<DF,dimD>::rule(gt, 2*lb.order()))
    \n-
    39 {
    \n-
    40 // Compute inverse of the mass matrix of the local basis, and store it in Minv
    \n-
    41 if(size != lb.size())
    \n-
    42 DUNE_THROW(Exception, "size template parameter does not match size of "
    \n-
    43 "local basis");
    \n+
    8#include <cstddef>
    \n+
    9#include <iostream>
    \n+
    10#include <vector>
    \n+
    11
    \n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    24 template<unsigned int k>
    \n+
    \n+\n+
    26 {
    \n+
    27 // 2 to the k-th power
    \n+
    28 constexpr static int N = 1<<k;
    \n+
    29
    \n+
    30 public:
    \n+
    \n+\n+
    32 localKeys_(N)
    \n+
    33 {
    \n+
    34 // All functions are associated to the element
    \n+
    35 for (int i = 0; i < N; ++i)
    \n+
    36 localKeys_[i] = LocalKey(0,0,i);
    \n+
    37 }
    \n+
    \n+
    38
    \n+
    \n+
    40 std::size_t size () const
    \n+
    41 {
    \n+
    42 return N;
    \n+
    43 }
    \n+
    \n
    44
    \n-
    45 const QRiterator qrend = qr.end();
    \n-
    46 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
    \n-
    47 std::vector<R> base;
    \n-
    48 lb.evaluateFunction(qrit->position(),base);
    \n-
    49
    \n-
    50 for(unsigned int i = 0; i < size; ++i)
    \n-
    51 for(unsigned int j = 0; j < size; ++j)
    \n-
    52 Minv[i][j] += qrit->weight() * base[i] * base[j];
    \n-
    53 }
    \n-
    54 Minv.invert();
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    64 template<typename F, typename C>
    \n-
    \n-
    65 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    66 {
    \n-
    67 out.clear();
    \n-
    68 out.resize(size, 0);
    \n-
    69
    \n-
    70 const QRiterator qrend = qr.end();
    \n-
    71 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
    \n-
    72 //TODO: mass matrix
    \n-
    73 R y = f(qrit->position());
    \n-
    74
    \n-
    75 std::vector<R> base;
    \n-
    76 lb.evaluateFunction(qrit->position(),base);
    \n-
    77
    \n-
    78 for(unsigned int i = 0; i < size; ++i)
    \n-
    79 for(unsigned int j = 0; j < size; ++j)
    \n-
    80 out[i] += Minv[i][j] * qrit->weight() * y * base[j];
    \n-
    81 }
    \n-
    82 }
    \n-
    \n-
    83
    \n-
    84 private:
    \n-
    85 GeometryType gt;
    \n-
    86 const LB &lb;
    \n-
    87 FieldMatrix<RF, size, size> Minv;
    \n-
    88 const QR &qr;
    \n-
    89 };
    \n-
    \n-
    90
    \n-
    91}
    \n-
    92
    \n-
    93#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
    \n+
    \n+
    46 const LocalKey& localKey (std::size_t i) const
    \n+
    47 {
    \n+
    48 return localKeys_[i];
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    51 private:
    \n+
    52 std::vector<LocalKey> localKeys_;
    \n+
    53
    \n+
    54 };
    \n+
    \n+
    55
    \n+
    56}
    \n+
    57
    \n+
    58#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition monomiallocalinterpolation.hh:24
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    Definition monomiallocalinterpolation.hh:65
    \n-
    MonomialLocalInterpolation(const GeometryType &gt_, const LB &lb_)
    Definition monomiallocalinterpolation.hh:35
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for RefinedP0 elements.
    Definition refinedp0localcoefficients.hh:26
    \n+
    RefinedP0LocalCoefficients()
    Definition refinedp0localcoefficients.hh:31
    \n+
    std::size_t size() const
    number of coefficients
    Definition refinedp0localcoefficients.hh:40
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition refinedp0localcoefficients.hh:46
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,107 +1,82 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n-monomiallocalinterpolation.hh\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n+refinedp0localcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH\n+5#ifndef DUNE_REFINED_P0_LOCALCOEFFICIENTS_HH\n+6#define DUNE_REFINED_P0_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9\n-10#include \n-11#include \n-12\n-13#include \n-14#include \n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-22 template\n-_\b2_\b3 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-24 {\n-25 typedef typename LB::Traits::DomainType D;\n-26 typedef typename LB::Traits::DomainFieldType DF;\n-27 static const int dimD=LB::Traits::dimDomain;\n-28 typedef typename LB::Traits::RangeType R;\n-29 typedef typename LB::Traits::RangeFieldType RF;\n-30\n-31 typedef QuadratureRule QR;\n-32 typedef typename QR::iterator QRiterator;\n-33\n-34 public:\n-_\b3_\b5 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (const GeometryType >_,\n-36 const LB &lb_)\n-37 : gt(gt_), lb(lb_), Minv(0)\n-38 , qr(QuadratureRules::rule(gt, 2*lb.order()))\n-39 {\n-40 // Compute inverse of the mass matrix of the local basis, and store it in\n-Minv\n-41 if(size != lb.size())\n-42 DUNE_THROW(Exception, \"size template parameter does not match size of \"\n-43 \"local basis\");\n+8#include \n+9#include \n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+24 template\n+_\b2_\b5 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+26 {\n+27 // 2 to the k-th power\n+28 constexpr static int N = 1< base;\n-48 lb.evaluateFunction(qrit->position(),base);\n-49\n-50 for(unsigned int i = 0; i < size; ++i)\n-51 for(unsigned int j = 0; j < size; ++j)\n-52 Minv[i][j] += qrit->weight() * base[i] * base[j];\n-53 }\n-54 Minv.invert();\n-55 }\n-56\n-64 template\n-_\b6_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-66 {\n-67 out.clear();\n-68 out.resize(size, 0);\n-69\n-70 const QRiterator qrend = qr.end();\n-71 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {\n-72 //TODO: mass matrix\n-73 R y = f(qrit->position());\n-74\n-75 std::vector base;\n-76 lb.evaluateFunction(qrit->position(),base);\n-77\n-78 for(unsigned int i = 0; i < size; ++i)\n-79 for(unsigned int j = 0; j < size; ++j)\n-80 out[i] += Minv[i][j] * qrit->weight() * y * base[j];\n-81 }\n-82 }\n-83\n-84 private:\n-85 GeometryType gt;\n-86 const LB &lb;\n-87 FieldMatrix Minv;\n-88 const QR &qr;\n-89 };\n-90\n-91}\n-92\n-93#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH\n+_\b4_\b6 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+47 {\n+48 return localKeys_[i];\n+49 }\n+50\n+51 private:\n+52 std::vector localKeys_;\n+53\n+54 };\n+55\n+56}\n+57\n+58#endif\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Determine coefficients interpolating a given function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-MonomialLocalInterpolation(const GeometryType >_, const LB &lb_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for RefinedP0 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RefinedP0LocalCoefficients()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:46\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomiallocalcoefficients.hh File Reference\n+dune-localfunctions: refinedp0localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    monomiallocalcoefficients.hh File Reference
    \n+
    refinedp0localinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../common/localkey.hh"
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::MonomialLocalCoefficients< static_size >
    class  Dune::RefinedP0LocalInterpolation< LB >
     
    class  Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > >
     
    class  Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > >
     
    class  Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,21 +1,26 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-monomiallocalcoefficients.hh File Reference\n-#include \n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+refinedp0localinterpolation.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bs_\bt_\ba_\bt_\bi_\bc_\b__\bs_\bi_\bz_\be_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomiallocalcoefficients.hh Source File\n+dune-localfunctions: refinedp0localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,77 +70,197 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    monomiallocalcoefficients.hh
    \n+
    refinedp0localinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_REFINED_P0_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_REFINED_P0_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include "../common/localkey.hh"
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    23 template<int static_size>
    \n-
    \n-\n-
    25 {
    \n-
    26 public:
    \n-
    \n-\n-
    29 : index(static_size, LocalKey(0,0,0))
    \n-
    30 {
    \n-
    31 for(int i = 0; i < static_size; ++i)
    \n-
    32 index[i].index(i);
    \n-
    33 }
    \n-
    \n+\n+
    9
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    15 template<class LB>
    \n+
    \n+\n+
    17 {};
    \n+
    \n+
    18
    \n+
    22 template<class D, class R>
    \n+
    \n+\n+
    24 {
    \n+\n+
    26 typedef typename LB::Traits::DomainType DT;
    \n+
    27
    \n+
    28 public:
    \n+
    \n+\n+
    30 interpolationPoints_(2)
    \n+
    31 {
    \n+
    32 // Interpolation is done by evaluating at the halved segments centers
    \n+
    33 interpolationPoints_[0][0] = 1.0/4.0;
    \n
    34
    \n-
    \n-
    36 std::size_t size () const
    \n-
    37 {
    \n-
    38 return static_size;
    \n-
    39 }
    \n-
    \n-
    40
    \n-
    \n-
    42 const LocalKey& localKey (std::size_t i) const
    \n-
    43 {
    \n-
    44 return index[i];
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    47 private:
    \n-
    48 std::vector<LocalKey> index;
    \n-
    49 };
    \n-
    \n-
    50
    \n-
    51}
    \n-
    52#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH
    \n+
    35 interpolationPoints_[1][0] = 3.0/4.0;
    \n+
    36 }
    \n+
    \n+
    37
    \n+
    38
    \n+
    39 template<typename F, typename C>
    \n+
    \n+
    40 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    41 {
    \n+
    42 out.resize(interpolationPoints_.size());
    \n+
    43 for (size_t i = 0; i < out.size(); ++i)
    \n+
    44 {
    \n+
    45 out[i] = f(interpolationPoints_[i]);
    \n+
    46 }
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    49 private:
    \n+
    50 std::vector<DT> interpolationPoints_;
    \n+
    51 };
    \n+
    \n+
    52
    \n+
    56 template<class D, class R>
    \n+
    \n+\n+
    58 {
    \n+\n+
    60 typedef typename LB::Traits::DomainType DT;
    \n+
    61
    \n+
    62 public:
    \n+
    \n+\n+
    64 interpolationPoints_(4)
    \n+
    65 {
    \n+
    66 // Interpolation is done by evaluating at the subtriangle centers
    \n+
    67 interpolationPoints_[0][0] = 1.0/6;
    \n+
    68 interpolationPoints_[0][1] = 1.0/6;
    \n+
    69
    \n+
    70 interpolationPoints_[1][0] = 4.0/6;
    \n+
    71 interpolationPoints_[1][1] = 1.0/6;
    \n+
    72
    \n+
    73 interpolationPoints_[2][0] = 1.0/6;
    \n+
    74 interpolationPoints_[2][1] = 4.0/6;
    \n+
    75
    \n+
    76 interpolationPoints_[3][0] = 2.0/6;
    \n+
    77 interpolationPoints_[3][1] = 2.0/6;
    \n+
    78 }
    \n+
    \n+
    79
    \n+
    80
    \n+
    81 template<typename F, typename C>
    \n+
    \n+
    82 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    83 {
    \n+
    84 out.resize(interpolationPoints_.size());
    \n+
    85 for (size_t i = 0; i < out.size(); ++i)
    \n+
    86 {
    \n+
    87 out[i] = f(interpolationPoints_[i]);
    \n+
    88 }
    \n+
    89 }
    \n+
    \n+
    90
    \n+
    91 private:
    \n+
    92 std::vector<DT> interpolationPoints_;
    \n+
    93 };
    \n+
    \n+
    94
    \n+
    98 template<class D, class R>
    \n+
    \n+\n+
    100 {
    \n+\n+
    102 typedef typename LB::Traits::DomainType DT;
    \n+
    103
    \n+
    104 public:
    \n+
    \n+\n+
    106 interpolationPoints_(8)
    \n+
    107 {
    \n+
    108 // Interpolation is done by evaluating at the subtriangle centers
    \n+
    109 interpolationPoints_[0][0] = 1.0/8;
    \n+
    110 interpolationPoints_[0][1] = 1.0/8;
    \n+
    111 interpolationPoints_[0][2] = 1.0/8;
    \n+
    112
    \n+
    113 interpolationPoints_[1][0] = 5.0/8;
    \n+
    114 interpolationPoints_[1][1] = 1.0/8;
    \n+
    115 interpolationPoints_[1][2] = 1.0/8;
    \n+
    116
    \n+
    117 interpolationPoints_[2][0] = 1.0/8;
    \n+
    118 interpolationPoints_[2][1] = 5.0/8;
    \n+
    119 interpolationPoints_[2][2] = 1.0/8;
    \n+
    120
    \n+
    121 interpolationPoints_[3][0] = 1.0/8;
    \n+
    122 interpolationPoints_[3][1] = 1.0/8;
    \n+
    123 interpolationPoints_[3][2] = 5.0/8;
    \n+
    124
    \n+
    125 interpolationPoints_[4][0] = 1.0/4;
    \n+
    126 interpolationPoints_[4][1] = 1.0/8;
    \n+
    127 interpolationPoints_[4][2] = 1.0/4;
    \n+
    128
    \n+
    129 interpolationPoints_[5][0] = 3.0/8;
    \n+
    130 interpolationPoints_[5][1] = 1.0/4;
    \n+
    131 interpolationPoints_[5][2] = 1.0/8;
    \n+
    132
    \n+
    133 interpolationPoints_[6][0] = 1.0/8;
    \n+
    134 interpolationPoints_[6][1] = 1.0/4;
    \n+
    135 interpolationPoints_[6][2] = 3.0/8;
    \n+
    136
    \n+
    137 interpolationPoints_[7][0] = 1.0/4;
    \n+
    138 interpolationPoints_[7][1] = 3.0/8;
    \n+
    139 interpolationPoints_[7][2] = 1.0/4;
    \n+
    140 }
    \n+
    \n+
    141
    \n+
    142
    \n+
    143 template<typename F, typename C>
    \n+
    \n+
    144 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    145 {
    \n+
    146 out.resize(interpolationPoints_.size());
    \n+
    147 for (size_t i = 0; i < out.size(); ++i)
    \n+
    148 {
    \n+
    149 out[i] = f(interpolationPoints_[i]);
    \n+
    150 }
    \n+
    151 }
    \n+
    \n+
    152
    \n+
    153 private:
    \n+
    154 std::vector<DT> interpolationPoints_;
    \n+
    155 };
    \n+
    \n+
    156}
    \n+
    157
    \n+
    158#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Definition monomiallocalcoefficients.hh:25
    \n-
    std::size_t size() const
    number of coefficients
    Definition monomiallocalcoefficients.hh:36
    \n-
    MonomialLocalCoefficients()
    Standard constructor.
    Definition monomiallocalcoefficients.hh:28
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition monomiallocalcoefficients.hh:42
    \n+
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:41
    \n+
    Definition refinedp0localinterpolation.hh:17
    \n+
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:29
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:40
    \n+
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:63
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:82
    \n+
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:105
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:144
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,73 +1,191 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n-monomiallocalcoefficients.hh\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n+refinedp0localinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_REFINED_P0_LOCALINTERPOLATION_HH\n+6#define DUNE_REFINED_P0_LOCALINTERPOLATION_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \"../common/localkey.hh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-23 template\n-_\b2_\b4 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-25 {\n-26 public:\n-_\b2_\b8 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs ()\n-29 : index(static_size, _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0))\n-30 {\n-31 for(int i = 0; i < static_size; ++i)\n-32 index[i].index(i);\n-33 }\n+8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+9\n+10namespace _\bD_\bu_\bn_\be\n+11{\n+15 template\n+_\b1_\b6 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+17 {};\n+18\n+22 template\n+_\b2_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs >\n+24 {\n+25 typedef _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b> _\bL_\bB;\n+26 typedef typename LB::Traits::DomainType DT;\n+27\n+28 public:\n+_\b2_\b9 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() :\n+30 interpolationPoints_(2)\n+31 {\n+32 // Interpolation is done by evaluating at the halved segments centers\n+33 interpolationPoints_[0][0] = 1.0/4.0;\n 34\n-_\b3_\b6 std::size_t _\bs_\bi_\bz_\be () const\n-37 {\n-38 return static_size;\n-39 }\n-40\n-_\b4_\b2 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-43 {\n-44 return index[i];\n-45 }\n-46\n-47 private:\n-48 std::vector index;\n-49 };\n-50\n-51}\n-52#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH\n+35 interpolationPoints_[1][0] = 3.0/4.0;\n+36 }\n+37\n+38\n+39 template\n+_\b4_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+41 {\n+42 out.resize(interpolationPoints_.size());\n+43 for (size_t i = 0; i < out.size(); ++i)\n+44 {\n+45 out[i] = f(interpolationPoints_[i]);\n+46 }\n+47 }\n+48\n+49 private:\n+50 std::vector
    interpolationPoints_;\n+51 };\n+52\n+56 template\n+_\b5_\b7 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs >\n+58 {\n+59 typedef _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b> _\bL_\bB;\n+60 typedef typename LB::Traits::DomainType DT;\n+61\n+62 public:\n+_\b6_\b3 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() :\n+64 interpolationPoints_(4)\n+65 {\n+66 // Interpolation is done by evaluating at the subtriangle centers\n+67 interpolationPoints_[0][0] = 1.0/6;\n+68 interpolationPoints_[0][1] = 1.0/6;\n+69\n+70 interpolationPoints_[1][0] = 4.0/6;\n+71 interpolationPoints_[1][1] = 1.0/6;\n+72\n+73 interpolationPoints_[2][0] = 1.0/6;\n+74 interpolationPoints_[2][1] = 4.0/6;\n+75\n+76 interpolationPoints_[3][0] = 2.0/6;\n+77 interpolationPoints_[3][1] = 2.0/6;\n+78 }\n+79\n+80\n+81 template\n+_\b8_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+83 {\n+84 out.resize(interpolationPoints_.size());\n+85 for (size_t i = 0; i < out.size(); ++i)\n+86 {\n+87 out[i] = f(interpolationPoints_[i]);\n+88 }\n+89 }\n+90\n+91 private:\n+92 std::vector
    interpolationPoints_;\n+93 };\n+94\n+98 template\n+_\b9_\b9 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs >\n+100 {\n+101 typedef _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b> _\bL_\bB;\n+102 typedef typename LB::Traits::DomainType DT;\n+103\n+104 public:\n+_\b1_\b0_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() :\n+106 interpolationPoints_(8)\n+107 {\n+108 // Interpolation is done by evaluating at the subtriangle centers\n+109 interpolationPoints_[0][0] = 1.0/8;\n+110 interpolationPoints_[0][1] = 1.0/8;\n+111 interpolationPoints_[0][2] = 1.0/8;\n+112\n+113 interpolationPoints_[1][0] = 5.0/8;\n+114 interpolationPoints_[1][1] = 1.0/8;\n+115 interpolationPoints_[1][2] = 1.0/8;\n+116\n+117 interpolationPoints_[2][0] = 1.0/8;\n+118 interpolationPoints_[2][1] = 5.0/8;\n+119 interpolationPoints_[2][2] = 1.0/8;\n+120\n+121 interpolationPoints_[3][0] = 1.0/8;\n+122 interpolationPoints_[3][1] = 1.0/8;\n+123 interpolationPoints_[3][2] = 5.0/8;\n+124\n+125 interpolationPoints_[4][0] = 1.0/4;\n+126 interpolationPoints_[4][1] = 1.0/8;\n+127 interpolationPoints_[4][2] = 1.0/4;\n+128\n+129 interpolationPoints_[5][0] = 3.0/8;\n+130 interpolationPoints_[5][1] = 1.0/4;\n+131 interpolationPoints_[5][2] = 1.0/8;\n+132\n+133 interpolationPoints_[6][0] = 1.0/8;\n+134 interpolationPoints_[6][1] = 1.0/4;\n+135 interpolationPoints_[6][2] = 3.0/8;\n+136\n+137 interpolationPoints_[7][0] = 1.0/4;\n+138 interpolationPoints_[7][1] = 3.0/8;\n+139 interpolationPoints_[7][2] = 1.0/4;\n+140 }\n+141\n+142\n+143 template\n+_\b1_\b4_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+145 {\n+146 out.resize(interpolationPoints_.size());\n+147 for (size_t i = 0; i < out.size(); ++i)\n+148 {\n+149 out[i] = f(interpolationPoints_[i]);\n+150 }\n+151 }\n+152\n+153 private:\n+154 std::vector
    interpolationPoints_;\n+155 };\n+156}\n+157\n+158#endif\n+_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-MonomialLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Uniformly refined constant shape functions on a unit simplex in R^dim.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:\n+_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RefinedP0LocalInterpolation()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b _\b>_\b:_\b:\n+_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RefinedP0LocalInterpolation()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b _\b>_\b:_\b:\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b _\b>_\b:_\b:\n+_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RefinedP0LocalInterpolation()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b _\b>_\b:_\b:\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:144\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomiallocalbasis.hh File Reference\n+dune-localfunctions: refinedp0localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,54 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    monomiallocalbasis.hh File Reference
    \n+
    refinedp0localbasis.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <cassert>
    \n-#include <numeric>
    \n+
    #include <numeric>
    \n+#include <dune/common/fvector.hh>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/common/math.hh>
    \n-#include "../common/localbasis.hh"
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    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 >
    class  Dune::RefinedP0LocalBasis< D, R, dim >
     Uniformly refined constant shape functions on a unit simplex in R^dim. More...
     
    \n \n \n \n-\n-\n

    \n Namespaces

    namespace  Dune
     
    namespace  Dune::MonomImp
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,36 +1,26 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-monomiallocalbasis.hh File Reference\n-#include \n-#include \n+refinedp0localbasis.hh File Reference\n #include \n+#include \n #include \n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b _\b>\n-\u00a0 Access output vector of evaluateFunction() and evaluate() _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b _\b>\n-\u00a0 Access output vector of evaluateJacobian() _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bc_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\b1_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b,_\b _\bp_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Uniformly refined constant shape functions on a unit simplex in R^dim.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomiallocalbasis.hh Source File\n+dune-localfunctions: refinedp0localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,304 +70,119 @@\n
    \n \n \n \n \n \n \n
    \n-
    monomiallocalbasis.hh
    \n+
    refinedp0localbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
    \n+
    5#ifndef DUNE_REFINED_P0_LOCALBASIS_HH
    \n+
    6#define DUNE_REFINED_P0_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <cassert>
    \n-
    10#include <numeric>
    \n-
    11
    \n-
    12#include <dune/common/fmatrix.hh>
    \n-
    13#include <dune/common/math.hh>
    \n-
    14
    \n-
    15#include "../common/localbasis.hh"
    \n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    \n-
    19 namespace MonomImp
    \n-
    20 {
    \n-
    22 template <typename Traits>
    \n-
    \n-
    23 class EvalAccess {
    \n-
    24 std::vector<typename Traits::RangeType> &out;
    \n-
    25#ifndef NDEBUG
    \n-
    26 unsigned int first_unused_index;
    \n-
    27#endif
    \n-
    28
    \n-
    29 public:
    \n-
    \n-
    30 EvalAccess(std::vector<typename Traits::RangeType> &out_)
    \n-
    31 : out(out_)
    \n-
    32#ifndef NDEBUG
    \n-
    33 , first_unused_index(0)
    \n-
    34#endif
    \n-
    35 { }
    \n-
    \n-
    36#ifndef NDEBUG
    \n-
    \n-\n-
    38 assert(first_unused_index == out.size());
    \n-
    39 }
    \n-
    \n-
    40#endif
    \n-
    \n-
    41 typename Traits::RangeFieldType &operator[](unsigned int index)
    \n-
    42 {
    \n-
    43 assert(index < out.size());
    \n-
    44#ifndef NDEBUG
    \n-
    45 if(first_unused_index <= index)
    \n-
    46 first_unused_index = index+1;
    \n-
    47#endif
    \n-
    48 return out[index][0];
    \n-
    49 }
    \n-
    \n-
    50 };
    \n-
    \n-
    51
    \n-
    53 template <typename Traits>
    \n-
    \n-\n-
    55 std::vector<typename Traits::JacobianType> &out;
    \n-
    56 unsigned int row;
    \n-
    57#ifndef NDEBUG
    \n-
    58 unsigned int first_unused_index;
    \n-
    59#endif
    \n-
    60
    \n-
    61 public:
    \n-
    \n-
    62 JacobianAccess(std::vector<typename Traits::JacobianType> &out_,
    \n-
    63 unsigned int row_)
    \n-
    64 : out(out_), row(row_)
    \n-
    65#ifndef NDEBUG
    \n-
    66 , first_unused_index(0)
    \n-
    67#endif
    \n-
    68 { }
    \n-
    \n-
    69#ifndef NDEBUG
    \n-
    \n-\n-
    71 assert(first_unused_index == out.size());
    \n-
    72 }
    \n+
    8#include <numeric>
    \n+
    9
    \n+
    10#include <dune/common/fvector.hh>
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \n+\n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    38 template<class D, class R, int dim>
    \n+
    \n+\n+
    40 : public RefinedSimplexLocalBasis<D,dim>
    \n+
    41 {
    \n+
    42 // 2 to the k-th power
    \n+
    43 constexpr static int N = 1<<dim;
    \n+
    44 public:
    \n+
    46 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,dim> > Traits;
    \n+
    47
    \n+
    \n+
    49 unsigned int size () const
    \n+
    50 {
    \n+
    51 return N;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+
    55 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    56 std::vector<typename Traits::RangeType>& out) const
    \n+
    57 {
    \n+
    58 int subElement = this->getSubElement(in);
    \n+
    59 out.resize(N);
    \n+
    60 for(int i=0; i<N; ++i)
    \n+
    61 out[i] = (i==subElement) ? 1 : 0;
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    64 inline void
    \n+
    \n+
    65 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    66 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    67 {
    \n+
    68 out.resize(N);
    \n+
    69 for(int i=0; i<N; ++i)
    \n+
    70 out[i][0] = 0;
    \n+
    71 }
    \n
    \n-
    73#endif
    \n+
    72
    \n
    \n-
    74 typename Traits::RangeFieldType &operator[](unsigned int index)
    \n-
    75 {
    \n-
    76 assert(index < out.size());
    \n-
    77#ifndef NDEBUG
    \n-
    78 if(first_unused_index <= index)
    \n-
    79 first_unused_index = index+1;
    \n-
    80#endif
    \n-
    81 return out[index][0][row];
    \n-
    82 }
    \n-
    \n-
    83 };
    \n-
    \n-
    84
    \n-
    97 template <typename Traits, int c>
    \n-
    \n-
    98 struct Evaluate
    \n-
    99 {
    \n-
    101 constexpr static int d = Traits::dimDomain - c;
    \n-
    102
    \n-
    109 template <typename Access>
    \n-
    \n-
    110 static void eval (
    \n-
    111 const typename Traits::DomainType &in,
    \n-
    114 const std::array<unsigned int, Traits::dimDomain> &derivatives,
    \n-
    117 typename Traits::RangeFieldType prod,
    \n-
    119 int bound,
    \n-
    121 int& index,
    \n-
    123 Access &access)
    \n-
    124 {
    \n-
    125 // start with the highest exponent for this dimension, then work down
    \n-
    126 for (int e = bound; e >= 0; --e)
    \n-
    127 {
    \n-
    128 // the rest of the available exponents, to be used by the other
    \n-
    129 // dimensions
    \n-
    130 int newbound = bound - e;
    \n-
    131 if(e < (int)derivatives[d])
    \n-\n-
    133 eval(in, derivatives, 0, newbound, index, access);
    \n-
    134 else {
    \n-
    135 int coeff = 1;
    \n-
    136 for(int i = e - derivatives[d] + 1; i <= e; ++i)
    \n-
    137 coeff *= i;
    \n-
    138 // call the evaluator for the next dimension
    \n-\n-
    140 eval( // pass the coordinate and the derivatives unchanged
    \n-
    141 in, derivatives,
    \n-
    142 // also pass the product accumulated so far, but also
    \n-
    143 // include the current dimension
    \n-
    144 prod * power(in[d], e-derivatives[d]) * coeff,
    \n-
    145 // pass the number of remaining exponents to the next
    \n-
    146 // dimension
    \n-
    147 newbound,
    \n-
    148 // pass the next index to fill and the output access
    \n-
    149 // wrapper
    \n-
    150 index, access);
    \n-
    151 }
    \n-
    152 }
    \n-
    153 }
    \n-
    \n-
    154 };
    \n-
    \n-
    155
    \n-
    160 template <typename Traits>
    \n-
    \n-
    161 struct Evaluate<Traits, 1>
    \n-
    162 {
    \n-
    163 constexpr static int d = Traits::dimDomain-1;
    \n-
    165 template <typename Access>
    \n-
    \n-
    166 static void eval (const typename Traits::DomainType &in,
    \n-
    167 const std::array<unsigned int, Traits::dimDomain> &derivatives,
    \n-
    168 typename Traits::RangeFieldType prod,
    \n-
    169 int bound, int& index, Access &access)
    \n-
    170 {
    \n-
    171 if(bound < (int)derivatives[d])
    \n-
    172 prod = 0;
    \n-
    173 else {
    \n-
    174 int coeff = 1;
    \n-
    175 for(int i = bound - derivatives[d] + 1; i <= bound; ++i)
    \n-
    176 coeff *= i;
    \n-
    177 prod *= power(in[d], bound-derivatives[d]) * coeff;
    \n-
    178 }
    \n-
    179 access[index] = prod;
    \n-
    180 ++index;
    \n-
    181 }
    \n-
    \n-
    182 };
    \n-
    \n-
    183
    \n-
    184 } //namespace MonomImp
    \n-
    \n-
    185
    \n-
    200 template<class D, class R, unsigned int d, unsigned int p>
    \n-
    \n-\n-
    202 {
    \n-
    203 // Helper: Number of shape functions for a k-th order element in dimension dd
    \n-
    204 static constexpr unsigned int size (int dd, int k)
    \n-
    205 {
    \n-
    206 if (dd==0 || k==0)
    \n-
    207 return 1;
    \n-
    208 return size(dd,k-1) + size(dd-1,k);
    \n-
    209 }
    \n-
    210
    \n-
    211 public:
    \n-
    213 typedef LocalBasisTraits<D,d,Dune::FieldVector<D,d>,R,1,Dune::FieldVector<R,1>,
    \n-
    214 Dune::FieldMatrix<R,1,d> > Traits;
    \n-
    215
    \n-
    \n-
    217 static constexpr unsigned int size ()
    \n-
    218 {
    \n-
    219 return size(d,p);
    \n-
    220 }
    \n-
    \n-
    221
    \n-
    \n-
    223 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    224 std::vector<typename Traits::RangeType>& out) const
    \n-
    225 {
    \n-
    226 out.resize(size());
    \n-
    227 int index = 0;
    \n-
    228 std::array<unsigned int, d> derivatives;
    \n-
    229 std::fill(derivatives.begin(), derivatives.end(), 0);
    \n-\n-
    231 for (unsigned int lp = 0; lp <= p; ++lp)
    \n-
    232 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
    \n-
    233 }
    \n-
    \n-
    234
    \n-
    \n-
    240 inline void partial(const std::array<unsigned int,d>& order,
    \n-
    241 const typename Traits::DomainType& in,
    \n-
    242 std::vector<typename Traits::RangeType>& out) const
    \n-
    243 {
    \n-
    244 out.resize(size());
    \n-
    245 int index = 0;
    \n-\n-
    247 for (unsigned int lp = 0; lp <= p; ++lp)
    \n-
    248 MonomImp::Evaluate<Traits, d>::eval(in, order, 1, lp, index, access);
    \n-
    249 }
    \n-
    \n-
    250
    \n-
    252 inline void
    \n-
    \n-
    253 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    254 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    255 {
    \n-
    256 out.resize(size());
    \n-
    257 std::array<unsigned int, d> derivatives;
    \n-
    258 for(unsigned int i = 0; i < d; ++i)
    \n-
    259 derivatives[i] = 0;
    \n-
    260 for(unsigned int i = 0; i < d; ++i)
    \n-
    261 {
    \n-
    262 derivatives[i] = 1;
    \n-
    263 int index = 0;
    \n-\n-
    265 for(unsigned int lp = 0; lp <= p; ++lp)
    \n-
    266 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
    \n-
    267 derivatives[i] = 0;
    \n-
    268 }
    \n-
    269 }
    \n-
    \n-
    270
    \n-
    \n-
    272 unsigned int order () const
    \n-
    273 {
    \n-
    274 return p;
    \n-
    275 }
    \n-
    \n-
    276 };
    \n-
    \n-
    277
    \n-
    278}
    \n-
    279
    \n-
    280#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
    \n+
    74 void partial (const std::array<unsigned int, dim>& order,
    \n+
    75 const typename Traits::DomainType& in, // position
    \n+
    76 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    77 {
    \n+
    78 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    79 if (totalOrder == 0) {
    \n+
    80 evaluateFunction(in, out);
    \n+
    81 } else {
    \n+
    82 out.resize(size());
    \n+
    83 for (std::size_t i = 0; i < size(); ++i)
    \n+
    84 out[i] = 0;
    \n+
    85 }
    \n+
    86 }
    \n+
    \n+
    87
    \n+
    \n+
    92 unsigned int order () const
    \n+
    93 {
    \n+
    94 return 0;
    \n+
    95 }
    \n+
    \n+
    96
    \n+
    97 };
    \n+
    \n+
    98
    \n+
    99}
    \n+
    100#endif
    \n+
    Contains a base class for LocalBasis classes based on uniform refinement.
    \n
    Definition bdfmcube.hh:18
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Access output vector of evaluateFunction() and evaluate()
    Definition monomiallocalbasis.hh:23
    \n-
    Traits::RangeFieldType & operator[](unsigned int index)
    Definition monomiallocalbasis.hh:41
    \n-
    ~EvalAccess()
    Definition monomiallocalbasis.hh:37
    \n-
    EvalAccess(std::vector< typename Traits::RangeType > &out_)
    Definition monomiallocalbasis.hh:30
    \n-
    Access output vector of evaluateJacobian()
    Definition monomiallocalbasis.hh:54
    \n-
    ~JacobianAccess()
    Definition monomiallocalbasis.hh:70
    \n-
    Traits::RangeFieldType & operator[](unsigned int index)
    Definition monomiallocalbasis.hh:74
    \n-
    JacobianAccess(std::vector< typename Traits::JacobianType > &out_, unsigned int row_)
    Definition monomiallocalbasis.hh:62
    \n-
    Definition monomiallocalbasis.hh:99
    \n-
    static constexpr int d
    The next dimension to try for factors.
    Definition monomiallocalbasis.hh:101
    \n-
    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
    \n-
    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
    \n-
    Definition monomiallocalbasis.hh:202
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition monomiallocalbasis.hh:272
    \n-
    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
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition monomiallocalbasis.hh:253
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition monomiallocalbasis.hh:223
    \n-
    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
    \n-
    static constexpr unsigned int size()
    Number of shape functions.
    Definition monomiallocalbasis.hh:217
    \n+
    Definition refinedsimplexlocalbasis.hh:20
    \n+
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:41
    \n+
    void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition refinedp0localbasis.hh:74
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp0localbasis.hh:55
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Definition refinedp0localbasis.hh:65
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition refinedp0localbasis.hh:92
    \n+
    LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    export type traits for function signature
    Definition refinedp0localbasis.hh:46
    \n+
    unsigned int size() const
    number of shape functions
    Definition refinedp0localbasis.hh:49
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,317 +1,131 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n-monomiallocalbasis.hh\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n+refinedp0localbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH\n+5#ifndef DUNE_REFINED_P0_LOCALBASIS_HH\n+6#define DUNE_REFINED_P0_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include \n-13#include \n-14\n-15#include \"../common/localbasis.hh\"\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-_\b1_\b9 namespace MonomImp\n-20 {\n-22 template \n-_\b2_\b3 class _\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs {\n-24 std::vector &out;\n-25#ifndef NDEBUG\n-26 unsigned int first_unused_index;\n-27#endif\n-28\n-29 public:\n-_\b3_\b0 _\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs(std::vector &out_)\n-31 : out(out_)\n-32#ifndef NDEBUG\n-33 , first_unused_index(0)\n-34#endif\n-35 { }\n-36#ifndef NDEBUG\n-_\b3_\b7 _\b~_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs() {\n-38 assert(first_unused_index == out.size());\n-39 }\n-40#endif\n-_\b4_\b1 typename Traits::RangeFieldType &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](unsigned int index)\n-42 {\n-43 assert(index < out.size());\n-44#ifndef NDEBUG\n-45 if(first_unused_index <= index)\n-46 first_unused_index = index+1;\n-47#endif\n-48 return out[index][0];\n-49 }\n-50 };\n-51\n-53 template \n-_\b5_\b4 class _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs {\n-55 std::vector &out;\n-56 unsigned int row;\n-57#ifndef NDEBUG\n-58 unsigned int first_unused_index;\n-59#endif\n-60\n-61 public:\n-_\b6_\b2 _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs(std::vector &out_,\n-63 unsigned int row_)\n-64 : out(out_), row(row_)\n-65#ifndef NDEBUG\n-66 , first_unused_index(0)\n-67#endif\n-68 { }\n-69#ifndef NDEBUG\n-_\b7_\b0 _\b~_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs() {\n-71 assert(first_unused_index == out.size());\n-72 }\n-73#endif\n-_\b7_\b4 typename Traits::RangeFieldType &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](unsigned int index)\n-75 {\n-76 assert(index < out.size());\n-77#ifndef NDEBUG\n-78 if(first_unused_index <= index)\n-79 first_unused_index = index+1;\n-80#endif\n-81 return out[index][0][row];\n-82 }\n-83 };\n-84\n-97 template \n-_\b9_\b8 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-99 {\n-_\b1_\b0_\b1 constexpr static int _\bd = Traits::dimDomain - c;\n-102\n-109 template \n-_\b1_\b1_\b0 static void _\be_\bv_\ba_\bl (\n-111 const typename Traits::DomainType &in,\n-114 const std::array &derivatives,\n-117 typename Traits::RangeFieldType prod,\n-119 int bound,\n-121 int& index,\n-123 Access &access)\n-124 {\n-125 // start with the highest exponent for this dimension, then work down\n-126 for (int e = bound; e >= 0; --e)\n-127 {\n-128 // the rest of the available exponents, to be used by the other\n-129 // dimensions\n-130 int newbound = bound - e;\n-131 if(e < (int)derivatives[_\bd])\n-132 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\bc_\b-_\b1_\b>_\b:_\b:\n-133_\b _\be_\bv_\ba_\bl(in, derivatives, 0, newbound, index, access);\n-134 else {\n-135 int coeff = 1;\n-136 for(int i = e - derivatives[_\bd] + 1; i <= e; ++i)\n-137 coeff *= i;\n-138 // call the evaluator for the next dimension\n-139 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\bc_\b-_\b1_\b>_\b:_\b:\n-140_\b _\be_\bv_\ba_\bl( // pass the coordinate and the derivatives unchanged\n-141 in, derivatives,\n-142 // also pass the product accumulated so far, but also\n-143 // include the current dimension\n-144 prod * power(in[_\bd], e-derivatives[_\bd]) * coeff,\n-145 // pass the number of remaining exponents to the next\n-146 // dimension\n-147 newbound,\n-148 // pass the next index to fill and the output access\n-149 // wrapper\n-150 index, access);\n-151 }\n-152 }\n-153 }\n-154 };\n-155\n-160 template \n-_\b1_\b6_\b1 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-162 {\n-_\b1_\b6_\b3 constexpr static int _\bd = Traits::dimDomain-1;\n-165 template \n-_\b1_\b6_\b6 static void _\be_\bv_\ba_\bl (const typename Traits::DomainType &in,\n-167 const std::array &derivatives,\n-168 typename Traits::RangeFieldType prod,\n-169 int bound, int& index, Access &access)\n-170 {\n-171 if(bound < (int)derivatives[_\bd])\n-172 prod = 0;\n-173 else {\n-174 int coeff = 1;\n-175 for(int i = bound - derivatives[_\bd] + 1; i <= bound; ++i)\n-176 coeff *= i;\n-177 prod *= power(in[_\bd], bound-derivatives[_\bd]) * coeff;\n-178 }\n-179 access[index] = prod;\n-180 ++index;\n-181 }\n-182 };\n-183\n-184 } //namespace MonomImp\n-185\n-200 template\n-_\b2_\b0_\b1 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-202 {\n-203 // Helper: Number of shape functions for a k-th order element in dimension\n-dd\n-204 static constexpr unsigned int _\bs_\bi_\bz_\be (int dd, int k)\n-205 {\n-206 if (dd==0 || k==0)\n-207 return 1;\n-208 return _\bs_\bi_\bz_\be(dd,k-1) + _\bs_\bi_\bz_\be(dd-1,k);\n-209 }\n-210\n-211 public:\n-213 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\b>,R,1,Dune::\n-FieldVector,\n-_\b2_\b1_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-215\n-_\b2_\b1_\b7 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-218 {\n-219 return _\bs_\bi_\bz_\be(d,p);\n-220 }\n-221\n-_\b2_\b2_\b3 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-224 std::vector& out) const\n-225 {\n-226 out.resize(_\bs_\bi_\bz_\be());\n-227 int index = 0;\n-228 std::array derivatives;\n-229 std::fill(derivatives.begin(), derivatives.end(), 0);\n-230 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b> access(out);\n-231 for (unsigned int lp = 0; lp <= p; ++lp)\n-232 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bd_\b>_\b:_\b:_\be_\bv_\ba_\bl(in, derivatives, 1, lp, index, access);\n-233 }\n-234\n-_\b2_\b4_\b0 inline void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array& _\bo_\br_\bd_\be_\br,\n-241 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-242 std::vector& out) const\n-243 {\n-244 out.resize(_\bs_\bi_\bz_\be());\n-245 int index = 0;\n-246 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b> access(out);\n-247 for (unsigned int lp = 0; lp <= p; ++lp)\n-248 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bd_\b>_\b:_\b:_\be_\bv_\ba_\bl(in, _\bo_\br_\bd_\be_\br, 1, lp, index, access);\n-249 }\n-250\n-252 inline void\n-_\b2_\b5_\b3 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-254 std::vector& out) const // return value\n-255 {\n-256 out.resize(_\bs_\bi_\bz_\be());\n-257 std::array derivatives;\n-258 for(unsigned int i = 0; i < d; ++i)\n-259 derivatives[i] = 0;\n-260 for(unsigned int i = 0; i < d; ++i)\n-261 {\n-262 derivatives[i] = 1;\n-263 int index = 0;\n-264 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b> access(out, i);\n-265 for(unsigned int lp = 0; lp <= p; ++lp)\n-266 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bd_\b>_\b:_\b:_\be_\bv_\ba_\bl(in, derivatives, 1, lp, index, access);\n-267 derivatives[i] = 0;\n-268 }\n-269 }\n-270\n-_\b2_\b7_\b2 unsigned int _\bo_\br_\bd_\be_\br () const\n-273 {\n-274 return p;\n-275 }\n-276 };\n-277\n-278}\n-279\n-280#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH\n+8#include \n+9\n+10#include \n+11#include \n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+38 template\n+_\b3_\b9 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+40 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+41 {\n+42 // 2 to the k-th power\n+43 constexpr static int N = 1<,R,1,Dune::\n+FieldVector, Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+47\n+_\b4_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+50 {\n+51 return N;\n+52 }\n+53\n+_\b5_\b5 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+56 std::vector& out) const\n+57 {\n+58 int subElement = this->getSubElement(in);\n+59 out.resize(N);\n+60 for(int i=0; i& out) const // return value\n+67 {\n+68 out.resize(N);\n+69 for(int i=0; i& _\bo_\br_\bd_\be_\br,\n+75 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+76 std::vector& out) const // return value\n+77 {\n+78 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+79 if (totalOrder == 0) {\n+80 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+81 } else {\n+82 out.resize(_\bs_\bi_\bz_\be());\n+83 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+84 out[i] = 0;\n+85 }\n+86 }\n+87\n+_\b9_\b2 unsigned int _\bo_\br_\bd_\be_\br () const\n+93 {\n+94 return 0;\n+95 }\n+96\n+97 };\n+98\n+99}\n+100#endif\n+_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+Contains a base class for LocalBasis classes based on uniform refinement.\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n Type traits for LocalBasisVirtualInterface.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs\n-Access output vector of evaluateFunction() and evaluate()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-Traits::RangeFieldType & operator[](unsigned int index)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\b~_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs\n-~EvalAccess()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs\n-EvalAccess(std::vector< typename Traits::RangeType > &out_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs\n-Access output vector of evaluateJacobian()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\b~_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs\n-~JacobianAccess()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-Traits::RangeFieldType & operator[](unsigned int index)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs\n-JacobianAccess(std::vector< typename Traits::JacobianType > &out_, unsigned int\n-row_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b:_\b:_\bd\n-static constexpr int d\n-The next dimension to try for factors.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b:_\b:_\be_\bv_\ba_\bl\n-static void eval(const typename Traits::DomainType &in, const std::array<\n-unsigned int, Traits::dimDomain > &derivatives, typename Traits::RangeFieldType\n-prod, int bound, int &index, Access &access)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl\n-static void eval(const typename Traits::DomainType &in, const std::array<\n-unsigned int, Traits::dimDomain > &derivatives, typename Traits::RangeFieldType\n-prod, int bound, int &index, Access &access)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:202\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:272\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, d > &order, const typename\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Uniformly refined constant shape functions on a unit simplex in R^dim.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, dim > &order, const typename\n Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of any order of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:253\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n typename Traits::RangeType > &out) const\n Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:223\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, d, Dune::FieldVector< D, d >, R, 1, Dune::FieldVector< R,\n-1 >, Dune::FieldMatrix< R, 1, d > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector<\n+R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits\n export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:214\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr unsigned int size()\n-Number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:217\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:49\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas.hh File Reference\n+dune-localfunctions: refinedp0.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,58 @@\n \n \n \n \n \n \n \n
    \n-
    raviartthomas.hh File Reference
    \n+ \n+
    refinedp0.hh File Reference
    \n
    \n
    \n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::RefinedP0LocalFiniteElement< D, R, dim >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
     
    class  Dune::RefinedP0LocalFiniteElement< D, R, 1 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
     
    class  Dune::RefinedP0LocalFiniteElement< D, R, 2 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
     
    class  Dune::RefinedP0LocalFiniteElement< D, R, 3 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
     
    \n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     
    \n+

    Detailed Description

    \n+

    Piecewise P0 finite element.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,41 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-raviartthomas.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+refinedp0.hh File Reference\n+Piecewise P0 finite element. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n+#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Local finite element that is piecewise P0 on a once uniformly refined\n+ reference geometry. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>\n+\u00a0 Local finite element that is piecewise P0 on a once uniformly refined\n+ reference geometry. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>\n+\u00a0 Local finite element that is piecewise P0 on a once uniformly refined\n+ reference geometry. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>\n+\u00a0 Local finite element that is piecewise P0 on a once uniformly refined\n+ reference geometry. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Piecewise P0 finite element.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas.hh Source File\n+dune-localfunctions: refinedp0.hh Source File\n \n \n \n \n \n \n \n@@ -70,59 +70,264 @@\n \n \n \n \n \n \n \n
    \n-
    raviartthomas.hh
    \n+
    refinedp0.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RAVIARTTHOMASFINITEELEMENT_HH
    \n-
    6#define DUNE_RAVIARTTHOMASFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_REFINED_P0_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_REFINED_P0_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8// Raviart-Thomas implementations with run-time order
    \n-\n-\n-
    11
    \n-
    12// Raviart-Thomas implementations with compile-time order
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-
    24
    \n-
    25#endif // #ifndef DUNE_RAVIARTTHOMASFINITEELEMENT_HH
    \n-
    Convenience header that includes all available Raviart-Thomas local finite elements for cubes.
    \n-\n-\n-\n-\n-\n-
    Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension.
    \n-\n-\n-\n-\n-\n-\n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n+\n+
    12
    \n+\n+\n+\n+
    16
    \n+
    20namespace Dune
    \n+
    21{
    \n+
    22
    \n+
    27 template<class D, class R, int dim>
    \n+
    \n+\n+
    29 {
    \n+\n+
    31
    \n+
    32 public:
    \n+
    33 // We steal the p0 traits since they exist for all dim.
    \n+
    34 // This allows to instantiate the type and access the Traits.
    \n+\n+
    36 };
    \n+
    \n+
    37
    \n+
    42 template<class D, class R>
    \n+
    \n+\n+
    44 {
    \n+
    45 public:
    \n+\n+\n+\n+\n+
    52
    \n+\n+
    57
    \n+
    \n+
    60 const typename Traits::LocalBasisType& localBasis () const
    \n+
    61 {
    \n+
    62 return basis_;
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    \n+\n+
    68 {
    \n+
    69 return coefficients_;
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    \n+\n+
    75 {
    \n+
    76 return interpolation_;
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    \n+
    80 unsigned int size () const
    \n+
    81 {
    \n+
    82 return basis_.size();
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    \n+
    87 static constexpr GeometryType type ()
    \n+
    88 {
    \n+
    89 return GeometryTypes::line;
    \n+
    90 }
    \n+
    \n+
    91
    \n+
    92 private:
    \n+\n+\n+\n+
    96 };
    \n+
    \n+
    97
    \n+
    102 template<class D, class R>
    \n+
    \n+\n+
    104 {
    \n+
    105 public:
    \n+\n+\n+\n+\n+
    112
    \n+\n+
    117
    \n+
    \n+
    120 const typename Traits::LocalBasisType& localBasis () const
    \n+
    121 {
    \n+
    122 return basis_;
    \n+
    123 }
    \n+
    \n+
    124
    \n+
    \n+\n+
    128 {
    \n+
    129 return coefficients_;
    \n+
    130 }
    \n+
    \n+
    131
    \n+
    \n+\n+
    135 {
    \n+
    136 return interpolation_;
    \n+
    137 }
    \n+
    \n+
    138
    \n+
    \n+
    140 unsigned int size () const
    \n+
    141 {
    \n+
    142 return basis_.size();
    \n+
    143 }
    \n+
    \n+
    144
    \n+
    \n+
    147 static constexpr GeometryType type ()
    \n+
    148 {
    \n+
    149 return GeometryTypes::triangle;
    \n+
    150 }
    \n+
    \n+
    151
    \n+
    152 private:
    \n+\n+
    154 RefinedP0LocalCoefficients<2> coefficients_;
    \n+\n+
    156 };
    \n+
    \n+
    157
    \n+
    162 template<class D, class R>
    \n+
    \n+\n+
    164 {
    \n+
    165 public:
    \n+\n+\n+\n+\n+
    172
    \n+\n+
    177
    \n+
    \n+
    180 const typename Traits::LocalBasisType& localBasis () const
    \n+
    181 {
    \n+
    182 return basis_;
    \n+
    183 }
    \n+
    \n+
    184
    \n+
    \n+\n+
    188 {
    \n+
    189 return coefficients_;
    \n+
    190 }
    \n+
    \n+
    191
    \n+
    \n+\n+
    195 {
    \n+
    196 return interpolation_;
    \n+
    197 }
    \n+
    \n+
    198
    \n+
    \n+
    200 unsigned int size () const
    \n+
    201 {
    \n+
    202 return basis_.size();
    \n+
    203 }
    \n+
    \n+
    204
    \n+
    \n+
    207 static constexpr GeometryType type ()
    \n+
    208 {
    \n+
    209 return GeometryTypes::tetrahedron;
    \n+
    210 }
    \n+
    \n+
    211
    \n+
    212 private:
    \n+\n+
    214 RefinedP0LocalCoefficients<3> coefficients_;
    \n+\n+
    216 };
    \n+
    \n+
    217
    \n+
    218
    \n+
    219}
    \n+
    220
    \n+
    221#endif
    \n+\n+\n+\n+\n+\n+
    Definition bdfmcube.hh:18
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Local finite element that is piecewise P0 on a once uniformly refined reference geometry.
    Definition refinedp0.hh:29
    \n+
    P0LocalFiniteElement< D, R, dim >::Traits Traits
    Definition refinedp0.hh:35
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:60
    \n+
    static constexpr GeometryType type()
    Definition refinedp0.hh:87
    \n+
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:55
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:74
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:67
    \n+
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 1 >, RefinedP0LocalCoefficients< 1 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > > > Traits
    Definition refinedp0.hh:51
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:80
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:140
    \n+
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:115
    \n+
    static constexpr GeometryType type()
    Definition refinedp0.hh:147
    \n+
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 2 >, RefinedP0LocalCoefficients< 2 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > > > Traits
    Definition refinedp0.hh:111
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:127
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:134
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:120
    \n+
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:175
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:180
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:194
    \n+
    static constexpr GeometryType type()
    Definition refinedp0.hh:207
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:200
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:187
    \n+
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 3 >, RefinedP0LocalCoefficients< 3 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > > > Traits
    Definition refinedp0.hh:171
    \n+
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:41
    \n+
    Layout map for RefinedP0 elements.
    Definition refinedp0localcoefficients.hh:26
    \n+
    Definition refinedp0localinterpolation.hh:17
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,53 +1,281 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-raviartthomas.hh\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+refinedp0.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RAVIARTTHOMASFINITEELEMENT_HH\n-6#define DUNE_RAVIARTTHOMASFINITEELEMENT_HH\n+5#ifndef DUNE_REFINED_P0_LOCALFINITEELEMENT_HH\n+6#define DUNE_REFINED_P0_LOCALFINITEELEMENT_HH\n 7\n-8// Raviart-Thomas implementations with run-time order\n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-11\n-12// Raviart-Thomas implementations with compile-time order\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh>\n-21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh>\n-22#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-23#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-24\n-25#endif // #ifndef DUNE_RAVIARTTHOMASFINITEELEMENT_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bc_\bu_\bb_\be_\b._\bh_\bh\n-Convenience header that includes all available Raviart-Thomas local finite\n-elements for cubes.\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-Raviart-Thomas local finite elements of arbitrary order for simplices of\n-arbitrary dimension.\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n+12\n+13#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+14#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+15#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+16\n+20namespace _\bD_\bu_\bn_\be\n+21{\n+22\n+27 template\n+_\b2_\b8 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+29 {\n+30 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt() {}\n+31\n+32 public:\n+33 // We steal the p0 traits since they exist for all dim.\n+34 // This allows to instantiate the type and access the Traits.\n+_\b3_\b5 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n+36 };\n+37\n+42 template\n+_\b4_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+44 {\n+45 public:\n+48 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+49 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b>,\n+50 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b1_\b>,\n+_\b5_\b1 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+52\n+_\b5_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+56 {}\n+57\n+_\b6_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+61 {\n+62 return basis_;\n+63 }\n+64\n+_\b6_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+68 {\n+69 return coefficients_;\n+70 }\n+71\n+_\b7_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+75 {\n+76 return interpolation_;\n+77 }\n+78\n+_\b8_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+81 {\n+82 return basis_.size();\n+83 }\n+84\n+_\b8_\b7 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+88 {\n+89 return GeometryTypes::line;\n+90 }\n+91\n+92 private:\n+93 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b> basis_;\n+94 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b1_\b> coefficients_;\n+95 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b> > interpolation_;\n+96 };\n+97\n+102 template\n+_\b1_\b0_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+104 {\n+105 public:\n+108 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+109 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b>,\n+110 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b2_\b>,\n+_\b1_\b1_\b1 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+112\n+_\b1_\b1_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+116 {}\n+117\n+_\b1_\b2_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+121 {\n+122 return basis_;\n+123 }\n+124\n+_\b1_\b2_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+128 {\n+129 return coefficients_;\n+130 }\n+131\n+_\b1_\b3_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+135 {\n+136 return interpolation_;\n+137 }\n+138\n+_\b1_\b4_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+141 {\n+142 return basis_.size();\n+143 }\n+144\n+_\b1_\b4_\b7 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+148 {\n+149 return GeometryTypes::triangle;\n+150 }\n+151\n+152 private:\n+153 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b> basis_;\n+154 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b2_\b> coefficients_;\n+155 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b> > interpolation_;\n+156 };\n+157\n+162 template\n+_\b1_\b6_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+164 {\n+165 public:\n+168 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+169 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b>,\n+170 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b3_\b>,\n+_\b1_\b7_\b1 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+172\n+_\b1_\b7_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+176 {}\n+177\n+_\b1_\b8_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+181 {\n+182 return basis_;\n+183 }\n+184\n+_\b1_\b8_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+188 {\n+189 return coefficients_;\n+190 }\n+191\n+_\b1_\b9_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+195 {\n+196 return interpolation_;\n+197 }\n+198\n+_\b2_\b0_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+201 {\n+202 return basis_.size();\n+203 }\n+204\n+_\b2_\b0_\b7 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+208 {\n+209 return GeometryTypes::tetrahedron;\n+210 }\n+211\n+212 private:\n+213 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b> basis_;\n+214 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b3_\b> coefficients_;\n+215 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b> > interpolation_;\n+216 };\n+217\n+218\n+219}\n+220\n+221#endif\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bp_\b0_\b._\bh_\bh\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Local finite element that is piecewise P0 on a once uniformly refined reference\n+geometry.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+P0LocalFiniteElement< D, R, dim >::Traits Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RefinedP0LocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 1 >,\n+RefinedP0LocalCoefficients< 1 >, RefinedP0LocalInterpolation<\n+RefinedP0LocalBasis< D, R, 1 > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:140\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RefinedP0LocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 2 >,\n+RefinedP0LocalCoefficients< 2 >, RefinedP0LocalInterpolation<\n+RefinedP0LocalBasis< D, R, 2 > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:120\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RefinedP0LocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:175\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:180\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:194\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:207\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:200\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 3 >,\n+RefinedP0LocalCoefficients< 3 >, RefinedP0LocalInterpolation<\n+RefinedP0LocalBasis< D, R, 3 > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Uniformly refined constant shape functions on a unit simplex in R^dim.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for RefinedP0 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:17\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchical.hh File Reference\n+dune-localfunctions: refinedsimplexlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,31 +65,54 @@\n \n \n \n \n \n \n \n
    \n-
    hierarchical.hh File Reference
    \n+ \n+
    refinedsimplexlocalbasis.hh File Reference
    \n
    \n
    \n \n-

    Convenience header that includes all available hierarchical LocalFiniteElements. \n+

    Contains a base class for LocalBasis classes based on uniform refinement. \n More...

    \n-
    #include <dune/localfunctions/hierarchical/hierarchicalp2.hh>
    \n-#include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble.hh>
    \n-#include <dune/localfunctions/hierarchical/hierarchicalprismp2.hh>
    \n+
    #include <dune/common/fvector.hh>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::RefinedSimplexLocalBasis< D, dim >
     
    class  Dune::RefinedSimplexLocalBasis< D, 1 >
     Base class for LocalBasis classes based on uniform refinement in 1D; provides numbering and local coordinates of subelements. More...
     
    class  Dune::RefinedSimplexLocalBasis< D, 2 >
     Base class for LocalBasis classes based on uniform refinement in 2D; provides numbering and local coordinates of subelements. More...
     
    class  Dune::RefinedSimplexLocalBasis< D, 3 >
     Base class for LocalBasis classes based on uniform refinement in 3D; provides numbering and local coordinates of subelements. More...
     
    \n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     
    \n

    Detailed Description

    \n-

    Convenience header that includes all available hierarchical LocalFiniteElements.

    \n+

    Contains a base class for LocalBasis classes based on uniform refinement.

    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,18 +1,38 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-hierarchical.hh File Reference\n-Convenience header that includes all available hierarchical\n-LocalFiniteElements. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b._\bh_\bh>\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+refinedsimplexlocalbasis.hh File Reference\n+Contains a base class for LocalBasis classes based on uniform refinement.\n+_\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b1_\b _\b>\n+\u00a0 Base class for LocalBasis classes based on uniform refinement in 1D;\n+ provides numbering and local coordinates of subelements. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b2_\b _\b>\n+\u00a0 Base class for LocalBasis classes based on uniform refinement in 2D;\n+ provides numbering and local coordinates of subelements. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b3_\b _\b>\n+\u00a0 Base class for LocalBasis classes based on uniform refinement in 3D;\n+ provides numbering and local coordinates of subelements. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n *\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Convenience header that includes all available hierarchical\n-LocalFiniteElements.\n+Contains a base class for LocalBasis classes based on uniform refinement.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchical.hh Source File\n+dune-localfunctions: refinedsimplexlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,31 +70,291 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    hierarchical.hh
    \n+
    refinedsimplexlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-\n-\n-\n-\n-\n-\n+
    5#ifndef DUNE_REFINED_SIMPLEX_LOCALBASIS_HH
    \n+
    6#define DUNE_REFINED_SIMPLEX_LOCALBASIS_HH
    \n+
    7
    \n+
    12#include <dune/common/fvector.hh>
    \n+
    13#include <dune/common/exceptions.hh>
    \n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18 template<class D, int dim>
    \n+
    \n+\n+
    20 {
    \n+
    21 protected:
    \n+
    \n+\n+
    23 {
    \n+
    24 DUNE_THROW(Dune::NotImplemented,"RefinedSimplexLocalBasis not implemented for dim > 3.");
    \n+
    25 }
    \n+
    \n+
    26 };
    \n+
    \n+
    27
    \n+
    36 template<class D>
    \n+
    \n+\n+
    38 {
    \n+
    39 protected:
    \n+
    40
    \n+\n+
    43
    \n+
    \n+
    54 static int getSubElement(const FieldVector<D,1>& global)
    \n+
    55 {
    \n+
    56 if (global[0] <= 0.5)
    \n+
    57 return 0;
    \n+
    58 else if (global[0] <= 1.0)
    \n+
    59 return 1;
    \n+
    60
    \n+
    61 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    \n+
    70 static void getSubElement(const FieldVector<D,1>& global,
    \n+
    71 int& subElement,
    \n+
    72 FieldVector<D,1>& local)
    \n+
    73 {
    \n+
    74 if (global[0] <= 0.5) {
    \n+
    75 subElement = 0;
    \n+
    76 local[0] = 2.0 * global[0];
    \n+
    77 return;
    \n+
    78 }
    \n+
    79
    \n+
    80 subElement = 1;
    \n+
    81 local[0] = 2.0 * global[0] - 1.0;
    \n+
    82 }
    \n+
    \n+
    83
    \n+
    84 };
    \n+
    \n+
    85
    \n+
    86
    \n+
    98 template<class D>
    \n+
    \n+\n+
    100 {
    \n+
    101 protected:
    \n+
    102
    \n+\n+
    105
    \n+
    \n+
    121 static int getSubElement(const FieldVector<D,2>& global)
    \n+
    122 {
    \n+
    123 if (global[0] + global[1] <= 0.5)
    \n+
    124 return 0;
    \n+
    125 else if (global[0] >= 0.5)
    \n+
    126 return 1;
    \n+
    127 else if (global[1] >= 0.5)
    \n+
    128 return 2;
    \n+
    129
    \n+
    130 return 3;
    \n+
    131 }
    \n+
    \n+
    132
    \n+
    \n+
    139 static void getSubElement(const FieldVector<D,2>& global,
    \n+
    140 int& subElement,
    \n+
    141 FieldVector<D,2>& local)
    \n+
    142 {
    \n+
    143 if (global[0] + global[1] <= 0.5) {
    \n+
    144 subElement = 0;
    \n+
    145 local[0] = 2*global[0];
    \n+
    146 local[1] = 2*global[1];
    \n+
    147 return;
    \n+
    148 } else if (global[0] >= 0.5) {
    \n+
    149 subElement = 1;
    \n+
    150 local[0] = 2*global[0]-1;
    \n+
    151 local[1] = 2*global[1];
    \n+
    152 return;
    \n+
    153 } else if (global[1] >= 0.5) {
    \n+
    154 subElement = 2;
    \n+
    155 local[0] = 2*global[0];
    \n+
    156 local[1] = 2*global[1]-1;
    \n+
    157 return;
    \n+
    158 }
    \n+
    159
    \n+
    160 subElement = 3;
    \n+
    161 local[0] = -2 * global[0] + 1;
    \n+
    162 local[1] = -2 * global[1] + 1;
    \n+
    163
    \n+
    164 }
    \n+
    \n+
    165
    \n+
    166
    \n+
    167 };
    \n+
    \n+
    168
    \n+
    180 template<class D>
    \n+
    \n+\n+
    182 {
    \n+
    183 protected:
    \n+
    184
    \n+\n+
    187
    \n+
    \n+
    218 static int getSubElement(const FieldVector<D,3>& global)
    \n+
    219 {
    \n+
    220 if (global[0] + global[1] + global[2] <= 0.5)
    \n+
    221 return 0;
    \n+
    222 else if (global[0] >= 0.5)
    \n+
    223 return 1;
    \n+
    224 else if (global[1] >= 0.5)
    \n+
    225 return 2;
    \n+
    226 else if (global[2] >= 0.5)
    \n+
    227 return 3;
    \n+
    228 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5))
    \n+
    229 return 4;
    \n+
    230 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5))
    \n+
    231 return 5;
    \n+
    232 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5))
    \n+
    233 return 6;
    \n+
    234 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5))
    \n+
    235 return 7;
    \n+
    236
    \n+
    237 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n+
    238
    \n+
    239 }
    \n+
    \n+
    \n+
    246 static void getSubElement(const FieldVector<D,3>& global,
    \n+
    247 int& subElement,
    \n+
    248 FieldVector<D,3>& local)
    \n+
    249 {
    \n+
    250 if (global[0] + global[1] + global[2] <= 0.5) {
    \n+
    251 subElement = 0;
    \n+
    252 local = global;
    \n+
    253 local *= 2.0;
    \n+
    254 return;
    \n+
    255 } else if (global[0] >= 0.5) {
    \n+
    256 subElement = 1;
    \n+
    257 local = global;
    \n+
    258 local[0] -= 0.5;
    \n+
    259 local *= 2.0;
    \n+
    260 return;
    \n+
    261 } else if (global[1] >= 0.5) {
    \n+
    262 subElement = 2;
    \n+
    263 local = global;
    \n+
    264 local[1] -= 0.5;
    \n+
    265 local *= 2.0;
    \n+
    266 return;
    \n+
    267 } else if (global[2] >= 0.5) {
    \n+
    268 subElement = 3;
    \n+
    269 local = global;
    \n+
    270 local[2] -= 0.5;
    \n+
    271 local *= 2.0;
    \n+
    272 return;
    \n+
    273 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5)) {
    \n+
    274 subElement = 4;
    \n+
    275 local[0] = 2.0 * global[1];
    \n+
    276 local[1] = 2.0 * (0.5 - global[0] - global[1]);
    \n+
    277 local[2] = 2.0 * (-0.5 + global[0] + global[1] + global[2]);
    \n+
    278 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n+
    279 // A[0][1] = 2.0;
    \n+
    280 // A[1][0] = -2.0;
    \n+
    281 // A[1][1] = -2.0;
    \n+
    282 // A[2][0] = 2.0;
    \n+
    283 // A[2][1] = 2.0;
    \n+
    284 // A[2][2] = 2.0;
    \n+
    285 // A.mv(global,local);
    \n+
    286 // local[1] += 1.0;
    \n+
    287 // local[2] -= 1.0;
    \n+
    288 return;
    \n+
    289 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5)) {
    \n+
    290 subElement = 5;
    \n+
    291 local[0] = 2.0 * (0.5 - global[0]);
    \n+
    292 local[1] = 2.0 * (0.5 - global[1] - global[2]);
    \n+
    293 local[2] = 2.0 * global[2];
    \n+
    294 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n+
    295 // A[0][0] = -2.0;
    \n+
    296 // A[1][1] = -2.0;
    \n+
    297 // A[1][2] = -2.0;
    \n+
    298 // A[2][2] = 2.0;
    \n+
    299 // A.mv(global,local);
    \n+
    300 // local[0] += 1.0;
    \n+
    301 // local[1] += 1.0;
    \n+
    302 return;
    \n+
    303 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5)) {
    \n+
    304 subElement = 6;
    \n+
    305 local[0] = 2.0 * (0.5 - global[0] - global[1]);
    \n+
    306 local[1] = 2.0 * global[0];
    \n+
    307 local[2] = 2.0 * (-0.5 + global[1] + global[2]);
    \n+
    308 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n+
    309 // A[0][0] = -2.0;
    \n+
    310 // A[0][1] = -2.0;
    \n+
    311 // A[1][0] = 2.0;
    \n+
    312 // A[2][1] = 2.0;
    \n+
    313 // A[2][2] = 2.0;
    \n+
    314 // A.mv(global,local);
    \n+
    315 // local[0] += 1.0;
    \n+
    316 // local[2] -= 1.0;
    \n+
    317 return;
    \n+
    318 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5)) {
    \n+
    319 subElement = 7;
    \n+
    320 local[0] = 2.0 * (-0.5 + global[1] + global[2]);
    \n+
    321 local[1] = 2.0 * (0.5 - global[1]);
    \n+
    322 local[2] = 2.0 * (-0.5 + global[0] + global[1]);
    \n+
    323 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n+
    324 // A[0][1] = 2.0;
    \n+
    325 // A[0][2] = 2.0;
    \n+
    326 // A[1][1] = -2.0;
    \n+
    327 // A[2][0] = 2.0;
    \n+
    328 // A[2][1] = 2.0;
    \n+
    329 // A.mv(global,local);
    \n+
    330 // local[0] -= 1.0;
    \n+
    331 // local[1] += 1.0;
    \n+
    332 // local[2] -= 1.0;
    \n+
    333 return;
    \n+
    334 }
    \n+
    335
    \n+
    336 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n+
    337
    \n+
    338 }
    \n+
    \n+
    339
    \n+
    340 };
    \n+
    \n+
    341
    \n+
    342
    \n+
    343}
    \n+
    344
    \n+
    345#endif
    \n+
    Definition bdfmcube.hh:18
    \n+
    Definition refinedsimplexlocalbasis.hh:20
    \n+
    RefinedSimplexLocalBasis()
    Definition refinedsimplexlocalbasis.hh:22
    \n+
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:42
    \n+
    static void getSubElement(const FieldVector< D, 1 > &global, int &subElement, FieldVector< D, 1 > &local)
    Get local coordinates in the subelement.
    Definition refinedsimplexlocalbasis.hh:70
    \n+
    static int getSubElement(const FieldVector< D, 1 > &global)
    Get the number of the subelement containing a given point.
    Definition refinedsimplexlocalbasis.hh:54
    \n+
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:104
    \n+
    static int getSubElement(const FieldVector< D, 2 > &global)
    Get the number of the subtriangle containing a given point.
    Definition refinedsimplexlocalbasis.hh:121
    \n+
    static void getSubElement(const FieldVector< D, 2 > &global, int &subElement, FieldVector< D, 2 > &local)
    Get local coordinates in the subtriangle.
    Definition refinedsimplexlocalbasis.hh:139
    \n+
    static void getSubElement(const FieldVector< D, 3 > &global, int &subElement, FieldVector< D, 3 > &local)
    Get local coordinates in the subsimplex.
    Definition refinedsimplexlocalbasis.hh:246
    \n+
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:186
    \n+
    static int getSubElement(const FieldVector< D, 3 > &global)
    Get the number of the subsimplex containing a given point in the reference element.
    Definition refinedsimplexlocalbasis.hh:218
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,304 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-hierarchical.hh\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+refinedsimplexlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b._\bh_\bh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\b/_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b._\bh_\bh>\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\br_\bi_\bs_\bm_\bp_\b2_\b._\bh_\bh\n-_\bh_\bi_\be_\br_\ba_\br_\bc_\bh_\bi_\bc_\ba_\bl_\bp_\b2_\b._\bh_\bh\n+5#ifndef DUNE_REFINED_SIMPLEX_LOCALBASIS_HH\n+6#define DUNE_REFINED_SIMPLEX_LOCALBASIS_HH\n+7\n+12#include \n+13#include \n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18 template\n+_\b1_\b9 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+20 {\n+21 protected:\n+_\b2_\b2 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n+23 {\n+24 DUNE_THROW(Dune::NotImplemented,\"RefinedSimplexLocalBasis not implemented\n+for dim > 3.\");\n+25 }\n+26 };\n+27\n+36 template\n+_\b3_\b7 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+38 {\n+39 protected:\n+40\n+_\b4_\b2 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() {}\n+43\n+_\b5_\b4 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n+55 {\n+56 if (global[0] <= 0.5)\n+57 return 0;\n+58 else if (global[0] <= 1.0)\n+59 return 1;\n+60\n+61 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n+62 }\n+63\n+_\b7_\b0 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n+71 int& subElement,\n+72 FieldVector& local)\n+73 {\n+74 if (global[0] <= 0.5) {\n+75 subElement = 0;\n+76 local[0] = 2.0 * global[0];\n+77 return;\n+78 }\n+79\n+80 subElement = 1;\n+81 local[0] = 2.0 * global[0] - 1.0;\n+82 }\n+83\n+84 };\n+85\n+86\n+98 template\n+_\b9_\b9 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+100 {\n+101 protected:\n+102\n+_\b1_\b0_\b4 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() {}\n+105\n+_\b1_\b2_\b1 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n+122 {\n+123 if (global[0] + global[1] <= 0.5)\n+124 return 0;\n+125 else if (global[0] >= 0.5)\n+126 return 1;\n+127 else if (global[1] >= 0.5)\n+128 return 2;\n+129\n+130 return 3;\n+131 }\n+132\n+_\b1_\b3_\b9 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n+140 int& subElement,\n+141 FieldVector& local)\n+142 {\n+143 if (global[0] + global[1] <= 0.5) {\n+144 subElement = 0;\n+145 local[0] = 2*global[0];\n+146 local[1] = 2*global[1];\n+147 return;\n+148 } else if (global[0] >= 0.5) {\n+149 subElement = 1;\n+150 local[0] = 2*global[0]-1;\n+151 local[1] = 2*global[1];\n+152 return;\n+153 } else if (global[1] >= 0.5) {\n+154 subElement = 2;\n+155 local[0] = 2*global[0];\n+156 local[1] = 2*global[1]-1;\n+157 return;\n+158 }\n+159\n+160 subElement = 3;\n+161 local[0] = -2 * global[0] + 1;\n+162 local[1] = -2 * global[1] + 1;\n+163\n+164 }\n+165\n+166\n+167 };\n+168\n+180 template\n+_\b1_\b8_\b1 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+182 {\n+183 protected:\n+184\n+_\b1_\b8_\b6 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() {}\n+187\n+_\b2_\b1_\b8 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n+219 {\n+220 if (global[0] + global[1] + global[2] <= 0.5)\n+221 return 0;\n+222 else if (global[0] >= 0.5)\n+223 return 1;\n+224 else if (global[1] >= 0.5)\n+225 return 2;\n+226 else if (global[2] >= 0.5)\n+227 return 3;\n+228 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5))\n+229 return 4;\n+230 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5))\n+231 return 5;\n+232 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5))\n+233 return 6;\n+234 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5))\n+235 return 7;\n+236\n+237 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n+238\n+239 }\n+_\b2_\b4_\b6 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n+247 int& subElement,\n+248 FieldVector& local)\n+249 {\n+250 if (global[0] + global[1] + global[2] <= 0.5) {\n+251 subElement = 0;\n+252 local = global;\n+253 local *= 2.0;\n+254 return;\n+255 } else if (global[0] >= 0.5) {\n+256 subElement = 1;\n+257 local = global;\n+258 local[0] -= 0.5;\n+259 local *= 2.0;\n+260 return;\n+261 } else if (global[1] >= 0.5) {\n+262 subElement = 2;\n+263 local = global;\n+264 local[1] -= 0.5;\n+265 local *= 2.0;\n+266 return;\n+267 } else if (global[2] >= 0.5) {\n+268 subElement = 3;\n+269 local = global;\n+270 local[2] -= 0.5;\n+271 local *= 2.0;\n+272 return;\n+273 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <=\n+0.5)) {\n+274 subElement = 4;\n+275 local[0] = 2.0 * global[1];\n+276 local[1] = 2.0 * (0.5 - global[0] - global[1]);\n+277 local[2] = 2.0 * (-0.5 + global[0] + global[1] + global[2]);\n+278 // Dune::FieldMatrix A(0.0);\n+279 // A[0][1] = 2.0;\n+280 // A[1][0] = -2.0;\n+281 // A[1][1] = -2.0;\n+282 // A[2][0] = 2.0;\n+283 // A[2][1] = 2.0;\n+284 // A[2][2] = 2.0;\n+285 // A.mv(global,local);\n+286 // local[1] += 1.0;\n+287 // local[2] -= 1.0;\n+288 return;\n+289 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <=\n+0.5)) {\n+290 subElement = 5;\n+291 local[0] = 2.0 * (0.5 - global[0]);\n+292 local[1] = 2.0 * (0.5 - global[1] - global[2]);\n+293 local[2] = 2.0 * global[2];\n+294 // Dune::FieldMatrix A(0.0);\n+295 // A[0][0] = -2.0;\n+296 // A[1][1] = -2.0;\n+297 // A[1][2] = -2.0;\n+298 // A[2][2] = 2.0;\n+299 // A.mv(global,local);\n+300 // local[0] += 1.0;\n+301 // local[1] += 1.0;\n+302 return;\n+303 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >=\n+0.5)) {\n+304 subElement = 6;\n+305 local[0] = 2.0 * (0.5 - global[0] - global[1]);\n+306 local[1] = 2.0 * global[0];\n+307 local[2] = 2.0 * (-0.5 + global[1] + global[2]);\n+308 // Dune::FieldMatrix A(0.0);\n+309 // A[0][0] = -2.0;\n+310 // A[0][1] = -2.0;\n+311 // A[1][0] = 2.0;\n+312 // A[2][1] = 2.0;\n+313 // A[2][2] = 2.0;\n+314 // A.mv(global,local);\n+315 // local[0] += 1.0;\n+316 // local[2] -= 1.0;\n+317 return;\n+318 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >=\n+0.5)) {\n+319 subElement = 7;\n+320 local[0] = 2.0 * (-0.5 + global[1] + global[2]);\n+321 local[1] = 2.0 * (0.5 - global[1]);\n+322 local[2] = 2.0 * (-0.5 + global[0] + global[1]);\n+323 // Dune::FieldMatrix A(0.0);\n+324 // A[0][1] = 2.0;\n+325 // A[0][2] = 2.0;\n+326 // A[1][1] = -2.0;\n+327 // A[2][0] = 2.0;\n+328 // A[2][1] = 2.0;\n+329 // A.mv(global,local);\n+330 // local[0] -= 1.0;\n+331 // local[1] += 1.0;\n+332 // local[2] -= 1.0;\n+333 return;\n+334 }\n+335\n+336 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n+337\n+338 }\n+339\n+340 };\n+341\n+342\n+343}\n+344\n+345#endif\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RefinedSimplexLocalBasis()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b1_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RefinedSimplexLocalBasis()\n+Protected default constructor so this class can only be instantiated as a base\n+class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b1_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n+static void getSubElement(const FieldVector< D, 1 > &global, int &subElement,\n+FieldVector< D, 1 > &local)\n+Get local coordinates in the subelement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b1_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n+static int getSubElement(const FieldVector< D, 1 > &global)\n+Get the number of the subelement containing a given point.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b2_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RefinedSimplexLocalBasis()\n+Protected default constructor so this class can only be instantiated as a base\n+class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b2_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n+static int getSubElement(const FieldVector< D, 2 > &global)\n+Get the number of the subtriangle containing a given point.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b2_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n+static void getSubElement(const FieldVector< D, 2 > &global, int &subElement,\n+FieldVector< D, 2 > &local)\n+Get local coordinates in the subtriangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b3_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n+static void getSubElement(const FieldVector< D, 3 > &global, int &subElement,\n+FieldVector< D, 3 > &local)\n+Get local coordinates in the subsimplex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:246\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b3_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RefinedSimplexLocalBasis()\n+Protected default constructor so this class can only be instantiated as a base\n+class.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b3_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n+static int getSubElement(const FieldVector< D, 3 > &global)\n+Get the number of the subsimplex containing a given point in the reference\n+element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:218\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: coeffmatrix.hh File Reference\n+dune-localfunctions: refinedp1localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,54 @@\n \n \n \n \n \n \n \n
    \n \n-
    coeffmatrix.hh File Reference
    \n+
    refinedp1localbasis.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <iostream>
    \n-#include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n-#include <dune/localfunctions/utility/tensor.hh>
    \n+\n+

    Linear Lagrange shape functions on a uniformly refined reference element. \n+More...

    \n+
    #include <numeric>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n \n-\n+\n+\n \n-\n+\n+\n \n

    \n Classes

    struct  Dune::Mult< Field, Field2 >
    class  Dune::RefinedP1LocalBasis< D, R, dim >
     
    class  Dune::RefinedP1LocalBasis< D, R, 1 >
     Uniformly refined linear Lagrange shape functions in 1D. More...
     
    struct  Dune::Mult< Field, FieldVector< Field2, dimRange > >
    class  Dune::RefinedP1LocalBasis< D, R, 2 >
     Uniformly refined linear Lagrange shape functions on the triangle. More...
     
    class  Dune::SparseCoeffMatrix< F, bSize >
    class  Dune::RefinedP1LocalBasis< D, R, 3 >
     Uniformly refined linear Lagrange shape functions on the 3D-simplex (tetrahedron). More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

    Linear Lagrange shape functions on a uniformly refined reference element.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,37 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-coeffmatrix.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n+refinedp1localbasis.hh File Reference\n+Linear Lagrange shape functions on a uniformly refined reference element.\n+_\bM_\bo_\br_\be_\b._\b._\b.\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\b2_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\bi_\be_\bl_\bd_\b2_\b,_\b _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b _\b>_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>\n+\u00a0 Uniformly refined linear Lagrange shape functions in 1D. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b,_\b _\bb_\bS_\bi_\bz_\be_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>\n+\u00a0 Uniformly refined linear Lagrange shape functions on the triangle.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>\n+\u00a0 Uniformly refined linear Lagrange shape functions on the 3D-simplex\n+ (tetrahedron). _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Linear Lagrange shape functions on a uniformly refined reference element.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: coeffmatrix.hh Source File\n+dune-localfunctions: refinedp1localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,338 +70,831 @@\n \n \n \n \n \n \n \n
    \n-
    coeffmatrix.hh
    \n+
    refinedp1localbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_COEFFMATRIX_HH
    \n-
    6#define DUNE_COEFFMATRIX_HH
    \n-
    7#include <cassert>
    \n-
    8#include <iostream>
    \n-
    9#include <vector>
    \n-
    10#include <dune/common/fvector.hh>
    \n-\n-\n+
    5#ifndef DUNE_REFINED_P1_LOCALBASIS_HH
    \n+
    6#define DUNE_REFINED_P1_LOCALBASIS_HH
    \n+
    7
    \n+
    12#include <numeric>
    \n
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16 /*************************************************
    \n-
    17 * Default class for storing a coefficient matrix
    \n-
    18 * for the PolynomialBasis. Basically a simple
    \n-
    19 * CRS structure is used. The additional complexity
    \n-
    20 * is due to the storage and efficient evaluation
    \n-
    21 * of higher order derivatives. See the remarks
    \n-
    22 * in tensor.hh which also hold true for this file.
    \n-
    23 *************************************************/
    \n-
    24 template <class Field, class Field2>
    \n-
    \n-
    25 struct Mult
    \n-
    26 {
    \n-
    27 typedef Field2 BasisEntry;
    \n-
    \n-
    28 static void add(const Field &vec1, const BasisEntry &vec2,
    \n-
    29 BasisEntry &res)
    \n-
    30 {
    \n-
    31 res += vec1*vec2;
    \n-
    32 }
    \n-
    \n-
    33 };
    \n-
    \n-
    34
    \n-
    35 template <class Field,class Field2, int dimRange>
    \n-
    \n-
    36 struct Mult< Field,FieldVector<Field2,dimRange> >
    \n-
    37 {
    \n-
    38 typedef FieldVector<Field2,dimRange> BasisEntry;
    \n-
    \n-
    39 static void add(const Field &vec1, const BasisEntry &vec2,
    \n-
    40 BasisEntry &res)
    \n-
    41 {
    \n-
    42 res.axpy(vec1,vec2);
    \n-
    43 }
    \n-
    \n-
    44 };
    \n-
    \n-
    45
    \n-
    46 template< class F , unsigned int bSize >
    \n-
    \n-\n-
    48 {
    \n-
    49 public:
    \n-
    50 typedef F Field;
    \n-
    51 static const unsigned int blockSize = bSize;
    \n-\n-
    53
    \n-
    \n-\n-
    55 : coeff_(0),
    \n-
    56 rows_(0),
    \n-
    57 skip_(0),
    \n-
    58 numRows_(0),
    \n-
    59 numCols_(0)
    \n-
    60 {}
    \n-
    \n+
    14#include <dune/common/fmatrix.hh>
    \n+
    15
    \n+\n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \n+
    20 template<class D, class R, int dim>
    \n+
    \n+\n+
    22 : public RefinedSimplexLocalBasis<D,dim>
    \n+
    23 {
    \n+
    24 public:
    \n+
    \n+\n+
    26 {
    \n+
    27 DUNE_THROW(Dune::NotImplemented,"RefinedP1LocalBasis not implemented for dim > 3.");
    \n+
    28 }
    \n+
    \n+
    29 };
    \n+
    \n+
    30
    \n+
    53 template<class D, class R>
    \n+
    \n+\n+
    55 : public RefinedSimplexLocalBasis<D,1>
    \n+
    56 {
    \n+
    57 public:
    \n+
    59 typedef LocalBasisTraits<D,1,Dune::FieldVector<D,1>,R,1,Dune::FieldVector<R,1>,
    \n+
    60 Dune::FieldMatrix<R,1,1> > Traits;
    \n
    61
    \n-
    \n-\n-
    63 {
    \n-
    64 delete [] coeff_;
    \n-
    65 delete [] rows_;
    \n-
    66 delete [] skip_;
    \n-
    67 }
    \n+
    \n+
    63 static constexpr unsigned int size ()
    \n+
    64 {
    \n+
    65 return 3;
    \n+
    66 }
    \n
    \n-
    68
    \n+
    67
    \n
    \n-
    69 unsigned int size () const
    \n-
    70 {
    \n-
    71 return numRows_/blockSize;
    \n-
    72 }
    \n-
    \n-
    \n-
    73 unsigned int baseSize () const
    \n-
    74 {
    \n-
    75 return numCols_;
    \n-
    76 }
    \n-
    \n+
    69 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    70 std::vector<typename Traits::RangeType>& out) const
    \n+
    71 {
    \n+
    72 out.resize(3);
    \n+
    73
    \n+
    74 int subElement;
    \n+
    75 typename Traits::DomainType local;
    \n+
    76 this->getSubElement(in, subElement, local);
    \n
    77
    \n-
    78 template< class BasisIterator, class FF>
    \n-
    \n-
    79 void mult ( const BasisIterator &x,
    \n-
    80 unsigned int numLsg,
    \n-
    81 FF *y ) const
    \n-
    82 {
    \n-
    83 typedef typename BasisIterator::Derivatives XDerivatives;
    \n-
    84 assert( numLsg*blockSize <= (size_t)numRows_ );
    \n-
    85 unsigned int row = 0;
    \n-
    86 Field *pos = rows_[ 0 ];
    \n-
    87 unsigned int *skipIt = skip_;
    \n-
    88 XDerivatives val;
    \n-
    89 for( size_t i = 0; i < numLsg; ++i)
    \n-
    90 {
    \n-
    91 for( unsigned int r = 0; r < blockSize; ++r, ++row )
    \n-
    92 {
    \n-
    93 val = 0;
    \n-
    94 BasisIterator itx = x;
    \n-
    95 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )
    \n-
    96 {
    \n-
    97 itx += *skipIt;
    \n-
    98 val.axpy(*pos,*itx);
    \n-
    99 }
    \n-
    100 DerivativeAssign<XDerivatives,FF>::apply(r,val,*(y+i*XDerivatives::size*blockSize));
    \n-
    101 }
    \n-
    102 }
    \n-
    103 }
    \n-
    \n-
    104 template< class BasisIterator, class Vector>
    \n-
    \n-
    105 void mult ( const BasisIterator &x,
    \n-
    106 Vector &y ) const
    \n-
    107 {
    \n-
    108 typedef typename Vector::value_type YDerivatives;
    \n-
    109 typedef typename BasisIterator::Derivatives XDerivatives;
    \n-
    110 size_t numLsg = y.size();
    \n-
    111 assert( numLsg*blockSize <= (size_t)numRows_ );
    \n-
    112 unsigned int row = 0;
    \n-
    113 Field *pos = rows_[ 0 ];
    \n-
    114 unsigned int *skipIt = skip_;
    \n-
    115 XDerivatives val;
    \n-
    116 for( size_t i = 0; i < numLsg; ++i)
    \n-
    117 {
    \n-
    118 for( unsigned int r = 0; r < blockSize; ++r, ++row )
    \n-
    119 {
    \n-
    120 val = 0;
    \n-
    121 BasisIterator itx = x;
    \n-
    122 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )
    \n-
    123 {
    \n-
    124 itx += *skipIt;
    \n-
    125 val.axpy(*pos,*itx);
    \n-
    126 }
    \n-\n-
    128 }
    \n-
    129 }
    \n-
    130 }
    \n-
    \n-
    131 template <unsigned int deriv, class BasisIterator, class Vector>
    \n-
    \n-
    132 void mult ( const BasisIterator &x,
    \n-
    133 Vector &y ) const
    \n-
    134 {
    \n-
    135 typedef typename Vector::value_type YDerivatives;
    \n-
    136 typedef typename BasisIterator::Derivatives XDerivatives;
    \n-
    137 typedef FieldVector<typename XDerivatives::Field,YDerivatives::dimension> XLFETensor;
    \n-
    138 size_t numLsg = y.size();
    \n-
    139 assert( numLsg*blockSize <= (size_t)numRows_ );
    \n-
    140 unsigned int row = 0;
    \n-
    141 Field *pos = rows_[ 0 ];
    \n-
    142 unsigned int *skipIt = skip_;
    \n-
    143 for( size_t i = 0; i < numLsg; ++i)
    \n-
    144 {
    \n-
    145 XLFETensor val(typename XDerivatives::Field(0));
    \n-
    146 for( unsigned int r = 0; r < blockSize; ++r, ++row )
    \n-
    147 {
    \n-
    148 BasisIterator itx = x;
    \n-
    149 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )
    \n-
    150 {
    \n-
    151 itx += *skipIt;
    \n-\n-
    153 }
    \n-
    154 }
    \n-
    155 field_cast(val,y[i]);
    \n-
    156 }
    \n-
    157 }
    \n-
    \n-
    158
    \n-
    159 template< class RowMatrix >
    \n-
    \n-
    160 void fill ( const RowMatrix &mat, bool verbose=false )
    \n-
    161 {
    \n-
    162 numRows_ = mat.rows();
    \n-
    163 numCols_ = mat.cols();
    \n-
    164 unsigned int size = numRows_*numCols_;
    \n-
    165
    \n-
    166 delete [] coeff_;
    \n-
    167 delete [] rows_;
    \n-
    168 delete [] skip_;
    \n+
    78 switch (subElement) {
    \n+
    79 case 0 :
    \n+
    80
    \n+
    81 out[0] = 1 - local[0];
    \n+
    82 out[1] = local[0];
    \n+
    83 out[2] = 0;
    \n+
    84 break;
    \n+
    85
    \n+
    86 case 1 :
    \n+
    87
    \n+
    88 out[0] = 0;
    \n+
    89 out[1] = 1 - local[0];
    \n+
    90 out[2] = local[0];
    \n+
    91 break;
    \n+
    92
    \n+
    93 }
    \n+
    94
    \n+
    95 }
    \n+
    \n+
    96
    \n+
    98 inline void
    \n+
    \n+
    99 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    100 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    101 {
    \n+
    102 out.resize(3);
    \n+
    103
    \n+
    104 int subElement;
    \n+
    105 typename Traits::DomainType local;
    \n+
    106 this->getSubElement(in, subElement, local);
    \n+
    107
    \n+
    108 switch (subElement) {
    \n+
    109 case 0 :
    \n+
    110
    \n+
    111 out[0][0][0] = -2;
    \n+
    112 out[1][0][0] = 2;
    \n+
    113 out[2][0][0] = 0;
    \n+
    114 break;
    \n+
    115
    \n+
    116 case 1 :
    \n+
    117
    \n+
    118 out[0][0][0] = 0;
    \n+
    119 out[1][0][0] = -2;
    \n+
    120 out[2][0][0] = 2;
    \n+
    121 break;
    \n+
    122
    \n+
    123 }
    \n+
    124 }
    \n+
    \n+
    125
    \n+
    \n+
    127 void partial (const std::array<unsigned int, 1>& order,
    \n+
    128 const typename Traits::DomainType& in, // position
    \n+
    129 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    130 {
    \n+
    131 auto totalOrder = order[0];
    \n+
    132 if (totalOrder == 0) {
    \n+
    133 evaluateFunction(in, out);
    \n+
    134 } else if (totalOrder == 1)
    \n+
    135 {
    \n+
    136 out.resize(3);
    \n+
    137
    \n+
    138 int subElement;
    \n+
    139 typename Traits::DomainType local;
    \n+
    140 this->getSubElement(in, subElement, local);
    \n+
    141
    \n+
    142 switch (subElement) {
    \n+
    143 case 0:
    \n+
    144 out[0] = -2;
    \n+
    145 out[1] = 2;
    \n+
    146 out[2] = 0;
    \n+
    147 break;
    \n+
    148 case 1:
    \n+
    149 out[0] = 0;
    \n+
    150 out[1] = -2;
    \n+
    151 out[2] = 2;
    \n+
    152 break;
    \n+
    153 }
    \n+
    154 } else {
    \n+
    155 out.resize(3);
    \n+
    156 out[0] = out[1] = out[2] = 0;
    \n+
    157 }
    \n+
    158 }
    \n+
    \n+
    159
    \n+
    \n+
    163 static constexpr unsigned int order ()
    \n+
    164 {
    \n+
    165 return 1;
    \n+
    166 }
    \n+
    \n+
    167
    \n+
    168 };
    \n+
    \n
    169
    \n-
    170 Field* coeff = new Field[ size ];
    \n-
    171 // we always initialize the next skip entry to zero,
    \n-
    172 // including the one following the end, so allocate
    \n-
    173 // size+1 entries so we will stay within the bounds.
    \n-
    174 unsigned int *skip = new unsigned int[ size+1 ];
    \n-
    175 rows_ = new Field*[ numRows_+1 ];
    \n-
    176 std::vector<Field> row( numCols_ );
    \n-
    177
    \n-
    178 rows_[ 0 ] = coeff;
    \n-
    179 Field *cit = coeff;
    \n-
    180 unsigned int *sit = skip;
    \n-
    181 for( unsigned int r = 0; r < numRows_; ++r )
    \n-
    182 {
    \n-
    183 *sit = 0;
    \n-
    184 mat.row( r, row );
    \n-
    185 for( unsigned int c = 0; c < numCols_; ++c )
    \n-
    186 {
    \n-
    187 const Field &val = row[c];
    \n-
    188 if (val < Zero<Field>() || Zero<Field>() < val)
    \n-
    189 {
    \n-
    190 *cit = val;
    \n-
    191 ++sit;
    \n-
    192 ++cit;
    \n-
    193 *sit = 1;
    \n-
    194 } else
    \n-
    195 {
    \n-
    196 ++(*sit);
    \n-
    197 }
    \n-
    198 }
    \n-
    199 rows_[ r+1 ] = cit;
    \n-
    200 }
    \n-
    201 assert( size_t(rows_[numRows_]-rows_[0]) <= size_t(size) );
    \n-
    202 size = rows_[numRows_]-rows_[0];
    \n-
    203 coeff_ = new Field[ size ];
    \n-
    204 skip_ = new unsigned int[ size ];
    \n-
    205 for (unsigned int i=0; i<size; ++i)
    \n-
    206 {
    \n-
    207 coeff_[i] = coeff[i];
    \n-
    208 skip_[i] = skip[i];
    \n-
    209 }
    \n-
    210 for (unsigned int i=0; i<=numRows_; ++i)
    \n-
    211 rows_[ i ] = coeff_ + (rows_[ i ] - coeff);
    \n-
    212
    \n-
    213 delete [] coeff;
    \n-
    214 delete [] skip;
    \n+
    195 template<class D, class R>
    \n+
    \n+\n+
    197 : public RefinedSimplexLocalBasis<D,2>
    \n+
    198 {
    \n+
    199 public:
    \n+
    201 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,1,Dune::FieldVector<R,1>,
    \n+
    202 Dune::FieldMatrix<R,1,2> > Traits;
    \n+
    203
    \n+
    \n+
    205 static constexpr unsigned int size ()
    \n+
    206 {
    \n+
    207 return 6;
    \n+
    208 }
    \n+
    \n+
    209
    \n+
    \n+
    211 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    212 std::vector<typename Traits::RangeType>& out) const
    \n+
    213 {
    \n+
    214 out.resize(6);
    \n
    215
    \n-
    216 if (verbose)
    \n-
    217 std::cout << "Entries: " << (rows_[numRows_]-rows_[0])
    \n-
    218 << " full: " << numCols_*numRows_
    \n-
    219 << std::endl;
    \n-
    220 }
    \n-
    \n-
    221 // b += a*C[k]
    \n-
    222 template <class Vector>
    \n-
    \n-
    223 void addRow( unsigned int k, const Field &a, Vector &b) const
    \n-
    224 {
    \n-
    225 assert(k<numRows_);
    \n-
    226 unsigned int j=0;
    \n-
    227 unsigned int *skipIt = skip_ + (rows_[ k ]-rows_[ 0 ]);
    \n-
    228 for( Field *pos = rows_[ k ];
    \n-
    229 pos != rows_[ k+1 ];
    \n-
    230 ++pos, ++skipIt )
    \n-
    231 {
    \n-
    232 j += *skipIt;
    \n-
    233 assert( j < b.size() );
    \n-
    234 b[j] += field_cast<typename Vector::value_type>( (*pos)*a ); // field_cast
    \n-
    235 }
    \n-
    236 }
    \n-
    \n-
    237 private:
    \n-
    238 SparseCoeffMatrix ( const This &other )
    \n-
    239 : numRows_( other.numRows_ ),
    \n-
    240 numCols_( other.numCols_ )
    \n-
    241 {
    \n-
    242 const unsigned int size = other.rows_[numRows_]-other.rows_[0];
    \n-
    243 coeff_ = new Field[ size ];
    \n-
    244 rows_ = new Field*[ numRows_+1 ];
    \n-
    245 skip_ = new unsigned int[ size ];
    \n-
    246 for (unsigned int i=0; i<size; ++i)
    \n-
    247 {
    \n-
    248 coeff_[i] = other.coeff_[i];
    \n-
    249 skip_[i] = other.skip_[i];
    \n-
    250 }
    \n-
    251 for (unsigned int i=0; i<=numRows_; ++i)
    \n-
    252 rows_[ i ] = coeff_ + (other.rows_[ i ] - other.coeff_);
    \n-
    253 }
    \n-
    254
    \n-
    255 This &operator= (const This&);
    \n-
    256 Field *coeff_;
    \n-
    257 Field **rows_;
    \n-
    258 unsigned int *skip_;
    \n-
    259 unsigned int numRows_,numCols_;
    \n-
    260 };
    \n+
    216 int subElement;
    \n+
    217 typename Traits::DomainType local;
    \n+
    218 this->getSubElement(in, subElement, local);
    \n+
    219
    \n+
    220 switch (subElement) {
    \n+
    221 case 0 :
    \n+
    222
    \n+
    223 out[0] = 1 - local[0] - local[1];
    \n+
    224 out[1] = local[0];
    \n+
    225 out[2] = 0;
    \n+
    226 out[3] = local[1];
    \n+
    227 out[4] = 0;
    \n+
    228 out[5] = 0;
    \n+
    229 break;
    \n+
    230
    \n+
    231 case 1 :
    \n+
    232
    \n+
    233 out[0] = 0;
    \n+
    234 out[1] = 1 - local[0] - local[1];
    \n+
    235 out[2] = local[0];
    \n+
    236 out[3] = 0;
    \n+
    237 out[4] = local[1];
    \n+
    238 out[5] = 0;
    \n+
    239 break;
    \n+
    240
    \n+
    241 case 2 :
    \n+
    242
    \n+
    243 out[0] = 0;
    \n+
    244 out[1] = 0;
    \n+
    245 out[2] = 0;
    \n+
    246 out[3] = 1 - local[0] - local[1];
    \n+
    247 out[4] = local[0];
    \n+
    248 out[5] = local[1];
    \n+
    249 break;
    \n+
    250 case 3 :
    \n+
    251
    \n+
    252 out[0] = 0;
    \n+
    253 out[1] = local[1];
    \n+
    254 out[2] = 0;
    \n+
    255 out[3] = local[0];
    \n+
    256 out[4] = 1 - local[0] - local[1];
    \n+
    257 out[5] = 0;
    \n+
    258 }
    \n+
    259
    \n+
    260 }
    \n
    \n
    261
    \n-
    262}
    \n-
    263
    \n-
    264#endif // DUNE_COEFFMATRIX_HH
    \n-\n-\n+
    263 inline void
    \n+
    \n+
    264 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    265 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    266 {
    \n+
    267 out.resize(6);
    \n+
    268
    \n+
    269 int subElement;
    \n+
    270 typename Traits::DomainType local;
    \n+
    271 this->getSubElement(in, subElement, local);
    \n+
    272
    \n+
    273 switch (subElement) {
    \n+
    274 case 0 :
    \n+
    275
    \n+
    276 out[0][0][0] = -2; out[0][0][1] = -2;
    \n+
    277 out[1][0][0] = 2; out[1][0][1] = 0;
    \n+
    278 out[2][0][0] = 0; out[2][0][1] = 0;
    \n+
    279 out[3][0][0] = 0; out[3][0][1] = 2;
    \n+
    280 out[4][0][0] = 0; out[4][0][1] = 0;
    \n+
    281 out[5][0][0] = 0; out[5][0][1] = 0;
    \n+
    282 break;
    \n+
    283
    \n+
    284 case 1 :
    \n+
    285
    \n+
    286 out[0][0][0] = 0; out[0][0][1] = 0;
    \n+
    287 out[1][0][0] = -2; out[1][0][1] = -2;
    \n+
    288 out[2][0][0] = 2; out[2][0][1] = 0;
    \n+
    289 out[3][0][0] = 0; out[3][0][1] = 0;
    \n+
    290 out[4][0][0] = 0; out[4][0][1] = 2;
    \n+
    291 out[5][0][0] = 0; out[5][0][1] = 0;
    \n+
    292 break;
    \n+
    293
    \n+
    294 case 2 :
    \n+
    295
    \n+
    296 out[0][0][0] = 0; out[0][0][1] = 0;
    \n+
    297 out[1][0][0] = 0; out[1][0][1] = 0;
    \n+
    298 out[2][0][0] = 0; out[2][0][1] = 0;
    \n+
    299 out[3][0][0] = -2; out[3][0][1] = -2;
    \n+
    300 out[4][0][0] = 2; out[4][0][1] = 0;
    \n+
    301 out[5][0][0] = 0; out[5][0][1] = 2;
    \n+
    302 break;
    \n+
    303 case 3 :
    \n+
    304
    \n+
    305 out[0][0][0] = 0; out[0][0][1] = 0;
    \n+
    306 out[1][0][0] = 0; out[1][0][1] = -2;
    \n+
    307 out[2][0][0] = 0; out[2][0][1] = 0;
    \n+
    308 out[3][0][0] = -2; out[3][0][1] = 0;
    \n+
    309 out[4][0][0] = 2; out[4][0][1] = 2;
    \n+
    310 out[5][0][0] = 0; out[5][0][1] = 0;
    \n+
    311 }
    \n+
    312 }
    \n+
    \n+
    313
    \n+
    \n+
    315 void partial (const std::array<unsigned int, 2>& order,
    \n+
    316 const typename Traits::DomainType& in, // position
    \n+
    317 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    318 {
    \n+
    319 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    320 if (totalOrder == 0) {
    \n+
    321 evaluateFunction(in, out);
    \n+
    322 } else if (totalOrder == 1) {
    \n+
    323 int subElement;
    \n+
    324 typename Traits::DomainType local;
    \n+
    325 this->getSubElement(in, subElement, local);
    \n+
    326
    \n+
    327 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    328 out.resize(size());
    \n+
    329
    \n+
    330 for (std::size_t i = 0; i < size(); ++i)
    \n+
    331 out[i] = 0;
    \n+
    332
    \n+
    333 switch (direction) {
    \n+
    334 case 0: // direction == 0
    \n+
    335
    \n+
    336 switch (subElement) {
    \n+
    337 case 0 :
    \n+
    338 out[0] = -2;
    \n+
    339 out[1] = 2;
    \n+
    340 break;
    \n+
    341 case 1 :
    \n+
    342 out[1] = -2;
    \n+
    343 out[2] = 2;
    \n+
    344 break;
    \n+
    345 case 2 :
    \n+
    346 out[3] = -2;
    \n+
    347 out[4] = 2;
    \n+
    348 break;
    \n+
    349 case 3 :
    \n+
    350 out[3] = -2;
    \n+
    351 out[4] = 2;
    \n+
    352 }
    \n+
    353 break;
    \n+
    354
    \n+
    355 case 1: // direction == 1
    \n+
    356
    \n+
    357 switch (subElement) {
    \n+
    358 case 0 :
    \n+
    359 out[0] = -2;
    \n+
    360 out[3] = 2;
    \n+
    361 break;
    \n+
    362 case 1 :
    \n+
    363 out[1] = -2;
    \n+
    364 out[4] = 2;
    \n+
    365 break;
    \n+
    366 case 2 :
    \n+
    367 out[3] = -2;
    \n+
    368 out[5] = 2;
    \n+
    369 break;
    \n+
    370 case 3 :
    \n+
    371 out[1] = -2;
    \n+
    372 out[4] = 2;
    \n+
    373 }
    \n+
    374 break;
    \n+
    375
    \n+
    376 default:
    \n+
    377 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    378 }
    \n+
    379 } else {
    \n+
    380 out.resize(size());
    \n+
    381 for (std::size_t i = 0; i < size(); ++i)
    \n+
    382 out[i] = 0;
    \n+
    383 }
    \n+
    384 }
    \n+
    \n+
    385
    \n+
    \n+
    389 static constexpr unsigned int order ()
    \n+
    390 {
    \n+
    391 return 1;
    \n+
    392 }
    \n+
    \n+
    393
    \n+
    394 };
    \n+
    \n+
    395
    \n+
    425 template<class D, class R>
    \n+
    \n+\n+
    427 : public RefinedSimplexLocalBasis<D,3>
    \n+
    428 {
    \n+
    429 public:
    \n+
    431 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
    \n+
    432 Dune::FieldMatrix<R,1,3> > Traits;
    \n+
    433
    \n+
    \n+
    435 static constexpr unsigned int size ()
    \n+
    436 {
    \n+
    437 return 10;
    \n+
    438 }
    \n+
    \n+
    439
    \n+
    \n+
    441 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    442 std::vector<typename Traits::RangeType>& out) const
    \n+
    443 {
    \n+
    444 out.resize(10);
    \n+
    445
    \n+
    446 int subElement;
    \n+
    447 typename Traits::DomainType local;
    \n+
    448 this->getSubElement(in, subElement, local);
    \n+
    449
    \n+
    450 switch (subElement) {
    \n+
    451 case 0 :
    \n+
    452
    \n+
    453 out[0] = 1 - local[0] - local[1] - local[2];
    \n+
    454 out[1] = local[0];
    \n+
    455 out[2] = 0;
    \n+
    456 out[3] = local[1];
    \n+
    457 out[4] = 0;
    \n+
    458 out[5] = 0;
    \n+
    459 out[6] = local[2];
    \n+
    460 out[7] = 0;
    \n+
    461 out[8] = 0;
    \n+
    462 out[9] = 0;
    \n+
    463 break;
    \n+
    464
    \n+
    465 case 1 :
    \n+
    466
    \n+
    467 out[0] = 0;
    \n+
    468 out[1] = 1 - local[0] - local[1] -local[2];
    \n+
    469 out[2] = local[0];
    \n+
    470 out[3] = 0;
    \n+
    471 out[4] = local[1];
    \n+
    472 out[5] = 0;
    \n+
    473 out[6] = 0;
    \n+
    474 out[7] = local[2];
    \n+
    475 out[8] = 0;
    \n+
    476 out[9] = 0;
    \n+
    477 break;
    \n+
    478
    \n+
    479 case 2 :
    \n+
    480
    \n+
    481 out[0] = 0;
    \n+
    482 out[1] = 0;
    \n+
    483 out[2] = 0;
    \n+
    484 out[3] = 1 - local[0] - local[1] -local[2];
    \n+
    485 out[4] = local[0];
    \n+
    486 out[5] = local[1];
    \n+
    487 out[6] = 0;
    \n+
    488 out[7] = 0;
    \n+
    489 out[8] = local[2];
    \n+
    490 out[9] = 0;
    \n+
    491 break;
    \n+
    492
    \n+
    493 case 3 :
    \n+
    494
    \n+
    495 out[0] = 0;
    \n+
    496 out[1] = 0;
    \n+
    497 out[2] = 0;
    \n+
    498 out[3] = 0;
    \n+
    499 out[4] = 0;
    \n+
    500 out[5] = 0;
    \n+
    501 out[6] = 1 - local[0] - local[1] -local[2];
    \n+
    502 out[7] = local[0];
    \n+
    503 out[8] = local[1];
    \n+
    504 out[9] = local[2];
    \n+
    505 break;
    \n+
    506
    \n+
    507 case 4 :
    \n+
    508
    \n+
    509 out[0] = 0;
    \n+
    510 out[1] = 1 - local[0] - local[1] -local[2];
    \n+
    511 out[2] = 0;
    \n+
    512 out[3] = local[0];
    \n+
    513 out[4] = 0;
    \n+
    514 out[5] = 0;
    \n+
    515 out[6] = local[1];
    \n+
    516 out[7] = local[2];
    \n+
    517 out[8] = 0;
    \n+
    518 out[9] = 0;
    \n+
    519 break;
    \n+
    520
    \n+
    521 case 5 :
    \n+
    522
    \n+
    523 out[0] = 0;
    \n+
    524 out[1] = local[1];
    \n+
    525 out[2] = 0;
    \n+
    526 out[3] = local[0];
    \n+
    527 out[4] = 1 - local[0] - local[1] -local[2];
    \n+
    528 out[5] = 0;
    \n+
    529 out[6] = 0;
    \n+
    530 out[7] = local[2];
    \n+
    531 out[8] = 0;
    \n+
    532 out[9] = 0;
    \n+
    533 break;
    \n+
    534
    \n+
    535 case 6 :
    \n+
    536
    \n+
    537 out[0] = 0;
    \n+
    538 out[1] = 0;
    \n+
    539 out[2] = 0;
    \n+
    540 out[3] = 1 - local[0] - local[1] -local[2];
    \n+
    541 out[4] = 0;
    \n+
    542 out[5] = 0;
    \n+
    543 out[6] = local[0];
    \n+
    544 out[7] = local[1];
    \n+
    545 out[8] = local[2];
    \n+
    546 out[9] = 0;
    \n+
    547 break;
    \n+
    548
    \n+
    549 case 7 :
    \n+
    550
    \n+
    551 out[0] = 0;
    \n+
    552 out[1] = 0;
    \n+
    553 out[2] = 0;
    \n+
    554 out[3] = 1 - local[0] - local[1] -local[2];
    \n+
    555 out[4] = local[2];
    \n+
    556 out[5] = 0;
    \n+
    557 out[6] = 0;
    \n+
    558 out[7] = local[1];
    \n+
    559 out[8] = local[0];
    \n+
    560 out[9] = 0;
    \n+
    561 break;
    \n+
    562 }
    \n+
    563
    \n+
    564 }
    \n+
    \n+
    565
    \n+
    567 inline void
    \n+
    \n+
    568 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    569 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    570 {
    \n+
    571 out.resize(10);
    \n+
    572
    \n+
    573 int subElement;
    \n+
    574 typename Traits::DomainType local;
    \n+
    575 this->getSubElement(in, subElement, local);
    \n+
    576
    \n+
    577 switch (subElement) {
    \n+
    578 case 0 :
    \n+
    579
    \n+
    580 out[0][0][0] = -2; out[0][0][1] = -2; out[0][0][2] = -2;
    \n+
    581 out[1][0][0] = 2; out[1][0][1] = 0; out[1][0][2] = 0;
    \n+
    582 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    583 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;
    \n+
    584 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n+
    585 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n+
    586 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 2;
    \n+
    587 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;
    \n+
    588 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n+
    589 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n+
    590 break;
    \n+
    591
    \n+
    592 case 1 :
    \n+
    593
    \n+
    594 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n+
    595 out[1][0][0] = -2; out[1][0][1] = -2; out[1][0][2] = -2;
    \n+
    596 out[2][0][0] = 2; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    597 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;
    \n+
    598 out[4][0][0] = 0; out[4][0][1] = 2; out[4][0][2] = 0;
    \n+
    599 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n+
    600 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n+
    601 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;
    \n+
    602 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n+
    603 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n+
    604 break;
    \n+
    605
    \n+
    606 case 2 :
    \n+
    607
    \n+
    608 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n+
    609 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n+
    610 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    611 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;
    \n+
    612 out[4][0][0] = 2; out[4][0][1] = 0; out[4][0][2] = 0;
    \n+
    613 out[5][0][0] = 0; out[5][0][1] = 2; out[5][0][2] = 0;
    \n+
    614 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n+
    615 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;
    \n+
    616 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 2;
    \n+
    617 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n+
    618 break;
    \n+
    619
    \n+
    620 case 3 :
    \n+
    621
    \n+
    622 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n+
    623 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n+
    624 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    625 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;
    \n+
    626 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n+
    627 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n+
    628 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = -2;
    \n+
    629 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;
    \n+
    630 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 0;
    \n+
    631 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 2;
    \n+
    632 break;
    \n+
    633
    \n+
    634 case 4 :
    \n+
    635
    \n+
    636 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n+
    637 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;
    \n+
    638 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    639 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;
    \n+
    640 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n+
    641 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n+
    642 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;
    \n+
    643 out[7][0][0] = 2; out[7][0][1] = 2; out[7][0][2] = 2;
    \n+
    644 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n+
    645 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n+
    646 break;
    \n+
    647
    \n+
    648 case 5 :
    \n+
    649
    \n+
    650 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n+
    651 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;
    \n+
    652 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    653 out[3][0][0] = -2; out[3][0][1] = 0; out[3][0][2] = 0;
    \n+
    654 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;
    \n+
    655 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n+
    656 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n+
    657 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;
    \n+
    658 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n+
    659 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n+
    660 break;
    \n+
    661
    \n+
    662 case 6 :
    \n+
    663
    \n+
    664 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n+
    665 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n+
    666 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    667 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = -2;
    \n+
    668 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n+
    669 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n+
    670 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;
    \n+
    671 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;
    \n+
    672 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;
    \n+
    673 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n+
    674 break;
    \n+
    675
    \n+
    676 case 7 :
    \n+
    677
    \n+
    678 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n+
    679 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n+
    680 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    681 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;
    \n+
    682 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;
    \n+
    683 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n+
    684 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n+
    685 out[7][0][0] = 0; out[7][0][1] = -2; out[7][0][2] = 0;
    \n+
    686 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;
    \n+
    687 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n+
    688 break;
    \n+
    689 }
    \n+
    690 }
    \n+
    \n+
    691
    \n+
    \n+
    693 void partial (const std::array<unsigned int, 3>& order,
    \n+
    694 const typename Traits::DomainType& in, // position
    \n+
    695 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    696 {
    \n+
    697 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    698 if (totalOrder == 0) {
    \n+
    699 evaluateFunction(in, out);
    \n+
    700 } else if (totalOrder == 1) {
    \n+
    701 int subElement;
    \n+
    702 typename Traits::DomainType local;
    \n+
    703 this->getSubElement(in, subElement, local);
    \n+
    704
    \n+
    705 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    706 out.resize(size());
    \n+
    707
    \n+
    708 for (std::size_t i = 0; i < size(); ++i)
    \n+
    709 out[i] = 0;
    \n+
    710
    \n+
    711 switch (direction) {
    \n+
    712 case 0: // direction == 0
    \n+
    713
    \n+
    714 switch (subElement) {
    \n+
    715 case 0 :
    \n+
    716 out[0] = -2;
    \n+
    717 out[1] = 2;
    \n+
    718 break;
    \n+
    719 case 1 :
    \n+
    720 out[1] = -2;
    \n+
    721 out[2] = 2;
    \n+
    722 break;
    \n+
    723 case 2 :
    \n+
    724 out[3] = -2;
    \n+
    725 out[4] = 2;
    \n+
    726 break;
    \n+
    727 case 3 :
    \n+
    728 out[6] = -2;
    \n+
    729 out[7] = 2;
    \n+
    730 break;
    \n+
    731 case 4 :
    \n+
    732 out[6] = -2;
    \n+
    733 out[7] = 2;
    \n+
    734 break;
    \n+
    735 case 5 :
    \n+
    736 out[3] = -2;
    \n+
    737 out[4] = 2;
    \n+
    738 break;
    \n+
    739 case 6 :
    \n+
    740 out[6] = -2;
    \n+
    741 out[7] = 2;
    \n+
    742 break;
    \n+
    743 case 7 :
    \n+
    744 out[3] = -2;
    \n+
    745 out[4] = 2;
    \n+
    746 break;
    \n+
    747 }
    \n+
    748 break;
    \n+
    749
    \n+
    750 case 1: // direction == 1
    \n+
    751
    \n+
    752 switch (subElement) {
    \n+
    753 case 0 :
    \n+
    754 out[0] = -2;
    \n+
    755 out[3] = 2;
    \n+
    756 break;
    \n+
    757 case 1 :
    \n+
    758 out[1] = -2;
    \n+
    759 out[4] = 2;
    \n+
    760 break;
    \n+
    761 case 2 :
    \n+
    762 out[3] = -2;
    \n+
    763 out[5] = 2;
    \n+
    764 break;
    \n+
    765 case 3 :
    \n+
    766 out[6] = -2;
    \n+
    767 out[8] = 2;
    \n+
    768 break;
    \n+
    769 case 4 :
    \n+
    770 out[1] = -2;
    \n+
    771 out[3] = 2;
    \n+
    772 out[6] = -2;
    \n+
    773 break;
    \n+
    774 case 5 :
    \n+
    775 out[1] = -2;
    \n+
    776 out[4] = 2;
    \n+
    777 break;
    \n+
    778 case 6 :
    \n+
    779 out[6] = -2;
    \n+
    780 out[8] = 2;
    \n+
    781 break;
    \n+
    782 case 7 :
    \n+
    783 out[3] = -2;
    \n+
    784 out[4] = 2;
    \n+
    785 out[7] = -2;
    \n+
    786 out[8] = 2;
    \n+
    787 break;
    \n+
    788 }
    \n+
    789 break;
    \n+
    790
    \n+
    791 case 2: // direction == 2
    \n+
    792
    \n+
    793 switch (subElement) {
    \n+
    794 case 0 :
    \n+
    795 out[0] = -2;
    \n+
    796 out[6] = 2;
    \n+
    797 break;
    \n+
    798 case 1 :
    \n+
    799 out[1] = -2;
    \n+
    800 out[7] = 2;
    \n+
    801 break;
    \n+
    802 case 2 :
    \n+
    803 out[3] = -2;
    \n+
    804 out[8] = 2;
    \n+
    805 break;
    \n+
    806 case 3 :
    \n+
    807 out[6] = -2;
    \n+
    808 out[9] = 2;
    \n+
    809 break;
    \n+
    810 case 4 :
    \n+
    811 out[1] = -2;
    \n+
    812 out[7] = 2;
    \n+
    813 break;
    \n+
    814 case 5 :
    \n+
    815 out[1] = -2;
    \n+
    816 out[7] = 2;
    \n+
    817 break;
    \n+
    818 case 6 :
    \n+
    819 out[3] = -2;
    \n+
    820 out[8] = 2;
    \n+
    821 break;
    \n+
    822 case 7 :
    \n+
    823 out[3] = -2;
    \n+
    824 out[8] = 2;
    \n+
    825 break;
    \n+
    826 }
    \n+
    827 break;
    \n+
    828
    \n+
    829 default:
    \n+
    830 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    831 }
    \n+
    832 } else {
    \n+
    833 out.resize(size());
    \n+
    834 for (std::size_t i = 0; i < size(); ++i)
    \n+
    835 out[i] = 0;
    \n+
    836 }
    \n+
    837 }
    \n+
    \n+
    838
    \n+
    \n+
    842 static constexpr unsigned int order ()
    \n+
    843 {
    \n+
    844 return 1;
    \n+
    845 }
    \n+
    \n+
    846
    \n+
    847 };
    \n+
    \n+
    848}
    \n+
    849#endif
    \n+
    Contains a base class for LocalBasis classes based on uniform refinement.
    \n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    Definition coeffmatrix.hh:26
    \n-
    static void add(const Field &vec1, const BasisEntry &vec2, BasisEntry &res)
    Definition coeffmatrix.hh:28
    \n-
    Field2 BasisEntry
    Definition coeffmatrix.hh:27
    \n-
    FieldVector< Field2, dimRange > BasisEntry
    Definition coeffmatrix.hh:38
    \n-
    static void add(const Field &vec1, const BasisEntry &vec2, BasisEntry &res)
    Definition coeffmatrix.hh:39
    \n-
    Definition coeffmatrix.hh:48
    \n-
    static const unsigned int blockSize
    Definition coeffmatrix.hh:51
    \n-
    SparseCoeffMatrix()
    Definition coeffmatrix.hh:54
    \n-
    F Field
    Definition coeffmatrix.hh:50
    \n-
    unsigned int baseSize() const
    Definition coeffmatrix.hh:73
    \n-
    SparseCoeffMatrix< Field, blockSize > This
    Definition coeffmatrix.hh:52
    \n-
    unsigned int size() const
    Definition coeffmatrix.hh:69
    \n-
    void fill(const RowMatrix &mat, bool verbose=false)
    Definition coeffmatrix.hh:160
    \n-
    void addRow(unsigned int k, const Field &a, Vector &b) const
    Definition coeffmatrix.hh:223
    \n-
    void mult(const BasisIterator &x, unsigned int numLsg, FF *y) const
    Definition coeffmatrix.hh:79
    \n-
    void mult(const BasisIterator &x, Vector &y) const
    Definition coeffmatrix.hh:132
    \n-
    void mult(const BasisIterator &x, Vector &y) const
    Definition coeffmatrix.hh:105
    \n-
    ~SparseCoeffMatrix()
    Definition coeffmatrix.hh:62
    \n-
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:587
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:665
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Definition refinedsimplexlocalbasis.hh:20
    \n+
    Definition refinedp1localbasis.hh:23
    \n+
    RefinedP1LocalBasis()
    Definition refinedp1localbasis.hh:25
    \n+
    LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 1 > > Traits
    export type traits for function signature
    Definition refinedp1localbasis.hh:60
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition refinedp1localbasis.hh:99
    \n+
    static constexpr unsigned int order()
    Polynomial order of the shape functions Doesn't really apply: these shape functions are only piecewis...
    Definition refinedp1localbasis.hh:163
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp1localbasis.hh:69
    \n+
    void partial(const std::array< unsigned int, 1 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition refinedp1localbasis.hh:127
    \n+
    static constexpr unsigned int size()
    number of shape functions
    Definition refinedp1localbasis.hh:63
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition refinedp1localbasis.hh:264
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 2 > > Traits
    export type traits for function signature
    Definition refinedp1localbasis.hh:202
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp1localbasis.hh:211
    \n+
    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 refinedp1localbasis.hh:315
    \n+
    static constexpr unsigned int order()
    Polynomial order of the shape functions Doesn't really apply: these shape functions are only piecewis...
    Definition refinedp1localbasis.hh:389
    \n+
    static constexpr unsigned int size()
    number of shape functions
    Definition refinedp1localbasis.hh:205
    \n+
    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 refinedp1localbasis.hh:693
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp1localbasis.hh:441
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
    export type traits for function signature
    Definition refinedp1localbasis.hh:432
    \n+
    static constexpr unsigned int size()
    number of shape functions
    Definition refinedp1localbasis.hh:435
    \n+
    static constexpr unsigned int order()
    Polynomial order of the shape functions Doesn't really apply: these shape functions are only piecewis...
    Definition refinedp1localbasis.hh:842
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition refinedp1localbasis.hh:568
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,347 +1,869 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-coeffmatrix.hh\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1\n+refinedp1localbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_COEFFMATRIX_HH\n-6#define DUNE_COEFFMATRIX_HH\n-7#include \n-8#include \n-9#include \n-10#include \n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n+5#ifndef DUNE_REFINED_P1_LOCALBASIS_HH\n+6#define DUNE_REFINED_P1_LOCALBASIS_HH\n+7\n+12#include \n 13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16 /*************************************************\n-17 * Default class for storing a coefficient matrix\n-18 * for the PolynomialBasis. Basically a simple\n-19 * CRS structure is used. The additional complexity\n-20 * is due to the storage and efficient evaluation\n-21 * of higher order derivatives. See the remarks\n-22 * in tensor.hh which also hold true for this file.\n-23 *************************************************/\n-24 template \n-_\b2_\b5 struct _\bM_\bu_\bl_\bt\n+14#include \n+15\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+17\n+18namespace _\bD_\bu_\bn_\be\n+19{\n+20 template\n+_\b2_\b1 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+22 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+23 {\n+24 public:\n+_\b2_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n 26 {\n-_\b2_\b7 typedef Field2 _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by;\n-_\b2_\b8 static void _\ba_\bd_\bd(const Field &vec1, const _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by &vec2,\n-29 _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by &res)\n-30 {\n-31 res += vec1*vec2;\n-32 }\n-33 };\n-34\n-35 template \n-_\b3_\b6 struct _\bM_\bu_\bl_\bt< Field,FieldVector >\n-37 {\n-_\b3_\b8 typedef FieldVector _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by;\n-_\b3_\b9 static void _\ba_\bd_\bd(const Field &vec1, const _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by &vec2,\n-40 _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by &res)\n-41 {\n-42 res.axpy(vec1,vec2);\n-43 }\n-44 };\n-45\n-46 template< class F , unsigned int bSize >\n-_\b4_\b7 class _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n-48 {\n-49 public:\n-_\b5_\b0 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b5_\b1 static const unsigned int _\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be = bSize;\n-_\b5_\b2 typedef _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be_\b> _\bT_\bh_\bi_\bs;\n-53\n-_\b5_\b4 _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx()\n-55 : coeff_(0),\n-56 rows_(0),\n-57 skip_(0),\n-58 numRows_(0),\n-59 numCols_(0)\n-60 {}\n+27 DUNE_THROW(Dune::NotImplemented,\"RefinedP1LocalBasis not implemented for dim\n+> 3.\");\n+28 }\n+29 };\n+30\n+53 template\n+_\b5_\b4 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+55 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+56 {\n+57 public:\n+59 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b1_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b1_\b>,R,1,Dune::\n+FieldVector,\n+_\b6_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n 61\n-_\b6_\b2 _\b~_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx()\n-63 {\n-64 delete [] coeff_;\n-65 delete [] rows_;\n-66 delete [] skip_;\n-67 }\n-68\n-_\b6_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-70 {\n-71 return numRows_/_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be;\n-72 }\n-_\b7_\b3 unsigned int _\bb_\ba_\bs_\be_\bS_\bi_\bz_\be () const\n-74 {\n-75 return numCols_;\n-76 }\n+_\b6_\b3 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n+64 {\n+65 return 3;\n+66 }\n+67\n+_\b6_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+70 std::vector& out) const\n+71 {\n+72 out.resize(3);\n+73\n+74 int subElement;\n+75 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n+76 this->getSubElement(in, subElement, local);\n 77\n-78 template< class BasisIterator, class FF>\n-_\b7_\b9 void _\bm_\bu_\bl_\bt ( const BasisIterator &x,\n-80 unsigned int numLsg,\n-81 FF *y ) const\n-82 {\n-83 typedef typename BasisIterator::Derivatives XDerivatives;\n-84 assert( numLsg*_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be <= (size_t)numRows_ );\n-85 unsigned int row = 0;\n-86 _\bF_\bi_\be_\bl_\bd *pos = rows_[ 0 ];\n-87 unsigned int *skipIt = skip_;\n-88 XDerivatives val;\n-89 for( size_t i = 0; i < numLsg; ++i)\n-90 {\n-91 for( unsigned int r = 0; r < _\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be; ++r, ++row )\n-92 {\n-93 val = 0;\n-94 BasisIterator itx = x;\n-95 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )\n-96 {\n-97 itx += *skipIt;\n-98 val.axpy(*pos,*itx);\n-99 }\n-100 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\bX_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b,_\bF_\bF_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by(r,val,*(y+i*XDerivatives::\n-size*_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be));\n-101 }\n-102 }\n-103 }\n-104 template< class BasisIterator, class Vector>\n-_\b1_\b0_\b5 void _\bm_\bu_\bl_\bt ( const BasisIterator &x,\n-106 Vector &y ) const\n-107 {\n-108 typedef typename Vector::value_type YDerivatives;\n-109 typedef typename BasisIterator::Derivatives XDerivatives;\n-110 size_t numLsg = y.size();\n-111 assert( numLsg*_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be <= (size_t)numRows_ );\n-112 unsigned int row = 0;\n-113 _\bF_\bi_\be_\bl_\bd *pos = rows_[ 0 ];\n-114 unsigned int *skipIt = skip_;\n-115 XDerivatives val;\n-116 for( size_t i = 0; i < numLsg; ++i)\n-117 {\n-118 for( unsigned int r = 0; r < _\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be; ++r, ++row )\n-119 {\n-120 val = 0;\n-121 BasisIterator itx = x;\n-122 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )\n-123 {\n-124 itx += *skipIt;\n-125 val.axpy(*pos,*itx);\n-126 }\n-127 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\bX_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b,_\bY_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by(r,val,y[i]);\n-128 }\n-129 }\n-130 }\n-131 template \n-_\b1_\b3_\b2 void _\bm_\bu_\bl_\bt ( const BasisIterator &x,\n-133 Vector &y ) const\n-134 {\n-135 typedef typename Vector::value_type YDerivatives;\n-136 typedef typename BasisIterator::Derivatives XDerivatives;\n-137 typedef FieldVector\n-XLFETensor;\n-138 size_t numLsg = y.size();\n-139 assert( numLsg*_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be <= (size_t)numRows_ );\n-140 unsigned int row = 0;\n-141 _\bF_\bi_\be_\bl_\bd *pos = rows_[ 0 ];\n-142 unsigned int *skipIt = skip_;\n-143 for( size_t i = 0; i < numLsg; ++i)\n-144 {\n-145 XLFETensor val(typename XDerivatives::Field(0));\n-146 for( unsigned int r = 0; r < _\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be; ++r, ++row )\n-147 {\n-148 BasisIterator itx = x;\n-149 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )\n-150 {\n-151 itx += *skipIt;\n-152 _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\bX_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b,_\bX_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b,_\bd_\be_\br_\bi_\bv_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by(r,*pos,*itx,val);\n+78 switch (subElement) {\n+79 case 0 :\n+80\n+81 out[0] = 1 - local[0];\n+82 out[1] = local[0];\n+83 out[2] = 0;\n+84 break;\n+85\n+86 case 1 :\n+87\n+88 out[0] = 0;\n+89 out[1] = 1 - local[0];\n+90 out[2] = local[0];\n+91 break;\n+92\n+93 }\n+94\n+95 }\n+96\n+98 inline void\n+_\b9_\b9 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+100 std::vector& out) const // return value\n+101 {\n+102 out.resize(3);\n+103\n+104 int subElement;\n+105 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n+106 this->getSubElement(in, subElement, local);\n+107\n+108 switch (subElement) {\n+109 case 0 :\n+110\n+111 out[0][0][0] = -2;\n+112 out[1][0][0] = 2;\n+113 out[2][0][0] = 0;\n+114 break;\n+115\n+116 case 1 :\n+117\n+118 out[0][0][0] = 0;\n+119 out[1][0][0] = -2;\n+120 out[2][0][0] = 2;\n+121 break;\n+122\n+123 }\n+124 }\n+125\n+_\b1_\b2_\b7 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+128 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+129 std::vector& out) const // return value\n+130 {\n+131 auto totalOrder = order[0];\n+132 if (totalOrder == 0) {\n+133 evaluateFunction(in, out);\n+134 } else if (totalOrder == 1)\n+135 {\n+136 out.resize(3);\n+137\n+138 int subElement;\n+139 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n+140 this->getSubElement(in, subElement, local);\n+141\n+142 switch (subElement) {\n+143 case 0:\n+144 out[0] = -2;\n+145 out[1] = 2;\n+146 out[2] = 0;\n+147 break;\n+148 case 1:\n+149 out[0] = 0;\n+150 out[1] = -2;\n+151 out[2] = 2;\n+152 break;\n 153 }\n-154 }\n-155 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(val,y[i]);\n-156 }\n+154 } else {\n+155 out.resize(3);\n+156 out[0] = out[1] = out[2] = 0;\n 157 }\n-158\n-159 template< class RowMatrix >\n-_\b1_\b6_\b0 void _\bf_\bi_\bl_\bl ( const RowMatrix &mat, bool verbose=false )\n-161 {\n-162 numRows_ = mat.rows();\n-163 numCols_ = mat.cols();\n-164 unsigned int _\bs_\bi_\bz_\be = numRows_*numCols_;\n-165\n-166 delete [] coeff_;\n-167 delete [] rows_;\n-168 delete [] skip_;\n+158 }\n+159\n+_\b1_\b6_\b3 static constexpr unsigned int _\bo_\br_\bd_\be_\br ()\n+164 {\n+165 return 1;\n+166 }\n+167\n+168 };\n 169\n-170 _\bF_\bi_\be_\bl_\bd* coeff = new _\bF_\bi_\be_\bl_\bd[ _\bs_\bi_\bz_\be ];\n-171 // we always initialize the next skip entry to zero,\n-172 // including the one following the end, so allocate\n-173 // size+1 entries so we will stay within the bounds.\n-174 unsigned int *skip = new unsigned int[ _\bs_\bi_\bz_\be+1 ];\n-175 rows_ = new _\bF_\bi_\be_\bl_\bd*[ numRows_+1 ];\n-176 std::vector row( numCols_ );\n-177\n-178 rows_[ 0 ] = coeff;\n-179 _\bF_\bi_\be_\bl_\bd *cit = coeff;\n-180 unsigned int *sit = skip;\n-181 for( unsigned int r = 0; r < numRows_; ++r )\n-182 {\n-183 *sit = 0;\n-184 mat.row( r, row );\n-185 for( unsigned int c = 0; c < numCols_; ++c )\n-186 {\n-187 const _\bF_\bi_\be_\bl_\bd &val = row[c];\n-188 if (val < _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>() || _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>() < val)\n-189 {\n-190 *cit = val;\n-191 ++sit;\n-192 ++cit;\n-193 *sit = 1;\n-194 } else\n-195 {\n-196 ++(*sit);\n-197 }\n-198 }\n-199 rows_[ r+1 ] = cit;\n-200 }\n-201 assert( size_t(rows_[numRows_]-rows_[0]) <= size_t(_\bs_\bi_\bz_\be) );\n-202 _\bs_\bi_\bz_\be = rows_[numRows_]-rows_[0];\n-203 coeff_ = new _\bF_\bi_\be_\bl_\bd[ _\bs_\bi_\bz_\be ];\n-204 skip_ = new unsigned int[ _\bs_\bi_\bz_\be ];\n-205 for (unsigned int i=0; i<_\bs_\bi_\bz_\be; ++i)\n+195 template\n+_\b1_\b9_\b6 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+197 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+198 {\n+199 public:\n+201 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,1,Dune::\n+FieldVector,\n+_\b2_\b0_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+203\n+_\b2_\b0_\b5 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n 206 {\n-207 coeff_[i] = coeff[i];\n-208 skip_[i] = skip[i];\n-209 }\n-210 for (unsigned int i=0; i<=numRows_; ++i)\n-211 rows_[ i ] = coeff_ + (rows_[ i ] - coeff);\n-212\n-213 delete [] coeff;\n-214 delete [] skip;\n+207 return 6;\n+208 }\n+209\n+_\b2_\b1_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+212 std::vector& out) const\n+213 {\n+214 out.resize(6);\n 215\n-216 if (verbose)\n-217 std::cout << \"Entries: \" << (rows_[numRows_]-rows_[0])\n-218 << \" full: \" << numCols_*numRows_\n-219 << std::endl;\n-220 }\n-221 // b += a*C[k]\n-222 template \n-_\b2_\b2_\b3 void _\ba_\bd_\bd_\bR_\bo_\bw( unsigned int k, const _\bF_\bi_\be_\bl_\bd &a, Vector &b) const\n-224 {\n-225 assert(k( (*pos)*a ); // field_cast\n-235 }\n-236 }\n-237 private:\n-238 _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx ( const _\bT_\bh_\bi_\bs &other )\n-239 : numRows_( other.numRows_ ),\n-240 numCols_( other.numCols_ )\n-241 {\n-242 const unsigned int _\bs_\bi_\bz_\be = other.rows_[numRows_]-other.rows_[0];\n-243 coeff_ = new _\bF_\bi_\be_\bl_\bd[ _\bs_\bi_\bz_\be ];\n-244 rows_ = new _\bF_\bi_\be_\bl_\bd*[ numRows_+1 ];\n-245 skip_ = new unsigned int[ _\bs_\bi_\bz_\be ];\n-246 for (unsigned int i=0; i<_\bs_\bi_\bz_\be; ++i)\n-247 {\n-248 coeff_[i] = other.coeff_[i];\n-249 skip_[i] = other.skip_[i];\n-250 }\n-251 for (unsigned int i=0; i<=numRows_; ++i)\n-252 rows_[ i ] = coeff_ + (other.rows_[ i ] - other.coeff_);\n-253 }\n-254\n-255 _\bT_\bh_\bi_\bs &operator= (const _\bT_\bh_\bi_\bs&);\n-256 _\bF_\bi_\be_\bl_\bd *coeff_;\n-257 _\bF_\bi_\be_\bl_\bd **rows_;\n-258 unsigned int *skip_;\n-259 unsigned int numRows_,numCols_;\n-260 };\n+216 int subElement;\n+217 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n+218 this->getSubElement(in, subElement, local);\n+219\n+220 switch (subElement) {\n+221 case 0 :\n+222\n+223 out[0] = 1 - local[0] - local[1];\n+224 out[1] = local[0];\n+225 out[2] = 0;\n+226 out[3] = local[1];\n+227 out[4] = 0;\n+228 out[5] = 0;\n+229 break;\n+230\n+231 case 1 :\n+232\n+233 out[0] = 0;\n+234 out[1] = 1 - local[0] - local[1];\n+235 out[2] = local[0];\n+236 out[3] = 0;\n+237 out[4] = local[1];\n+238 out[5] = 0;\n+239 break;\n+240\n+241 case 2 :\n+242\n+243 out[0] = 0;\n+244 out[1] = 0;\n+245 out[2] = 0;\n+246 out[3] = 1 - local[0] - local[1];\n+247 out[4] = local[0];\n+248 out[5] = local[1];\n+249 break;\n+250 case 3 :\n+251\n+252 out[0] = 0;\n+253 out[1] = local[1];\n+254 out[2] = 0;\n+255 out[3] = local[0];\n+256 out[4] = 1 - local[0] - local[1];\n+257 out[5] = 0;\n+258 }\n+259\n+260 }\n 261\n-262}\n-263\n-264#endif // DUNE_COEFFMATRIX_HH\n-_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+263 inline void\n+_\b2_\b6_\b4 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+265 std::vector& out) const // return value\n+266 {\n+267 out.resize(6);\n+268\n+269 int subElement;\n+270 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n+271 this->getSubElement(in, subElement, local);\n+272\n+273 switch (subElement) {\n+274 case 0 :\n+275\n+276 out[0][0][0] = -2; out[0][0][1] = -2;\n+277 out[1][0][0] = 2; out[1][0][1] = 0;\n+278 out[2][0][0] = 0; out[2][0][1] = 0;\n+279 out[3][0][0] = 0; out[3][0][1] = 2;\n+280 out[4][0][0] = 0; out[4][0][1] = 0;\n+281 out[5][0][0] = 0; out[5][0][1] = 0;\n+282 break;\n+283\n+284 case 1 :\n+285\n+286 out[0][0][0] = 0; out[0][0][1] = 0;\n+287 out[1][0][0] = -2; out[1][0][1] = -2;\n+288 out[2][0][0] = 2; out[2][0][1] = 0;\n+289 out[3][0][0] = 0; out[3][0][1] = 0;\n+290 out[4][0][0] = 0; out[4][0][1] = 2;\n+291 out[5][0][0] = 0; out[5][0][1] = 0;\n+292 break;\n+293\n+294 case 2 :\n+295\n+296 out[0][0][0] = 0; out[0][0][1] = 0;\n+297 out[1][0][0] = 0; out[1][0][1] = 0;\n+298 out[2][0][0] = 0; out[2][0][1] = 0;\n+299 out[3][0][0] = -2; out[3][0][1] = -2;\n+300 out[4][0][0] = 2; out[4][0][1] = 0;\n+301 out[5][0][0] = 0; out[5][0][1] = 2;\n+302 break;\n+303 case 3 :\n+304\n+305 out[0][0][0] = 0; out[0][0][1] = 0;\n+306 out[1][0][0] = 0; out[1][0][1] = -2;\n+307 out[2][0][0] = 0; out[2][0][1] = 0;\n+308 out[3][0][0] = -2; out[3][0][1] = 0;\n+309 out[4][0][0] = 2; out[4][0][1] = 2;\n+310 out[5][0][0] = 0; out[5][0][1] = 0;\n+311 }\n+312 }\n+313\n+_\b3_\b1_\b5 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+316 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+317 std::vector& out) const // return value\n+318 {\n+319 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+320 if (totalOrder == 0) {\n+321 evaluateFunction(in, out);\n+322 } else if (totalOrder == 1) {\n+323 int subElement;\n+324 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n+325 this->getSubElement(in, subElement, local);\n+326\n+327 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+328 out.resize(size());\n+329\n+330 for (std::size_t i = 0; i < size(); ++i)\n+331 out[i] = 0;\n+332\n+333 switch (direction) {\n+334 case 0: // direction == 0\n+335\n+336 switch (subElement) {\n+337 case 0 :\n+338 out[0] = -2;\n+339 out[1] = 2;\n+340 break;\n+341 case 1 :\n+342 out[1] = -2;\n+343 out[2] = 2;\n+344 break;\n+345 case 2 :\n+346 out[3] = -2;\n+347 out[4] = 2;\n+348 break;\n+349 case 3 :\n+350 out[3] = -2;\n+351 out[4] = 2;\n+352 }\n+353 break;\n+354\n+355 case 1: // direction == 1\n+356\n+357 switch (subElement) {\n+358 case 0 :\n+359 out[0] = -2;\n+360 out[3] = 2;\n+361 break;\n+362 case 1 :\n+363 out[1] = -2;\n+364 out[4] = 2;\n+365 break;\n+366 case 2 :\n+367 out[3] = -2;\n+368 out[5] = 2;\n+369 break;\n+370 case 3 :\n+371 out[1] = -2;\n+372 out[4] = 2;\n+373 }\n+374 break;\n+375\n+376 default:\n+377 DUNE_THROW(RangeError, \"Component out of range.\");\n+378 }\n+379 } else {\n+380 out.resize(size());\n+381 for (std::size_t i = 0; i < size(); ++i)\n+382 out[i] = 0;\n+383 }\n+384 }\n+385\n+_\b3_\b8_\b9 static constexpr unsigned int _\bo_\br_\bd_\be_\br ()\n+390 {\n+391 return 1;\n+392 }\n+393\n+394 };\n+395\n+425 template\n+_\b4_\b2_\b6 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+427 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+428 {\n+429 public:\n+431 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,1,Dune::\n+FieldVector,\n+_\b4_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+433\n+_\b4_\b3_\b5 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n+436 {\n+437 return 10;\n+438 }\n+439\n+_\b4_\b4_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+442 std::vector& out) const\n+443 {\n+444 out.resize(10);\n+445\n+446 int subElement;\n+447 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n+448 this->getSubElement(in, subElement, local);\n+449\n+450 switch (subElement) {\n+451 case 0 :\n+452\n+453 out[0] = 1 - local[0] - local[1] - local[2];\n+454 out[1] = local[0];\n+455 out[2] = 0;\n+456 out[3] = local[1];\n+457 out[4] = 0;\n+458 out[5] = 0;\n+459 out[6] = local[2];\n+460 out[7] = 0;\n+461 out[8] = 0;\n+462 out[9] = 0;\n+463 break;\n+464\n+465 case 1 :\n+466\n+467 out[0] = 0;\n+468 out[1] = 1 - local[0] - local[1] -local[2];\n+469 out[2] = local[0];\n+470 out[3] = 0;\n+471 out[4] = local[1];\n+472 out[5] = 0;\n+473 out[6] = 0;\n+474 out[7] = local[2];\n+475 out[8] = 0;\n+476 out[9] = 0;\n+477 break;\n+478\n+479 case 2 :\n+480\n+481 out[0] = 0;\n+482 out[1] = 0;\n+483 out[2] = 0;\n+484 out[3] = 1 - local[0] - local[1] -local[2];\n+485 out[4] = local[0];\n+486 out[5] = local[1];\n+487 out[6] = 0;\n+488 out[7] = 0;\n+489 out[8] = local[2];\n+490 out[9] = 0;\n+491 break;\n+492\n+493 case 3 :\n+494\n+495 out[0] = 0;\n+496 out[1] = 0;\n+497 out[2] = 0;\n+498 out[3] = 0;\n+499 out[4] = 0;\n+500 out[5] = 0;\n+501 out[6] = 1 - local[0] - local[1] -local[2];\n+502 out[7] = local[0];\n+503 out[8] = local[1];\n+504 out[9] = local[2];\n+505 break;\n+506\n+507 case 4 :\n+508\n+509 out[0] = 0;\n+510 out[1] = 1 - local[0] - local[1] -local[2];\n+511 out[2] = 0;\n+512 out[3] = local[0];\n+513 out[4] = 0;\n+514 out[5] = 0;\n+515 out[6] = local[1];\n+516 out[7] = local[2];\n+517 out[8] = 0;\n+518 out[9] = 0;\n+519 break;\n+520\n+521 case 5 :\n+522\n+523 out[0] = 0;\n+524 out[1] = local[1];\n+525 out[2] = 0;\n+526 out[3] = local[0];\n+527 out[4] = 1 - local[0] - local[1] -local[2];\n+528 out[5] = 0;\n+529 out[6] = 0;\n+530 out[7] = local[2];\n+531 out[8] = 0;\n+532 out[9] = 0;\n+533 break;\n+534\n+535 case 6 :\n+536\n+537 out[0] = 0;\n+538 out[1] = 0;\n+539 out[2] = 0;\n+540 out[3] = 1 - local[0] - local[1] -local[2];\n+541 out[4] = 0;\n+542 out[5] = 0;\n+543 out[6] = local[0];\n+544 out[7] = local[1];\n+545 out[8] = local[2];\n+546 out[9] = 0;\n+547 break;\n+548\n+549 case 7 :\n+550\n+551 out[0] = 0;\n+552 out[1] = 0;\n+553 out[2] = 0;\n+554 out[3] = 1 - local[0] - local[1] -local[2];\n+555 out[4] = local[2];\n+556 out[5] = 0;\n+557 out[6] = 0;\n+558 out[7] = local[1];\n+559 out[8] = local[0];\n+560 out[9] = 0;\n+561 break;\n+562 }\n+563\n+564 }\n+565\n+567 inline void\n+_\b5_\b6_\b8 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+569 std::vector& out) const // return value\n+570 {\n+571 out.resize(10);\n+572\n+573 int subElement;\n+574 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n+575 this->getSubElement(in, subElement, local);\n+576\n+577 switch (subElement) {\n+578 case 0 :\n+579\n+580 out[0][0][0] = -2; out[0][0][1] = -2; out[0][0][2] = -2;\n+581 out[1][0][0] = 2; out[1][0][1] = 0; out[1][0][2] = 0;\n+582 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n+583 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;\n+584 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n+585 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n+586 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 2;\n+587 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;\n+588 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n+589 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n+590 break;\n+591\n+592 case 1 :\n+593\n+594 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n+595 out[1][0][0] = -2; out[1][0][1] = -2; out[1][0][2] = -2;\n+596 out[2][0][0] = 2; out[2][0][1] = 0; out[2][0][2] = 0;\n+597 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;\n+598 out[4][0][0] = 0; out[4][0][1] = 2; out[4][0][2] = 0;\n+599 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n+600 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n+601 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;\n+602 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n+603 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n+604 break;\n+605\n+606 case 2 :\n+607\n+608 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n+609 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n+610 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n+611 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;\n+612 out[4][0][0] = 2; out[4][0][1] = 0; out[4][0][2] = 0;\n+613 out[5][0][0] = 0; out[5][0][1] = 2; out[5][0][2] = 0;\n+614 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n+615 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;\n+616 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 2;\n+617 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n+618 break;\n+619\n+620 case 3 :\n+621\n+622 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n+623 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n+624 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n+625 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;\n+626 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n+627 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n+628 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = -2;\n+629 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;\n+630 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 0;\n+631 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 2;\n+632 break;\n+633\n+634 case 4 :\n+635\n+636 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n+637 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;\n+638 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n+639 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;\n+640 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n+641 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n+642 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;\n+643 out[7][0][0] = 2; out[7][0][1] = 2; out[7][0][2] = 2;\n+644 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n+645 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n+646 break;\n+647\n+648 case 5 :\n+649\n+650 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n+651 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;\n+652 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n+653 out[3][0][0] = -2; out[3][0][1] = 0; out[3][0][2] = 0;\n+654 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;\n+655 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n+656 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n+657 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;\n+658 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n+659 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n+660 break;\n+661\n+662 case 6 :\n+663\n+664 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n+665 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n+666 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n+667 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = -2;\n+668 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n+669 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n+670 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;\n+671 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;\n+672 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;\n+673 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n+674 break;\n+675\n+676 case 7 :\n+677\n+678 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n+679 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n+680 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n+681 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;\n+682 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;\n+683 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n+684 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n+685 out[7][0][0] = 0; out[7][0][1] = -2; out[7][0][2] = 0;\n+686 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;\n+687 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n+688 break;\n+689 }\n+690 }\n+691\n+_\b6_\b9_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+694 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+695 std::vector& out) const // return value\n+696 {\n+697 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+698 if (totalOrder == 0) {\n+699 evaluateFunction(in, out);\n+700 } else if (totalOrder == 1) {\n+701 int subElement;\n+702 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n+703 this->getSubElement(in, subElement, local);\n+704\n+705 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+706 out.resize(size());\n+707\n+708 for (std::size_t i = 0; i < size(); ++i)\n+709 out[i] = 0;\n+710\n+711 switch (direction) {\n+712 case 0: // direction == 0\n+713\n+714 switch (subElement) {\n+715 case 0 :\n+716 out[0] = -2;\n+717 out[1] = 2;\n+718 break;\n+719 case 1 :\n+720 out[1] = -2;\n+721 out[2] = 2;\n+722 break;\n+723 case 2 :\n+724 out[3] = -2;\n+725 out[4] = 2;\n+726 break;\n+727 case 3 :\n+728 out[6] = -2;\n+729 out[7] = 2;\n+730 break;\n+731 case 4 :\n+732 out[6] = -2;\n+733 out[7] = 2;\n+734 break;\n+735 case 5 :\n+736 out[3] = -2;\n+737 out[4] = 2;\n+738 break;\n+739 case 6 :\n+740 out[6] = -2;\n+741 out[7] = 2;\n+742 break;\n+743 case 7 :\n+744 out[3] = -2;\n+745 out[4] = 2;\n+746 break;\n+747 }\n+748 break;\n+749\n+750 case 1: // direction == 1\n+751\n+752 switch (subElement) {\n+753 case 0 :\n+754 out[0] = -2;\n+755 out[3] = 2;\n+756 break;\n+757 case 1 :\n+758 out[1] = -2;\n+759 out[4] = 2;\n+760 break;\n+761 case 2 :\n+762 out[3] = -2;\n+763 out[5] = 2;\n+764 break;\n+765 case 3 :\n+766 out[6] = -2;\n+767 out[8] = 2;\n+768 break;\n+769 case 4 :\n+770 out[1] = -2;\n+771 out[3] = 2;\n+772 out[6] = -2;\n+773 break;\n+774 case 5 :\n+775 out[1] = -2;\n+776 out[4] = 2;\n+777 break;\n+778 case 6 :\n+779 out[6] = -2;\n+780 out[8] = 2;\n+781 break;\n+782 case 7 :\n+783 out[3] = -2;\n+784 out[4] = 2;\n+785 out[7] = -2;\n+786 out[8] = 2;\n+787 break;\n+788 }\n+789 break;\n+790\n+791 case 2: // direction == 2\n+792\n+793 switch (subElement) {\n+794 case 0 :\n+795 out[0] = -2;\n+796 out[6] = 2;\n+797 break;\n+798 case 1 :\n+799 out[1] = -2;\n+800 out[7] = 2;\n+801 break;\n+802 case 2 :\n+803 out[3] = -2;\n+804 out[8] = 2;\n+805 break;\n+806 case 3 :\n+807 out[6] = -2;\n+808 out[9] = 2;\n+809 break;\n+810 case 4 :\n+811 out[1] = -2;\n+812 out[7] = 2;\n+813 break;\n+814 case 5 :\n+815 out[1] = -2;\n+816 out[7] = 2;\n+817 break;\n+818 case 6 :\n+819 out[3] = -2;\n+820 out[8] = 2;\n+821 break;\n+822 case 7 :\n+823 out[3] = -2;\n+824 out[8] = 2;\n+825 break;\n+826 }\n+827 break;\n+828\n+829 default:\n+830 DUNE_THROW(RangeError, \"Component out of range.\");\n+831 }\n+832 } else {\n+833 out.resize(size());\n+834 for (std::size_t i = 0; i < size(); ++i)\n+835 out[i] = 0;\n+836 }\n+837 }\n+838\n+_\b8_\b4_\b2 static constexpr unsigned int _\bo_\br_\bd_\be_\br ()\n+843 {\n+844 return 1;\n+845 }\n+846\n+847 };\n+848}\n+849#endif\n+_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+Contains a base class for LocalBasis classes based on uniform refinement.\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b:_\b:_\ba_\bd_\bd\n-static void add(const Field &vec1, const BasisEntry &vec2, BasisEntry &res)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by\n-Field2 BasisEntry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\bi_\be_\bl_\bd_\b2_\b,_\b _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b _\b>_\b _\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by\n-FieldVector< Field2, dimRange > BasisEntry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\bi_\be_\bl_\bd_\b2_\b,_\b _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bd_\bd\n-static void add(const Field &vec1, const BasisEntry &vec2, BasisEntry &res)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be\n-static const unsigned int blockSize\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n-SparseCoeffMatrix()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bb_\ba_\bs_\be_\bS_\bi_\bz_\be\n-unsigned int baseSize() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bT_\bh_\bi_\bs\n-SparseCoeffMatrix< Field, blockSize > This\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n-void fill(const RowMatrix &mat, bool verbose=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\ba_\bd_\bd_\bR_\bo_\bw\n-void addRow(unsigned int k, const Field &a, Vector &b) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:223\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\bu_\bl_\bt\n-void mult(const BasisIterator &x, unsigned int numLsg, FF *y) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\bu_\bl_\bt\n-void mult(const BasisIterator &x, Vector &y) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\bu_\bl_\bt\n-void mult(const BasisIterator &x, Vector &y) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\b~_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n-~SparseCoeffMatrix()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n-A class representing the zero of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:587\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:665\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RefinedP1LocalBasis()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R,\n+1 >, Dune::FieldMatrix< R, 1, 1 > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n+static constexpr unsigned int order()\n+Polynomial order of the shape functions Doesn't really apply: these shape\n+functions are only piecewis...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 1 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr unsigned int size()\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:264\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R,\n+1 >, Dune::FieldMatrix< R, 1, 2 > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:202\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:211\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:315\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n+static constexpr unsigned int order()\n+Polynomial order of the shape functions Doesn't really apply: these shape\n+functions are only piecewis...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:389\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr unsigned int size()\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:693\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:441\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R,\n+1 >, Dune::FieldMatrix< R, 1, 3 > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:432\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr unsigned int size()\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:435\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n+static constexpr unsigned int order()\n+Polynomial order of the shape functions Doesn't really apply: these shape\n+functions are only piecewis...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:842\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:568\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: defaultbasisfactory.hh File Reference\n+dune-localfunctions: refinedp1.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,36 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    defaultbasisfactory.hh File Reference
    \n+
    refinedp1.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/localfunctions/utility/basismatrix.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::Identity
     
    struct  Dune::DefaultBasisFactory< PreBFactory, InterpolFactory, dim, dimR, SF, CF, PreBasisKeyExtractor >
     
    struct  Dune::DefaultBasisFactory< PreBFactory, InterpolFactory, dim, dimR, SF, CF, PreBasisKeyExtractor >::EvaluationBasisFactory< dd, FF >
    class  Dune::RefinedP1LocalFiniteElement< D, R, dim >
     Piecewise linear continuous Lagrange functions on a uniformly refined simplex element. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-defaultbasisfactory.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bb_\ba_\bs_\bi_\bs_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n+refinedp1.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bP_\br_\be_\bB_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bR_\b,\n- _\bS_\bF_\b,_\b _\bC_\bF_\b,_\b _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bK_\be_\by_\bE_\bx_\bt_\br_\ba_\bc_\bt_\bo_\br_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bP_\br_\be_\bB_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bR_\b,\n- _\bS_\bF_\b,_\b _\bC_\bF_\b,_\b _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bK_\be_\by_\bE_\bx_\bt_\br_\ba_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bd_\b,_\b _\bF_\bF_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Piecewise linear continuous Lagrange functions on a uniformly refined\n+ simplex element. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: defaultbasisfactory.hh Source File\n+dune-localfunctions: refinedp1.hh Source File\n \n \n \n \n \n \n \n@@ -70,151 +70,120 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    defaultbasisfactory.hh
    \n+
    refinedp1.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_DEFAULTBASISFACTORY_HH
    \n-
    6#define DUNE_DEFAULTBASISFACTORY_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <dune/common/exceptions.hh>
    \n-
    10
    \n-\n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n+\n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    \n-
    15 struct Identity
    \n-
    16 {
    \n-
    17 template <class T>
    \n-
    \n-
    18 static T apply( const T &t )
    \n-
    19 {
    \n-
    20 return t;
    \n-
    21 }
    \n-
    \n-
    22 };
    \n-
    \n-
    23 /************************************************
    \n-
    24 * Class for providing a factory for basis
    \n-
    25 * functions over the set of reference elements.
    \n-
    26 * Is based on the TopologyFactory but additionally
    \n-
    27 * provides rebindes of the field type.
    \n-
    28 * The user provides factories for the pre basis and the
    \n-
    29 * interpolations. The default construction process of
    \n-
    30 * the basis is performed in this class.
    \n-
    31 ************************************************/
    \n-
    32 template< class PreBFactory,
    \n-
    33 class InterpolFactory,
    \n-
    34 unsigned int dim, unsigned int dimR,
    \n-
    35 class SF, class CF,
    \n-
    36 class PreBasisKeyExtractor = Identity >
    \n-
    \n-\n-
    38 {
    \n-
    39 static const unsigned int dimension = dim;
    \n-
    40 static const unsigned int dimRange = dimR;
    \n-
    41 typedef SF StorageField;
    \n-
    42 typedef CF ComputeField;
    \n-
    43 typedef PreBFactory PreBasisFactory;
    \n-
    44 typedef typename PreBasisFactory::Object PreBasis;
    \n-
    45 typedef InterpolFactory InterpolationFactory;
    \n-
    46 typedef typename InterpolationFactory::Object Interpolation;
    \n-
    47 typedef typename PreBasisFactory::template EvaluationBasisFactory<dim,SF>::Type MonomialBasisFactory;
    \n-\n-\n-\n-
    51
    \n-
    52 typedef const Basis Object;
    \n-
    53 typedef typename InterpolationFactory::Key Key;
    \n-
    54 template <unsigned int dd, class FF>
    \n-
    \n-\n-
    56 {
    \n-
    57 typedef typename PreBasisFactory::template EvaluationBasisFactory<dd,FF>::Type
    \n-\n-
    59 };
    \n-
    \n-
    60
    \n-
    61 template< GeometryType::Id geometryId >
    \n-
    \n-
    62 static Object *create ( const Key &key )
    \n-
    63 {
    \n-
    64 const typename PreBasisFactory::Key preBasisKey = PreBasisKeyExtractor::apply(key);
    \n-
    65 const PreBasis *preBasis = PreBasisFactory::template create<geometryId>( preBasisKey );
    \n-
    66 const Interpolation *interpol = InterpolationFactory::template create<geometryId>( key );
    \n-
    67 BasisMatrix< PreBasis, Interpolation, ComputeField > matrix( *preBasis, *interpol );
    \n+\n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    27 template<class D, class R, int dim>
    \n+
    \n+\n+
    29 {
    \n+
    30 public:
    \n+\n+
    34 Impl::LagrangeSimplexLocalCoefficients<dim,2>,
    \n+
    35 Impl::LagrangeSimplexLocalInterpolation<Impl::LagrangeSimplexLocalBasis<D,R,dim,2> > > Traits;
    \n+
    36
    \n+\n+
    41
    \n+
    \n+
    44 const typename Traits::LocalBasisType& localBasis () const
    \n+
    45 {
    \n+
    46 return basis_;
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    \n+\n+
    52 {
    \n+
    53 return coefficients_;
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    \n+\n+
    59 {
    \n+
    60 return interpolation_;
    \n+
    61 }
    \n+
    \n+
    62
    \n+
    \n+
    64 unsigned int size () const
    \n+
    65 {
    \n+
    66 return basis_.size();
    \n+
    67 }
    \n+
    \n
    68
    \n-
    69 const MonomialBasis *monomialBasis = MonomialBasisFactory::template create< geometryId >( preBasis->order() );
    \n-
    70
    \n-
    71 Basis *basis = new Basis( *monomialBasis );
    \n-
    72
    \n-
    73 basis->fill( matrix );
    \n-
    74
    \n-
    75 InterpolationFactory::release(interpol);
    \n-
    76 PreBasisFactory::release(preBasis);
    \n-
    77
    \n-
    78 return basis;
    \n-
    79 }
    \n-
    \n-
    \n-
    81 static void release( Object *object)
    \n-
    82 {
    \n-
    83 const MonomialBasis *monomialBasis = &(object->basis());
    \n-
    84 delete object;
    \n-
    85 MonomialBasisFactory::release( monomialBasis );
    \n-
    86 }
    \n-
    \n-
    87 };
    \n-
    \n-
    88}
    \n-
    89
    \n-
    90#endif // #ifndef DUNE_DEFAULTBASISFACTORY_HH
    \n-\n+
    \n+
    71 static constexpr GeometryType type ()
    \n+
    72 {
    \n+
    73 return GeometryTypes::simplex(dim);
    \n+
    74 }
    \n+
    \n+
    75
    \n+
    76 private:
    \n+\n+
    78 Impl::LagrangeSimplexLocalCoefficients<dim,2> coefficients_;
    \n+
    79 // Yes, the template argument here really is LagrangeSimplexLocalBasis, even though this is not
    \n+
    80 // the local basis of the refined locale finite element: The reason is that LagrangeSimplexLocalInterpolation
    \n+
    81 // uses this argument to determine the polynomial order, and RefinedP1LocalBasis returns order 1
    \n+
    82 // whereas order 2 is needed here.
    \n+
    83 Impl::LagrangeSimplexLocalInterpolation<Impl::LagrangeSimplexLocalBasis<D,R,dim,2> > interpolation_;
    \n+
    84 };
    \n+
    \n+
    85
    \n+
    86}
    \n+
    87
    \n+
    88#endif // DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH
    \n+\n+
    Linear Lagrange shape functions on a uniformly refined reference element.
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition basisevaluator.hh:131
    \n-
    Definition basismatrix.hh:27
    \n-
    Definition defaultbasisfactory.hh:16
    \n-
    static T apply(const T &t)
    Definition defaultbasisfactory.hh:18
    \n-
    Definition defaultbasisfactory.hh:38
    \n-
    InterpolationFactory::Object Interpolation
    Definition defaultbasisfactory.hh:46
    \n-
    static const unsigned int dimRange
    Definition defaultbasisfactory.hh:40
    \n-
    static void release(Object *object)
    release the object returned by the create methods
    Definition defaultbasisfactory.hh:81
    \n-
    CF ComputeField
    Definition defaultbasisfactory.hh:42
    \n-
    PreBFactory PreBasisFactory
    Definition defaultbasisfactory.hh:43
    \n-
    InterpolationFactory::Key Key
    Definition defaultbasisfactory.hh:53
    \n-
    static const unsigned int dimension
    Definition defaultbasisfactory.hh:39
    \n-
    static Object * create(const Key &key)
    Definition defaultbasisfactory.hh:62
    \n-
    SF StorageField
    Definition defaultbasisfactory.hh:41
    \n-
    MonomialBasisFactory::Object MonomialBasis
    Definition defaultbasisfactory.hh:48
    \n-
    PreBasisFactory::Object PreBasis
    Definition defaultbasisfactory.hh:44
    \n-
    const Basis Object
    Definition defaultbasisfactory.hh:52
    \n-
    StandardEvaluator< MonomialBasis > Evaluator
    Definition defaultbasisfactory.hh:49
    \n-
    InterpolFactory InterpolationFactory
    Definition defaultbasisfactory.hh:45
    \n-
    PreBasisFactory::template EvaluationBasisFactory< dim, SF >::Type MonomialBasisFactory
    Definition defaultbasisfactory.hh:47
    \n-
    PolynomialBasisWithMatrix< Evaluator, SparseCoeffMatrix< SF, dimRange > > Basis
    Definition defaultbasisfactory.hh:50
    \n-
    Definition defaultbasisfactory.hh:56
    \n-
    PreBasisFactory::template EvaluationBasisFactory< dd, FF >::Type Type
    Definition defaultbasisfactory.hh:58
    \n-
    Definition monomialbasis.hh:612
    \n-
    static void release(Object *object)
    Definition monomialbasis.hh:769
    \n-
    Definition polynomialbasis.hh:348
    \n-
    void fill(const Matrix &matrix)
    Definition polynomialbasis.hh:366
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Piecewise linear continuous Lagrange functions on a uniformly refined simplex element.
    Definition refinedp1.hh:29
    \n+
    static constexpr GeometryType type()
    The element type that this finite element is defined on.
    Definition refinedp1.hh:71
    \n+
    unsigned int size() const
    Number of shape functions of this finite element.
    Definition refinedp1.hh:64
    \n+
    RefinedP1LocalFiniteElement()
    Default constructor.
    Definition refinedp1.hh:39
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Evaluates all degrees of freedom for a given function.
    Definition refinedp1.hh:58
    \n+
    LocalFiniteElementTraits< RefinedP1LocalBasis< D, R, dim >, Impl::LagrangeSimplexLocalCoefficients< dim, 2 >, Impl::LagrangeSimplexLocalInterpolation< Impl::LagrangeSimplexLocalBasis< D, R, dim, 2 > > > Traits
    Export all types used by this implementation.
    Definition refinedp1.hh:35
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Produces the assignments of the degrees of freedom to the element subentities.
    Definition refinedp1.hh:51
    \n+
    const Traits::LocalBasisType & localBasis() const
    The set of shape functions.
    Definition refinedp1.hh:44
    \n+
    Definition refinedp1localbasis.hh:23
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,188 +1,140 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-defaultbasisfactory.hh\n+ * _\br_\be_\bf_\bi_\bn_\be_\bd\n+refinedp1.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_DEFAULTBASISFACTORY_HH\n-6#define DUNE_DEFAULTBASISFACTORY_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH\n+6#define DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH\n 7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bb_\ba_\bs_\bi_\bs_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n 12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-_\b1_\b5 struct _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by\n-16 {\n-17 template \n-_\b1_\b8 static T _\ba_\bp_\bp_\bl_\by( const T &t )\n-19 {\n-20 return t;\n-21 }\n-22 };\n-23 /************************************************\n-24 * Class for providing a factory for basis\n-25 * functions over the set of reference elements.\n-26 * Is based on the TopologyFactory but additionally\n-27 * provides rebindes of the field type.\n-28 * The user provides factories for the pre basis and the\n-29 * interpolations. The default construction process of\n-30 * the basis is performed in this class.\n-31 ************************************************/\n-32 template< class PreBFactory,\n-33 class InterpolFactory,\n-34 unsigned int dim, unsigned int dimR,\n-35 class SF, class CF,\n-36 class PreBasisKeyExtractor = Identity >\n-_\b3_\b7 struct _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-38 {\n-_\b3_\b9 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-_\b4_\b0 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = dimR;\n-_\b4_\b1 typedef SF _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-_\b4_\b2 typedef CF _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd;\n-_\b4_\b3 typedef PreBFactory _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b4_\b4 typedef typename PreBasisFactory::Object _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n-_\b4_\b5 typedef InterpolFactory _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b4_\b6 typedef typename InterpolationFactory::Object _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-_\b4_\b7 typedef typename PreBasisFactory::template _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bi_\bm_\b,_\bS_\bF_\b>_\b:_\b:\n-_\bT_\by_\bp_\be _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b4_\b8 typedef typename _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs;\n-_\b4_\b9 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b _\b> _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br;\n-_\b5_\b0 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b,_\b _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bS_\bF_\b,\n-_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b _\b> > _\bB_\ba_\bs_\bi_\bs;\n-51\n-_\b5_\b2 typedef const _\bB_\ba_\bs_\bi_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n-_\b5_\b3 typedef typename InterpolationFactory::Key _\bK_\be_\by;\n-54 template \n-_\b5_\b5 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-56 {\n-57 typedef typename PreBasisFactory::template _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bd_\b,_\bF_\bF_\b>_\b:_\b:\n-_\bT_\by_\bp_\be\n-_\b5_\b8 _\bT_\by_\bp_\be;\n-59 };\n-60\n-61 template< GeometryType::Id geometryId >\n-_\b6_\b2 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n-63 {\n-64 const typename PreBasisFactory::Key preBasisKey = PreBasisKeyExtractor::\n-apply(key);\n-65 const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs *preBasis = PreBasisFactory::template create\n-( preBasisKey );\n-66 const _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn *interpol = InterpolationFactory::template\n-create( key );\n-67 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd_\b _\b> matrix( *preBasis,\n-*interpol );\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+27 template\n+_\b2_\b8 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+29 {\n+30 public:\n+33 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,\n+34 Impl::LagrangeSimplexLocalCoefficients,\n+_\b3_\b5 Impl::LagrangeSimplexLocalInterpolation > > _\bT_\br_\ba_\bi_\bt_\bs;\n+36\n+_\b3_\b9 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+40 {}\n+41\n+_\b4_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+45 {\n+46 return basis_;\n+47 }\n+48\n+_\b5_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+52 {\n+53 return coefficients_;\n+54 }\n+55\n+_\b5_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+59 {\n+60 return interpolation_;\n+61 }\n+62\n+_\b6_\b4 unsigned int _\bs_\bi_\bz_\be () const\n+65 {\n+66 return basis_.size();\n+67 }\n 68\n-69 const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs *monomialBasis = MonomialBasisFactory::template create<\n-geometryId >( preBasis->order() );\n-70\n-71 _\bB_\ba_\bs_\bi_\bs *basis = new _\bB_\ba_\bs_\bi_\bs( *monomialBasis );\n-72\n-73 basis->_\bf_\bi_\bl_\bl( matrix );\n-74\n-75 InterpolationFactory::release(interpol);\n-76 PreBasisFactory::release(preBasis);\n-77\n-78 return basis;\n-79 }\n-_\b8_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object)\n-82 {\n-83 const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs *monomialBasis = &(object->basis());\n-84 delete object;\n-85 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( monomialBasis );\n-86 }\n-87 };\n-88}\n-89\n-90#endif // #ifndef DUNE_DEFAULTBASISFACTORY_HH\n-_\bb_\ba_\bs_\bi_\bs_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh\n+_\b7_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+72 {\n+73 return GeometryTypes::simplex(dim);\n+74 }\n+75\n+76 private:\n+77 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> basis_;\n+78 Impl::LagrangeSimplexLocalCoefficients coefficients_;\n+79 // Yes, the template argument here really is LagrangeSimplexLocalBasis, even\n+though this is not\n+80 // the local basis of the refined locale finite element: The reason is that\n+LagrangeSimplexLocalInterpolation\n+81 // uses this argument to determine the polynomial order, and\n+RefinedP1LocalBasis returns order 1\n+82 // whereas order 2 is needed here.\n+83 Impl::LagrangeSimplexLocalInterpolation > interpolation_;\n+84 };\n+85\n+86}\n+87\n+88#endif // DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+Linear Lagrange shape functions on a uniformly refined reference element.\n+_\bp_\b0_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static T apply(const T &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-InterpolationFactory::Object Interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const unsigned int dimRange\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-release the object returned by the create methods\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd\n-CF ComputeField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-PreBFactory PreBasisFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-InterpolationFactory::Key Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n-SF StorageField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-MonomialBasisFactory::Object MonomialBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n-PreBasisFactory::Object PreBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const Basis Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-StandardEvaluator< MonomialBasis > Evaluator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-InterpolFactory InterpolationFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-PreBasisFactory::template EvaluationBasisFactory< dim, SF >::Type\n-MonomialBasisFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-PolynomialBasisWithMatrix< Evaluator, SparseCoeffMatrix< SF, dimRange > > Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n-PreBasisFactory::template EvaluationBasisFactory< dd, FF >::Type Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:612\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:769\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n-void fill(const Matrix &matrix)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:366\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Piecewise linear continuous Lagrange functions on a uniformly refined simplex\n+element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+The element type that this finite element is defined on.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions of this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RefinedP1LocalFiniteElement()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+Evaluates all degrees of freedom for a given function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RefinedP1LocalBasis< D, R, dim >, Impl::\n+LagrangeSimplexLocalCoefficients< dim, 2 >, Impl::\n+LagrangeSimplexLocalInterpolation< Impl::LagrangeSimplexLocalBasis< D, R, dim,\n+2 > > > Traits\n+Export all types used by this implementation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+Produces the assignments of the degrees of freedom to the element subentities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+The set of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:23\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lfematrix.hh File Reference\n+dune-localfunctions: crouzeixraviart.hh File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,46 @@\n \n \n \n \n \n \n \n
    \n \n-
    lfematrix.hh File Reference
    \n+Namespaces
    \n+
    crouzeixraviart.hh File Reference
    \n \n
    \n-
    #include <cassert>
    \n-#include <vector>
    \n-#include "field.hh"
    \n+
    #include <array>
    \n+#include <numeric>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    class  Dune::LFEMatrix< F >
    class  Dune::CrouzeixRaviartLocalFiniteElement< D, R, dim >
     Crouzeix-Raviart finite element. More...
     
    \n \n \n \n-

    \n Namespaces

    namespace  Dune
     
    \n-\n-\n-\n-\n

    \n-Functions

    template<class Field >
    std::ostream & Dune::operator<< (std::ostream &out, const LFEMatrix< Field > &mat)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-lfematrix.hh File Reference\n-#include \n-#include \n-#include \"_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\"\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+crouzeixraviart.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Crouzeix-Raviart finite element. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx< Field >\n- &mat)\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lfematrix.hh Source File\n+dune-localfunctions: crouzeixraviart.hh Source File\n \n \n \n \n \n \n \n@@ -70,228 +70,230 @@\n
    \n \n \n \n \n \n \n
    \n-
    lfematrix.hh
    \n+
    crouzeixraviart.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <vector>
    \n+
    8#include <array>
    \n+
    9#include <numeric>
    \n
    10
    \n-
    11#include "field.hh"
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    16 template< class F >
    \n-
    \n-
    17 class [[deprecated("The usage of LFEMatrix is discouraged. Use DynamicMatrix instead")]] LFEMatrix
    \n-
    18 {
    \n-
    19 typedef std::vector< F > Row;
    \n-
    20 typedef std::vector<Row> RealMatrix;
    \n-
    21
    \n-
    22 public:
    \n-
    23 typedef F Field;
    \n-
    24
    \n-
    \n-
    25 operator const RealMatrix & () const
    \n-
    26 {
    \n-
    27 return matrix_;
    \n-
    28 }
    \n-
    \n-
    29
    \n-
    \n-
    30 operator RealMatrix & ()
    \n-
    31 {
    \n-
    32 return matrix_;
    \n-
    33 }
    \n-
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12#include <dune/common/fvector.hh>
    \n+
    13
    \n+
    14#include <dune/geometry/type.hh>
    \n+
    15#include <dune/geometry/referenceelements.hh>
    \n+
    16
    \n+\n+\n+\n+
    20
    \n+
    21namespace Dune { namespace Impl
    \n+
    22{
    \n+
    29 template<class D, class R, unsigned int dim>
    \n+
    30 class CrouzeixRaviartLocalBasis
    \n+
    31 {
    \n+
    32 public:
    \n+
    33 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n
    34
    \n-
    35 template <class Vector>
    \n-
    \n-
    36 void row( const unsigned int row, Vector &vec ) const
    \n-
    37 {
    \n-
    38 assert(row<rows());
    \n-
    39 for (int i=0; i<cols(); ++i)
    \n-
    40 field_cast(matrix_[row][i], vec[i]);
    \n-
    41 }
    \n-
    \n-
    42
    \n-
    \n-
    43 const Field &operator() ( const unsigned int row, const unsigned int col ) const
    \n-
    44 {
    \n-
    45 assert(row<rows());
    \n-
    46 assert(col<cols());
    \n-
    47 return matrix_[ row ][ col ];
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    \n-
    50 Field &operator() ( const unsigned int row, const unsigned int col )
    \n-
    51 {
    \n-
    52 assert(row<rows());
    \n-
    53 assert(col<cols());
    \n-
    54 return matrix_[ row ][ col ];
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    \n-
    57 unsigned int rows () const
    \n-
    58 {
    \n-
    59 return rows_;
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    \n-
    62 unsigned int cols () const
    \n-
    63 {
    \n-
    64 return cols_;
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    \n-
    67 const Field *rowPtr ( const unsigned int row ) const
    \n-
    68 {
    \n-
    69 assert(row<rows());
    \n-
    70 return &(matrix_[row][0]);
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    73 Field *rowPtr ( const unsigned int row )
    \n-
    74 {
    \n-
    75 assert(row<rows());
    \n-
    76 return &(matrix_[row][0]);
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    79 void resize ( const unsigned int rows, const unsigned int cols )
    \n-
    80 {
    \n-
    81 matrix_.resize(rows);
    \n-
    82 for (unsigned int i=0; i<rows; ++i)
    \n-
    83 matrix_[i].resize(cols);
    \n-
    84 rows_ = rows;
    \n-
    85 cols_ = cols;
    \n-
    86 }
    \n-
    \n-
    87
    \n-
    \n-
    88 bool invert ()
    \n-
    89 {
    \n-
    90 using std::abs;
    \n-
    91 assert( rows() == cols() );
    \n-
    92 std::vector<unsigned int> p(rows());
    \n-
    93 for (unsigned int j=0; j<rows(); ++j)
    \n-
    94 p[j] = j;
    \n-
    95 for (unsigned int j=0; j<rows(); ++j)
    \n-
    96 {
    \n-
    97 // pivot search
    \n-
    98 unsigned int r = j;
    \n-
    99 Field max = abs( (*this)(j,j) );
    \n-
    100 for (unsigned int i=j+1; i<rows(); ++i)
    \n-
    101 {
    \n-
    102 if ( abs( (*this)(i,j) ) > max )
    \n-
    103 {
    \n-
    104 max = abs( (*this)(i,j) );
    \n-
    105 r = i;
    \n-
    106 }
    \n-
    107 }
    \n-
    108 if (max == Zero<Field>())
    \n-
    109 return false;
    \n-
    110 // row swap
    \n-
    111 if (r > j)
    \n-
    112 {
    \n-
    113 for (unsigned int k=0; k<cols(); ++k)
    \n-
    114 std::swap( (*this)(j,k), (*this)(r,k) );
    \n-
    115 std::swap( p[j], p[r] );
    \n-
    116 }
    \n-
    117 // transformation
    \n-
    118 Field hr = Unity<Field>()/(*this)(j,j);
    \n-
    119 for (unsigned int i=0; i<rows(); ++i)
    \n-
    120 (*this)(i,j) *= hr;
    \n-
    121 (*this)(j,j) = hr;
    \n-
    122 for (unsigned int k=0; k<cols(); ++k)
    \n-
    123 {
    \n-
    124 if (k==j) continue;
    \n-
    125 for (unsigned int i=0; i<rows(); ++i)
    \n-
    126 {
    \n-
    127 if (i==j) continue;
    \n-
    128 (*this)(i,k) -= (*this)(i,j)*(*this)(j,k);
    \n-
    129 }
    \n-
    130 (*this)(j,k) *= -hr;
    \n-
    131 }
    \n-
    132 }
    \n-
    133 // column exchange
    \n-
    134 Row hv(rows());
    \n-
    135 for (unsigned int i=0; i<rows(); ++i)
    \n-
    136 {
    \n-
    137 for (unsigned int k=0; k<rows(); ++k)
    \n-
    138 hv[ p[k] ] = (*this)(i,k);
    \n-
    139 for (unsigned int k=0; k<rows(); ++k)
    \n-
    140 (*this)(i,k) = hv[k];
    \n-
    141 }
    \n-
    142 return true;
    \n-
    143 }
    \n-
    \n-
    144
    \n-
    145 private:
    \n-
    146 RealMatrix matrix_;
    \n-
    147 unsigned int cols_,rows_;
    \n-
    148 };
    \n-
    \n-
    149
    \n-
    150 template< class Field >
    \n-
    \n-
    151 inline std::ostream &operator<<(std::ostream &out, const LFEMatrix<Field> &mat)
    \n+
    37 static constexpr unsigned int size ()
    \n+
    38 {
    \n+
    39 return dim+1;
    \n+
    40 }
    \n+
    41
    \n+
    43 void evaluateFunction(const typename Traits::DomainType& x,
    \n+
    44 std::vector<typename Traits::RangeType>& out) const
    \n+
    45 {
    \n+
    46 out.resize(size());
    \n+
    47
    \n+
    48 std::fill(out.begin(), out.end()-1, 1.0);
    \n+
    49 out.back() = 1.0-dim;
    \n+
    50
    \n+
    51 for (unsigned int i=0; i<dim; i++)
    \n+
    52 {
    \n+
    53 out[i] -= dim * x[dim-i-1];
    \n+
    54 out.back() += dim*x[i];
    \n+
    55 }
    \n+
    56 }
    \n+
    57
    \n+
    63 void evaluateJacobian(const typename Traits::DomainType& x,
    \n+
    64 std::vector<typename Traits::JacobianType>& out) const
    \n+
    65 {
    \n+
    66 out.resize(size());
    \n+
    67
    \n+
    68 for (unsigned i=0; i<dim; i++)
    \n+
    69 for (unsigned j=0; j<dim; j++)
    \n+
    70 out[i][0][j] = (i==(dim-1-j)) ? -(double)dim : 0;
    \n+
    71
    \n+
    72 std::fill(out.back()[0].begin(), out.back()[0].end(), dim);
    \n+
    73 }
    \n+
    74
    \n+
    81 void partial(const std::array<unsigned int,dim>& order,
    \n+
    82 const typename Traits::DomainType& in,
    \n+
    83 std::vector<typename Traits::RangeType>& out) const
    \n+
    84 {
    \n+
    85 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    86
    \n+
    87 out.resize(size());
    \n+
    88
    \n+
    89 if (totalOrder == 0) {
    \n+
    90 evaluateFunction(in, out);
    \n+
    91 return;
    \n+
    92 }
    \n+
    93
    \n+
    94 if (totalOrder==1)
    \n+
    95 {
    \n+
    96 auto direction = std::find(order.begin(), order.end(), 1)-order.begin();
    \n+
    97
    \n+
    98 for (unsigned int i=0; i<dim; i++)
    \n+
    99 out[i] = (i==(dim-1-direction)) ? -(double)dim : 0.0;
    \n+
    100
    \n+
    101 out.back()[0] = dim;
    \n+
    102 }
    \n+
    103 else // all higher order derivatives are zero
    \n+
    104 std::fill(out.begin(), out.end(), 0);
    \n+
    105 }
    \n+
    106
    \n+
    108 static constexpr unsigned int order ()
    \n+
    109 {
    \n+
    110 return 1;
    \n+
    111 }
    \n+
    112 };
    \n+
    113
    \n+
    118 template<unsigned int dim>
    \n+
    119 class CrouzeixRaviartLocalCoefficients
    \n+
    120 {
    \n+
    121 public:
    \n+
    123 CrouzeixRaviartLocalCoefficients ()
    \n+
    124 : localKeys_(size())
    \n+
    125 {
    \n+
    126 for (std::size_t i=0; i<size(); i++)
    \n+
    127 localKeys_[i] = LocalKey(i,1,0);
    \n+
    128 }
    \n+
    129
    \n+
    131 static constexpr std::size_t size ()
    \n+
    132 {
    \n+
    133 return dim+1;
    \n+
    134 }
    \n+
    135
    \n+
    137 const LocalKey& localKey (std::size_t i) const
    \n+
    138 {
    \n+
    139 return localKeys_[i];
    \n+
    140 }
    \n+
    141
    \n+
    142 private:
    \n+
    143 std::vector<LocalKey> localKeys_;
    \n+
    144 };
    \n+
    145
    \n+
    150 template<class LocalBasis>
    \n+
    151 class CrouzeixRaviartLocalInterpolation
    \n
    152 {
    \n-
    153 for (unsigned int r=0; r<mat.rows(); ++r)
    \n-
    154 {
    \n-
    155 out << field_cast<double>(mat(r,0));
    \n-
    156 for (unsigned int c=1; c<mat.cols(); ++c)
    \n-
    157 {
    \n-
    158 out << " , " << field_cast<double>(mat(r,c));
    \n-
    159 }
    \n-
    160 out << std::endl;
    \n-
    161 }
    \n-
    162 return out;
    \n-
    163 }
    \n-
    \n-
    164}
    \n-
    165
    \n-
    166#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \n-\n+
    153 public:
    \n+
    154
    \n+
    162 template<typename F, typename C>
    \n+
    163 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    164 {
    \n+
    165 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n+
    166
    \n+
    167 out.resize(LocalBasis::size());
    \n+
    168
    \n+
    169 // Evaluate at the facet midpoints
    \n+
    170 auto refSimplex = ReferenceElements<typename LocalBasis::Traits::DomainFieldType,dim>::simplex();
    \n+
    171 for (int i=0; i<refSimplex.size(1); i++)
    \n+
    172 out[i] = f(refSimplex.template geometry<1>(i).center());
    \n+
    173 }
    \n+
    174 };
    \n+
    175
    \n+
    176} } // namespace Dune::Impl
    \n+
    177
    \n+
    178namespace Dune
    \n+
    179{
    \n+
    186 template<class D, class R, int dim>
    \n+
    \n+\n+
    188 {
    \n+
    189 public:
    \n+\n+
    193 Impl::CrouzeixRaviartLocalCoefficients<dim>,
    \n+
    194 Impl::CrouzeixRaviartLocalInterpolation<Impl::CrouzeixRaviartLocalBasis<D,R,dim> > >;
    \n+
    195
    \n+
    \n+
    198 const typename Traits::LocalBasisType& localBasis() const
    \n+
    199 {
    \n+
    200 return basis_;
    \n+
    201 }
    \n+
    \n+
    202
    \n+
    \n+\n+
    206 {
    \n+
    207 return coefficients_;
    \n+
    208 }
    \n+
    \n+
    209
    \n+
    \n+\n+
    213 {
    \n+
    214 return interpolation_;
    \n+
    215 }
    \n+
    \n+
    216
    \n+
    \n+
    218 static constexpr std::size_t size()
    \n+
    219 {
    \n+
    220 return dim+1;
    \n+
    221 }
    \n+
    \n+
    222
    \n+
    \n+
    225 static constexpr GeometryType type()
    \n+
    226 {
    \n+
    227 return GeometryTypes::simplex(dim);
    \n+
    228 }
    \n+
    \n+
    229
    \n+
    230 private:
    \n+
    231 Impl::CrouzeixRaviartLocalBasis<D,R,dim> basis_;
    \n+
    232 Impl::CrouzeixRaviartLocalCoefficients<dim> coefficients_;
    \n+
    233 Impl::CrouzeixRaviartLocalInterpolation<Impl::CrouzeixRaviartLocalBasis<D,R,dim> > interpolation_;
    \n+
    234 };
    \n+
    \n+
    235
    \n+
    236} // namespace Dune
    \n+
    237
    \n+
    238#endif // DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)
    Definition lfematrix.hh:151
    \n-
    A class representing the unit of a given Field.
    Definition field.hh:30
    \n-
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n-
    Definition lfematrix.hh:18
    \n-
    Field * rowPtr(const unsigned int row)
    Definition lfematrix.hh:73
    \n-
    unsigned int cols() const
    Definition lfematrix.hh:62
    \n-
    const Field * rowPtr(const unsigned int row) const
    Definition lfematrix.hh:67
    \n-
    void resize(const unsigned int rows, const unsigned int cols)
    Definition lfematrix.hh:79
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition lfematrix.hh:36
    \n-
    unsigned int rows() const
    Definition lfematrix.hh:57
    \n-
    bool invert()
    Definition lfematrix.hh:88
    \n-
    F Field
    Definition lfematrix.hh:23
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Crouzeix-Raviart finite element.
    Definition crouzeixraviart.hh:188
    \n+
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition crouzeixraviart.hh:225
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition crouzeixraviart.hh:205
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition crouzeixraviart.hh:212
    \n+
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition crouzeixraviart.hh:198
    \n+
    static constexpr std::size_t size()
    The number of shape functions.
    Definition crouzeixraviart.hh:218
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,223 +1,243 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-lfematrix.hh\n+crouzeixraviart.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH\n-6#define DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH\n+6#define DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH\n 7\n-8#include \n-9#include \n+8#include \n+9#include \n 10\n-11#include \"_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-16 template< class F >\n-_\b1_\b7 class [[deprecated(\"The usage of LFEMatrix is discouraged. Use DynamicMatrix\n-instead\")]] _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx\n-18 {\n-19 typedef std::vector< F > Row;\n-20 typedef std::vector RealMatrix;\n-21\n-22 public:\n-_\b2_\b3 typedef F _\bF_\bi_\be_\bl_\bd;\n-24\n-_\b2_\b5 operator const RealMatrix & () const\n-26 {\n-27 return matrix_;\n-28 }\n-29\n-_\b3_\b0 operator RealMatrix & ()\n+11#include \n+12#include \n+13\n+14#include \n+15#include \n+16\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be { namespace Impl\n+22{\n+29 template\n+30 class CrouzeixRaviartLocalBasis\n 31 {\n-32 return matrix_;\n-33 }\n+32 public:\n+33 using Traits =\n+LocalBasisTraits,R,1,FieldVector,FieldMatrix\n+>;\n 34\n-35 template \n-_\b3_\b6 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n-37 {\n-38 assert(row& out) const\n+45 {\n+46 out.resize(size());\n+47\n+48 std::fill(out.begin(), out.end()-1, 1.0);\n+49 out.back() = 1.0-dim;\n+50\n+51 for (unsigned int i=0; i p(rows());\n-93 for (unsigned int j=0; j max )\n-103 {\n-104 max = abs( (*this)(i,j) );\n-105 r = i;\n-106 }\n-107 }\n-108 if (max == _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>())\n-109 return false;\n-110 // row swap\n-111 if (r > j)\n-112 {\n-113 for (unsigned int k=0; k()/(*this)(j,j);\n-119 for (unsigned int i=0; i\n-_\b1_\b5_\b1 inline std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream &out, const _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b>\n-&mat)\n+56 }\n+57\n+63 void evaluateJacobian(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n+64 std::vector& out) const\n+65 {\n+66 out.resize(size());\n+67\n+68 for (unsigned i=0; i& order,\n+82 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+83 std::vector& out) const\n+84 {\n+85 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+86\n+87 out.resize(size());\n+88\n+89 if (totalOrder == 0) {\n+90 evaluateFunction(in, out);\n+91 return;\n+92 }\n+93\n+94 if (totalOrder==1)\n+95 {\n+96 auto direction = std::find(order.begin(), order.end(), 1)-order.begin();\n+97\n+98 for (unsigned int i=0; i\n+119 class CrouzeixRaviartLocalCoefficients\n+120 {\n+121 public:\n+123 CrouzeixRaviartLocalCoefficients ()\n+124 : localKeys_(size())\n+125 {\n+126 for (std::size_t i=0; i localKeys_;\n+144 };\n+145\n+150 template\n+151 class CrouzeixRaviartLocalInterpolation\n 152 {\n-153 for (unsigned int r=0; r(mat(r,0));\n-156 for (unsigned int c=1; c(mat(r,c));\n-159 }\n-160 out << std::endl;\n-161 }\n-162 return out;\n-163 }\n-164}\n-165\n-166#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+153 public:\n+154\n+162 template\n+163 void interpolate (const F& f, std::vector& out) const\n+164 {\n+165 constexpr auto dim = LocalBasis::Traits::dimDomain;\n+166\n+167 out.resize(LocalBasis::size());\n+168\n+169 // Evaluate at the facet midpoints\n+170 auto refSimplex = ReferenceElements::simplex();\n+171 for (int i=0; i(i).center());\n+173 }\n+174 };\n+175\n+176} } // namespace Dune::Impl\n+177\n+178namespace _\bD_\bu_\bn_\be\n+179{\n+186 template\n+_\b1_\b8_\b7 class _\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+188 {\n+189 public:\n+_\b1_\b9_\b2 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n+_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,\n+193 Impl::CrouzeixRaviartLocalCoefficients,\n+194 Impl::CrouzeixRaviartLocalInterpolation > >;\n+195\n+_\b1_\b9_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() const\n+199 {\n+200 return basis_;\n+201 }\n+202\n+_\b2_\b0_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n+206 {\n+207 return coefficients_;\n+208 }\n+209\n+_\b2_\b1_\b2 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n+213 {\n+214 return interpolation_;\n+215 }\n+216\n+_\b2_\b1_\b8 static constexpr std::size_t _\bs_\bi_\bz_\be()\n+219 {\n+220 return dim+1;\n+221 }\n+222\n+_\b2_\b2_\b5 static constexpr GeometryType _\bt_\by_\bp_\be()\n+226 {\n+227 return GeometryTypes::simplex(dim);\n+228 }\n+229\n+230 private:\n+231 Impl::CrouzeixRaviartLocalBasis basis_;\n+232 Impl::CrouzeixRaviartLocalCoefficients coefficients_;\n+233 Impl::CrouzeixRaviartLocalInterpolation > interpolation_;\n+234 };\n+235\n+236} // namespace Dune\n+237\n+238#endif // DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n-std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by\n-A class representing the unit of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n-A class representing the zero of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bP_\bt_\br\n-Field * rowPtr(const unsigned int row)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\bs\n-unsigned int cols() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bP_\bt_\br\n-const Field * rowPtr(const unsigned int row) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize(const unsigned int rows, const unsigned int cols)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw\n-void row(const unsigned int row, Vector &vec) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs\n-unsigned int rows() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt\n-bool invert()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Crouzeix-Raviart finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:188\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+The reference element that the local finite element is defined on.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+Returns the assignment of the degrees of freedom to the element subentities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:205\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+Returns object that evaluates degrees of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:212\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+Returns the local basis, i.e., the set of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:198\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size()\n+The number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:218\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basismatrix.hh File Reference\n+dune-localfunctions: emptypoints.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    basismatrix.hh File Reference
    \n+
    emptypoints.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <dune/common/dynmatrix.hh>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/localfunctions/utility/monomialbasis.hh>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n+
    #include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n \n-\n-\n-\n-\n-\n-\n-\n+\n \n

    \n Classes

    struct  Dune::BasisMatrixBase< PreBasis, Interpolation, Field >
    class  Dune::LagrangePoint< F, dim >
     
    struct  Dune::BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field >
     
    struct  Dune::BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field >
     
    struct  Dune::BasisMatrix< const PolynomialBasis< Eval, CM, D, R >, Interpolation, Field >
     
    struct  Dune::BasisMatrix< const PolynomialBasisWithMatrix< Eval, CM >, Interpolation, Field >
    class  Dune::EmptyPointSet< F, dim >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,35 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-basismatrix.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+emptypoints.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\b _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,\n- _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,\n- _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,\n- _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,\n- _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basismatrix.hh Source File\n+dune-localfunctions: emptypoints.hh Source File\n \n \n \n \n \n \n \n@@ -70,277 +70,185 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    basismatrix.hh
    \n+
    emptypoints.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_BASISMATRIX_HH
    \n-
    6#define DUNE_BASISMATRIX_HH
    \n+
    5#ifndef DUNE_LAGRANGE_EMPTYPOINTS_HH
    \n+
    6#define DUNE_LAGRANGE_EMPTYPOINTS_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <dune/common/dynmatrix.hh>
    \n-
    10#include <dune/common/exceptions.hh>
    \n-
    11
    \n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17 /****************************************
    \n-
    18 * A dense matrix representation of a ''polynomial''
    \n-
    19 * basis. Its represent a basis as a linear
    \n-
    20 * combination of a second basis, i.e., a
    \n-
    21 * monomial basis. It is simular to the PolynomialBasis
    \n-
    22 * but it not derived from the LocalBasis class.
    \n-
    23 * It is used to define a ''pre basis''.
    \n-
    24 ****************************************/
    \n-
    25 template< class PreBasis, class Interpolation,
    \n-
    26 class Field >
    \n-\n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/common/fvector.hh>
    \n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    16 template< class F, unsigned int dim >
    \n+
    \n+\n+
    18 {
    \n+\n+
    20
    \n+
    21 template< class, class >
    \n+\n+
    23
    \n+
    24 public:
    \n+
    25 static const int dimension = dim;
    \n+
    26
    \n+
    27 typedef F Field;
    \n
    28
    \n-
    29 template< class PreBasis, class Interpolation,
    \n-
    30 class Field >
    \n-
    \n-
    31 struct BasisMatrixBase : public DynamicMatrix<Field>
    \n-
    32 {
    \n-
    33 typedef DynamicMatrix<Field> Matrix;
    \n-
    34
    \n-
    \n-
    35 BasisMatrixBase( const PreBasis& preBasis,
    \n-
    36 const Interpolation& localInterpolation )
    \n-
    37 : cols_(preBasis.size())
    \n-
    38 {
    \n-
    39 localInterpolation.interpolate( preBasis, *this );
    \n-
    40 this->invert();
    \n-
    41 }
    \n-
    \n-
    \n-
    42 unsigned int cols () const
    \n-
    43 {
    \n-
    44 return cols_;
    \n-
    45 }
    \n-
    \n-
    \n-
    46 unsigned int rows () const
    \n-
    47 {
    \n-
    48 return Matrix::rows();
    \n-
    49 }
    \n-
    \n-
    50 private:
    \n-
    51 unsigned int cols_;
    \n-
    52 };
    \n-
    \n+
    29 typedef FieldVector< Field, dimension > Vector;
    \n+
    30
    \n+
    \n+
    31 const Vector &point () const
    \n+
    32 {
    \n+
    33 return point_;
    \n+
    34 }
    \n+
    \n+
    35
    \n+
    \n+
    36 const LocalKey &localKey () const
    \n+
    37 {
    \n+
    38 return localKey_;
    \n+
    39 }
    \n+
    \n+
    40
    \n+
    \n+
    41 const Field weight () const
    \n+
    42 {
    \n+
    43 return weight_;
    \n+
    44 }
    \n+
    \n+
    45
    \n+\n+\n+\n+
    49 };
    \n+
    \n+
    50
    \n+
    51 // EmptyPointSet
    \n+
    52 // --------------
    \n
    53
    \n-
    54 template< GeometryType::Id geometryId, class F,
    \n-
    55 class Interpolation,
    \n-
    56 class Field >
    \n-
    \n-
    57 struct BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field >
    \n-
    58 : public BasisMatrixBase< const MonomialBasis< geometryId, F >, Interpolation, Field >
    \n-
    59 {
    \n-\n-\n-
    62 typedef typename Base::Matrix Matrix;
    \n+
    54 template< class F, unsigned int dim >
    \n+
    \n+\n+
    56 {
    \n+\n+
    58
    \n+
    59 public:
    \n+
    60 typedef F Field;
    \n+
    61
    \n+
    62 static const unsigned int dimension = dim;
    \n
    63
    \n-
    \n-
    64 BasisMatrix( const PreBasis& preBasis,
    \n-
    65 const Interpolation& localInterpolation )
    \n-
    66 : Base(preBasis, localInterpolation)
    \n-
    67 {}
    \n-
    \n-
    68 template <class Vector>
    \n+\n+
    65
    \n+
    66 typedef typename std::vector< LagrangePoint >::const_iterator iterator;
    \n+
    67
    \n+
    68 protected:
    \n
    \n-
    69 void row( const unsigned int row, Vector &vec ) const
    \n-
    70 {
    \n-
    71 const unsigned int N = Matrix::rows();
    \n-
    72 assert( Matrix::cols() == N && vec.size() == N );
    \n-
    73 // note: that the transposed matrix is computed,
    \n-
    74 // and is square
    \n-
    75 for (unsigned int i=0; i<N; ++i)
    \n-
    76 field_cast((*this)[i][row],vec[i]);
    \n-
    77 }
    \n-
    \n-
    78 };
    \n-
    \n-
    79 template< int dim, class F,
    \n-
    80 class Interpolation,
    \n-
    81 class Field >
    \n-
    \n-
    82 struct BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field >
    \n-
    83 : public BasisMatrixBase< const VirtualMonomialBasis< dim, F >, Interpolation, Field >
    \n-
    84 {
    \n-\n-\n-
    87 typedef typename Base::Matrix Matrix;
    \n-
    88
    \n-
    \n-
    89 BasisMatrix( const PreBasis& preBasis,
    \n-
    90 const Interpolation& localInterpolation )
    \n-
    91 : Base(preBasis, localInterpolation)
    \n-
    92 {}
    \n-
    \n-
    93 template <class Vector>
    \n-
    \n-
    94 void row( const unsigned int row, Vector &vec ) const
    \n-
    95 {
    \n-
    96 const unsigned int N = Matrix::rows();
    \n-
    97 assert( Matrix::cols() == N && vec.size() == N );
    \n-
    98 // note: that the transposed matrix is computed,
    \n-
    99 // and is square
    \n-
    100 for (unsigned int i=0; i<N; ++i)
    \n-
    101 field_cast((*this)[i][row],vec[i]);
    \n-
    102 }
    \n-
    \n-
    103 };
    \n-
    \n-
    104 template< class Eval, class CM, class D, class R,
    \n-
    105 class Interpolation,
    \n-
    106 class Field >
    \n-
    \n-
    107 struct BasisMatrix< const PolynomialBasis<Eval,CM,D,R>, Interpolation, Field >
    \n-
    108 : public BasisMatrixBase< const PolynomialBasis<Eval,CM,D,R>, Interpolation, Field >
    \n-
    109 {
    \n-\n-\n-
    112 typedef typename Base::Matrix Matrix;
    \n-
    113
    \n-
    \n-
    114 BasisMatrix( const PreBasis& preBasis,
    \n-
    115 const Interpolation& localInterpolation )
    \n-
    116 : Base(preBasis, localInterpolation),
    \n-
    117 preBasis_(preBasis)
    \n-
    118 {}
    \n-
    \n-
    \n-
    119 unsigned int cols() const
    \n-
    120 {
    \n-
    121 return preBasis_.matrix().baseSize() ;
    \n-
    122 }
    \n-
    \n-
    123 template <class Vector>
    \n-
    \n-
    124 void row( const unsigned int row, Vector &vec ) const
    \n-
    125 {
    \n-
    126 assert( Matrix::rows() == Matrix::cols() );
    \n-
    127 assert( vec.size() == preBasis_.matrix().baseSize() );
    \n-
    128 assert( Matrix::cols() == preBasis_.size() );
    \n-
    129 for (unsigned int j=0; j<Matrix::cols(); ++j)
    \n-
    130 vec[j] = 0;
    \n-
    131 for (unsigned int i=0; i<Matrix::rows(); ++i)
    \n-
    132 preBasis_.matrix().
    \n-
    133 addRow(i,(*this)[i][row],vec);
    \n-
    134 }
    \n-
    \n-
    135 private:
    \n-
    136 const PreBasis& preBasis_;
    \n-
    137 };
    \n-
    \n-
    138 template< class Eval, class CM,
    \n-
    139 class Interpolation,
    \n-
    140 class Field >
    \n-
    \n-
    141 struct BasisMatrix< const PolynomialBasisWithMatrix<Eval,CM>, Interpolation, Field >
    \n-
    142 : public BasisMatrixBase< const PolynomialBasisWithMatrix<Eval,CM>, Interpolation, Field >
    \n-
    143 {
    \n-\n-\n-
    146 typedef typename Base::Matrix Matrix;
    \n-
    147
    \n-
    \n-
    148 BasisMatrix( const PreBasis& preBasis,
    \n-
    149 const Interpolation& localInterpolation )
    \n-
    150 : Base(preBasis, localInterpolation),
    \n-
    151 preBasis_(preBasis)
    \n-
    152 {}
    \n-
    \n-
    \n-
    153 unsigned int cols() const
    \n-
    154 {
    \n-
    155 return preBasis_.matrix().baseSize() ;
    \n-
    156 }
    \n-
    \n-
    \n-
    157 unsigned int rows () const
    \n-
    158 {
    \n-
    159 assert( Matrix::rows() == preBasis_.matrix().size() );
    \n-
    160 return preBasis_.matrix().size()*CM::blockSize ;
    \n-
    161 }
    \n-
    \n-
    162 template <class Vector>
    \n-
    \n-
    163 void row( const unsigned int row, Vector &vec ) const
    \n-
    164 {
    \n-
    165 unsigned int r = row / CM::blockSize;
    \n-
    166 assert( r < Matrix::rows() );
    \n-
    167 assert( Matrix::rows() == Matrix::cols() );
    \n-
    168 assert( vec.size() == preBasis_.matrix().baseSize() );
    \n-
    169 assert( Matrix::cols() == preBasis_.size() );
    \n-
    170 for (unsigned int j=0; j<vec.size(); ++j)
    \n-
    171 vec[j] = 0;
    \n-
    172 for (unsigned int i=0; i<Matrix::rows(); ++i)
    \n-
    173 preBasis_.matrix().
    \n-
    174 addRow(i*CM::blockSize+row%CM::blockSize,(*this)[i][r],vec);
    \n-
    175 }
    \n-
    \n-
    176 private:
    \n-
    177 const PreBasis& preBasis_;
    \n-
    178 };
    \n-
    \n-
    179}
    \n-
    180
    \n-
    181#endif // DUNE_BASISMATRIX_HH
    \n-\n-\n+
    69 EmptyPointSet ( const std::size_t order )
    \n+
    70 : order_( order )
    \n+
    71 {}
    \n+
    \n+
    72
    \n+
    73 public:
    \n+
    \n+
    74 const LagrangePoint &operator[] ( const unsigned int i ) const
    \n+
    75 {
    \n+
    76 assert( i < size() );
    \n+
    77 return points_[ i ];
    \n+
    78 }
    \n+
    \n+
    79
    \n+
    \n+
    80 iterator begin () const
    \n+
    81 {
    \n+
    82 return points_.begin();
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    \n+
    85 iterator end () const
    \n+
    86 {
    \n+
    87 return points_.end();
    \n+
    88 }
    \n+
    \n+
    89
    \n+
    \n+
    90 const LocalKey &localKey ( const unsigned int i ) const
    \n+
    91 {
    \n+
    92 return (*this)[ i ].localKey();
    \n+
    93 }
    \n+
    \n+
    94
    \n+
    \n+
    95 std::size_t order () const
    \n+
    96 {
    \n+
    97 return order_;
    \n+
    98 }
    \n+
    \n+
    99
    \n+
    \n+
    100 std::size_t size () const
    \n+
    101 {
    \n+
    102 return points_.size();
    \n+
    103 }
    \n+
    \n+
    104
    \n+
    105 protected:
    \n+
    106 std::size_t order_;
    \n+
    107 std::vector< LagrangePoint > points_;
    \n+
    108 };
    \n+
    \n+
    109
    \n+
    110}
    \n+
    111
    \n+
    112#endif // DUNE_LAGRANGE_EMPTYPOINTS_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    Definition basismatrix.hh:27
    \n-
    Definition basismatrix.hh:32
    \n-
    unsigned int cols() const
    Definition basismatrix.hh:42
    \n-
    DynamicMatrix< Field > Matrix
    Definition basismatrix.hh:33
    \n-
    unsigned int rows() const
    Definition basismatrix.hh:46
    \n-
    BasisMatrixBase(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:35
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:69
    \n-
    const MonomialBasis< geometryId, F > PreBasis
    Definition basismatrix.hh:60
    \n-\n-
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:64
    \n-
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:61
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:94
    \n-
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:86
    \n-\n-
    const VirtualMonomialBasis< dim, F > PreBasis
    Definition basismatrix.hh:85
    \n-
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:89
    \n-\n-
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:111
    \n-
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:114
    \n-\n-
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:124
    \n-
    const PolynomialBasis< Eval, CM, D, R > PreBasis
    Definition basismatrix.hh:110
    \n-
    const PolynomialBasisWithMatrix< Eval, CM > PreBasis
    Definition basismatrix.hh:144
    \n-
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:145
    \n-\n-\n-
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:148
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:163
    \n-\n-
    Definition monomialbasis.hh:440
    \n-
    Definition monomialbasis.hh:612
    \n-
    Definition polynomialbasis.hh:65
    \n-
    Definition polynomialbasis.hh:348
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Definition emptypoints.hh:18
    \n+
    const LocalKey & localKey() const
    Definition emptypoints.hh:36
    \n+
    Field weight_
    Definition emptypoints.hh:48
    \n+
    static const int dimension
    Definition emptypoints.hh:25
    \n+
    friend class LagrangePointSetImpl
    Definition emptypoints.hh:22
    \n+
    Vector point_
    Definition emptypoints.hh:46
    \n+
    const Field weight() const
    Definition emptypoints.hh:41
    \n+
    FieldVector< Field, dimension > Vector
    Definition emptypoints.hh:29
    \n+
    F Field
    Definition emptypoints.hh:27
    \n+
    const Vector & point() const
    Definition emptypoints.hh:31
    \n+
    LocalKey localKey_
    Definition emptypoints.hh:47
    \n+
    Definition emptypoints.hh:56
    \n+
    std::size_t order() const
    Definition emptypoints.hh:95
    \n+
    std::size_t order_
    Definition emptypoints.hh:106
    \n+
    static const unsigned int dimension
    Definition emptypoints.hh:62
    \n+
    EmptyPointSet(const std::size_t order)
    Definition emptypoints.hh:69
    \n+
    const LagrangePoint & operator[](const unsigned int i) const
    Definition emptypoints.hh:74
    \n+
    std::size_t size() const
    Definition emptypoints.hh:100
    \n+
    Dune::LagrangePoint< Field, dimension > LagrangePoint
    Definition emptypoints.hh:64
    \n+
    const LocalKey & localKey(const unsigned int i) const
    Definition emptypoints.hh:90
    \n+
    iterator begin() const
    Definition emptypoints.hh:80
    \n+
    iterator end() const
    Definition emptypoints.hh:85
    \n+
    F Field
    Definition emptypoints.hh:60
    \n+
    std::vector< LagrangePoint > points_
    Definition emptypoints.hh:107
    \n+
    std::vector< LagrangePoint >::const_iterator iterator
    Definition emptypoints.hh:66
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,326 +1,203 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-basismatrix.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+emptypoints.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_BASISMATRIX_HH\n-6#define DUNE_BASISMATRIX_HH\n+5#ifndef DUNE_LAGRANGE_EMPTYPOINTS_HH\n+6#define DUNE_LAGRANGE_EMPTYPOINTS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17 /****************************************\n-18 * A dense matrix representation of a ''polynomial''\n-19 * basis. Its represent a basis as a linear\n-20 * combination of a second basis, i.e., a\n-21 * monomial basis. It is simular to the PolynomialBasis\n-22 * but it not derived from the LocalBasis class.\n-23 * It is used to define a ''pre basis''.\n-24 ****************************************/\n-25 template< class PreBasis, class Interpolation,\n-26 class Field >\n-_\b2_\b7 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx;\n+8#include \n+9\n+10#include \n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+16 template< class F, unsigned int dim >\n+_\b1_\b7 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt\n+18 {\n+19 typedef _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n+20\n+21 template< class, class >\n+_\b2_\b2 friend class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bI_\bm_\bp_\bl;\n+23\n+24 public:\n+_\b2_\b5 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+26\n+_\b2_\b7 typedef F _\bF_\bi_\be_\bl_\bd;\n 28\n-29 template< class PreBasis, class Interpolation,\n-30 class Field >\n-_\b3_\b1 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be : public DynamicMatrix\n+_\b2_\b9 typedef FieldVector< Field, dimension > _\bV_\be_\bc_\bt_\bo_\br;\n+30\n+_\b3_\b1 const _\bV_\be_\bc_\bt_\bo_\br &_\bp_\bo_\bi_\bn_\bt () const\n 32 {\n-_\b3_\b3 typedef DynamicMatrix _\bM_\ba_\bt_\br_\bi_\bx;\n-34\n-_\b3_\b5 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be( const PreBasis& preBasis,\n-36 const Interpolation& localInterpolation )\n-37 : cols_(preBasis.size())\n-38 {\n-39 localInterpolation.interpolate( preBasis, *this );\n-40 this->invert();\n-41 }\n-_\b4_\b2 unsigned int _\bc_\bo_\bl_\bs () const\n-43 {\n-44 return cols_;\n-45 }\n-_\b4_\b6 unsigned int _\br_\bo_\bw_\bs () const\n-47 {\n-48 return Matrix::rows();\n-49 }\n-50 private:\n-51 unsigned int cols_;\n-52 };\n+33 return _\bp_\bo_\bi_\bn_\bt_\b_;\n+34 }\n+35\n+_\b3_\b6 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by () const\n+37 {\n+38 return _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_;\n+39 }\n+40\n+_\b4_\b1 const _\bF_\bi_\be_\bl_\bd _\bw_\be_\bi_\bg_\bh_\bt () const\n+42 {\n+43 return _\bw_\be_\bi_\bg_\bh_\bt_\b_;\n+44 }\n+45\n+_\b4_\b6 _\bV_\be_\bc_\bt_\bo_\br _\bp_\bo_\bi_\bn_\bt_\b_ = {};\n+_\b4_\b7 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = {};\n+_\b4_\b8 _\bF_\bi_\be_\bl_\bd _\bw_\be_\bi_\bg_\bh_\bt_\b_ = {};\n+49 };\n+50\n+51 // EmptyPointSet\n+52 // --------------\n 53\n-54 template< GeometryType::Id geometryId, class F,\n-55 class Interpolation,\n-56 class Field >\n-_\b5_\b7 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx< const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< geometryId, F >, Interpolation,\n-Field >\n-58 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const MonomialBasis< geometryId, F >,\n-Interpolation, Field >\n-59 {\n-_\b6_\b0 typedef const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b> _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n-_\b6_\b1 typedef _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n-_\b6_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n+54 template< class F, unsigned int dim >\n+_\b5_\b5 class _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n+56 {\n+57 typedef _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b> _\bT_\bh_\bi_\bs;\n+58\n+59 public:\n+_\b6_\b0 typedef F _\bF_\bi_\be_\bl_\bd;\n+61\n+_\b6_\b2 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n 63\n-_\b6_\b4 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n-65 const Interpolation& localInterpolation )\n-66 : _\bB_\ba_\bs_\be(preBasis, localInterpolation)\n-67 {}\n-68 template \n-_\b6_\b9 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n-70 {\n-71 const unsigned int N = Matrix::rows();\n-72 assert( Matrix::cols() == N && vec.size() == N );\n-73 // note: that the transposed matrix is computed,\n-74 // and is square\n-75 for (unsigned int i=0; i\n-_\b8_\b2 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx< const _\bD_\bu_\bn_\be::_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< dim, F >,\n-Interpolation, Field >\n-83 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const VirtualMonomialBasis< dim, F >,\n-Interpolation, Field >\n-84 {\n-_\b8_\b5 typedef const _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n-_\b8_\b6 typedef _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n-_\b8_\b7 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n-88\n-_\b8_\b9 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n-90 const Interpolation& localInterpolation )\n-91 : _\bB_\ba_\bs_\be(preBasis, localInterpolation)\n-92 {}\n-93 template \n-_\b9_\b4 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n-95 {\n-96 const unsigned int N = Matrix::rows();\n-97 assert( Matrix::cols() == N && vec.size() == N );\n-98 // note: that the transposed matrix is computed,\n-99 // and is square\n-100 for (unsigned int i=0; i\n-_\b1_\b0_\b7 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx< const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs, Interpolation,\n-Field >\n-108 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const PolynomialBasis,\n-Interpolation, Field >\n-109 {\n-_\b1_\b1_\b0 typedef const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bE_\bv_\ba_\bl_\b,_\bC_\bM_\b,_\bD_\b,_\bR_\b> _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n-_\b1_\b1_\b1 typedef _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n-_\b1_\b1_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n-113\n-_\b1_\b1_\b4 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n-115 const Interpolation& localInterpolation )\n-116 : _\bB_\ba_\bs_\be(preBasis, localInterpolation),\n-117 preBasis_(preBasis)\n-118 {}\n-_\b1_\b1_\b9 unsigned int _\bc_\bo_\bl_\bs() const\n-120 {\n-121 return preBasis_.matrix().baseSize() ;\n-122 }\n-123 template \n-_\b1_\b2_\b4 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n-125 {\n-126 assert( Matrix::rows() == Matrix::cols() );\n-127 assert( vec.size() == preBasis_.matrix().baseSize() );\n-128 assert( Matrix::cols() == preBasis_.size() );\n-129 for (unsigned int j=0; j\n-_\b1_\b4_\b1 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx< const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx,\n-Interpolation, Field >\n-142 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const PolynomialBasisWithMatrix,\n-Interpolation, Field >\n-143 {\n-_\b1_\b4_\b4 typedef const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bE_\bv_\ba_\bl_\b,_\bC_\bM_\b> _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n-_\b1_\b4_\b5 typedef _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n-_\b1_\b4_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n-147\n-_\b1_\b4_\b8 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n-149 const Interpolation& localInterpolation )\n-150 : _\bB_\ba_\bs_\be(preBasis, localInterpolation),\n-151 preBasis_(preBasis)\n-152 {}\n-_\b1_\b5_\b3 unsigned int _\bc_\bo_\bl_\bs() const\n-154 {\n-155 return preBasis_.matrix().baseSize() ;\n-156 }\n-_\b1_\b5_\b7 unsigned int _\br_\bo_\bw_\bs () const\n-158 {\n-159 assert( Matrix::rows() == preBasis_.matrix().size() );\n-160 return preBasis_.matrix().size()*CM::blockSize ;\n-161 }\n-162 template \n-_\b1_\b6_\b3 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n-164 {\n-165 unsigned int r = row / CM::blockSize;\n-166 assert( r < Matrix::rows() );\n-167 assert( Matrix::rows() == Matrix::cols() );\n-168 assert( vec.size() == preBasis_.matrix().baseSize() );\n-169 assert( Matrix::cols() == preBasis_.size() );\n-170 for (unsigned int j=0; j _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt;\n+65\n+_\b6_\b6 typedef typename std::vector< LagrangePoint >::const_iterator _\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n+67\n+68 protected:\n+_\b6_\b9 _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt ( const std::size_t _\bo_\br_\bd_\be_\br )\n+70 : _\bo_\br_\bd_\be_\br_\b_( _\bo_\br_\bd_\be_\br )\n+71 {}\n+72\n+73 public:\n+_\b7_\b4 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i ) const\n+75 {\n+76 assert( i < _\bs_\bi_\bz_\be() );\n+77 return _\bp_\bo_\bi_\bn_\bt_\bs_\b_[ i ];\n+78 }\n+79\n+_\b8_\b0 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn () const\n+81 {\n+82 return _\bp_\bo_\bi_\bn_\bt_\bs_\b_.begin();\n+83 }\n+84\n+_\b8_\b5 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd () const\n+86 {\n+87 return _\bp_\bo_\bi_\bn_\bt_\bs_\b_.end();\n+88 }\n+89\n+_\b9_\b0 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by ( const unsigned int i ) const\n+91 {\n+92 return (*this)[ i ].localKey();\n+93 }\n+94\n+_\b9_\b5 std::size_t _\bo_\br_\bd_\be_\br () const\n+96 {\n+97 return _\bo_\br_\bd_\be_\br_\b_;\n+98 }\n+99\n+_\b1_\b0_\b0 std::size_t _\bs_\bi_\bz_\be () const\n+101 {\n+102 return _\bp_\bo_\bi_\bn_\bt_\bs_\b_.size();\n+103 }\n+104\n+105 protected:\n+_\b1_\b0_\b6 std::size_t _\bo_\br_\bd_\be_\br_\b_;\n+_\b1_\b0_\b7 std::vector< LagrangePoint > _\bp_\bo_\bi_\bn_\bt_\bs_\b_;\n+108 };\n+109\n+110}\n+111\n+112#endif // DUNE_LAGRANGE_EMPTYPOINTS_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b:_\b:_\bc_\bo_\bl_\bs\n-unsigned int cols() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-DynamicMatrix< Field > Matrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b:_\b:_\br_\bo_\bw_\bs\n-unsigned int rows() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be\n-BasisMatrixBase(const PreBasis &preBasis, const Interpolation\n-&localInterpolation)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n-_\b>_\b:_\b:_\br_\bo_\bw\n-void row(const unsigned int row, Vector &vec) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n-_\b>_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n-const MonomialBasis< geometryId, F > PreBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n-_\b>_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-Base::Matrix Matrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n-_\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n-BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n-_\b>_\b:_\b:_\bB_\ba_\bs_\be\n-BasisMatrixBase< PreBasis, Interpolation, Field > Base\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\br_\bo_\bw\n-void row(const unsigned int row, Vector &vec) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n-BasisMatrixBase< PreBasis, Interpolation, Field > Base\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:86\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-Base::Matrix Matrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n-const VirtualMonomialBasis< dim, F > PreBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n-BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-Base::Matrix Matrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n-BasisMatrixBase< PreBasis, Interpolation, Field > Base\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n-BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bc_\bo_\bl_\bs\n-unsigned int cols() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\br_\bo_\bw\n-void row(const unsigned int row, Vector &vec) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:124\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n-const PolynomialBasis< Eval, CM, D, R > PreBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n-const PolynomialBasisWithMatrix< Eval, CM > PreBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:144\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n-BasisMatrixBase< PreBasis, Interpolation, Field > Base\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\br_\bo_\bw_\bs\n-unsigned int rows() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:157\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-Base::Matrix Matrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:146\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n-BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\br_\bo_\bw\n-void row(const unsigned int row, Vector &vec) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n-_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bc_\bo_\bl_\bs\n-unsigned int cols() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:153\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:440\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:612\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bw_\be_\bi_\bg_\bh_\bt_\b_\n+Field weight_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bI_\bm_\bp_\bl\n+friend class LagrangePointSetImpl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\b_\n+Vector point_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bw_\be_\bi_\bg_\bh_\bt\n+const Field weight() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< Field, dimension > Vector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt\n+const Vector & point() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_\n+LocalKey localKey_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n+std::size_t order_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n+EmptyPointSet(const std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const LagrangePoint & operator[](const unsigned int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt\n+Dune::LagrangePoint< Field, dimension > LagrangePoint\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(const unsigned int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+iterator begin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\be_\bn_\bd\n+iterator end() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\bs_\b_\n+std::vector< LagrangePoint > points_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+std::vector< LagrangePoint >::const_iterator iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:66\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: l2interpolation.hh File Reference\n+dune-localfunctions: cache.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,49 @@\n \n \n \n \n \n \n \n
    \n \n-
    l2interpolation.hh File Reference
    \n+
    cache.hh File Reference
    \n
    \n
    \n-
    #include <dune/common/concept.hh>
    \n-#include <dune/common/dynmatrix.hh>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n+
    #include <map>
    \n+#include <optional>
    \n+#include <type_traits>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/geometry/typeindex.hh>
    \n+#include <dune/localfunctions/lagrange.hh>
    \n+#include <dune/localfunctions/lagrange/equidistantpoints.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangelfecache.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangeprism.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangepyramid.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n-\n+\n+\n \n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::LocalL2InterpolationBase< B, Q >
    class  Dune::DynamicLagrangeLocalFiniteElementCache< Domain, Range, dim >
     A cache that stores Lagrange finite elements for the given dimension and order. More...
     
    struct  Dune::LocalL2Interpolation< B, Q, true >
    class  Dune::StaticLagrangeLocalFiniteElementCache< id, Domain, Range, dim, order >
     A cache that stores all available Pk/Qk like local finite elements for the given dimension and order for the case that the GeometryType is fixed and has the given Id. More...
     
    struct  Dune::LocalL2Interpolation< B, Q, false >
     
    struct  Dune::LocalL2InterpolationFactory< BasisFactory, onb >
     A factory class for the local l2 interpolations taking a basis factory. More...
    class  Dune::StaticLagrangeLocalFiniteElementCache< GeometryType::Id(~0u), Domain, Range, dim, order >
     A cache that stores all available Pk/Qk like local finite elements for the given dimension and order. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,43 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-l2interpolation.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+cache.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bl_\bf_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bB_\b,_\b _\bQ_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bR_\ba_\bn_\bg_\be_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 A cache that stores Lagrange finite elements for the given dimension\n+ and order. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bt_\br_\bu_\be_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bi_\bd_\b,_\b _\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bR_\ba_\bn_\bg_\be_\b,_\b _\bd_\bi_\bm_\b,\n+ _\bo_\br_\bd_\be_\br_\b _\b>\n+ A cache that stores all available Pk/Qk like local finite elements for\n+\u00a0 the given dimension and order for the case that the GeometryType is\n+ fixed and has the given Id. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bo_\bn_\bb_\b _\b>\n-\u00a0 A factory class for the local l2 interpolations taking a basis\n- factory. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\bT_\by_\bp_\be_\b:_\b:_\bI_\bd_\b(_\b~_\b0_\bu_\b)_\b,\n+ _\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bR_\ba_\bn_\bg_\be_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b _\b>\n+\u00a0 A cache that stores all available Pk/Qk like local finite elements for\n+ the given dimension and order. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: l2interpolation.hh Source File\n+dune-localfunctions: cache.hh Source File\n \n \n \n \n \n \n \n@@ -70,242 +70,146 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    l2interpolation.hh
    \n+
    cache.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_L2INTERPOLATION_HH
    \n-
    6#define DUNE_L2INTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH
    \n
    7
    \n-
    8#include <dune/common/concept.hh>
    \n-
    9#include <dune/common/dynmatrix.hh>
    \n-
    10
    \n-
    11#include <dune/geometry/quadraturerules.hh>
    \n-
    12
    \n-\n+
    8#include <map>
    \n+
    9#include <optional>
    \n+
    10#include <type_traits>
    \n+
    11
    \n+
    12#include <dune/geometry/type.hh>
    \n+
    13#include <dune/geometry/typeindex.hh>
    \n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    32 template< class B, class Q, bool onb >
    \n-\n-
    34
    \n-
    35 template< class B, class Q >
    \n-
    \n-\n-
    37 {
    \n-\n-
    39
    \n-
    40 public:
    \n-
    41 typedef B Basis;
    \n-
    42 typedef Q Quadrature;
    \n-
    43
    \n-
    44 static const unsigned int dimension = Basis::dimension;
    \n-
    45
    \n-
    47 template< class Function, class DofField>
    \n-
    \n-
    48 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n-
    49 {
    \n-
    50 typedef FieldVector< DofField, Basis::dimRange > RangeVector;
    \n-
    51
    \n-
    52 const unsigned int size = basis().size();
    \n-
    53 static std::vector< RangeVector > basisValues( size );
    \n-
    54
    \n-
    55 coefficients.resize( size );
    \n-
    56 basisValues.resize( size );
    \n-
    57 for( unsigned int i = 0; i < size; ++i )
    \n-
    58 coefficients[ i ] = Zero< DofField >();
    \n-
    59
    \n-
    60 for (auto&& qp : quadrature())
    \n-
    61 {
    \n-
    62 basis().evaluate( qp.position(), basisValues );
    \n-
    63 auto val = function( qp.position() );
    \n-
    64 RangeVector factor = field_cast< DofField >( val );
    \n-
    65 factor *= field_cast< DofField >( qp.weight() );
    \n-
    66 for( unsigned int i = 0; i < size; ++i )
    \n-
    67 coefficients[ i ] += factor * basisValues[ i ];
    \n-
    68 }
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    \n-
    71 const Basis &basis () const
    \n-
    72 {
    \n-
    73 return basis_;
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    \n-
    76 const Quadrature &quadrature () const
    \n-
    77 {
    \n-
    78 return quadrature_;
    \n-
    79 }
    \n-
    \n-
    80
    \n-
    81 protected:
    \n-
    \n-\n-
    83 : basis_( basis ),
    \n-\n-
    85 {}
    \n-
    \n-
    86
    \n-
    87 const Basis &basis_;
    \n-\n-
    89 };
    \n-
    \n-
    90
    \n-
    91 template< class B, class Q >
    \n-
    \n-
    92 struct LocalL2Interpolation<B,Q,true>
    \n-
    93 : public LocalL2InterpolationBase<B,Q>
    \n-
    94 {
    \n-\n-
    96 template< class BasisFactory, bool onb >
    \n-\n-
    98 using typename Base::Basis;
    \n-
    99 using typename Base::Quadrature;
    \n-
    100 private:
    \n-
    101 LocalL2Interpolation ( const typename Base::Basis &basis, const typename Base::Quadrature &quadrature )
    \n-
    102 : Base(basis,quadrature)
    \n-
    103 {}
    \n-
    104 };
    \n-
    \n-
    105 template< class B, class Q >
    \n-
    \n-
    106 struct LocalL2Interpolation<B,Q,false>
    \n-
    107 : public LocalL2InterpolationBase<B,Q>
    \n-
    108 {
    \n-\n-
    110 template< class BasisFactory, bool onb >
    \n-\n-
    112 using typename Base::Basis;
    \n-
    113 using typename Base::Quadrature;
    \n-
    114 template< class Function, class DofField >
    \n-
    \n-
    115 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n-
    116 {
    \n-
    117 const unsigned size = Base::basis().size();
    \n-
    118 Base::interpolate(function,val_);
    \n-
    119 coefficients.resize( size );
    \n-
    120 for (unsigned int i=0; i<size; ++i)
    \n-
    121 {
    \n-
    122 coefficients[i] = 0;
    \n-
    123 for (unsigned int j=0; j<size; ++j)
    \n-
    124 {
    \n-
    125 coefficients[i] += field_cast<DofField>(massMatrix_[i][j]*val_[j]);
    \n-
    126 }
    \n-
    127 }
    \n-
    128 }
    \n-
    \n-
    129 private:
    \n-
    130 LocalL2Interpolation ( const typename Base::Basis &basis, const typename Base::Quadrature &quadrature )
    \n-
    131 : Base(basis,quadrature),
    \n-
    132 val_(basis.size()),
    \n-
    133 massMatrix_(basis.size(),basis.size(),Field(0))
    \n-
    134 {
    \n-
    135 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;
    \n-
    136 typedef typename Base::Quadrature::iterator Iterator;
    \n-
    137 const unsigned size = basis.size();
    \n-
    138 std::vector< RangeVector > basisValues( size );
    \n-
    139
    \n-
    140 const Iterator end = Base::quadrature().end();
    \n-
    141 for( Iterator it = Base::quadrature().begin(); it != end; ++it )
    \n-
    142 {
    \n-
    143 Base::basis().evaluate( it->position(), basisValues );
    \n-
    144 for (unsigned int i=0; i<size; ++i)
    \n-
    145 for (unsigned int j=0; j<size; ++j)
    \n-
    146 massMatrix_[i][j] += (basisValues[i]*basisValues[j])*it->weight();
    \n-
    147 }
    \n-
    148 massMatrix_.invert();
    \n-
    149 }
    \n-
    150 typedef typename Base::Basis::StorageField Field;
    \n-
    151 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;
    \n-
    152 typedef DynamicMatrix<Field> MassMatrix;
    \n-
    153 mutable std::vector<Field> val_;
    \n-
    154 MassMatrix massMatrix_;
    \n-
    155 };
    \n-
    \n-
    156
    \n-
    161 template< class BasisFactory, bool onb >
    \n-
    \n-\n-
    163 {
    \n-
    164 static const unsigned int dimension = BasisFactory::dimension;
    \n-
    165 typedef typename BasisFactory::Key Key;
    \n-
    166 typedef typename BasisFactory::Object Basis;
    \n-
    167 typedef double Field;
    \n-
    168 typedef QuadratureRule<Field,dimension> Quadrature;
    \n-
    169 typedef QuadratureRules<Field,dimension> QuadratureProvider;
    \n-\n-\n-
    172
    \n-
    173 template< GeometryType::Id geometryId >
    \n-
    \n-
    174 static Object *create ( const Key &key )
    \n-
    175 {
    \n-
    176 constexpr Dune::GeometryType geometry = geometryId;
    \n-
    177 const Basis *basis = BasisFactory::template create< geometry >( key );
    \n-
    178 const Quadrature & quadrature = QuadratureProvider::rule(geometry, 2*basis->order()+1);
    \n-
    179 return new Object( *basis, quadrature );
    \n-
    180 }
    \n-
    \n-
    \n-
    181 static void release ( Object *object )
    \n-
    182 {
    \n-
    183 const Basis &basis = object->basis();
    \n-
    184 BasisFactory::release( &basis );
    \n-
    185 delete object;
    \n-
    186 }
    \n-
    \n-
    187 };
    \n-
    \n-
    188
    \n-
    189}
    \n-
    190
    \n-
    191#endif // #ifndef DUNE_L2INTERPOLATION_HH
    \n-\n+\n+\n+\n+\n+\n+\n+\n+
    22
    \n+
    23
    \n+
    24namespace Dune {
    \n+
    25
    \n+
    37template <class Domain, class Range, int dim>
    \n+
    \n+\n+
    39{
    \n+
    40public:
    \n+\n+
    42
    \n+
    \n+
    44 explicit DynamicLagrangeLocalFiniteElementCache (unsigned int order)
    \n+
    45 : order_(order)
    \n+
    46 , data_()
    \n+
    47 {}
    \n+
    \n+
    48
    \n+
    \n+
    55 const FiniteElementType& get (GeometryType type) const
    \n+
    56 {
    \n+
    57 auto [it,_] = data_.try_emplace(type,type,order_);
    \n+
    58 return it->second;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    61private:
    \n+
    62 unsigned int order_;
    \n+
    63 mutable std::map<GeometryType, FiniteElementType> data_;
    \n+
    64};
    \n+
    \n+
    65
    \n+
    66
    \n+
    78template <GeometryType::Id id, class Domain, class Range, std::size_t dim, std::size_t order>
    \n+
    \n+\n+
    80{
    \n+
    81 struct UnknownToplogy {};
    \n+
    82
    \n+
    83 static constexpr bool isSimplex = GeometryType(id).isSimplex();
    \n+
    84 static constexpr bool isCube = GeometryType(id).isCube();
    \n+
    85 static constexpr bool isPrism = GeometryType(id).isPrism();
    \n+
    86 static constexpr bool isPyramid = GeometryType(id).isPyramid();
    \n+
    87
    \n+
    88public:
    \n+\n+
    90 = std::conditional_t<isSimplex, LagrangeSimplexLocalFiniteElement<Domain,Range,dim,order>,
    \n+
    91 std::conditional_t<isCube, LagrangeCubeLocalFiniteElement<Domain,Range,dim,order>,
    \n+
    92 std::conditional_t<isPrism, LagrangePrismLocalFiniteElement<Domain,Range,order>,
    \n+
    93 std::conditional_t<isPyramid, LagrangePyramidLocalFiniteElement<Domain,Range,order>, UnknownToplogy> > > >;
    \n+
    94
    \n+
    \n+
    96 explicit StaticLagrangeLocalFiniteElementCache (std::integral_constant<std::size_t,order> = {})
    \n+
    97 {
    \n+
    98 lfe_.emplace();
    \n+
    99 }
    \n+
    \n+
    100
    \n+
    \n+
    102 const FiniteElementType& get ([[maybe_unused]] GeometryType type) const
    \n+
    103 {
    \n+
    104 assert(GeometryType::Id(type) == id);
    \n+
    105 assert(!!lfe_);
    \n+
    106 return *lfe_;
    \n+
    107 }
    \n+
    \n+
    108
    \n+
    109private:
    \n+
    110 std::optional<FiniteElementType> lfe_{};
    \n+
    111};
    \n+
    \n+
    112
    \n+
    113
    \n+
    127template <class Domain, class Range, std::size_t dim, std::size_t order>
    \n+
    \n+
    128class StaticLagrangeLocalFiniteElementCache<GeometryType::Id(~0u), Domain, Range, dim, order>
    \n+
    129 : public LagrangeLocalFiniteElementCache<Domain,Range,dim,order>
    \n+
    130{
    \n+\n+
    132public:
    \n+
    133 using Base::Base;
    \n+
    134};
    \n+
    \n+
    135
    \n+
    136} // namespace Dune
    \n+
    137
    \n+
    138#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH
    \n+
    Convenience header that includes all implementations of Lagrange finite elements.
    \n+\n+\n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n-
    A local L2 interpolation taking a test basis and a quadrature rule.
    Definition l2interpolation.hh:33
    \n-
    Definition l2interpolation.hh:37
    \n-
    LocalL2InterpolationBase(const Basis &basis, const Quadrature &quadrature)
    Definition l2interpolation.hh:82
    \n-
    const Basis & basis() const
    Definition l2interpolation.hh:71
    \n-
    const Quadrature & quadrature_
    Definition l2interpolation.hh:88
    \n-
    void interpolate(const Function &function, std::vector< DofField > &coefficients) const
    Interpolate a function that implements Range operator()(Domain)
    Definition l2interpolation.hh:48
    \n-
    const Basis & basis_
    Definition l2interpolation.hh:87
    \n-
    static const unsigned int dimension
    Definition l2interpolation.hh:44
    \n-
    const Quadrature & quadrature() const
    Definition l2interpolation.hh:76
    \n-
    Q Quadrature
    Definition l2interpolation.hh:42
    \n-
    B Basis
    Definition l2interpolation.hh:41
    \n-
    LocalL2InterpolationBase< B, Q > Base
    Definition l2interpolation.hh:95
    \n-
    void interpolate(const Function &function, std::vector< DofField > &coefficients) const
    Definition l2interpolation.hh:115
    \n-
    LocalL2InterpolationBase< B, Q > Base
    Definition l2interpolation.hh:109
    \n-
    A factory class for the local l2 interpolations taking a basis factory.
    Definition l2interpolation.hh:163
    \n-
    static const unsigned int dimension
    Definition l2interpolation.hh:164
    \n-
    static void release(Object *object)
    Definition l2interpolation.hh:181
    \n-
    BasisFactory::Object Basis
    Definition l2interpolation.hh:166
    \n-
    double Field
    Definition l2interpolation.hh:167
    \n-
    QuadratureRules< Field, dimension > QuadratureProvider
    Definition l2interpolation.hh:169
    \n-
    QuadratureRule< Field, dimension > Quadrature
    Definition l2interpolation.hh:168
    \n-
    static Object * create(const Key &key)
    Definition l2interpolation.hh:174
    \n-
    BasisFactory::Key Key
    Definition l2interpolation.hh:165
    \n-
    const LocalInterpolation Object
    Definition l2interpolation.hh:171
    \n-
    LocalL2Interpolation< Basis, Quadrature, onb > LocalInterpolation
    Definition l2interpolation.hh:170
    \n+
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \n+
    Lagrange local finite elements for a given set of interpolation points.
    Definition lagrange.hh:66
    \n+
    A cache that stores Lagrange finite elements for the given dimension and order.
    Definition cache.hh:39
    \n+
    DynamicLagrangeLocalFiniteElementCache(unsigned int order)
    Construct an empty cache.
    Definition cache.hh:44
    \n+
    const FiniteElementType & get(GeometryType type) const
    Obtain the cached local finite-element.
    Definition cache.hh:55
    \n+
    A cache that stores all available Pk/Qk like local finite elements for the given dimension and order ...
    Definition cache.hh:80
    \n+
    const FiniteElementType & get(GeometryType type) const
    Obtain the cached local finite-element.
    Definition cache.hh:102
    \n+
    std::conditional_t< isSimplex, LagrangeSimplexLocalFiniteElement< Domain, Range, dim, order >, std::conditional_t< isCube, LagrangeCubeLocalFiniteElement< Domain, Range, dim, order >, std::conditional_t< isPrism, LagrangePrismLocalFiniteElement< Domain, Range, order >, std::conditional_t< isPyramid, LagrangePyramidLocalFiniteElement< Domain, Range, order >, UnknownToplogy > > > > FiniteElementType
    Definition cache.hh:93
    \n+
    StaticLagrangeLocalFiniteElementCache(std::integral_constant< std::size_t, order >={})
    Construct the local-finite element for the order specified as template parameter.
    Definition cache.hh:96
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,272 +1,167 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-l2interpolation.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+cache.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_L2INTERPOLATION_HH\n-6#define DUNE_L2INTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+8#include \n+9#include \n+10#include \n+11\n+12#include \n+13#include \n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-32 template< class B, class Q, bool onb >\n-_\b3_\b3 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-34\n-35 template< class B, class Q >\n-_\b3_\b6 class _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-37 {\n-38 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bB_\b,_\b _\bQ_\b _\b> _\bT_\bh_\bi_\bs;\n-39\n-40 public:\n-_\b4_\b1 typedef B _\bB_\ba_\bs_\bi_\bs;\n-_\b4_\b2 typedef Q _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n-43\n-_\b4_\b4 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Basis::dimension;\n-45\n-47 template< class Function, class DofField>\n-_\b4_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, std::vector< DofField >\n-&coefficients ) const\n-49 {\n-50 typedef FieldVector< DofField, Basis::dimRange > RangeVector;\n-51\n-52 const unsigned int size = _\bb_\ba_\bs_\bi_\bs().size();\n-53 static std::vector< RangeVector > basisValues( size );\n-54\n-55 coefficients.resize( size );\n-56 basisValues.resize( size );\n-57 for( unsigned int i = 0; i < size; ++i )\n-58 coefficients[ i ] = _\bZ_\be_\br_\bo_\b<_\b _\bD_\bo_\bf_\bF_\bi_\be_\bl_\bd_\b _\b>();\n-59\n-60 for (auto&& qp : _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be())\n-61 {\n-62 _\bb_\ba_\bs_\bi_\bs().evaluate( qp.position(), basisValues );\n-63 auto val = function( qp.position() );\n-64 RangeVector factor = field_cast< DofField >( val );\n-65 factor *= field_cast< DofField >( qp.weight() );\n-66 for( unsigned int i = 0; i < size; ++i )\n-67 coefficients[ i ] += factor * basisValues[ i ];\n-68 }\n-69 }\n-70\n-_\b7_\b1 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs () const\n-72 {\n-73 return _\bb_\ba_\bs_\bi_\bs_\b_;\n-74 }\n-75\n-_\b7_\b6 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be () const\n-77 {\n-78 return _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_;\n-79 }\n-80\n-81 protected:\n-_\b8_\b2 _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be ( const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs, const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be\n-)\n-83 : _\bb_\ba_\bs_\bi_\bs_\b_( _\bb_\ba_\bs_\bi_\bs ),\n-84 _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_( _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be )\n-85 {}\n-86\n-_\b8_\b7 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs_\b_;\n-_\b8_\b8 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_;\n-89 };\n-90\n-91 template< class B, class Q >\n-_\b9_\b2 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-93 : public _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-94 {\n-_\b9_\b5 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\bB_\b,_\bQ_\b> _\bB_\ba_\bs_\be;\n-96 template< class BasisFactory, bool onb >\n-_\b9_\b7 friend class _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-98 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs;\n-99 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n-100 private:\n-101 _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ( const typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs &basis, const typename\n-_\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &quadrature )\n-102 : _\bB_\ba_\bs_\be(basis,quadrature)\n-103 {}\n-104 };\n-105 template< class B, class Q >\n-_\b1_\b0_\b6 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-107 : public _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-108 {\n-_\b1_\b0_\b9 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\bB_\b,_\bQ_\b> _\bB_\ba_\bs_\be;\n-110 template< class BasisFactory, bool onb >\n-_\b1_\b1_\b1 friend class _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-112 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs;\n-113 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n-114 template< class Function, class DofField >\n-_\b1_\b1_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, std::vector< DofField >\n-&coefficients ) const\n-116 {\n-117 const unsigned size = Base::basis().size();\n-118 Base::interpolate(function,val_);\n-119 coefficients.resize( size );\n-120 for (unsigned int i=0; i(massMatrix_[i][j]*val_[j]);\n-126 }\n-127 }\n-128 }\n-129 private:\n-130 _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ( const typename Base::Basis &basis, const typename\n-Base::Quadrature &quadrature )\n-131 : Base(basis,quadrature),\n-132 val_(basis.size()),\n-133 massMatrix_(basis.size(),basis.size(),Field(0))\n-134 {\n-135 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;\n-136 typedef typename Base::Quadrature::iterator Iterator;\n-137 const unsigned size = basis.size();\n-138 std::vector< RangeVector > basisValues( size );\n-139\n-140 const Iterator end = Base::quadrature().end();\n-141 for( Iterator it = Base::quadrature().begin(); it != end; ++it )\n-142 {\n-143 Base::basis().evaluate( it->position(), basisValues );\n-144 for (unsigned int i=0; iweight();\n-147 }\n-148 massMatrix_.invert();\n-149 }\n-150 typedef typename Base::Basis::StorageField Field;\n-151 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;\n-152 typedef DynamicMatrix MassMatrix;\n-153 mutable std::vector val_;\n-154 MassMatrix massMatrix_;\n-155 };\n-156\n-161 template< class BasisFactory, bool onb >\n-_\b1_\b6_\b2 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-163 {\n-_\b1_\b6_\b4 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = BasisFactory::dimension;\n-_\b1_\b6_\b5 typedef typename BasisFactory::Key _\bK_\be_\by;\n-_\b1_\b6_\b6 typedef typename BasisFactory::Object _\bB_\ba_\bs_\bi_\bs;\n-_\b1_\b6_\b7 typedef double _\bF_\bi_\be_\bl_\bd;\n-_\b1_\b6_\b8 typedef QuadratureRule _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n-_\b1_\b6_\b9 typedef QuadratureRules _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br;\n-_\b1_\b7_\b0 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b,_\b _\bo_\bn_\bb_\b _\b> _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-_\b1_\b7_\b1 typedef const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bO_\bb_\bj_\be_\bc_\bt;\n-172\n-173 template< GeometryType::Id geometryId >\n-_\b1_\b7_\b4 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n-175 {\n-176 constexpr Dune::GeometryType geometry = geometryId;\n-177 const _\bB_\ba_\bs_\bi_\bs *basis = BasisFactory::template create< geometry >( key );\n-178 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be & quadrature = QuadratureProvider::rule(geometry, 2*basis-\n->order()+1);\n-179 return new _\bO_\bb_\bj_\be_\bc_\bt( *basis, quadrature );\n-180 }\n-_\b1_\b8_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be ( _\bO_\bb_\bj_\be_\bc_\bt *object )\n-182 {\n-183 const _\bB_\ba_\bs_\bi_\bs &basis = object->basis();\n-184 BasisFactory::release( &basis );\n-185 delete object;\n-186 }\n-187 };\n-188\n-189}\n-190\n-191#endif // #ifndef DUNE_L2INTERPOLATION_HH\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bl_\bf_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n+21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+22\n+23\n+24namespace _\bD_\bu_\bn_\be {\n+25\n+37template \n+_\b3_\b8class _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+39{\n+40public:\n+_\b4_\b1 using _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b,\n+_\bd_\bi_\bm_\b,_\b _\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bR_\ba_\bn_\bg_\be_\b>;\n+42\n+_\b4_\b4 explicit _\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be (unsigned int order)\n+45 : order_(order)\n+46 , data_()\n+47 {}\n+48\n+_\b5_\b5 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& _\bg_\be_\bt (GeometryType type) const\n+56 {\n+57 auto [it,_] = data_.try_emplace(type,type,order_);\n+58 return it->second;\n+59 }\n+60\n+61private:\n+62 unsigned int order_;\n+63 mutable std::map data_;\n+64};\n+65\n+66\n+78template \n+_\b7_\b9class _\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+80{\n+81 struct UnknownToplogy {};\n+82\n+83 static constexpr bool isSimplex = GeometryType(id).isSimplex();\n+84 static constexpr bool isCube = GeometryType(id).isCube();\n+85 static constexpr bool isPrism = GeometryType(id).isPrism();\n+86 static constexpr bool isPyramid = GeometryType(id).isPyramid();\n+87\n+88public:\n+_\b8_\b9 using _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+90 = std::conditional_t,\n+91 std::conditional_t,\n+92 std::conditional_t,\n+93 std::conditional_t, UnknownToplogy> > > >;\n+94\n+_\b9_\b6 explicit _\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be (std::integral_constant = {})\n+97 {\n+98 lfe_.emplace();\n+99 }\n+100\n+_\b1_\b0_\b2 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& _\bg_\be_\bt ([[maybe_unused]] GeometryType type) const\n+103 {\n+104 assert(GeometryType::Id(type) == id);\n+105 assert(!!lfe_);\n+106 return *lfe_;\n+107 }\n+108\n+109private:\n+110 std::optional lfe_{};\n+111};\n+112\n+113\n+127template \n+_\b1_\b2_\b8class _\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+129 : public _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+130{\n+131 using _\bB_\ba_\bs_\be = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\bR_\ba_\bn_\bg_\be_\b,_\bd_\bi_\bm_\b,_\bo_\br_\bd_\be_\br_\b>;\n+132public:\n+133 using Base::Base;\n+134};\n+135\n+136} // namespace Dune\n+137\n+138#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_CACHE_HH\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b._\bh_\bh\n+Convenience header that includes all implementations of Lagrange finite\n+elements.\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bl_\bf_\be_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n+_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n-A class representing the zero of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-A local L2 interpolation taking a test basis and a quadrature rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-LocalL2InterpolationBase(const Basis &basis, const Quadrature &quadrature)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n-const Basis & basis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_\n-const Quadrature & quadrature_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const Function &function, std::vector< DofField >\n-&coefficients) const\n-Interpolate a function that implements Range operator()(Domain)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_\n-const Basis & basis_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be\n-const Quadrature & quadrature() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be\n-Q Quadrature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-B Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n-LocalL2InterpolationBase< B, Q > Base\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const Function &function, std::vector< DofField >\n-&coefficients) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n-LocalL2InterpolationBase< B, Q > Base\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-A factory class for the local l2 interpolations taking a basis factory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:164\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:181\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-BasisFactory::Object Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-double Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:167\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-QuadratureRules< Field, dimension > QuadratureProvider\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:169\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be\n-QuadratureRule< Field, dimension > Quadrature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:168\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:174\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-BasisFactory::Key Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:165\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const LocalInterpolation Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-LocalL2Interpolation< Basis, Quadrature, onb > LocalInterpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+A cache storing a compile time selection of local finite element\n+implementations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange local finite elements for a given set of interpolation points.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+A cache that stores Lagrange finite elements for the given dimension and order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:\n+_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+DynamicLagrangeLocalFiniteElementCache(unsigned int order)\n+Construct an empty cache.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\by_\bn_\ba_\bm_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n+const FiniteElementType & get(GeometryType type) const\n+Obtain the cached local finite-element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+A cache that stores all available Pk/Qk like local finite elements for the\n+given dimension and order ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n+const FiniteElementType & get(GeometryType type) const\n+Obtain the cached local finite-element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+std::conditional_t< isSimplex, LagrangeSimplexLocalFiniteElement< Domain,\n+Range, dim, order >, std::conditional_t< isCube,\n+LagrangeCubeLocalFiniteElement< Domain, Range, dim, order >, std::\n+conditional_t< isPrism, LagrangePrismLocalFiniteElement< Domain, Range, order\n+>, std::conditional_t< isPyramid, LagrangePyramidLocalFiniteElement< Domain,\n+Range, order >, UnknownToplogy > > > > FiniteElementType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:\n+_\bS_\bt_\ba_\bt_\bi_\bc_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+StaticLagrangeLocalFiniteElementCache(std::integral_constant< std::size_t,\n+order >={})\n+Construct the local-finite element for the order specified as template\n+parameter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn cache.hh:96\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: polynomialbasis.hh File Reference\n+dune-localfunctions: pqkfactory.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,49 @@\n \n \n \n \n \n \n \n
    \n \n-
    polynomialbasis.hh File Reference
    \n+
    pqkfactory.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/utility/coeffmatrix.hh>
    \n-#include <dune/localfunctions/utility/monomialbasis.hh>
    \n-#include <dune/localfunctions/utility/multiindex.hh>
    \n-#include <dune/localfunctions/utility/basisevaluator.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n-\n+\n+\n \n-\n+\n+\n \n-\n+\n+\n \n

    \n Classes

    class  Dune::PolynomialBasis< Eval, CM, D, R >
    struct  Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, d, k >
     Factory that only creates dimension specific local finite elements. More...
     
    struct  Dune::PolynomialBasis< Eval, CM, D, R >::Convert< dummy, DVector >
    struct  Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, 3, k >
     Factory that only creates dimension specific local finite elements. More...
     
    struct  Dune::PolynomialBasis< Eval, CM, D, R >::Convert< dummy, DomainVector >
    struct  Dune::PQkLocalFiniteElementFactory< D, R, dim, k >
     Factory to create any kind of Pk/Qk like element wrapped for the virtual interface. More...
     
    class  Dune::PolynomialBasisWithMatrix< Eval, CM, D, R >
    class  Dune::PQkLocalFiniteElementCache< D, R, dim, k >
     A cache that stores all available Pk/Qk like local finite elements for the given dimension and order. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,33 +1,41 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-polynomialbasis.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bc_\bo_\be_\bf_\bf_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bb_\ba_\bs_\bi_\bs_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+pqkfactory.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b,_\b _\bk_\b _\b>\n+\u00a0 Factory that only creates dimension specific local finite elements.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\b<_\b _\bd_\bu_\bm_\bm_\by_\b,_\b _\bD_\bV_\be_\bc_\bt_\bo_\br_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\bk_\b _\b>\n+\u00a0 Factory that only creates dimension specific local finite elements.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\b<_\b _\bd_\bu_\bm_\bm_\by_\b,_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n- _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n+\u00a0 Factory to create any kind of Pk/Qk like element wrapped for the\n+ virtual interface. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n+\u00a0 A cache that stores all available Pk/Qk like local finite elements for\n+ the given dimension and order. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: polynomialbasis.hh Source File\n+dune-localfunctions: pqkfactory.hh Source File\n \n \n \n \n \n \n \n@@ -70,481 +70,217 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    polynomialbasis.hh
    \n+
    pqkfactory.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_POLYNOMIALBASIS_HH
    \n-
    6#define DUNE_POLYNOMIALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <numeric>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12
    \n-\n+
    8#include <map>
    \n+
    9
    \n+
    10#include <dune/geometry/type.hh>
    \n+
    11
    \n+\n+\n
    14
    \n-\n-\n-\n-\n-
    19
    \n-
    20namespace Dune
    \n-
    21{
    \n-
    22
    \n-
    23 // PolynomialBasis
    \n-
    24 // ---------------
    \n-
    25
    \n-
    63 template< class Eval, class CM, class D=double, class R=double >
    \n-
    \n-\n-
    65 {
    \n-\n-
    67 typedef Eval Evaluator;
    \n+\n+\n+\n+\n+\n+
    20
    \n+
    21namespace Dune
    \n+
    22{
    \n+
    23
    \n+
    28 template<class D, class R, int d, int k>
    \n+
    \n+\n+
    30 {
    \n+\n+
    32
    \n+
    \n+
    34 static LocalFiniteElementVirtualInterface<T>* create(const GeometryType&)
    \n+
    35 {
    \n+
    36 return nullptr;
    \n+
    37 }
    \n+
    \n+
    38 };
    \n+
    \n+
    39
    \n+
    44 template<class D, class R, int k>
    \n+
    \n+\n+
    46 {
    \n+\n+\n+\n+\n+\n+
    52
    \n+
    \n+
    54 static LocalFiniteElementVirtualInterface<T>* create(const GeometryType& gt)
    \n+
    55 {
    \n+
    56 if ((gt.isPrism())and (k==1))
    \n+\n+
    58 if ((gt.isPrism())and (k==2))
    \n+\n+
    60 if ((gt.isPyramid())and (k==1))
    \n+\n+
    62 if ((gt.isPyramid())and (k==2))
    \n+\n+
    64 return nullptr;
    \n+
    65 }
    \n+
    \n+
    66 };
    \n+
    \n+
    67
    \n
    68
    \n-
    69 public:
    \n-\n-
    71
    \n-
    72 typedef typename CoefficientMatrix::Field StorageField;
    \n-
    73
    \n-
    74 static const unsigned int dimension = Evaluator::dimension;
    \n-
    75 static const unsigned int dimRange = Evaluator::dimRange*CoefficientMatrix::blockSize;
    \n-\n-
    77 R,dimRange,FieldVector<R,dimRange>,
    \n-
    78 FieldMatrix<R,dimRange,dimension> > Traits;
    \n-
    79 typedef typename Evaluator::Basis Basis;
    \n-
    80 typedef typename Evaluator::DomainVector DomainVector;
    \n-
    81 template <class Fy>
    \n-
    82 using HessianFyType = FieldVector<FieldMatrix<Fy,dimension,dimension>,dimRange>;
    \n-\n-
    84
    \n-
    \n-\n-
    86 const CoefficientMatrix &coeffMatrix,
    \n-
    87 unsigned int size)
    \n-
    88 : basis_(basis),
    \n-
    89 coeffMatrix_(&coeffMatrix),
    \n-
    90 eval_(basis),
    \n-\n-
    92 size_(size)
    \n-
    93 {
    \n-
    94 // assert(coeffMatrix_);
    \n-
    95 // assert(size_ <= coeffMatrix.size()); // !!!
    \n-
    96 }
    \n+
    72 template<class D, class R, int dim, int k>
    \n+
    \n+\n+
    74 {
    \n+\n+\n+\n+\n+\n+
    80
    \n+
    81
    \n+
    \n+
    83 static FiniteElementType* create(const GeometryType& gt)
    \n+
    84 {
    \n+
    85 if (k==0)
    \n+\n+
    87
    \n+
    88 if (gt.isSimplex())
    \n+\n+
    90
    \n+
    91 if (gt.isCube())
    \n+\n+
    93
    \n+\n+
    95 }
    \n+
    \n+
    96 };
    \n
    \n
    97
    \n-
    \n-
    98 const Basis &basis () const
    \n-
    99 {
    \n-
    100 return basis_;
    \n-
    101 }
    \n-
    \n-
    102
    \n-
    \n-
    103 const CoefficientMatrix &matrix () const
    \n-
    104 {
    \n-
    105 return *coeffMatrix_;
    \n-
    106 }
    \n-
    \n-
    107
    \n-
    \n-
    108 unsigned int order () const
    \n-
    109 {
    \n-
    110 return order_;
    \n-
    111 }
    \n-
    \n-
    112
    \n-
    \n-
    113 unsigned int size () const
    \n-
    114 {
    \n-
    115 return size_;
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    \n-
    119 void evaluateFunction (const typename Traits::DomainType& x,
    \n-
    120 std::vector<typename Traits::RangeType>& out) const
    \n-
    121 {
    \n-
    122 out.resize(size());
    \n-
    123 evaluate(x,out);
    \n-
    124 }
    \n-
    \n-
    125
    \n-
    \n-
    127 void evaluateJacobian (const typename Traits::DomainType& x, // position
    \n-
    128 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    98
    \n+
    99
    \n+
    110 template<class D, class R, int dim, int k>
    \n+
    \n+
    111 class
    \n+
    112 [[deprecated("Use LagrangeLocalFiniteElementCache<D,R,dim,k> from lagrangelfecache.hh. This will be removed after release 2.10.")]]
    \n+\n+
    114 {
    \n+
    115 protected:
    \n+\n+\n+
    118 typedef typename std::map<GeometryType,FE*> FEMap;
    \n+
    119
    \n+
    120 public:
    \n+\n+
    123
    \n+\n+
    126
    \n+
    \n+\n
    129 {
    \n-
    130 out.resize(size());
    \n-
    131 jacobian(x,out);
    \n-
    132 }
    \n-
    \n-
    133
    \n-
    \n-
    135 void evaluateHessian (const typename Traits::DomainType& x, // position
    \n-
    136 std::vector<HessianType>& out) const // return value
    \n+
    130 typename FEMap::iterator it = other.cache_.begin();
    \n+
    131 typename FEMap::iterator end = other.cache_.end();
    \n+
    132 for(; it!=end; ++it)
    \n+
    133 cache_[it->first] = (it->second)->clone();
    \n+
    134 }
    \n+
    \n+
    135
    \n+
    \n+\n
    137 {
    \n-
    138 out.resize(size());
    \n-
    139 hessian(x,out);
    \n-
    140 }
    \n-
    \n-
    141
    \n-
    \n-
    143 void partial (const std::array<unsigned int, dimension>& order,
    \n-
    144 const typename Traits::DomainType& in, // position
    \n-
    145 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    146 {
    \n-
    147 out.resize(size());
    \n-
    148 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    149 if (totalOrder == 0) {
    \n-
    150 evaluateFunction(in, out);
    \n-
    151 }
    \n-
    152 else if (totalOrder == 1) {
    \n-
    153 std::vector<typename Traits::JacobianType> jacs(out.size());
    \n-
    154 unsigned int k;
    \n-
    155 for (unsigned int i=0;i<order.size();++i)
    \n-
    156 if (order[i]==1) k=i;
    \n-
    157 evaluateJacobian(in, jacs);
    \n-
    158 for (unsigned int i=0;i<out.size();++i)
    \n-
    159 for (unsigned int r=0;r<Traits::RangeType::dimension;++r)
    \n-
    160 out[i][r] = jacs[i][r][k];
    \n-
    161 }
    \n-
    162 else if (totalOrder == 2) {
    \n-
    163 std::vector<HessianType> hesss(out.size());
    \n-
    164 int k=-1,l=-1;
    \n-
    165 for (unsigned int i=0;i<order.size();++i) {
    \n-
    166 if (order[i] >= 1 && k == -1)
    \n-
    167 k = i;
    \n-
    168 else if (order[i]==1) l=i;
    \n-
    169 }
    \n-
    170 if (l==-1) l=k;
    \n-
    171 evaluateHessian(in, hesss);
    \n-
    172 for (unsigned int i=0;i<out.size();++i)
    \n-
    173 for (unsigned int r=0;r<Traits::RangeType::dimension;++r)
    \n-
    174 out[i][r] = hesss[i][r][k][l];
    \n-
    175 }
    \n-
    176 else {
    \n-
    177 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    178 }
    \n-
    179 }
    \n-
    \n-
    180
    \n-
    181 template< unsigned int deriv, class F >
    \n-
    \n-
    182 void evaluate ( const DomainVector &x, F *values ) const
    \n-
    183 {
    \n-
    184 coeffMatrix_->mult( eval_.template evaluate<deriv>( x ), size(), values);
    \n-
    185 }
    \n-
    \n-
    186 template< unsigned int deriv, class DVector, class F >
    \n-
    \n-
    187 void evaluate ( const DVector &x, F *values ) const
    \n-
    188 {
    \n-
    189 assert( DVector::dimension == dimension);
    \n-
    190 DomainVector bx;
    \n-
    191 for( int d = 0; d < dimension; ++d )
    \n-
    192 field_cast( x[ d ], bx[ d ] );
    \n-
    193 evaluate<deriv>( bx, values );
    \n-
    194 }
    \n-
    \n-
    195
    \n-
    196 template <bool dummy,class DVector>
    \n-
    \n-
    197 struct Convert
    \n-
    198 {
    \n-
    \n-
    199 static DomainVector apply( const DVector &x )
    \n-
    200 {
    \n-
    201 assert( DVector::dimension == dimension);
    \n-
    202 DomainVector bx;
    \n-
    203 for( unsigned int d = 0; d < dimension; ++d )
    \n-
    204 field_cast( x[ d ], bx[ d ] );
    \n-
    205 return bx;
    \n-
    206 }
    \n-
    \n-
    207 };
    \n-
    \n-
    208 template <bool dummy>
    \n-
    \n-
    209 struct Convert<dummy,DomainVector>
    \n-
    210 {
    \n-
    \n-
    211 static const DomainVector &apply( const DomainVector &x )
    \n-
    212 {
    \n-
    213 return x;
    \n-
    214 }
    \n-
    \n-
    215 };
    \n-
    \n-
    216 template< unsigned int deriv, class DVector, class RVector >
    \n-
    \n-
    217 void evaluate ( const DVector &x, RVector &values ) const
    \n-
    218 {
    \n-
    219 assert(values.size()>=size());
    \n-\n-
    221 coeffMatrix_->mult( eval_.template evaluate<deriv>( bx ), values );
    \n-
    222 }
    \n-
    \n-
    223
    \n-
    224 template <class Fy>
    \n-
    \n-
    225 void evaluate ( const DomainVector &x, std::vector<FieldVector<Fy,dimRange> > &values ) const
    \n-
    226 {
    \n-
    227 evaluate<0>(x,values);
    \n-
    228 }
    \n-
    \n-
    229 template< class DVector, class RVector >
    \n-
    \n-
    230 void evaluate ( const DVector &x, RVector &values ) const
    \n-
    231 {
    \n-
    232 assert( DVector::dimension == dimension);
    \n-
    233 DomainVector bx;
    \n-
    234 for( unsigned int d = 0; d < dimension; ++d )
    \n-
    235 field_cast( x[ d ], bx[ d ] );
    \n-
    236 evaluate<0>( bx, values );
    \n-
    237 }
    \n-
    \n-
    238
    \n-
    239 template< unsigned int deriv, class Vector >
    \n-
    \n-
    240 void evaluateSingle ( const DomainVector &x, Vector &values ) const
    \n-
    241 {
    \n-
    242 assert(values.size()>=size());
    \n-
    243 coeffMatrix_->template mult<deriv>( eval_.template evaluate<deriv>( x ), values );
    \n-
    244 }
    \n-
    \n-
    245 template< unsigned int deriv, class Fy >
    \n-
    \n-\n-
    247 std::vector< FieldVector<FieldVector<Fy,LFETensor<Fy,dimension,deriv>::size>,dimRange> > &values) const
    \n-
    248 {
    \n-
    249 evaluateSingle<deriv>(x,reinterpret_cast<std::vector< FieldVector<Fy,LFETensor<Fy,dimension,deriv>::size*dimRange> >&>(values));
    \n-
    250 }
    \n-
    \n-
    251 template< unsigned int deriv, class Fy >
    \n-
    \n-\n-
    253 std::vector< FieldVector<LFETensor<Fy,dimension,deriv>,dimRange> > &values) const
    \n-
    254 {
    \n-
    255 evaluateSingle<deriv>(x,reinterpret_cast<std::vector< FieldVector<Fy,LFETensor<Fy,dimension,deriv>::size*dimRange> >&>(values));
    \n-
    256 }
    \n-
    \n-
    257
    \n-
    258 template <class Fy>
    \n-
    \n-
    259 void jacobian ( const DomainVector &x,
    \n-
    260 std::vector<FieldMatrix<Fy,dimRange,dimension> > &values ) const
    \n-
    261 {
    \n-
    262 assert(values.size()>=size());
    \n-
    263 evaluateSingle<1>(x,reinterpret_cast<std::vector<FieldVector<Fy,dimRange*dimension> >&>(values));
    \n-
    264 }
    \n-
    \n-
    265 template< class DVector, class RVector >
    \n-
    \n-
    266 void jacobian ( const DVector &x, RVector &values ) const
    \n-
    267 {
    \n-
    268 assert( DVector::dimension == dimension);
    \n-
    269 DomainVector bx;
    \n-
    270 for( unsigned int d = 0; d < dimension; ++d )
    \n-
    271 field_cast( x[ d ], bx[ d ] );
    \n-
    272 jacobian( bx, values );
    \n-
    273 }
    \n-
    \n-
    274 template <class Fy>
    \n-
    \n-
    275 void hessian ( const DomainVector &x,
    \n-
    276 std::vector<HessianFyType<Fy>> &values ) const
    \n-
    277 {
    \n-
    278 assert(values.size()>=size());
    \n-
    279 // only upper part of hessians matrix is computed - so we have
    \n-
    280 // y[0] = FV< FV<Fy,d*(d+1)/2>, dimRange>
    \n-
    281 const unsigned int hsize = LFETensor<Fy,dimension,2>::size;
    \n-
    282 std::vector< FieldVector< FieldVector<Fy,hsize>, dimRange> > y( size() );
    \n-
    283 evaluateSingle<2>(x, y);
    \n-
    284 unsigned int q = 0;
    \n-
    285 for (unsigned int i = 0; i < size(); ++i)
    \n-
    286 for (unsigned int r = 0; r < dimRange; ++r)
    \n-
    287 {
    \n-
    288 q = 0;
    \n-
    289 // tensor-based things follow unintuitive index scheme
    \n-
    290 // e.g. for dim = 3, the k-l index of y is 00,01,11,02,12,22, i.e. partial derivatives
    \n-
    291 // are ordered: xx,xy,yy,xz,yz,zz
    \n-
    292
    \n-
    293 // Fill values 'directionwise'
    \n-
    294 for (unsigned int k = 0; k < dimension; ++k)
    \n-
    295 for (unsigned int l = 0; l <= k; ++l)
    \n-
    296 {
    \n-
    297
    \n-
    298 values[i][r][k][l] = y[i][r][q];
    \n-
    299 values[i][r][l][k] = y[i][r][q];
    \n-
    300 assert(q < hsize);
    \n-
    301 ++q;
    \n-
    302 }
    \n-
    303 }
    \n-
    304 // evaluateSingle<2>(x,reinterpret_cast<std::vector<FieldVector<Fy,dimRange*dimension*dimension> >&>(values));
    \n-
    305 }
    \n-
    \n-
    306 template< class DVector, class HVector >
    \n-
    \n-
    307 void hessian ( const DVector &x, HVector &values ) const
    \n-
    308 {
    \n-
    309 assert( DVector::dimension == dimension);
    \n-
    310 DomainVector bx;
    \n-
    311 for( unsigned int d = 0; d < dimension; ++d )
    \n-
    312 field_cast( x[ d ], bx[ d ] );
    \n-
    313 hessian( bx, values );
    \n-
    314 }
    \n-
    \n-
    315
    \n-
    316 template <class Fy>
    \n-
    \n-
    317 void integrate ( std::vector<Fy> &values ) const
    \n-
    318 {
    \n-
    319 assert(values.size()>=size());
    \n-
    320 coeffMatrix_->mult( eval_.template integrate(), values );
    \n-
    321 }
    \n-
    \n-
    322
    \n-
    323 protected:
    \n-
    \n-\n-
    325 : basis_(other.basis_),
    \n-\n-
    327 eval_(basis_),
    \n-\n-
    329 size_(other.size_)
    \n-
    330 {}
    \n-
    \n-\n-
    332 const Basis &basis_;
    \n-\n-
    334 mutable Evaluator eval_;
    \n-
    335 unsigned int order_,size_;
    \n-
    336 };
    \n-
    \n-
    337
    \n-
    344 template< class Eval, class CM = SparseCoeffMatrix<typename Eval::Field,Eval::dimRange>,
    \n-
    345 class D=double, class R=double>
    \n-
    \n-\n-
    347 : public PolynomialBasis< Eval, CM, D, R >
    \n-
    348 {
    \n-
    349 public:
    \n-\n-
    351
    \n-
    352 private:
    \n-
    353 typedef Eval Evaluator;
    \n-
    354
    \n-\n-\n-
    357
    \n-
    358 public:
    \n-
    359 typedef typename Base::Basis Basis;
    \n-
    360
    \n-
    \n-\n-
    362 : Base(basis,coeffMatrix_,0)
    \n-
    363 {}
    \n-
    \n-
    364
    \n-
    365 template <class Matrix>
    \n-
    \n-
    366 void fill(const Matrix& matrix)
    \n-
    367 {
    \n-
    368 coeffMatrix_.fill(matrix);
    \n-
    369 this->size_ = coeffMatrix_.size();
    \n-
    370 }
    \n-
    \n-
    371 template <class Matrix>
    \n-
    \n-
    372 void fill(const Matrix& matrix,int size)
    \n-
    373 {
    \n-
    374 coeffMatrix_.fill(matrix);
    \n-
    375 assert(size<=coeffMatrix_.size());
    \n-
    376 this->size_ = size;
    \n-
    377 }
    \n-
    \n-
    378
    \n-
    379 private:
    \n-\n-\n-
    382 CoefficientMatrix coeffMatrix_;
    \n-
    383 };
    \n-
    \n-
    384}
    \n-
    385#endif // DUNE_POLYNOMIALBASIS_HH
    \n-\n-\n-\n-\n+
    138 typename FEMap::iterator it = cache_.begin();
    \n+
    139 typename FEMap::iterator end = cache_.end();
    \n+
    140 for(; it!=end; ++it)
    \n+
    141 delete it->second;
    \n+
    142 }
    \n+
    \n+
    143
    \n+
    \n+
    145 const FiniteElementType& get(const GeometryType& gt) const
    \n+
    146 {
    \n+
    147 typename FEMap::const_iterator it = cache_.find(gt);
    \n+
    148 if (it==cache_.end())
    \n+
    149 {
    \n+\n+
    151 if (fe==0)
    \n+
    152 DUNE_THROW(Dune::NotImplemented,"No Pk/Qk like local finite element available for geometry type " << gt << " and order " << k);
    \n+
    153
    \n+
    154 cache_[gt] = fe;
    \n+
    155 return *fe;
    \n+
    156 }
    \n+
    157 return *(it->second);
    \n+
    158 }
    \n+
    \n+
    159
    \n+
    160 protected:
    \n+
    161 mutable FEMap cache_;
    \n+
    162
    \n+
    163 };
    \n+
    \n+
    164
    \n+
    165}
    \n+
    166
    \n+
    167#endif
    \n+\n+\n+\n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Definition polynomialbasis.hh:65
    \n-
    void evaluate(const DVector &x, RVector &values) const
    Definition polynomialbasis.hh:230
    \n-
    void evaluate(const DomainVector &x, std::vector< FieldVector< Fy, dimRange > > &values) const
    Definition polynomialbasis.hh:225
    \n-
    PolynomialBasis(const PolynomialBasis &other)
    Definition polynomialbasis.hh:324
    \n-
    void evaluate(const DVector &x, F *values) const
    Definition polynomialbasis.hh:187
    \n-
    void evaluateHessian(const typename Traits::DomainType &x, std::vector< HessianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition polynomialbasis.hh:135
    \n-
    CoefficientMatrix::Field StorageField
    Definition polynomialbasis.hh:72
    \n-
    static const unsigned int dimRange
    Definition polynomialbasis.hh:75
    \n-
    void jacobian(const DVector &x, RVector &values) const
    Definition polynomialbasis.hh:266
    \n-
    Evaluator::DomainVector DomainVector
    Definition polynomialbasis.hh:80
    \n-
    Evaluator::Basis Basis
    Definition polynomialbasis.hh:79
    \n-
    void evaluateSingle(const DomainVector &x, Vector &values) const
    Definition polynomialbasis.hh:240
    \n-
    void evaluateSingle(const DomainVector &x, std::vector< FieldVector< LFETensor< Fy, dimension, deriv >, dimRange > > &values) const
    Definition polynomialbasis.hh:252
    \n-
    void jacobian(const DomainVector &x, std::vector< FieldMatrix< Fy, dimRange, dimension > > &values) const
    Definition polynomialbasis.hh:259
    \n-
    const CoefficientMatrix & matrix() const
    Definition polynomialbasis.hh:103
    \n-
    const Basis & basis_
    Definition polynomialbasis.hh:332
    \n-
    void evaluateFunction(const typename Traits::DomainType &x, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition polynomialbasis.hh:119
    \n-
    static const unsigned int dimension
    Definition polynomialbasis.hh:74
    \n-
    void evaluateJacobian(const typename Traits::DomainType &x, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition polynomialbasis.hh:127
    \n-
    PolynomialBasis & operator=(const PolynomialBasis &)
    \n-
    const CoefficientMatrix * coeffMatrix_
    Definition polynomialbasis.hh:333
    \n-
    void integrate(std::vector< Fy > &values) const
    Definition polynomialbasis.hh:317
    \n-
    unsigned int size() const
    Definition polynomialbasis.hh:113
    \n-
    void evaluate(const DomainVector &x, F *values) const
    Definition polynomialbasis.hh:182
    \n-
    void hessian(const DVector &x, HVector &values) const
    Definition polynomialbasis.hh:307
    \n-
    CM CoefficientMatrix
    Definition polynomialbasis.hh:70
    \n-
    HessianFyType< R > HessianType
    Definition polynomialbasis.hh:83
    \n-
    LocalBasisTraits< D, dimension, FieldVector< D, dimension >, R, dimRange, FieldVector< R, dimRange >, FieldMatrix< R, dimRange, dimension > > Traits
    Definition polynomialbasis.hh:78
    \n-
    unsigned int order_
    Definition polynomialbasis.hh:335
    \n-
    void hessian(const DomainVector &x, std::vector< HessianFyType< Fy > > &values) const
    Definition polynomialbasis.hh:275
    \n-
    void evaluate(const DVector &x, RVector &values) const
    Definition polynomialbasis.hh:217
    \n-
    PolynomialBasis(const Basis &basis, const CoefficientMatrix &coeffMatrix, unsigned int size)
    Definition polynomialbasis.hh:85
    \n-
    FieldVector< FieldMatrix< Fy, dimension, dimension >, dimRange > HessianFyType
    Definition polynomialbasis.hh:82
    \n-
    unsigned int order() const
    Definition polynomialbasis.hh:108
    \n-
    void evaluateSingle(const DomainVector &x, std::vector< FieldVector< FieldVector< Fy, LFETensor< Fy, dimension, deriv >::size >, dimRange > > &values) const
    Definition polynomialbasis.hh:246
    \n-
    const Basis & basis() const
    Definition polynomialbasis.hh:98
    \n-
    void partial(const std::array< unsigned int, dimension > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition polynomialbasis.hh:143
    \n-
    unsigned int size_
    Definition polynomialbasis.hh:335
    \n-
    Evaluator eval_
    Definition polynomialbasis.hh:334
    \n-
    Definition polynomialbasis.hh:198
    \n-
    static DomainVector apply(const DVector &x)
    Definition polynomialbasis.hh:199
    \n-
    static const DomainVector & apply(const DomainVector &x)
    Definition polynomialbasis.hh:211
    \n-
    Definition polynomialbasis.hh:348
    \n-
    PolynomialBasisWithMatrix(const Basis &basis)
    Definition polynomialbasis.hh:361
    \n-
    CM CoefficientMatrix
    Definition polynomialbasis.hh:350
    \n-
    void fill(const Matrix &matrix, int size)
    Definition polynomialbasis.hh:372
    \n-
    Base::Basis Basis
    Definition polynomialbasis.hh:359
    \n-
    void fill(const Matrix &matrix)
    Definition polynomialbasis.hh:366
    \n-
    Definition tensor.hh:33
    \n-\n+
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:225
    \n+
    class for wrapping a finite element using the virtual interface
    Definition virtualwrappers.hh:240
    \n+
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n+
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:649
    \n+
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:809
    \n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:836
    \n+
    The local p0 finite element on all types of reference elements.
    Definition p0.hh:25
    \n+
    Factory that only creates dimension specific local finite elements.
    Definition pqkfactory.hh:30
    \n+
    P0LocalFiniteElement< D, R, d >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:31
    \n+
    static LocalFiniteElementVirtualInterface< T > * create(const GeometryType &)
    create finite element for given GeometryType
    Definition pqkfactory.hh:34
    \n+
    static LocalFiniteElementVirtualInterface< T > * create(const GeometryType &gt)
    create finite element for given GeometryType
    Definition pqkfactory.hh:54
    \n+
    P0LocalFiniteElement< D, R, 3 >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:47
    \n+
    Factory to create any kind of Pk/Qk like element wrapped for the virtual interface.
    Definition pqkfactory.hh:74
    \n+
    LagrangeCubeLocalFiniteElement< D, R, dim, k > Qk
    Definition pqkfactory.hh:79
    \n+
    LagrangeSimplexLocalFiniteElement< D, R, dim, k > Pk
    Definition pqkfactory.hh:78
    \n+
    LocalFiniteElementVirtualInterface< T > FiniteElementType
    Definition pqkfactory.hh:76
    \n+
    static FiniteElementType * create(const GeometryType &gt)
    create finite element for given GeometryType
    Definition pqkfactory.hh:83
    \n+
    P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:75
    \n+
    P0LocalFiniteElement< D, R, dim > P0
    Definition pqkfactory.hh:77
    \n+
    A cache that stores all available Pk/Qk like local finite elements for the given dimension and order.
    Definition pqkfactory.hh:114
    \n+
    P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:116
    \n+
    LocalFiniteElementVirtualInterface< T > FE
    Definition pqkfactory.hh:117
    \n+
    PQkLocalFiniteElementCache()
    Default constructor.
    Definition pqkfactory.hh:125
    \n+
    FE FiniteElementType
    Type of the finite elements stored in this cache.
    Definition pqkfactory.hh:122
    \n+
    std::map< GeometryType, FE * > FEMap
    Definition pqkfactory.hh:118
    \n+
    const FiniteElementType & get(const GeometryType &gt) const
    Get local finite element for given GeometryType.
    Definition pqkfactory.hh:145
    \n+
    FEMap cache_
    Definition pqkfactory.hh:161
    \n+
    ~PQkLocalFiniteElementCache()
    Definition pqkfactory.hh:136
    \n+
    PQkLocalFiniteElementCache(const PQkLocalFiniteElementCache &other)
    Copy constructor.
    Definition pqkfactory.hh:128
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,538 +1,266 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-polynomialbasis.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+pqkfactory.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_POLYNOMIALBASIS_HH\n-6#define DUNE_POLYNOMIALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+8#include \n+9\n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh>\n 14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bc_\bo_\be_\bf_\bf_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bb_\ba_\bs_\bi_\bs_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\bh>\n-19\n-20namespace _\bD_\bu_\bn_\be\n-21{\n-22\n-23 // PolynomialBasis\n-24 // ---------------\n-25\n-63 template< class Eval, class CM, class D=double, class R=double >\n-_\b6_\b4 class _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-65 {\n-66 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b> _\bT_\bh_\bi_\bs;\n-67 typedef Eval Evaluator;\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be\n+22{\n+23\n+28 template\n+_\b2_\b9 struct _\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+30 {\n+_\b3_\b1 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+_\bT;\n+32\n+_\b3_\b4 static _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b>* _\bc_\br_\be_\ba_\bt_\be(const GeometryType&)\n+35 {\n+36 return nullptr;\n+37 }\n+38 };\n+39\n+44 template\n+_\b4_\b5 struct _\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+46 {\n+_\b4_\b7 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b3_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+_\bT;\n+_\b4_\b8 using _\bP_\br_\bi_\bs_\bm_\bP_\b1 = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b1_\b>;\n+_\b4_\b9 using _\bP_\br_\bi_\bs_\bm_\bP_\b2 = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b>;\n+_\b5_\b0 using _\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1 = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b1_\b>;\n+_\b5_\b1 using _\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2 = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b>;\n+52\n+_\b5_\b4 static _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b>* _\bc_\br_\be_\ba_\bt_\be(const GeometryType& gt)\n+55 {\n+56 if ((gt.isPrism())and (k==1))\n+57 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\br_\bi_\bs_\bm_\bP_\b1_\b>(_\bP_\br_\bi_\bs_\bm_\bP_\b1());\n+58 if ((gt.isPrism())and (k==2))\n+59 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\br_\bi_\bs_\bm_\bP_\b2_\b>(_\bP_\br_\bi_\bs_\bm_\bP_\b2());\n+60 if ((gt.isPyramid())and (k==1))\n+61 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1_\b>(_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1());\n+62 if ((gt.isPyramid())and (k==2))\n+63 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2_\b>(_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2());\n+64 return nullptr;\n+65 }\n+66 };\n+67\n 68\n-69 public:\n-_\b7_\b0 typedef CM _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx;\n-71\n-_\b7_\b2 typedef typename CoefficientMatrix::Field _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-73\n-_\b7_\b4 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Evaluator::dimension;\n-_\b7_\b5 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Evaluator::dimRange*CoefficientMatrix::\n-blockSize;\n-76 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b>,\n-77 R,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be,FieldVector,\n-_\b7_\b8 FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-_\b7_\b9 typedef typename Evaluator::Basis _\bB_\ba_\bs_\bi_\bs;\n-_\b8_\b0 typedef typename Evaluator::DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-81 template \n-_\b8_\b2 using _\bH_\be_\bs_\bs_\bi_\ba_\bn_\bF_\by_\bT_\by_\bp_\be =\n-FieldVector,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be>;\n-_\b8_\b3 using _\bH_\be_\bs_\bs_\bi_\ba_\bn_\bT_\by_\bp_\be = _\bH_\be_\bs_\bs_\bi_\ba_\bn_\bF_\by_\bT_\by_\bp_\be_\b<_\bR_\b>;\n-84\n-_\b8_\b5 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs (const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs,\n-86 const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx &coeffMatrix,\n-87 unsigned int _\bs_\bi_\bz_\be)\n-88 : _\bb_\ba_\bs_\bi_\bs_\b_(_\bb_\ba_\bs_\bi_\bs),\n-89 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_(&coeffMatrix),\n-90 _\be_\bv_\ba_\bl_\b_(_\bb_\ba_\bs_\bi_\bs),\n-91 _\bo_\br_\bd_\be_\br_\b_(_\bb_\ba_\bs_\bi_\bs._\bo_\br_\bd_\be_\br()),\n-92 _\bs_\bi_\bz_\be_\b_(_\bs_\bi_\bz_\be)\n-93 {\n-94 // assert(coeffMatrix_);\n-95 // assert(size_ <= coeffMatrix.size()); // !!!\n-96 }\n+72 template\n+_\b7_\b3 struct _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+74 {\n+_\b7_\b5 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:\n+_\bT_\br_\ba_\bi_\bt_\bs _\bT;\n+_\b7_\b6 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n+_\b7_\b7 using _\bP_\b0 = _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>;\n+_\b7_\b8 using _\bP_\bk = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>;\n+_\b7_\b9 using _\bQ_\bk = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>;\n+80\n+81\n+_\b8_\b3 static _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be* _\bc_\br_\be_\ba_\bt_\be(const GeometryType& gt)\n+84 {\n+85 if (k==0)\n+86 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\b0_\b>(_\bP_\b0(gt));\n+87\n+88 if (gt.isSimplex())\n+89 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bP_\bk_\b>(_\bP_\bk());\n+90\n+91 if (gt.isCube())\n+92 return new _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bQ_\bk_\b>(_\bQ_\bk());\n+93\n+94 return _\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be(gt);\n+95 }\n+96 };\n 97\n-_\b9_\b8 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs () const\n-99 {\n-100 return _\bb_\ba_\bs_\bi_\bs_\b_;\n-101 }\n-102\n-_\b1_\b0_\b3 const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx &_\bm_\ba_\bt_\br_\bi_\bx () const\n-104 {\n-105 return *_\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_;\n-106 }\n-107\n-_\b1_\b0_\b8 unsigned int _\bo_\br_\bd_\be_\br () const\n-109 {\n-110 return _\bo_\br_\bd_\be_\br_\b_;\n-111 }\n-112\n-_\b1_\b1_\b3 unsigned int _\bs_\bi_\bz_\be () const\n+98\n+99\n+110 template\n+_\b1_\b1_\b1 class\n+112 [[deprecated(\"Use LagrangeLocalFiniteElementCache from\n+lagrangelfecache.hh. This will be removed after release 2.10.\")]]\n+113 _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n 114 {\n-115 return _\bs_\bi_\bz_\be_\b_;\n-116 }\n-117\n-_\b1_\b1_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n-120 std::vector& out) const\n-121 {\n-122 out.resize(_\bs_\bi_\bz_\be());\n-123 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(x,out);\n-124 }\n-125\n-_\b1_\b2_\b7 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x, // position\n-128 std::vector& out) const // return value\n+115 protected:\n+_\b1_\b1_\b6 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:\n+_\bT_\br_\ba_\bi_\bt_\bs _\bT;\n+_\b1_\b1_\b7 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b> _\bF_\bE;\n+_\b1_\b1_\b8 typedef typename std::map _\bF_\bE_\bM_\ba_\bp;\n+119\n+120 public:\n+_\b1_\b2_\b2 typedef _\bF_\bE _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n+123\n+_\b1_\b2_\b5 _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be() {}\n+126\n+_\b1_\b2_\b8 _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be(const _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be& other)\n 129 {\n-130 out.resize(_\bs_\bi_\bz_\be());\n-131 _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn(x,out);\n-132 }\n-133\n-_\b1_\b3_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bH_\be_\bs_\bs_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x, // position\n-136 std::vector& out) const // return value\n+130 typename FEMap::iterator it = other._\bc_\ba_\bc_\bh_\be_\b_.begin();\n+131 typename FEMap::iterator end = other._\bc_\ba_\bc_\bh_\be_\b_.end();\n+132 for(; it!=end; ++it)\n+133 cache_[it->first] = (it->second)->clone();\n+134 }\n+135\n+_\b1_\b3_\b6 _\b~_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be()\n 137 {\n-138 out.resize(_\bs_\bi_\bz_\be());\n-139 _\bh_\be_\bs_\bs_\bi_\ba_\bn(x,out);\n-140 }\n-141\n-_\b1_\b4_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-144 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-145 std::vector& out) const // return value\n+138 typename FEMap::iterator it = cache_.begin();\n+139 typename FEMap::iterator end = cache_.end();\n+140 for(; it!=end; ++it)\n+141 delete it->second;\n+142 }\n+143\n+_\b1_\b4_\b5 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& _\bg_\be_\bt(const GeometryType& gt) const\n 146 {\n-147 out.resize(_\bs_\bi_\bz_\be());\n-148 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-149 if (totalOrder == 0) {\n-150 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-151 }\n-152 else if (totalOrder == 1) {\n-153 std::vector jacs(out.size());\n-154 unsigned int k;\n-155 for (unsigned int i=0;i<_\bo_\br_\bd_\be_\br.size();++i)\n-156 if (_\bo_\br_\bd_\be_\br[i]==1) k=i;\n-157 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(in, jacs);\n-158 for (unsigned int i=0;i hesss(out.size());\n-164 int k=-1,l=-1;\n-165 for (unsigned int i=0;i<_\bo_\br_\bd_\be_\br.size();++i) {\n-166 if (_\bo_\br_\bd_\be_\br[i] >= 1 && k == -1)\n-167 k = i;\n-168 else if (_\bo_\br_\bd_\be_\br[i]==1) l=i;\n-169 }\n-170 if (l==-1) l=k;\n-171 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bH_\be_\bs_\bs_\bi_\ba_\bn(in, hesss);\n-172 for (unsigned int i=0;i\n-_\b1_\b8_\b2 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, F *values ) const\n-183 {\n-184 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_->mult( _\be_\bv_\ba_\bl_\b_.template evaluate( x ), _\bs_\bi_\bz_\be(), values);\n-185 }\n-186 template< unsigned int deriv, class DVector, class F >\n-_\b1_\b8_\b7 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, F *values ) const\n-188 {\n-189 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-190 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n-191 for( int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n-192 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n-193 evaluate( bx, values );\n-194 }\n-195\n-196 template \n-_\b1_\b9_\b7 struct _\bC_\bo_\bn_\bv_\be_\br_\bt\n-198 {\n-_\b1_\b9_\b9 static _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br _\ba_\bp_\bp_\bl_\by( const DVector &x )\n-200 {\n-201 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-202 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n-203 for( unsigned int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n-204 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n-205 return bx;\n-206 }\n-207 };\n-208 template \n-_\b2_\b0_\b9 struct _\bC_\bo_\bn_\bv_\be_\br_\bt\n-210 {\n-_\b2_\b1_\b1 static const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &_\ba_\bp_\bp_\bl_\by( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x )\n-212 {\n-213 return x;\n-214 }\n-215 };\n-216 template< unsigned int deriv, class DVector, class RVector >\n-_\b2_\b1_\b7 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n-218 {\n-219 assert(values.size()>=_\bs_\bi_\bz_\be());\n-220 const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &bx = _\bC_\bo_\bn_\bv_\be_\br_\bt_\b<_\bt_\br_\bu_\be_\b,_\bD_\bV_\be_\bc_\bt_\bo_\br_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by(x);\n-221 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_->mult( _\be_\bv_\ba_\bl_\b_.template evaluate( bx ), values );\n-222 }\n-223\n-224 template \n-_\b2_\b2_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, std::vector\n-> &values ) const\n-226 {\n-227 evaluate<0>(x,values);\n-228 }\n-229 template< class DVector, class RVector >\n-_\b2_\b3_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n-231 {\n-232 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-233 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n-234 for( unsigned int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n-235 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n-236 evaluate<0>( bx, values );\n-237 }\n-238\n-239 template< unsigned int deriv, class Vector >\n-_\b2_\b4_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, Vector &values ) const\n-241 {\n-242 assert(values.size()>=_\bs_\bi_\bz_\be());\n-243 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_->template mult( _\be_\bv_\ba_\bl_\b_.template evaluate( x ),\n-values );\n-244 }\n-245 template< unsigned int deriv, class Fy >\n-_\b2_\b4_\b6 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-247 std::vector< FieldVector_\b:_\b:\n-_\bs_\bi_\bz_\be>,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> > &values) const\n-248 {\n-249 evaluateSingle(x,reinterpret_cast::size*_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> >&>(values));\n-250 }\n-251 template< unsigned int deriv, class Fy >\n-_\b2_\b5_\b2 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-253 std::vector< FieldVector<_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\by_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bd_\be_\br_\bi_\bv_\b>,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> > &values)\n-const\n-254 {\n-255 evaluateSingle(x,reinterpret_cast::size*_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> >&>(values));\n-256 }\n-257\n-258 template \n-_\b2_\b5_\b9 void _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-260 std::vector > &values ) const\n-261 {\n-262 assert(values.size()>=_\bs_\bi_\bz_\be());\n-263 evaluateSingle<1>(x,reinterpret_cast >&>(values));\n-264 }\n-265 template< class DVector, class RVector >\n-_\b2_\b6_\b6 void _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const DVector &x, RVector &values ) const\n-267 {\n-268 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-269 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n-270 for( unsigned int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n-271 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n-272 _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn( bx, values );\n-273 }\n-274 template \n-_\b2_\b7_\b5 void _\bh_\be_\bs_\bs_\bi_\ba_\bn ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-276 std::vector<_\bH_\be_\bs_\bs_\bi_\ba_\bn_\bF_\by_\bT_\by_\bp_\be_\b<_\bF_\by_\b>> &values ) const\n-277 {\n-278 assert(values.size()>=_\bs_\bi_\bz_\be());\n-279 // only upper part of hessians matrix is computed - so we have\n-280 // y[0] = FV< FV, dimRange>\n-281 const unsigned int hsize = _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\by_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b2_\b>_\b:_\b:_\bs_\bi_\bz_\be;\n-282 std::vector< FieldVector< FieldVector, _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> > y( _\bs_\bi_\bz_\be() );\n-283 evaluateSingle<2>(x, y);\n-284 unsigned int q = 0;\n-285 for (unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-286 for (unsigned int r = 0; r < _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be; ++r)\n-287 {\n-288 q = 0;\n-289 // tensor-based things follow unintuitive index scheme\n-290 // e.g. for dim = 3, the k-l index of y is 00,01,11,02,12,22, i.e. partial\n-derivatives\n-291 // are ordered: xx,xy,yy,xz,yz,zz\n-292\n-293 // Fill values 'directionwise'\n-294 for (unsigned int k = 0; k < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++k)\n-295 for (unsigned int l = 0; l <= k; ++l)\n-296 {\n-297\n-298 values[i][r][k][l] = y[i][r][q];\n-299 values[i][r][l][k] = y[i][r][q];\n-300 assert(q < hsize);\n-301 ++q;\n-302 }\n-303 }\n-304 // evaluateSingle<2>(x,reinterpret_cast >&>(values));\n-305 }\n-306 template< class DVector, class HVector >\n-_\b3_\b0_\b7 void _\bh_\be_\bs_\bs_\bi_\ba_\bn ( const DVector &x, HVector &values ) const\n-308 {\n-309 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-310 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n-311 for( unsigned int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n-312 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n-313 _\bh_\be_\bs_\bs_\bi_\ba_\bn( bx, values );\n-314 }\n-315\n-316 template \n-_\b3_\b1_\b7 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( std::vector &values ) const\n-318 {\n-319 assert(values.size()>=_\bs_\bi_\bz_\be());\n-320 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_->mult( _\be_\bv_\ba_\bl_\b_.template _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be(), values );\n-321 }\n-322\n-323 protected:\n-_\b3_\b2_\b4 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs(const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs &other)\n-325 : _\bb_\ba_\bs_\bi_\bs_\b_(other._\bb_\ba_\bs_\bi_\bs_\b_),\n-326 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_(other._\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_),\n-327 _\be_\bv_\ba_\bl_\b_(_\bb_\ba_\bs_\bi_\bs_\b_),\n-328 _\bo_\br_\bd_\be_\br_\b_(_\bb_\ba_\bs_\bi_\bs_\b_._\bo_\br_\bd_\be_\br()),\n-329 _\bs_\bi_\bz_\be_\b_(other._\bs_\bi_\bz_\be_\b_)\n-330 {}\n-_\b3_\b3_\b1 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs&);\n-_\b3_\b3_\b2 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs_\b_;\n-_\b3_\b3_\b3 const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx* _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_;\n-_\b3_\b3_\b4 mutable Evaluator _\be_\bv_\ba_\bl_\b_;\n-_\b3_\b3_\b5 unsigned int _\bo_\br_\bd_\be_\br_\b_,_\bs_\bi_\bz_\be_\b_;\n-336 };\n-337\n-344 template< class Eval, class CM = SparseCoeffMatrix,\n-345 class D=double, class R=double>\n-_\b3_\b4_\b6 class _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n-347 : public _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< Eval, CM, D, R >\n-348 {\n-349 public:\n-_\b3_\b5_\b0 typedef CM _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx;\n-351\n-352 private:\n-353 typedef Eval Evaluator;\n-354\n-355 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b,_\b _\bC_\bM_\b _\b> _\bT_\bh_\bi_\bs;\n-356 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b> _\bB_\ba_\bs_\be;\n-357\n-358 public:\n-_\b3_\b5_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs _\bB_\ba_\bs_\bi_\bs;\n-360\n-_\b3_\b6_\b1 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx (const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs)\n-362 : _\bB_\ba_\bs_\be(_\bb_\ba_\bs_\bi_\bs,coeffMatrix_,0)\n-363 {}\n-364\n-365 template \n-_\b3_\b6_\b6 void _\bf_\bi_\bl_\bl(const Matrix& _\bm_\ba_\bt_\br_\bi_\bx)\n-367 {\n-368 coeffMatrix_.fill(_\bm_\ba_\bt_\br_\bi_\bx);\n-369 this->_\bs_\bi_\bz_\be_\b_ = coeffMatrix_.size();\n-370 }\n-371 template \n-_\b3_\b7_\b2 void _\bf_\bi_\bl_\bl(const Matrix& _\bm_\ba_\bt_\br_\bi_\bx,int _\bs_\bi_\bz_\be)\n-373 {\n-374 coeffMatrix_.fill(_\bm_\ba_\bt_\br_\bi_\bx);\n-375 assert(_\bs_\bi_\bz_\be<=coeffMatrix_.size());\n-376 this->_\bs_\bi_\bz_\be_\b_ = _\bs_\bi_\bz_\be;\n-377 }\n-378\n-379 private:\n-380 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx(const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx &);\n-381 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx &operator=(const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx &);\n-382 _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx coeffMatrix_;\n-383 };\n-384}\n-385#endif // DUNE_POLYNOMIALBASIS_HH\n-_\bc_\bo_\be_\bf_\bf_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh\n-_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n-_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bb_\ba_\bs_\bi_\bs_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\bh\n+147 typename FEMap::const_iterator it = cache_.find(gt);\n+148 if (it==cache_.end())\n+149 {\n+150 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be* fe = _\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+(gt);\n+151 if (fe==0)\n+152 DUNE_THROW(Dune::NotImplemented,\"No Pk/Qk like local finite element\n+available for geometry type \" << gt << \" and order \" << k);\n+153\n+154 cache_[gt] = fe;\n+155 return *fe;\n+156 }\n+157 return *(it->second);\n+158 }\n+159\n+160 protected:\n+_\b1_\b6_\b1 mutable _\bF_\bE_\bM_\ba_\bp _\bc_\ba_\bc_\bh_\be_\b_;\n+162\n+163 };\n+164\n+165}\n+166\n+167#endif\n+_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n+_\bp_\b0_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DVector &x, RVector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:230\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, std::vector< FieldVector< Fy, dimRange > >\n-&values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-PolynomialBasis(const PolynomialBasis &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:324\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DVector &x, F *values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bH_\be_\bs_\bs_\bi_\ba_\bn\n-void evaluateHessian(const typename Traits::DomainType &x, std::vector<\n-HessianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n-CoefficientMatrix::Field StorageField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const unsigned int dimRange\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void jacobian(const DVector &x, RVector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:266\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n-Evaluator::DomainVector DomainVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-Evaluator::Basis Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be\n-void evaluateSingle(const DomainVector &x, Vector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be\n-void evaluateSingle(const DomainVector &x, std::vector< FieldVector< LFETensor<\n-Fy, dimension, deriv >, dimRange > > &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:252\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void jacobian(const DomainVector &x, std::vector< FieldMatrix< Fy, dimRange,\n-dimension > > &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:259\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bm_\ba_\bt_\br_\bi_\bx\n-const CoefficientMatrix & matrix() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_\n-const Basis & basis_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:332\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &x, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &x, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-PolynomialBasis & operator=(const PolynomialBasis &)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_\n-const CoefficientMatrix * coeffMatrix_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:333\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n-void integrate(std::vector< Fy > &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:317\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, F *values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:182\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bh_\be_\bs_\bs_\bi_\ba_\bn\n-void hessian(const DVector &x, HVector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:307\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx\n-CM CoefficientMatrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bH_\be_\bs_\bs_\bi_\ba_\bn_\bT_\by_\bp_\be\n-HessianFyType< R > HessianType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, dimension, FieldVector< D, dimension >, R, dimRange,\n-FieldVector< R, dimRange >, FieldMatrix< R, dimRange, dimension > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n-unsigned int order_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:335\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bh_\be_\bs_\bs_\bi_\ba_\bn\n-void hessian(const DomainVector &x, std::vector< HessianFyType< Fy > > &values)\n-const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:275\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DVector &x, RVector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:217\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-PolynomialBasis(const Basis &basis, const CoefficientMatrix &coeffMatrix,\n-unsigned int size)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bH_\be_\bs_\bs_\bi_\ba_\bn_\bF_\by_\bT_\by_\bp_\be\n-FieldVector< FieldMatrix< Fy, dimension, dimension >, dimRange > HessianFyType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be\n-void evaluateSingle(const DomainVector &x, std::vector< FieldVector<\n-FieldVector< Fy, LFETensor< Fy, dimension, deriv >::size >, dimRange > >\n-&values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:246\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n-const Basis & basis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, dimension > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:143\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\b_\n-unsigned int size_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:335\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\b_\n-Evaluator eval_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:334\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:198\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static DomainVector apply(const DVector &x)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\b<_\b _\bd_\bu_\bm_\bm_\by_\b,_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static const DomainVector & apply(const DomainVector &x)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:211\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n-PolynomialBasisWithMatrix(const Basis &basis)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:361\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx\n-CM CoefficientMatrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:350\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n-void fill(const Matrix &matrix, int size)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:372\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-Base::Basis Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:359\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n-void fill(const Matrix &matrix)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:366\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:33\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual base class for local finite elements with functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n+class for wrapping a finite element using the virtual interface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for cubes with arbitrary compile-time dimension and\n+polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for 3d prisms with arbitrary compile-time polynomial\n+order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:649\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for 3d pyramids with compile-time polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:809\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for simplices with arbitrary compile-time dimension and\n+polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:836\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+The local p0 finite element on all types of reference elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory that only creates dimension specific local finite elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT\n+P0LocalFiniteElement< D, R, d >::Traits::LocalBasisType::Traits T\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static LocalFiniteElementVirtualInterface< T > * create(const GeometryType &)\n+create finite element for given GeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\bk_\b _\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static LocalFiniteElementVirtualInterface< T > * create(const GeometryType >)\n+create finite element for given GeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bi_\bm_\bS_\bp_\be_\bc_\bi_\bf_\bi_\bc_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\bk_\b _\b>_\b:_\b:_\bT\n+P0LocalFiniteElement< D, R, 3 >::Traits::LocalBasisType::Traits T\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory to create any kind of Pk/Qk like element wrapped for the virtual\n+interface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\bk\n+LagrangeCubeLocalFiniteElement< D, R, dim, k > Qk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\bk\n+LagrangeSimplexLocalFiniteElement< D, R, dim, k > Pk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+LocalFiniteElementVirtualInterface< T > FiniteElementType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static FiniteElementType * create(const GeometryType >)\n+create finite element for given GeometryType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT\n+P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\b0\n+P0LocalFiniteElement< D, R, dim > P0\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+A cache that stores all available Pk/Qk like local finite elements for the\n+given dimension and order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bT\n+P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bE\n+LocalFiniteElementVirtualInterface< T > FE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+PQkLocalFiniteElementCache()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n+FE FiniteElementType\n+Type of the finite elements stored in this cache.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bE_\bM_\ba_\bp\n+std::map< GeometryType, FE * > FEMap\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n+const FiniteElementType & get(const GeometryType >) const\n+Get local finite element for given GeometryType.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bc_\ba_\bc_\bh_\be_\b_\n+FEMap cache_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:161\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\b~_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+~PQkLocalFiniteElementCache()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bP_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+PQkLocalFiniteElementCache(const PQkLocalFiniteElementCache &other)\n+Copy constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:128\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: multiindex.hh File Reference\n+dune-localfunctions: lagrangecube.hh File Reference\n \n \n \n \n \n \n \n@@ -65,78 +65,46 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    multiindex.hh File Reference
    \n+Namespaces
    \n+
    lagrangecube.hh File Reference
    \n \n
    \n-
    #include <vector>
    \n-#include <ostream>
    \n-#include <dune/common/ftraits.hh>
    \n+
    #include <array>
    \n+#include <numeric>
    \n+#include <dune/common/fmatrix.hh>
    \n #include <dune/common/fvector.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n+#include <dune/common/math.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::MultiIndex< dim, Field >
     
    struct  Dune::FieldTraits< MultiIndex< dim, Field > >
     
    struct  Dune::Unity< MultiIndex< dim, F > >
     
    struct  Dune::Zero< MultiIndex< dim, F > >
    class  Dune::LagrangeCubeLocalFiniteElement< D, R, dim, k >
     Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order. More...
     
    \n \n \n \n-

    \n Namespaces

    namespace  Dune
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n

    \n-Functions

    template<int dim, class Field >
    std::ostream & Dune::operator<< (std::ostream &, const MultiIndex< dim, Field > &)
     
    template<int dim, class Field , class F >
    MultiIndex< dim, Field > Dune::operator* (const F &f, const MultiIndex< dim, Field > &m)
     
    template<int dim, class Field , class F >
    MultiIndex< dim, Field > Dune::operator/ (const F &f, const MultiIndex< dim, Field > &m)
     
    template<int d, class F >
    std::ostream & Dune::operator<< (std::ostream &out, const std::vector< MultiIndex< d, F > > &y)
     
    template<int d, class F , int dimR>
    std::ostream & Dune::operator<< (std::ostream &out, const std::vector< Dune::FieldVector< MultiIndex< d, F >, dimR > > &y)
     
    template<int d, class F , int dimR1, int dimR2>
    std::ostream & Dune::operator<< (std::ostream &out, const std::vector< Dune::FieldMatrix< MultiIndex< d, F >, dimR1, dimR2 > > &y)
     
    template<int d, class F >
    std::ostream & Dune::operator<< (std::ostream &out, const MultiIndex< d, F > &val)
     
    template<int dim, class Field >
    bool Dune::operator< (const Zero< MultiIndex< dim, Field > > &, const MultiIndex< dim, Field > &)
     
    template<int dim, class Field >
    bool Dune::operator< (const MultiIndex< dim, Field > &f, const Zero< MultiIndex< dim, Field > > &)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,68 +1,29 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-multiindex.hh File Reference\n-#include \n-#include \n-#include \n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+lagrangecube.hh File Reference\n+#include \n+#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n+\u00a0 Lagrange finite element for cubes with arbitrary compile-time dimension\n+ and polynomial order. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n- std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx<\n- dim, Field > &)\n-\u00a0\n-template\n-_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b* (const F &f, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim,\n- Field > &m)\n-\u00a0\n-template\n-_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/ (const F &f, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim,\n- Field > &m)\n-\u00a0\n-template\n- std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const std::\n- vector< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< d, F > > &y)\n-\u00a0\n-template\n- std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const std::\n- vector< Dune::FieldVector< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< d, F >, dimR >\n- > &y)\n-\u00a0\n-template\n- std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const std::\n- vector< Dune::FieldMatrix< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< d, F >, dimR1,\n- dimR2 > > &y)\n-\u00a0\n-template\n- std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const\n- _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< d, F > &val)\n-\u00a0\n-template\n- bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b< (const _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field >\n- > &, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field > &)\n-\u00a0\n-template\n- bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b< (const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field > &f,\n- const _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field > > &)\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: multiindex.hh Source File\n+dune-localfunctions: lagrangecube.hh Source File\n \n \n \n \n \n \n \n@@ -70,657 +70,741 @@\n
    \n \n \n \n \n \n \n
    \n-
    multiindex.hh
    \n+
    lagrangecube.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_MULTIINDEX_HH
    \n-
    6#define DUNE_MULTIINDEX_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9#include <ostream>
    \n+
    8#include <array>
    \n+
    9#include <numeric>
    \n
    10
    \n-
    11#include <dune/common/ftraits.hh>
    \n+
    11#include <dune/common/fmatrix.hh>
    \n
    12#include <dune/common/fvector.hh>
    \n-
    13
    \n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18 /****************************************************************
    \n-
    19 * Provide a Field class which can be used in evaluation methods
    \n-
    20 * to produce MultiIndex presentation of polynomials.
    \n-
    21 ****************************************************************/
    \n-
    22 // Internal Forward Declarations
    \n-
    23 // -----------------------------
    \n-
    24
    \n-
    25 template< int dim, class Field >
    \n-
    26 class MultiIndex;
    \n-
    27
    \n-
    28 template< int dim, class Field >
    \n-
    29 std::ostream &operator<< ( std::ostream &, const MultiIndex< dim,Field > & );
    \n-
    30
    \n-
    31
    \n-
    32
    \n-
    33 // MultiIndex
    \n-
    34 // ----------
    \n-
    35
    \n-
    36 template< int dim,class Field >
    \n-
    \n-\n-
    38 {
    \n-\n-
    40
    \n-
    41 friend std::ostream &operator<<<> ( std::ostream &, const This & );
    \n-
    42
    \n-
    43 public:
    \n-
    44 static const int dimension = dim;
    \n-
    45
    \n-
    \n-\n-
    47 : vecZ_( 0 ),
    \n-
    48 vecOMZ_( 0 ),
    \n-
    49 factor_( 1. ),
    \n-
    50 next_( 0 )
    \n-
    51 {}
    \n-
    \n-
    52 template <class F>
    \n-
    \n-
    53 explicit MultiIndex (const F &f)
    \n-
    54 : vecZ_( 0 ),
    \n-
    55 vecOMZ_( 0 ),
    \n-
    56 factor_( field_cast<Field>(f) ),
    \n-
    57 next_( 0 )
    \n-
    58 {}
    \n-
    \n-
    59
    \n-
    \n-
    60 MultiIndex ( int, const This &other )
    \n-
    61 : vecZ_( other.vecOMZ_ ),
    \n-
    62 vecOMZ_( other.vecZ_ ),
    \n-
    63 factor_( other.factor_ )
    \n-
    64 {
    \n-
    65 assert(!other.next_);
    \n-
    66 if (other.next_)
    \n-
    67 {
    \n-
    68 next_ = new This( *(other.next_) );
    \n-
    69 }
    \n-
    70 else
    \n-
    71 next_ = 0;
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    \n-
    74 MultiIndex ( const This &other )
    \n-
    75 : vecZ_( other.vecZ_ ),
    \n-
    76 vecOMZ_( other.vecOMZ_ ),
    \n-
    77 factor_( other.factor_ )
    \n-
    78 {
    \n-
    79 if (other.next_)
    \n-
    80 {
    \n-
    81 next_ = new This( *(other.next_) );
    \n-
    82 }
    \n-
    83 else
    \n-
    84 next_ = 0;
    \n-
    85 }
    \n-
    \n-
    86
    \n-
    \n-\n-
    88 {
    \n-
    89 remove();
    \n-
    90 }
    \n-
    \n-
    91
    \n-
    \n-
    92 int z(int i) const
    \n-
    93 {
    \n-
    94 return vecZ_[i];
    \n-
    95 }
    \n-
    \n-
    \n-
    96 int omz(int i) const
    \n-
    97 {
    \n-
    98 return vecOMZ_[i];
    \n+
    13#include <dune/common/math.hh>
    \n+
    14
    \n+
    15#include <dune/geometry/referenceelements.hh>
    \n+
    16
    \n+\n+\n+\n+
    20
    \n+
    21namespace Dune { namespace Impl
    \n+
    22{
    \n+
    23 // Forward declaration
    \n+
    24 template<class LocalBasis>
    \n+
    25 class LagrangeCubeLocalInterpolation;
    \n+
    26
    \n+
    37 template<class D, class R, unsigned int dim, unsigned int k>
    \n+
    38 class LagrangeCubeLocalBasis
    \n+
    39 {
    \n+
    40 friend class LagrangeCubeLocalInterpolation<LagrangeCubeLocalBasis<D,R,dim,k> >;
    \n+
    41
    \n+
    42 // i-th Lagrange polynomial of degree k in one dimension
    \n+
    43 static R p(unsigned int i, D x)
    \n+
    44 {
    \n+
    45 R result(1.0);
    \n+
    46 for (unsigned int j=0; j<=k; j++)
    \n+
    47 if (j!=i) result *= (k*x-j)/((int)i-(int)j);
    \n+
    48 return result;
    \n+
    49 }
    \n+
    50
    \n+
    51 // derivative of ith Lagrange polynomial of degree k in one dimension
    \n+
    52 static R dp(unsigned int i, D x)
    \n+
    53 {
    \n+
    54 R result(0.0);
    \n+
    55
    \n+
    56 for (unsigned int j=0; j<=k; j++)
    \n+
    57 {
    \n+
    58 if (j!=i)
    \n+
    59 {
    \n+
    60 R prod( (k*1.0)/((int)i-(int)j) );
    \n+
    61 for (unsigned int l=0; l<=k; l++)
    \n+
    62 if (l!=i && l!=j)
    \n+
    63 prod *= (k*x-l)/((int)i-(int)l);
    \n+
    64 result += prod;
    \n+
    65 }
    \n+
    66 }
    \n+
    67 return result;
    \n+
    68 }
    \n+
    69
    \n+
    70 // Second derivative of j-th Lagrange polynomial of degree k in one dimension
    \n+
    71 // Formula and notation taken from https://en.wikipedia.org/wiki/Lagrange_polynomial#Derivatives
    \n+
    72 static R ddp(unsigned int j, D x)
    \n+
    73 {
    \n+
    74 R result(0.0);
    \n+
    75
    \n+
    76 for (unsigned int i=0; i<=k; i++)
    \n+
    77 {
    \n+
    78 if (i==j)
    \n+
    79 continue;
    \n+
    80
    \n+
    81 R sum(0);
    \n+
    82
    \n+
    83 for (unsigned int m=0; m<=k; m++)
    \n+
    84 {
    \n+
    85 if (m==i || m==j)
    \n+
    86 continue;
    \n+
    87
    \n+
    88 R prod( (k*1.0)/((int)j-(int)m) );
    \n+
    89 for (unsigned int l=0; l<=k; l++)
    \n+
    90 if (l!=i && l!=j && l!=m)
    \n+
    91 prod *= (k*x-l)/((int)j-(int)l);
    \n+
    92 sum += prod;
    \n+
    93 }
    \n+
    94
    \n+
    95 result += sum * ( (k*1.0)/((int)j-(int)i) );
    \n+
    96 }
    \n+
    97
    \n+
    98 return result;
    \n
    99 }
    \n-
    \n-
    \n-
    100 const Field &factor() const
    \n-
    101 {
    \n-
    102 return factor_;
    \n-
    103 }
    \n-
    \n-
    104
    \n-
    \n-
    105 This &operator= ( const This &other )
    \n-
    106 {
    \n-
    107 remove();
    \n-
    108 vecZ_ = other.vecZ_;
    \n-
    109 vecOMZ_ = other.vecOMZ_;
    \n-
    110 factor_ = other.factor_;
    \n-
    111 if (other.next_)
    \n-
    112 next_ = new This(*(other.next_));
    \n-
    113 return *this;
    \n-
    114 }
    \n-
    \n-
    \n-\n-
    116 {
    \n-
    117 remove();
    \n-
    118 vecZ_ = 0;
    \n-
    119 vecOMZ_ = 0;
    \n-
    120 factor_ = 0.;
    \n-
    121 return *this;
    \n-
    122 }
    \n-
    \n-
    \n-\n-
    124 {
    \n-
    125 remove();
    \n-
    126 vecZ_ = 0;
    \n-
    127 vecOMZ_ = 0;
    \n-
    128 factor_ = 1.;
    \n-
    129 return *this;
    \n-
    130 }
    \n-
    \n-
    131 template <class F>
    \n-
    \n-
    132 This &operator= ( const F &f )
    \n-
    133 {
    \n-
    134 remove();
    \n-
    135 vecZ_ = 0;
    \n-
    136 vecOMZ_ = 0;
    \n-
    137 factor_ = field_cast<Field>(f);
    \n-
    138 return *this;
    \n-
    139 }
    \n-
    \n-
    140
    \n-
    \n-
    141 bool operator== (const This &other) const
    \n-
    142 {
    \n-
    143 assert(!next_ && !other.next_);
    \n-
    144 return (vecZ_==other.vecZ_ && vecOMZ_==other.vecOMZ_ && factor_==other.factor_);
    \n-
    145 }
    \n-
    \n-
    146
    \n-
    147 template <class F>
    \n-
    \n-
    148 This &operator*= ( const F &f )
    \n-
    149 {
    \n-
    150 factor_ *= field_cast<Field>(f);
    \n-
    151 if (next_)
    \n-
    152 (*next_) *= f;
    \n-
    153 return *this;
    \n-
    154 }
    \n-
    \n-
    155 template <class F>
    \n-
    \n-
    156 This &operator/= ( const F &f )
    \n-
    157 {
    \n-
    158 factor_ /= field_cast<Field>(f);
    \n-
    159 if (next_)
    \n-
    160 (*next_) /= f;
    \n-
    161 return *this;
    \n+
    100
    \n+
    101 // Return i as a d-digit number in the (k+1)-nary system
    \n+
    102 static std::array<unsigned int,dim> multiindex (unsigned int i)
    \n+
    103 {
    \n+
    104 std::array<unsigned int,dim> alpha;
    \n+
    105 for (unsigned int j=0; j<dim; j++)
    \n+
    106 {
    \n+
    107 alpha[j] = i % (k+1);
    \n+
    108 i = i/(k+1);
    \n+
    109 }
    \n+
    110 return alpha;
    \n+
    111 }
    \n+
    112
    \n+
    113 public:
    \n+
    114 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n+
    115
    \n+
    118 static constexpr unsigned int size ()
    \n+
    119 {
    \n+
    120 return power(k+1, dim);
    \n+
    121 }
    \n+
    122
    \n+
    124 void evaluateFunction(const typename Traits::DomainType& x,
    \n+
    125 std::vector<typename Traits::RangeType>& out) const
    \n+
    126 {
    \n+
    127 out.resize(size());
    \n+
    128
    \n+
    129 // Specialization for zero-order case
    \n+
    130 if (k==0)
    \n+
    131 {
    \n+
    132 out[0] = 1;
    \n+
    133 return;
    \n+
    134 }
    \n+
    135
    \n+
    136 if (k==1)
    \n+
    137 {
    \n+
    138 for (size_t i=0; i<size(); i++)
    \n+
    139 {
    \n+
    140 out[i] = 1;
    \n+
    141
    \n+
    142 for (unsigned int j=0; j<dim; j++)
    \n+
    143 // if j-th bit of i is set multiply with x[j], else with 1-x[j]
    \n+
    144 out[i] *= (i & (1<<j)) ? x[j] : 1-x[j];
    \n+
    145 }
    \n+
    146 return;
    \n+
    147 }
    \n+
    148
    \n+
    149 // General case
    \n+
    150 for (size_t i=0; i<size(); i++)
    \n+
    151 {
    \n+
    152 // convert index i to multiindex
    \n+
    153 std::array<unsigned int,dim> alpha(multiindex(i));
    \n+
    154
    \n+
    155 // initialize product
    \n+
    156 out[i] = 1.0;
    \n+
    157
    \n+
    158 // dimension by dimension
    \n+
    159 for (unsigned int j=0; j<dim; j++)
    \n+
    160 out[i] *= p(alpha[j],x[j]);
    \n+
    161 }
    \n
    162 }
    \n-
    \n
    163
    \n-
    \n-
    164 This &operator*= ( const This &other )
    \n-
    165 {
    \n-
    166 assert(!other.next_);
    \n-
    167 vecZ_ += other.vecZ_;
    \n-
    168 vecOMZ_ += other.vecOMZ_;
    \n-
    169 factor_ *= other.factor_;
    \n-
    170 if (next_)
    \n-
    171 (*next_) *= other;
    \n-
    172 return *this;
    \n-
    173 }
    \n-
    \n-
    \n-
    174 This &operator/= ( const This &other )
    \n-
    175 {
    \n-
    176 assert(!other.next_);
    \n-
    177 vecZ_ -= other.vecZ_;
    \n-
    178 vecOMZ_ -= other.vecOMZ_;
    \n-
    179 factor_ /= other.factor_;
    \n-
    180 if (next_)
    \n-
    181 (*next_) /= other;
    \n-
    182 return *this;
    \n-
    183 }
    \n-
    \n-
    184
    \n-
    \n-
    185 This &operator+= ( const This &other )
    \n-
    186 {
    \n-
    187 assert(!other.next_);
    \n-
    188 if (std::abs(other.factor_)<1e-10)
    \n-
    189 return *this;
    \n-
    190 if (std::abs(factor_)<1e-10)
    \n-
    191 {
    \n-
    192 *this = other;
    \n-
    193 return *this;
    \n-
    194 }
    \n-
    195 if (!sameMultiIndex(other))
    \n-
    196 {
    \n-
    197 if (next_)
    \n-
    198 (*next_)+=other;
    \n-
    199 else
    \n-
    200 {
    \n-
    201 next_ = new This(other);
    \n-
    202 }
    \n+
    169 void evaluateJacobian(const typename Traits::DomainType& x,
    \n+
    170 std::vector<typename Traits::JacobianType>& out) const
    \n+
    171 {
    \n+
    172 out.resize(size());
    \n+
    173
    \n+
    174 // Specialization for k==0
    \n+
    175 if (k==0)
    \n+
    176 {
    \n+
    177 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n+
    178 return;
    \n+
    179 }
    \n+
    180
    \n+
    181 // Specialization for k==1
    \n+
    182 if (k==1)
    \n+
    183 {
    \n+
    184 // Loop over all shape functions
    \n+
    185 for (size_t i=0; i<size(); i++)
    \n+
    186 {
    \n+
    187 // Loop over all coordinate directions
    \n+
    188 for (unsigned int j=0; j<dim; j++)
    \n+
    189 {
    \n+
    190 // Initialize: the overall expression is a product
    \n+
    191 // if j-th bit of i is set to 1, else -11
    \n+
    192 out[i][0][j] = (i & (1<<j)) ? 1 : -1;
    \n+
    193
    \n+
    194 for (unsigned int l=0; l<dim; l++)
    \n+
    195 {
    \n+
    196 if (j!=l)
    \n+
    197 // if l-th bit of i is set multiply with x[l], else with 1-x[l]
    \n+
    198 out[i][0][j] *= (i & (1<<l)) ? x[l] : 1-x[l];
    \n+
    199 }
    \n+
    200 }
    \n+
    201 }
    \n+
    202 return;
    \n
    203 }
    \n-
    204 else
    \n-
    205 factor_ += other.factor_;
    \n-
    206 return *this;
    \n-
    207 }
    \n-
    \n-
    \n-
    208 This &operator-= ( const This &other )
    \n-
    209 {
    \n-
    210 assert(!other.next_);
    \n-
    211 if (!sameMultiIndex(other))
    \n-
    212 {
    \n-
    213 if (next_)
    \n-
    214 next_-=other;
    \n-
    215 else
    \n-
    216 {
    \n-
    217 next_ = new This(other);
    \n-
    218 }
    \n-
    219 }
    \n-
    220 else
    \n-
    221 factor_ -= other.factor_;
    \n-
    222 return *this;
    \n-
    223 }
    \n-
    \n-
    224
    \n-
    225 template <class F>
    \n-
    \n-
    226 This operator* ( const F &f ) const
    \n-
    227 {
    \n-
    228 This z = *this;
    \n-
    229 return (z *= f);
    \n-
    230 }
    \n-
    \n-
    231 template <class F>
    \n-
    \n-
    232 This operator/ ( const F &f ) const
    \n-
    233 {
    \n-
    234 This z = *this;
    \n-
    235 return (z /= f);
    \n-
    236 }
    \n-
    \n-
    237
    \n-
    \n-
    238 This operator* ( const This &other ) const
    \n-
    239 {
    \n-
    240 This z = *this;
    \n-
    241 return (z *= other);
    \n-
    242 }
    \n-
    \n-
    \n-
    243 This operator/ ( const This &other ) const
    \n-
    244 {
    \n-
    245 This z = *this;
    \n-
    246 return (z /= other);
    \n-
    247 }
    \n-
    \n-
    248
    \n-
    \n-
    249 This operator+ ( const This &other ) const
    \n-
    250 {
    \n-
    251 This z = *this;
    \n-
    252 return (z += other);
    \n-
    253 }
    \n-
    \n-
    \n-
    254 This operator- ( const This &other ) const
    \n-
    255 {
    \n-
    256 This z = *this;
    \n-
    257 return (z -= other);
    \n-
    258 }
    \n-
    \n-
    259
    \n-
    \n-
    260 void set ( int d, int power = 1 )
    \n-
    261 {
    \n-
    262 vecZ_[ d ] = power;
    \n-
    263 }
    \n-
    \n-
    264
    \n-
    \n-
    265 int absZ () const
    \n-
    266 {
    \n-
    267 int ret = 0;
    \n-
    268 for( int i = 0; i < dimension; ++i )
    \n-
    269 ret += std::abs( vecZ_[ i ] );
    \n-
    270 return ret;
    \n-
    271 }
    \n-
    \n-
    272
    \n-
    \n-
    273 int absOMZ() const
    \n-
    274 {
    \n-
    275 int ret = 0;
    \n-
    276 for( int i = 0; i < dimension; ++i )
    \n-
    277 ret += std::abs( vecOMZ_[ i ] );
    \n-
    278 return ret;
    \n-
    279 }
    \n-
    \n-
    280
    \n-
    \n-
    281 bool sameMultiIndex(const This &ind)
    \n-
    282 {
    \n-
    283 for( int i = 0; i < dimension; ++i )
    \n-
    284 {
    \n-
    285 if ( vecZ_[i] != ind.vecZ_[i] ||
    \n-
    286 vecOMZ_[i] != vecOMZ_[i] )
    \n-
    287 return false;
    \n-
    288 }
    \n-
    289 return true;
    \n-
    290 }
    \n-
    \n-
    291
    \n-
    292 private:
    \n-
    293 void remove()
    \n-
    294 {
    \n-
    295 if (next_)
    \n-
    296 {
    \n-
    297 next_->remove();
    \n-
    298 delete next_;
    \n-
    299 next_ = 0;
    \n-
    300 }
    \n-
    301 }
    \n-
    302
    \n-
    303 typedef Dune::FieldVector< int, dimension > Vector;
    \n-
    304
    \n-
    305 Vector vecZ_;
    \n-
    306 Vector vecOMZ_;
    \n-
    307 Field factor_;
    \n-
    308
    \n-
    309 This *next_;
    \n-
    310 };
    \n-
    \n+
    204
    \n+
    205 // The general case
    \n+
    206
    \n+
    207 // Loop over all shape functions
    \n+
    208 for (size_t i=0; i<size(); i++)
    \n+
    209 {
    \n+
    210 // convert index i to multiindex
    \n+
    211 std::array<unsigned int,dim> alpha(multiindex(i));
    \n+
    212
    \n+
    213 // Loop over all coordinate directions
    \n+
    214 for (unsigned int j=0; j<dim; j++)
    \n+
    215 {
    \n+
    216 // Initialize: the overall expression is a product
    \n+
    217 // if j-th bit of i is set to -1, else 1
    \n+
    218 out[i][0][j] = dp(alpha[j],x[j]);
    \n+
    219
    \n+
    220 // rest of the product
    \n+
    221 for (unsigned int l=0; l<dim; l++)
    \n+
    222 if (l!=j)
    \n+
    223 out[i][0][j] *= p(alpha[l],x[l]);
    \n+
    224 }
    \n+
    225 }
    \n+
    226 }
    \n+
    227
    \n+
    234 void partial(const std::array<unsigned int,dim>& order,
    \n+
    235 const typename Traits::DomainType& in,
    \n+
    236 std::vector<typename Traits::RangeType>& out) const
    \n+
    237 {
    \n+
    238 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    239
    \n+
    240 out.resize(size());
    \n+
    241
    \n+
    242 if (k==0)
    \n+
    243 {
    \n+
    244 out[0] = (totalOrder==0);
    \n+
    245 return;
    \n+
    246 }
    \n+
    247
    \n+
    248 if (k==1)
    \n+
    249 {
    \n+
    250 if (totalOrder == 0)
    \n+
    251 {
    \n+
    252 evaluateFunction(in, out);
    \n+
    253 }
    \n+
    254 else if (totalOrder == 1)
    \n+
    255 {
    \n+
    256 out.resize(size());
    \n+
    257
    \n+
    258 auto direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    259 if (direction >= dim)
    \n+
    260 DUNE_THROW(RangeError, "Direction of partial derivative not found!");
    \n+
    261
    \n+
    262 // Loop over all shape functions
    \n+
    263 for (std::size_t i = 0; i < size(); ++i)
    \n+
    264 {
    \n+
    265 // Initialize: the overall expression is a product
    \n+
    266 // if j-th bit of i is set to 1, otherwise to -1
    \n+
    267 out[i] = (i & (1<<direction)) ? 1 : -1;
    \n+
    268
    \n+
    269 for (unsigned int j = 0; j < dim; ++j)
    \n+
    270 {
    \n+
    271 if (direction != j)
    \n+
    272 // if j-th bit of i is set multiply with in[j], else with 1-in[j]
    \n+
    273 out[i] *= (i & (1<<j)) ? in[j] : 1-in[j];
    \n+
    274 }
    \n+
    275 }
    \n+
    276 }
    \n+
    277 else if (totalOrder == 2)
    \n+
    278 {
    \n+
    279
    \n+
    280 for (size_t i=0; i<size(); i++)
    \n+
    281 {
    \n+
    282 // convert index i to multiindex
    \n+
    283 std::array<unsigned int,dim> alpha(multiindex(i));
    \n+
    284
    \n+
    285 // Initialize: the overall expression is a product
    \n+
    286 out[i][0] = 1.0;
    \n+
    287
    \n+
    288 // rest of the product
    \n+
    289 for (std::size_t l=0; l<dim; l++)
    \n+
    290 {
    \n+
    291 switch (order[l])
    \n+
    292 {
    \n+
    293 case 0:
    \n+
    294 out[i][0] *= p(alpha[l],in[l]);
    \n+
    295 break;
    \n+
    296 case 1:
    \n+
    297 //std::cout << "dp: " << dp(alpha[l],in[l]) << std::endl;
    \n+
    298 out[i][0] *= dp(alpha[l],in[l]);
    \n+
    299 break;
    \n+
    300 case 2:
    \n+
    301 out[i][0] *= 0;
    \n+
    302 break;
    \n+
    303 default:
    \n+
    304 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    305 }
    \n+
    306 }
    \n+
    307 }
    \n+
    308 }
    \n+
    309 else
    \n+
    310 DUNE_THROW(NotImplemented, "Partial derivative of order " << totalOrder << " is not implemented!");
    \n
    311
    \n-
    312
    \n-
    313 template< int dim,class Field >
    \n-
    \n-
    314 struct FieldTraits<MultiIndex<dim,Field>>
    \n-
    315 {
    \n-
    316 using field_type = Field;
    \n-
    317 using real_type = typename FieldTraits<field_type>::real_type;
    \n-
    318 };
    \n-
    \n-
    319
    \n-
    320 template <int dim, class Field, class F>
    \n-
    \n-\n-
    322 const MultiIndex<dim,Field> &m)
    \n-
    323 {
    \n-\n-
    325 return (z *= f);
    \n-
    326 }
    \n-
    \n-
    327 template <int dim, class Field, class F>
    \n-
    \n-\n-
    329 const MultiIndex<dim,Field> &m)
    \n-
    330 {
    \n-\n-
    332 return (z /= f);
    \n-
    333 }
    \n-
    \n-
    334
    \n-
    335 template <int d, class F>
    \n-
    \n-
    336 std::ostream &operator<<(std::ostream& out,const std::vector<MultiIndex<d,F> >& y) {
    \n-
    337 for (unsigned int r=0; r<y.size(); ++r) {
    \n-
    338 out << "f_{" << r << "}(" << char('a');
    \n-
    339 for (int i=1; i<d; ++i)
    \n-
    340 out << "," << char('a'+i);
    \n-
    341 out << ")=";
    \n-
    342 out << y[r] << std::endl;
    \n-
    343 }
    \n-
    344 return out;
    \n-
    345 }
    \n-
    \n-
    346 template <int d,class F,int dimR>
    \n-
    \n-
    347 std::ostream &operator<<(std::ostream& out,
    \n-
    348 const std::vector<Dune::FieldVector<MultiIndex<d,F>,dimR> >& y) {
    \n-
    349 out << "\\\\begin{eqnarray*}" << std::endl;
    \n-
    350 for (unsigned int k=0; k<y.size(); ++k) {
    \n-
    351 out << "f_{" << k << "}(" << char('a');
    \n-
    352 for (int i=1; i<d; ++i)
    \n-
    353 out << "," << char('a'+i);
    \n-
    354 out << ") &=& ( ";
    \n-
    355 out << y[k][0] ;
    \n-
    356 for (unsigned int r=1; r<dimR; ++r) {
    \n-
    357 out << " , " << y[k][r] ;
    \n-
    358 }
    \n-
    359 out << " ) \\\\\\\\" << std::endl;
    \n-
    360 }
    \n-
    361 out << "\\\\end{eqnarray*}" << std::endl;
    \n-
    362 return out;
    \n-
    363 }
    \n-
    \n-
    364 template <int d,class F,int dimR1,int dimR2>
    \n-
    \n-
    365 std::ostream &operator<<(std::ostream& out,
    \n-
    366 const std::vector<Dune::FieldMatrix<MultiIndex<d,F>,dimR1,dimR2> >& y) {
    \n-
    367 out << "\\\\begin{eqnarray*}" << std::endl;
    \n-
    368 for (unsigned int k=0; k<y.size(); ++k) {
    \n-
    369 for (int q=0; q<dimR2; q++) {
    \n-
    370 out << "d_{" << char('a'+q) << "}f_{" << k << "}(" << char('a');
    \n-
    371 for (int i=1; i<d; ++i)
    \n-
    372 out << "," << char('a'+i);
    \n-
    373 out << ") &=& ( ";
    \n-
    374 out << y[k][0][q] ;
    \n-
    375 for (unsigned int r=1; r<dimR1; ++r) {
    \n-
    376 out << " , " << y[k][r][q] ;
    \n-
    377 }
    \n-
    378 out << " ) \\\\\\\\" << std::endl;
    \n-
    379 }
    \n-
    380 }
    \n-
    381 out << "\\\\end{eqnarray*}" << std::endl;
    \n-
    382 return out;
    \n-
    383 }
    \n-
    \n-
    384 template <int d, class F>
    \n-
    \n-
    385 std::ostream &operator<<(std::ostream& out,const MultiIndex<d,F>& val)
    \n-
    386 {
    \n-
    387 bool first = true;
    \n-
    388 const MultiIndex<d,F> *m = &val;
    \n-
    389 do {
    \n-
    390 if (m->absZ()==0 && std::abs(m->factor())<1e-10)
    \n-
    391 {
    \n-
    392 if (!m->next_ || !first)
    \n-
    393 {
    \n-
    394 out << "0";
    \n-
    395 break;
    \n-
    396 }
    \n-
    397 else {
    \n-
    398 m = m->next_;
    \n-
    399 continue;
    \n-
    400 }
    \n-
    401 }
    \n-
    402 if (m->factor()>0 && !first)
    \n-
    403 out << " + ";
    \n-
    404 else if (m->factor()<0)
    \n-
    405 if (!first)
    \n-
    406 out << " - ";
    \n-
    407 else
    \n-
    408 out << "- ";
    \n-
    409 else
    \n-
    410 out << " ";
    \n-
    411 first = false;
    \n-
    412 F f = std::abs(m->factor());
    \n-
    413 if (m->absZ()==0)
    \n-
    414 out << f;
    \n-
    415 else {
    \n-
    416 if ( std::abs(f)<1e-10)
    \n-
    417 out << 0;
    \n-
    418 else
    \n-
    419 {
    \n-
    420 F f_1(f);
    \n-
    421 f_1 -= 1.; // better Unity<F>();
    \n-
    422 if ( std::abs(f_1)>1e-10)
    \n-
    423 out << f;
    \n-
    424 int absVal = 0;
    \n-
    425 for (int i=0; i<d; ++i) {
    \n-
    426 if (m->vecZ_[i]==0)
    \n-
    427 continue;
    \n-
    428 else if (m->vecZ_[i]==1)
    \n-
    429 out << char('a'+i);
    \n-
    430 else if (m->vecZ_[i]>0)
    \n-
    431 out << char('a'+i) << "^" << m->vecZ_[i] << "";
    \n-
    432 else if (m->vecZ_[i]<0)
    \n-
    433 out << char('a'+i) << "^" << m->vecZ_[i] << "";
    \n-
    434 absVal += m->vecZ_[i];
    \n-
    435 if (absVal<m->absZ()) out << "";
    \n-
    436 }
    \n-
    437 }
    \n-
    438 }
    \n-
    439 /*
    \n-
    440 if (mi.absOMZ()>0) {
    \n-
    441 for (int i=0;i<=mi.absZ();++i) {
    \n-
    442 if (mi.vecOMZ_[i]==0)
    \n-
    443 continue;
    \n-
    444 else if (mi.vecOMZ_[i]==1)
    \n-
    445 out << (1-char('a'+i));
    \n-
    446 else if (mi.vecOMZ_[i]>0)
    \n-
    447 out << (1-char('a'+i)) << "^" << mi.vecOMZ_[i];
    \n-
    448 else if (mi.vecOMZ_[i]<0)
    \n-
    449 out << (1-char('a'+i)) << "^" << mi.vecOMZ_[i];
    \n-
    450 if (i==mi.absZ()+1) out << "*";
    \n-
    451 }
    \n-
    452 }
    \n-
    453 */
    \n-
    454 m = m->next_;
    \n-
    455 } while (m);
    \n-
    456 return out;
    \n-
    457 }
    \n-
    \n-
    458
    \n-
    459 template< int dim, class F>
    \n-
    \n-
    460 struct Unity< MultiIndex< dim, F > >
    \n-
    461 {
    \n-\n+
    312 return;
    \n+
    313 }
    \n+
    314
    \n+
    315 // The case k>1
    \n+
    316
    \n+
    317 // Loop over all shape functions
    \n+
    318 for (size_t i=0; i<size(); i++)
    \n+
    319 {
    \n+
    320 // convert index i to multiindex
    \n+
    321 std::array<unsigned int,dim> alpha(multiindex(i));
    \n+
    322
    \n+
    323 // Initialize: the overall expression is a product
    \n+
    324 out[i][0] = 1.0;
    \n+
    325
    \n+
    326 // rest of the product
    \n+
    327 for (std::size_t l=0; l<dim; l++)
    \n+
    328 {
    \n+
    329 switch (order[l])
    \n+
    330 {
    \n+
    331 case 0:
    \n+
    332 out[i][0] *= p(alpha[l],in[l]);
    \n+
    333 break;
    \n+
    334 case 1:
    \n+
    335 out[i][0] *= dp(alpha[l],in[l]);
    \n+
    336 break;
    \n+
    337 case 2:
    \n+
    338 out[i][0] *= ddp(alpha[l],in[l]);
    \n+
    339 break;
    \n+
    340 default:
    \n+
    341 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    342 }
    \n+
    343 }
    \n+
    344 }
    \n+
    345 }
    \n+
    346
    \n+
    348 static constexpr unsigned int order ()
    \n+
    349 {
    \n+
    350 return k;
    \n+
    351 }
    \n+
    352 };
    \n+
    353
    \n+
    359 template<unsigned int dim, unsigned int k>
    \n+
    360 class LagrangeCubeLocalCoefficients
    \n+
    361 {
    \n+
    362 // Return i as a d-digit number in the (k+1)-nary system
    \n+
    363 static std::array<unsigned int,dim> multiindex (unsigned int i)
    \n+
    364 {
    \n+
    365 std::array<unsigned int,dim> alpha;
    \n+
    366 for (unsigned int j=0; j<dim; j++)
    \n+
    367 {
    \n+
    368 alpha[j] = i % (k+1);
    \n+
    369 i = i/(k+1);
    \n+
    370 }
    \n+
    371 return alpha;
    \n+
    372 }
    \n+
    373
    \n+
    375 void setup1d(std::vector<unsigned int>& subEntity)
    \n+
    376 {
    \n+
    377 assert(k>0);
    \n+
    378
    \n+
    379 unsigned lastIndex=0;
    \n+
    380
    \n+
    381 /* edge and vertex numbering
    \n+
    382 0----0----1
    \n+
    383 */
    \n+
    384
    \n+
    385 // edge (0)
    \n+
    386 subEntity[lastIndex++] = 0; // corner 0
    \n+
    387 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    388 subEntity[lastIndex++] = 0; // inner dofs of element (0)
    \n+
    389
    \n+
    390 subEntity[lastIndex++] = 1; // corner 1
    \n+
    391
    \n+
    392 assert(power(k+1,dim)==lastIndex);
    \n+
    393 }
    \n+
    394
    \n+
    395 void setup2d(std::vector<unsigned int>& subEntity)
    \n+
    396 {
    \n+
    397 assert(k>0);
    \n+
    398
    \n+
    399 unsigned lastIndex=0;
    \n+
    400
    \n+
    401 // LocalKey: entity number, entity codim, dof indices within each entity
    \n+
    402 /* edge and vertex numbering
    \n+
    403 2----3----3
    \n+
    404 | |
    \n+
    405 | |
    \n+
    406 0 1
    \n+
    407 | |
    \n+
    408 | |
    \n+
    409 0----2----1
    \n+
    410 */
    \n+
    411
    \n+
    412 // lower edge (2)
    \n+
    413 subEntity[lastIndex++] = 0; // corner 0
    \n+
    414 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    415 subEntity[lastIndex++] = 2; // inner dofs of lower edge (2)
    \n+
    416
    \n+
    417 subEntity[lastIndex++] = 1; // corner 1
    \n+
    418
    \n+
    419 // iterate from bottom to top over inner edge dofs
    \n+
    420 for (unsigned e = 0; e < k - 1; ++e) {
    \n+
    421 subEntity[lastIndex++] = 0; // left edge (0)
    \n+
    422 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    423 subEntity[lastIndex++] = 0; // face dofs
    \n+
    424 subEntity[lastIndex++] = 1; // right edge (1)
    \n+
    425 }
    \n+
    426
    \n+
    427 // upper edge (3)
    \n+
    428 subEntity[lastIndex++] = 2; // corner 2
    \n+
    429 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    430 subEntity[lastIndex++] = 3; // inner dofs of upper edge (3)
    \n+
    431
    \n+
    432 subEntity[lastIndex++] = 3; // corner 3
    \n+
    433
    \n+
    434 assert(power(k+1,dim)==lastIndex);
    \n+
    435 }
    \n+
    436
    \n+
    437 void setup3d(std::vector<unsigned int>& subEntity)
    \n+
    438 {
    \n+
    439 assert(k>0);
    \n+
    440
    \n+
    441 unsigned lastIndex=0;
    \n+
    442#ifndef NDEBUG
    \n+
    443 const unsigned numIndices = power(k+1,dim);
    \n+
    444 const unsigned numFaceIndices = power(k+1,dim-1);
    \n+
    445#endif
    \n+
    446 const unsigned numInnerEdgeDofs = k-1;
    \n+
    447
    \n+
    448 // LocalKey: entity number, entity codim, dof indices within each entity
    \n+
    449 /* edge and vertex numbering
    \n+
    450
    \n+
    451 6---(11)--7 6---------7
    \n+
    452 /| /| /| (5) /|
    \n+
    453 (8)| (9)| / | top / |
    \n+
    454 / (2) / (3) / |(3)bac/k |
    \n+
    455 4---(10)--5 | 4---------5 |
    \n+
    456 | | | | left|(0)| |(1)|right
    \n+
    457 | 2--(7)|---3 | 2-----|---3
    \n+
    458 (0) / (1) / |(2)front | /
    \n+
    459 |(4) |(5) | / (4) | /
    \n+
    460 |/ |/ |/ bottom |/
    \n+
    461 0---(6)---1 0---------1
    \n+
    462 */
    \n
    463
    \n-
    \n-
    464 operator Field () const
    \n-
    465 {
    \n-
    466 return Field();
    \n-
    467 }
    \n-
    \n-
    468
    \n-
    \n-
    469 Field operator- ( const Field &other ) const
    \n-
    470 {
    \n-
    471 return Field( 1, other );
    \n-
    472 }
    \n-
    \n-
    473
    \n-
    \n-
    474 Field operator/ ( const Field &other ) const
    \n-
    475 {
    \n-
    476 return Field() / other;
    \n-
    477 }
    \n-
    \n-
    478 };
    \n-
    \n-
    479
    \n+
    464 // bottom face (4)
    \n+
    465 lastIndex=0;
    \n+
    466 // lower edge (6)
    \n+
    467 subEntity[lastIndex++] = 0; // corner 0
    \n+
    468 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    469 subEntity[lastIndex++] = 6; // inner dofs of lower edge (6)
    \n+
    470
    \n+
    471 subEntity[lastIndex++] = 1; // corner 1
    \n+
    472
    \n+
    473 // iterate from bottom to top over inner edge dofs
    \n+
    474 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {
    \n+
    475 subEntity[lastIndex++] = 4; // left edge (4)
    \n+
    476 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    477 subEntity[lastIndex++] = 4; // inner face dofs
    \n+
    478 subEntity[lastIndex++] = 5; // right edge (5)
    \n+
    479 }
    \n
    480
    \n-
    481
    \n-
    482 template< int dim, class F >
    \n-
    \n-
    483 struct Zero< MultiIndex< dim,F > >
    \n-
    484 {
    \n-\n+
    481 // upper edge (7)
    \n+
    482 subEntity[lastIndex++] = 2; // corner 2
    \n+
    483 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    484 subEntity[lastIndex++] = 7; // inner dofs of upper edge (7)
    \n+
    485 subEntity[lastIndex++] = 3; // corner 3
    \n
    486
    \n-
    487 // zero does not actually exist
    \n-
    \n-
    488 operator Field ()
    \n-
    489 {
    \n-
    490 return Field(0);
    \n-
    491 }
    \n-
    \n-
    492 };
    \n-
    \n-
    493
    \n-
    494 template< int dim, class Field >
    \n-
    \n-\n-
    496 {
    \n-
    497 return true;
    \n-
    498 }
    \n-
    \n-
    499
    \n-
    500 template< int dim, class Field >
    \n-
    \n-\n-
    502 {
    \n-
    503 return true;
    \n-
    504 }
    \n-
    \n-
    505
    \n-
    506}
    \n-
    507
    \n-
    508#endif // #ifndef DUNE_MULTIINDEX_HH
    \n-\n+
    487 assert(numFaceIndices==lastIndex); // added 1 face so far
    \n+
    489
    \n+
    491 for(unsigned f = 0; f < numInnerEdgeDofs; ++f) {
    \n+
    492
    \n+
    493 // lower edge (connecting edges 0 and 1)
    \n+
    494 subEntity[lastIndex++] = 0; // dof on edge 0
    \n+
    495 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    496 subEntity[lastIndex++] = 2; // dof in front face
    \n+
    497 subEntity[lastIndex++] = 1; // dof on edge 1
    \n+
    498
    \n+
    499 // iterate from bottom to top over inner edge dofs
    \n+
    500 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {
    \n+
    501 subEntity[lastIndex++] = 0; // on left face (0)
    \n+
    502 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    503 subEntity[lastIndex++] = 0; // volume dofs
    \n+
    504 subEntity[lastIndex++] = 1; // right face (1)
    \n+
    505 }
    \n+
    506
    \n+
    507 // upper edge (connecting edges 0 and 1)
    \n+
    508 subEntity[lastIndex++] = 2; // dof on edge 2
    \n+
    509 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    510 subEntity[lastIndex++] = 3; // dof on rear face (3)
    \n+
    511 subEntity[lastIndex++] = 3; // dof on edge 3
    \n+
    512
    \n+
    513 assert(lastIndex==(f+1+1)*numFaceIndices);
    \n+
    514 }
    \n+
    515
    \n+
    517 // lower edge (10)
    \n+
    518 subEntity[lastIndex++] = 4; // corner 4
    \n+
    519 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    520 subEntity[lastIndex++] = 10; // inner dofs on lower edge (10)
    \n+
    521 subEntity[lastIndex++] = 5; // corner 5
    \n+
    522
    \n+
    523 // iterate from bottom to top over inner edge dofs
    \n+
    524 for (unsigned e = 0; e < k - 1; ++e) {
    \n+
    525 subEntity[lastIndex++] = 8; // left edge (8)
    \n+
    526 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    527 subEntity[lastIndex++] = 5; // face dofs
    \n+
    528 subEntity[lastIndex++] = 9; // right edge (9)
    \n+
    529 }
    \n+
    530
    \n+
    531 // upper edge (11)
    \n+
    532 subEntity[lastIndex++] = 6; // corner 6
    \n+
    533 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    534 subEntity[lastIndex++] = 11; // inner dofs of upper edge (11)
    \n+
    535 subEntity[lastIndex++] = 7; // corner 7
    \n+
    536
    \n+
    537 assert(numIndices==lastIndex);
    \n+
    538 }
    \n+
    539
    \n+
    540 public:
    \n+
    542 LagrangeCubeLocalCoefficients ()
    \n+
    543 : localKeys_(size())
    \n+
    544 {
    \n+
    545 if (k==0)
    \n+
    546 {
    \n+
    547 localKeys_[0] = LocalKey(0,0,0);
    \n+
    548 return;
    \n+
    549 }
    \n+
    550
    \n+
    551 if (k==1)
    \n+
    552 {
    \n+
    553 for (std::size_t i=0; i<size(); i++)
    \n+
    554 localKeys_[i] = LocalKey(i,dim,0);
    \n+
    555 return;
    \n+
    556 }
    \n+
    557
    \n+
    558 // Now: the general case
    \n+
    559
    \n+
    560 // Set up array of codimension-per-dof-number
    \n+
    561 std::vector<unsigned int> codim(size());
    \n+
    562
    \n+
    563 for (std::size_t i=0; i<codim.size(); i++)
    \n+
    564 {
    \n+
    565 codim[i] = 0;
    \n+
    566
    \n+
    567 // Codimension gets increased by 1 for each coordinate direction
    \n+
    568 // where dof is on boundary
    \n+
    569 std::array<unsigned int,dim> mIdx = multiindex(i);
    \n+
    570 for (unsigned int j=0; j<dim; j++)
    \n+
    571 if (mIdx[j]==0 or mIdx[j]==k)
    \n+
    572 codim[i]++;
    \n+
    573 }
    \n+
    574
    \n+
    575 // Set up index vector (the index of the dof in the set of dofs of a given subentity)
    \n+
    576 // Algorithm: the 'index' has the same ordering as the dof number 'i'.
    \n+
    577 // To make it consecutive we interpret 'i' in the (k+1)-adic system, omit all digits
    \n+
    578 // that correspond to axes where the dof is on the element boundary, and transform the
    \n+
    579 // rest to the (k-1)-adic system.
    \n+
    580 std::vector<unsigned int> index(size());
    \n+
    581
    \n+
    582 for (std::size_t i=0; i<size(); i++)
    \n+
    583 {
    \n+
    584 index[i] = 0;
    \n+
    585
    \n+
    586 std::array<unsigned int,dim> mIdx = multiindex(i);
    \n+
    587
    \n+
    588 for (int j=dim-1; j>=0; j--)
    \n+
    589 if (mIdx[j]>0 && mIdx[j]<k)
    \n+
    590 index[i] = (k-1)*index[i] + (mIdx[j]-1);
    \n+
    591 }
    \n+
    592
    \n+
    593 // Set up entity and dof numbers for each (supported) dimension separately
    \n+
    594 std::vector<unsigned int> subEntity(size());
    \n+
    595
    \n+
    596 if (dim==1) {
    \n+
    597
    \n+
    598 setup1d(subEntity);
    \n+
    599
    \n+
    600 } else if (dim==2) {
    \n+
    601
    \n+
    602 setup2d(subEntity);
    \n+
    603
    \n+
    604 } else if (dim==3) {
    \n+
    605
    \n+
    606 setup3d(subEntity);
    \n+
    607
    \n+
    608 } else
    \n+
    609 DUNE_THROW(Dune::NotImplemented, "LagrangeCubeLocalCoefficients for order " << k << " and dim == " << dim);
    \n+
    610
    \n+
    611 for (size_t i=0; i<size(); i++)
    \n+
    612 localKeys_[i] = LocalKey(subEntity[i], codim[i], index[i]);
    \n+
    613 }
    \n+
    614
    \n+
    616 static constexpr std::size_t size ()
    \n+
    617 {
    \n+
    618 return power(k+1,dim);
    \n+
    619 }
    \n+
    620
    \n+
    622 const LocalKey& localKey (std::size_t i) const
    \n+
    623 {
    \n+
    624 return localKeys_[i];
    \n+
    625 }
    \n+
    626
    \n+
    627 private:
    \n+
    628 std::vector<LocalKey> localKeys_;
    \n+
    629 };
    \n+
    630
    \n+
    635 template<class LocalBasis>
    \n+
    636 class LagrangeCubeLocalInterpolation
    \n+
    637 {
    \n+
    638 public:
    \n+
    639
    \n+
    647 template<typename F, typename C>
    \n+
    648 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    649 {
    \n+
    650 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n+
    651 constexpr auto k = LocalBasis::order();
    \n+
    652 using D = typename LocalBasis::Traits::DomainFieldType;
    \n+
    653
    \n+
    654 typename LocalBasis::Traits::DomainType x;
    \n+
    655
    \n+
    656 out.resize(LocalBasis::size());
    \n+
    657
    \n+
    658 // Specialization for zero-order case
    \n+
    659 if (k==0)
    \n+
    660 {
    \n+
    661 auto center = ReferenceElements<D,dim>::cube().position(0,0);
    \n+
    662 out[0] = f(center);
    \n+
    663 return;
    \n+
    664 }
    \n+
    665
    \n+
    666 // Specialization for first-order case
    \n+
    667 if (k==1)
    \n+
    668 {
    \n+
    669 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n+
    670 {
    \n+
    671 // Generate coordinate of the i-th corner of the reference cube
    \n+
    672 for (int j=0; j<dim; j++)
    \n+
    673 x[j] = (i & (1<<j)) ? 1.0 : 0.0;
    \n+
    674
    \n+
    675 out[i] = f(x);
    \n+
    676 }
    \n+
    677 return;
    \n+
    678 }
    \n+
    679
    \n+
    680 // The general case
    \n+
    681 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n+
    682 {
    \n+
    683 // convert index i to multiindex
    \n+
    684 std::array<unsigned int,dim> alpha(LocalBasis::multiindex(i));
    \n+
    685
    \n+
    686 // Generate coordinate of the i-th Lagrange point
    \n+
    687 for (unsigned int j=0; j<dim; j++)
    \n+
    688 x[j] = (1.0*alpha[j])/k;
    \n+
    689
    \n+
    690 out[i] = f(x);
    \n+
    691 }
    \n+
    692 }
    \n+
    693
    \n+
    694 };
    \n+
    695
    \n+
    696} } // namespace Dune::Impl
    \n+
    697
    \n+
    698namespace Dune
    \n+
    699{
    \n+
    707 template<class D, class R, int dim, int k>
    \n+
    \n+\n+
    709 {
    \n+
    710 public:
    \n+\n+
    714 Impl::LagrangeCubeLocalCoefficients<dim,k>,
    \n+
    715 Impl::LagrangeCubeLocalInterpolation<Impl::LagrangeCubeLocalBasis<D,R,dim,k> > >;
    \n+
    716
    \n+
    \n+
    719 const typename Traits::LocalBasisType& localBasis () const
    \n+
    720 {
    \n+
    721 return basis_;
    \n+
    722 }
    \n+
    \n+
    723
    \n+
    \n+\n+
    727 {
    \n+
    728 return coefficients_;
    \n+
    729 }
    \n+
    \n+
    730
    \n+
    \n+\n+
    734 {
    \n+
    735 return interpolation_;
    \n+
    736 }
    \n+
    \n+
    737
    \n+
    \n+
    739 static constexpr std::size_t size ()
    \n+
    740 {
    \n+
    741 return power(k+1,dim);
    \n+
    742 }
    \n+
    \n+
    743
    \n+
    \n+
    746 static constexpr GeometryType type ()
    \n+
    747 {
    \n+
    748 return GeometryTypes::cube(dim);
    \n+
    749 }
    \n+
    \n+
    750
    \n+
    751 private:
    \n+
    752 Impl::LagrangeCubeLocalBasis<D,R,dim,k> basis_;
    \n+
    753 Impl::LagrangeCubeLocalCoefficients<dim,k> coefficients_;
    \n+
    754 Impl::LagrangeCubeLocalInterpolation<Impl::LagrangeCubeLocalBasis<D,R,dim,k> > interpolation_;
    \n+
    755 };
    \n+
    \n+
    756
    \n+
    757} // namespace Dune
    \n+
    758
    \n+
    759#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Field operator-(const Unity< Field > &u, const Field &f)
    Definition field.hh:44
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    bool operator<(const Zero< Field > &, const Field &f)
    Definition field.hh:119
    \n-
    Field operator/(const Unity< Field > &u, const Field &f)
    Definition field.hh:56
    \n-
    std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)
    Definition lfematrix.hh:151
    \n-
    Field operator*(const Unity< Field > &u, const Field &f)
    Definition field.hh:50
    \n-
    A class representing the unit of a given Field.
    Definition field.hh:30
    \n-
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n-
    Definition multiindex.hh:38
    \n-
    This operator+(const This &other) const
    Definition multiindex.hh:249
    \n-
    int absOMZ() const
    Definition multiindex.hh:273
    \n-
    ~MultiIndex()
    Definition multiindex.hh:87
    \n-
    This & operator-=(const This &other)
    Definition multiindex.hh:208
    \n-
    MultiIndex(int, const This &other)
    Definition multiindex.hh:60
    \n-
    static const int dimension
    Definition multiindex.hh:44
    \n-
    int absZ() const
    Definition multiindex.hh:265
    \n-
    int omz(int i) const
    Definition multiindex.hh:96
    \n-
    This & operator+=(const This &other)
    Definition multiindex.hh:185
    \n-
    bool operator==(const This &other) const
    Definition multiindex.hh:141
    \n-
    bool sameMultiIndex(const This &ind)
    Definition multiindex.hh:281
    \n-
    This & operator=(const This &other)
    Definition multiindex.hh:105
    \n-
    MultiIndex(const This &other)
    Definition multiindex.hh:74
    \n-
    This & operator*=(const F &f)
    Definition multiindex.hh:148
    \n-
    const Field & factor() const
    Definition multiindex.hh:100
    \n-
    This operator/(const F &f) const
    Definition multiindex.hh:232
    \n-
    MultiIndex(const F &f)
    Definition multiindex.hh:53
    \n-
    This & operator/=(const F &f)
    Definition multiindex.hh:156
    \n-
    This operator*(const F &f) const
    Definition multiindex.hh:226
    \n-
    void set(int d, int power=1)
    Definition multiindex.hh:260
    \n-
    This operator-(const This &other) const
    Definition multiindex.hh:254
    \n-
    int z(int i) const
    Definition multiindex.hh:92
    \n-
    MultiIndex()
    Definition multiindex.hh:46
    \n-
    Field field_type
    Definition multiindex.hh:316
    \n-
    typename FieldTraits< field_type >::real_type real_type
    Definition multiindex.hh:317
    \n-
    MultiIndex< dim, F > Field
    Definition multiindex.hh:462
    \n-
    MultiIndex< dim, F > Field
    Definition multiindex.hh:485
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n+
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangecube.hh:719
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangecube.hh:733
    \n+
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangecube.hh:746
    \n+
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangecube.hh:739
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangecube.hh:726
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,636 +1,764 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-multiindex.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+lagrangecube.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_MULTIINDEX_HH\n-6#define DUNE_MULTIINDEX_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH\n 7\n-8#include \n-9#include \n+8#include \n+9#include \n 10\n-11#include \n+11#include \n 12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18 /****************************************************************\n-19 * Provide a Field class which can be used in evaluation methods\n-20 * to produce MultiIndex presentation of polynomials.\n-21 ****************************************************************/\n-22 // Internal Forward Declarations\n-23 // -----------------------------\n-24\n-25 template< int dim, class Field >\n-26 class MultiIndex;\n-27\n-28 template< int dim, class Field >\n-_\b2_\b9 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b _\b> &\n-);\n-30\n-31\n-32\n-33 // MultiIndex\n-34 // ----------\n-35\n-36 template< int dim,class Field >\n-_\b3_\b7 class _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-38 {\n-39 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> _\bT_\bh_\bi_\bs;\n-40\n-_\b4_\b1 friend std::ostream &operator<<<> ( std::ostream &, const _\bT_\bh_\bi_\bs & );\n-42\n-43 public:\n-_\b4_\b4 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-45\n-_\b4_\b6 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ()\n-47 : vecZ_( 0 ),\n-48 vecOMZ_( 0 ),\n-49 factor_( 1. ),\n-50 next_( 0 )\n-51 {}\n-52 template \n-_\b5_\b3 explicit _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx (const F &f)\n-54 : vecZ_( 0 ),\n-55 vecOMZ_( 0 ),\n-56 factor_( _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(f) ),\n-57 next_( 0 )\n-58 {}\n-59\n-_\b6_\b0 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ( int, const _\bT_\bh_\bi_\bs &other )\n-61 : vecZ_( other.vecOMZ_ ),\n-62 vecOMZ_( other.vecZ_ ),\n-63 factor_( other.factor_ )\n-64 {\n-65 assert(!other.next_);\n-66 if (other.next_)\n-67 {\n-68 next_ = new _\bT_\bh_\bi_\bs( *(other.next_) );\n-69 }\n-70 else\n-71 next_ = 0;\n-72 }\n-73\n-_\b7_\b4 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ( const _\bT_\bh_\bi_\bs &other )\n-75 : vecZ_( other.vecZ_ ),\n-76 vecOMZ_( other.vecOMZ_ ),\n-77 factor_( other.factor_ )\n-78 {\n-79 if (other.next_)\n-80 {\n-81 next_ = new _\bT_\bh_\bi_\bs( *(other.next_) );\n-82 }\n-83 else\n-84 next_ = 0;\n-85 }\n-86\n-_\b8_\b7 _\b~_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx()\n-88 {\n-89 remove();\n-90 }\n-91\n-_\b9_\b2 int _\bz(int i) const\n-93 {\n-94 return vecZ_[i];\n-95 }\n-_\b9_\b6 int _\bo_\bm_\bz(int i) const\n-97 {\n-98 return vecOMZ_[i];\n+13#include \n+14\n+15#include \n+16\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be { namespace Impl\n+22{\n+23 // Forward declaration\n+24 template\n+25 class LagrangeCubeLocalInterpolation;\n+26\n+37 template\n+38 class LagrangeCubeLocalBasis\n+39 {\n+40 friend class\n+LagrangeCubeLocalInterpolation >;\n+41\n+42 // i-th Lagrange polynomial of degree k in one dimension\n+43 static R p(unsigned int i, D x)\n+44 {\n+45 R result(1.0);\n+46 for (unsigned int j=0; j<=k; j++)\n+47 if (j!=i) result *= (k*x-j)/((int)i-(int)j);\n+48 return result;\n+49 }\n+50\n+51 // derivative of ith Lagrange polynomial of degree k in one dimension\n+52 static R dp(unsigned int i, D x)\n+53 {\n+54 R result(0.0);\n+55\n+56 for (unsigned int j=0; j<=k; j++)\n+57 {\n+58 if (j!=i)\n+59 {\n+60 R prod( (k*1.0)/((int)i-(int)j) );\n+61 for (unsigned int l=0; l<=k; l++)\n+62 if (l!=i && l!=j)\n+63 prod *= (k*x-l)/((int)i-(int)l);\n+64 result += prod;\n+65 }\n+66 }\n+67 return result;\n+68 }\n+69\n+70 // Second derivative of j-th Lagrange polynomial of degree k in one\n+dimension\n+71 // Formula and notation taken from https://en.wikipedia.org/wiki/\n+Lagrange_polynomial#Derivatives\n+72 static R ddp(unsigned int j, D x)\n+73 {\n+74 R result(0.0);\n+75\n+76 for (unsigned int i=0; i<=k; i++)\n+77 {\n+78 if (i==j)\n+79 continue;\n+80\n+81 R sum(0);\n+82\n+83 for (unsigned int m=0; m<=k; m++)\n+84 {\n+85 if (m==i || m==j)\n+86 continue;\n+87\n+88 R prod( (k*1.0)/((int)j-(int)m) );\n+89 for (unsigned int l=0; l<=k; l++)\n+90 if (l!=i && l!=j && l!=m)\n+91 prod *= (k*x-l)/((int)j-(int)l);\n+92 sum += prod;\n+93 }\n+94\n+95 result += sum * ( (k*1.0)/((int)j-(int)i) );\n+96 }\n+97\n+98 return result;\n 99 }\n-_\b1_\b0_\b0 const Field &_\bf_\ba_\bc_\bt_\bo_\br() const\n-101 {\n-102 return factor_;\n-103 }\n-104\n-_\b1_\b0_\b5 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+100\n+101 // Return i as a d-digit number in the (k+1)-nary system\n+102 static std::array multiindex (unsigned int i)\n+103 {\n+104 std::array alpha;\n+105 for (unsigned int j=0; j &f )\n-116 {\n-117 remove();\n-118 vecZ_ = 0;\n-119 vecOMZ_ = 0;\n-120 factor_ = 0.;\n-121 return *this;\n-122 }\n-_\b1_\b2_\b3 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\bT_\bh_\bi_\bs_\b> &f )\n-124 {\n-125 remove();\n-126 vecZ_ = 0;\n-127 vecOMZ_ = 0;\n-128 factor_ = 1.;\n-129 return *this;\n-130 }\n-131 template \n-_\b1_\b3_\b2 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const F &f )\n-133 {\n-134 remove();\n-135 vecZ_ = 0;\n-136 vecOMZ_ = 0;\n-137 factor_ = field_cast(f);\n-138 return *this;\n-139 }\n-140\n-_\b1_\b4_\b1 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b (const _\bT_\bh_\bi_\bs &other) const\n-142 {\n-143 assert(!next_ && !other.next_);\n-144 return (vecZ_==other.vecZ_ && vecOMZ_==other.vecOMZ_ &&\n-factor_==other.factor_);\n+107 alpha[j] = i % (k+1);\n+108 i = i/(k+1);\n+109 }\n+110 return alpha;\n+111 }\n+112\n+113 public:\n+114 using Traits =\n+LocalBasisTraits,R,1,FieldVector,FieldMatrix\n+>;\n+115\n+118 static constexpr unsigned int size ()\n+119 {\n+120 return power(k+1, dim);\n+121 }\n+122\n+124 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n+125 std::vector& out) const\n+126 {\n+127 out.resize(size());\n+128\n+129 // Specialization for zero-order case\n+130 if (k==0)\n+131 {\n+132 out[0] = 1;\n+133 return;\n+134 }\n+135\n+136 if (k==1)\n+137 {\n+138 for (size_t i=0; i\n-_\b1_\b4_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const F &f )\n-149 {\n-150 factor_ *= field_cast(f);\n-151 if (next_)\n-152 (*next_) *= f;\n-153 return *this;\n-154 }\n-155 template \n-_\b1_\b5_\b6 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b=_\b ( const F &f )\n-157 {\n-158 factor_ /= field_cast(f);\n-159 if (next_)\n-160 (*next_) /= f;\n-161 return *this;\n+146 return;\n+147 }\n+148\n+149 // General case\n+150 for (size_t i=0; i alpha(multiindex(i));\n+154\n+155 // initialize product\n+156 out[i] = 1.0;\n+157\n+158 // dimension by dimension\n+159 for (unsigned int j=0; j& out) const\n+171 {\n+172 out.resize(size());\n+173\n+174 // Specialization for k==0\n+175 if (k==0)\n+176 {\n+177 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n+178 return;\n+179 }\n+180\n+181 // Specialization for k==1\n+182 if (k==1)\n+183 {\n+184 // Loop over all shape functions\n+185 for (size_t i=0; i\n-_\b2_\b2_\b6 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const F &f ) const\n-227 {\n-228 _\bT_\bh_\bi_\bs _\bz = *this;\n-229 return (_\bz *= f);\n-230 }\n-231 template \n-_\b2_\b3_\b2 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const F &f ) const\n-233 {\n-234 _\bT_\bh_\bi_\bs _\bz = *this;\n-235 return (_\bz /= f);\n-236 }\n-237\n-_\b2_\b3_\b8 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const _\bT_\bh_\bi_\bs &other ) const\n-239 {\n-240 _\bT_\bh_\bi_\bs _\bz = *this;\n-241 return (_\bz *= other);\n-242 }\n-_\b2_\b4_\b3 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bT_\bh_\bi_\bs &other ) const\n-244 {\n-245 _\bT_\bh_\bi_\bs _\bz = *this;\n-246 return (_\bz /= other);\n-247 }\n-248\n-_\b2_\b4_\b9 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b ( const _\bT_\bh_\bi_\bs &other ) const\n-250 {\n-251 _\bT_\bh_\bi_\bs _\bz = *this;\n-252 return (_\bz += other);\n+210 // convert index i to multiindex\n+211 std::array alpha(multiindex(i));\n+212\n+213 // Loop over all coordinate directions\n+214 for (unsigned int j=0; j& order,\n+235 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+236 std::vector& out) const\n+237 {\n+238 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+239\n+240 out.resize(size());\n+241\n+242 if (k==0)\n+243 {\n+244 out[0] = (totalOrder==0);\n+245 return;\n+246 }\n+247\n+248 if (k==1)\n+249 {\n+250 if (totalOrder == 0)\n+251 {\n+252 evaluateFunction(in, out);\n 253 }\n-_\b2_\b5_\b4 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+254 else if (totalOrder == 1)\n 255 {\n-256 _\bT_\bh_\bi_\bs _\bz = *this;\n-257 return (_\bz -= other);\n-258 }\n-259\n-_\b2_\b6_\b0 void _\bs_\be_\bt ( int d, int power = 1 )\n-261 {\n-262 vecZ_[ d ] = power;\n-263 }\n-264\n-_\b2_\b6_\b5 int _\ba_\bb_\bs_\bZ () const\n-266 {\n-267 int ret = 0;\n-268 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n-269 ret += std::abs( vecZ_[ i ] );\n-270 return ret;\n-271 }\n-272\n-_\b2_\b7_\b3 int _\ba_\bb_\bs_\bO_\bM_\bZ() const\n-274 {\n-275 int ret = 0;\n-276 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n-277 ret += std::abs( vecOMZ_[ i ] );\n-278 return ret;\n-279 }\n-280\n-_\b2_\b8_\b1 bool _\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(const _\bT_\bh_\bi_\bs &ind)\n-282 {\n-283 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n-284 {\n-285 if ( vecZ_[i] != ind.vecZ_[i] ||\n-286 vecOMZ_[i] != vecOMZ_[i] )\n-287 return false;\n-288 }\n-289 return true;\n-290 }\n-291\n-292 private:\n-293 void remove()\n-294 {\n-295 if (next_)\n-296 {\n-297 next_->remove();\n-298 delete next_;\n-299 next_ = 0;\n-300 }\n-301 }\n-302\n-303 typedef Dune::FieldVector< int, dimension > Vector;\n-304\n-305 Vector vecZ_;\n-306 Vector vecOMZ_;\n-307 Field factor_;\n-308\n-309 This *next_;\n-310 };\n+256 out.resize(size());\n+257\n+258 auto direction = std::distance(order.begin(), std::find(order.begin(),\n+order.end(), 1));\n+259 if (direction >= dim)\n+260 DUNE_THROW(RangeError, \"Direction of partial derivative not found!\");\n+261\n+262 // Loop over all shape functions\n+263 for (std::size_t i = 0; i < size(); ++i)\n+264 {\n+265 // Initialize: the overall expression is a product\n+266 // if j-th bit of i is set to 1, otherwise to -1\n+267 out[i] = (i & (1< alpha(multiindex(i));\n+284\n+285 // Initialize: the overall expression is a product\n+286 out[i][0] = 1.0;\n+287\n+288 // rest of the product\n+289 for (std::size_t l=0; l\n-_\b3_\b1_\b4 struct FieldTraits<_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx>\n-315 {\n-_\b3_\b1_\b6 using _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be = Field;\n-_\b3_\b1_\b7 using _\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be = typename FieldTraits::real_type;\n-318 };\n-319\n-320 template \n-_\b3_\b2_\b1 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const F &f,\n-322 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> &m)\n-323 {\n-324 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> z = m;\n-325 return (z *= f);\n-326 }\n-327 template \n-_\b3_\b2_\b8 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const F &f,\n-329 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> &m)\n+312 return;\n+313 }\n+314\n+315 // The case k>1\n+316\n+317 // Loop over all shape functions\n+318 for (size_t i=0; i alpha(multiindex(i));\n+322\n+323 // Initialize: the overall expression is a product\n+324 out[i][0] = 1.0;\n+325\n+326 // rest of the product\n+327 for (std::size_t l=0; l z = m;\n-332 return (z /= f);\n-333 }\n-334\n-335 template \n-_\b3_\b3_\b6 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,const std::\n-vector<_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\b,_\bF_\b> >& y) {\n-337 for (unsigned int r=0; r\n-_\b3_\b4_\b7 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,\n-348 const std::vector,dimR> >& y) {\n-349 out << \"\\\\begin{eqnarray*}\" << std::endl;\n-350 for (unsigned int k=0; k\n-_\b3_\b6_\b5 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,\n-366 const std::vector,dimR1,dimR2> >& y) {\n-367 out << \"\\\\begin{eqnarray*}\" << std::endl;\n-368 for (unsigned int k=0; k\n-_\b3_\b8_\b5 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\b,_\bF_\b>& val)\n-386 {\n-387 bool first = true;\n-388 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\b,_\bF_\b> *m = &val;\n-389 do {\n-390 if (m->_\ba_\bb_\bs_\bZ()==0 && std::abs(m->_\bf_\ba_\bc_\bt_\bo_\br())<1e-10)\n-391 {\n-392 if (!m->next_ || !first)\n-393 {\n-394 out << \"0\";\n-395 break;\n-396 }\n-397 else {\n-398 m = m->next_;\n-399 continue;\n-400 }\n-401 }\n-402 if (m->_\bf_\ba_\bc_\bt_\bo_\br()>0 && !first)\n-403 out << \" + \";\n-404 else if (m->_\bf_\ba_\bc_\bt_\bo_\br()<0)\n-405 if (!first)\n-406 out << \" - \";\n-407 else\n-408 out << \"- \";\n-409 else\n-410 out << \" \";\n-411 first = false;\n-412 F f = std::abs(m->_\bf_\ba_\bc_\bt_\bo_\br());\n-413 if (m->_\ba_\bb_\bs_\bZ()==0)\n-414 out << f;\n-415 else {\n-416 if ( std::abs(f)<1e-10)\n-417 out << 0;\n-418 else\n-419 {\n-420 F f_1(f);\n-421 f_1 -= 1.; // better Unity();\n-422 if ( std::abs(f_1)>1e-10)\n-423 out << f;\n-424 int absVal = 0;\n-425 for (int i=0; ivecZ_[i]==0)\n-427 continue;\n-428 else if (m->vecZ_[i]==1)\n-429 out << char('a'+i);\n-430 else if (m->vecZ_[i]>0)\n-431 out << char('a'+i) << \"^\" << m->vecZ_[i] << \"\";\n-432 else if (m->vecZ_[i]<0)\n-433 out << char('a'+i) << \"^\" << m->vecZ_[i] << \"\";\n-434 absVal += m->vecZ_[i];\n-435 if (absValabsZ()) out << \"\";\n-436 }\n-437 }\n-438 }\n-439 /*\n-440 if (mi.absOMZ()>0) {\n-441 for (int i=0;i<=mi.absZ();++i) {\n-442 if (mi.vecOMZ_[i]==0)\n-443 continue;\n-444 else if (mi.vecOMZ_[i]==1)\n-445 out << (1-char('a'+i));\n-446 else if (mi.vecOMZ_[i]>0)\n-447 out << (1-char('a'+i)) << \"^\" << mi.vecOMZ_[i];\n-448 else if (mi.vecOMZ_[i]<0)\n-449 out << (1-char('a'+i)) << \"^\" << mi.vecOMZ_[i];\n-450 if (i==mi.absZ()+1) out << \"*\";\n-451 }\n-452 }\n-453 */\n-454 m = m->next_;\n-455 } while (m);\n-456 return out;\n-457 }\n-458\n-459 template< int dim, class F>\n-_\b4_\b6_\b0 struct _\bU_\bn_\bi_\bt_\by< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, F > >\n-461 {\n-_\b4_\b6_\b2 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bF_\bi_\be_\bl_\bd;\n+346\n+348 static constexpr unsigned int order ()\n+349 {\n+350 return k;\n+351 }\n+352 };\n+353\n+359 template\n+360 class LagrangeCubeLocalCoefficients\n+361 {\n+362 // Return i as a d-digit number in the (k+1)-nary system\n+363 static std::array multiindex (unsigned int i)\n+364 {\n+365 std::array alpha;\n+366 for (unsigned int j=0; j& subEntity)\n+376 {\n+377 assert(k>0);\n+378\n+379 unsigned lastIndex=0;\n+380\n+381 /* edge and vertex numbering\n+382 0----0----1\n+383 */\n+384\n+385 // edge (0)\n+386 subEntity[lastIndex++] = 0; // corner 0\n+387 for (unsigned i = 0; i < k - 1; ++i)\n+388 subEntity[lastIndex++] = 0; // inner dofs of element (0)\n+389\n+390 subEntity[lastIndex++] = 1; // corner 1\n+391\n+392 assert(power(k+1,dim)==lastIndex);\n+393 }\n+394\n+395 void setup2d(std::vector& subEntity)\n+396 {\n+397 assert(k>0);\n+398\n+399 unsigned lastIndex=0;\n+400\n+401 // LocalKey: entity number, entity codim, dof indices within each entity\n+402 /* edge and vertex numbering\n+403 2----3----3\n+404 | |\n+405 | |\n+406 0 1\n+407 | |\n+408 | |\n+409 0----2----1\n+410 */\n+411\n+412 // lower edge (2)\n+413 subEntity[lastIndex++] = 0; // corner 0\n+414 for (unsigned i = 0; i < k - 1; ++i)\n+415 subEntity[lastIndex++] = 2; // inner dofs of lower edge (2)\n+416\n+417 subEntity[lastIndex++] = 1; // corner 1\n+418\n+419 // iterate from bottom to top over inner edge dofs\n+420 for (unsigned e = 0; e < k - 1; ++e) {\n+421 subEntity[lastIndex++] = 0; // left edge (0)\n+422 for (unsigned i = 0; i < k - 1; ++i)\n+423 subEntity[lastIndex++] = 0; // face dofs\n+424 subEntity[lastIndex++] = 1; // right edge (1)\n+425 }\n+426\n+427 // upper edge (3)\n+428 subEntity[lastIndex++] = 2; // corner 2\n+429 for (unsigned i = 0; i < k - 1; ++i)\n+430 subEntity[lastIndex++] = 3; // inner dofs of upper edge (3)\n+431\n+432 subEntity[lastIndex++] = 3; // corner 3\n+433\n+434 assert(power(k+1,dim)==lastIndex);\n+435 }\n+436\n+437 void setup3d(std::vector& subEntity)\n+438 {\n+439 assert(k>0);\n+440\n+441 unsigned lastIndex=0;\n+442#ifndef NDEBUG\n+443 const unsigned numIndices = power(k+1,dim);\n+444 const unsigned numFaceIndices = power(k+1,dim-1);\n+445#endif\n+446 const unsigned numInnerEdgeDofs = k-1;\n+447\n+448 // LocalKey: entity number, entity codim, dof indices within each entity\n+449 /* edge and vertex numbering\n+450\n+451 6---(11)--7 6---------7\n+452 /| /| /| (5) /|\n+453 (8)| (9)| / | top / |\n+454 / (2) / (3) / |(3)bac/k |\n+455 4---(10)--5 | 4---------5 |\n+456 | | | | left|(0)| |(1)|right\n+457 | 2--(7)|---3 | 2-----|---3\n+458 (0) / (1) / |(2)front | /\n+459 |(4) |(5) | / (4) | /\n+460 |/ |/ |/ bottom |/\n+461 0---(6)---1 0---------1\n+462 */\n 463\n-_\b4_\b6_\b4 operator _\bF_\bi_\be_\bl_\bd () const\n-465 {\n-466 return _\bF_\bi_\be_\bl_\bd();\n-467 }\n-468\n-_\b4_\b6_\b9 _\bF_\bi_\be_\bl_\bd _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bF_\bi_\be_\bl_\bd &other ) const\n-470 {\n-471 return _\bF_\bi_\be_\bl_\bd( 1, other );\n-472 }\n-473\n-_\b4_\b7_\b4 _\bF_\bi_\be_\bl_\bd _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bF_\bi_\be_\bl_\bd &other ) const\n-475 {\n-476 return _\bF_\bi_\be_\bl_\bd() / other;\n-477 }\n-478 };\n-479\n+464 // bottom face (4)\n+465 lastIndex=0;\n+466 // lower edge (6)\n+467 subEntity[lastIndex++] = 0; // corner 0\n+468 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+469 subEntity[lastIndex++] = 6; // inner dofs of lower edge (6)\n+470\n+471 subEntity[lastIndex++] = 1; // corner 1\n+472\n+473 // iterate from bottom to top over inner edge dofs\n+474 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {\n+475 subEntity[lastIndex++] = 4; // left edge (4)\n+476 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+477 subEntity[lastIndex++] = 4; // inner face dofs\n+478 subEntity[lastIndex++] = 5; // right edge (5)\n+479 }\n 480\n-481\n-482 template< int dim, class F >\n-_\b4_\b8_\b3 struct _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim,F > >\n-484 {\n-_\b4_\b8_\b5 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\bF_\b _\b> _\bF_\bi_\be_\bl_\bd;\n+481 // upper edge (7)\n+482 subEntity[lastIndex++] = 2; // corner 2\n+483 for (unsigned i = 0; i < k - 1; ++i)\n+484 subEntity[lastIndex++] = 7; // inner dofs of upper edge (7)\n+485 subEntity[lastIndex++] = 3; // corner 3\n 486\n-487 // zero does not actually exist\n-_\b4_\b8_\b8 operator _\bF_\bi_\be_\bl_\bd ()\n-489 {\n-490 return _\bF_\bi_\be_\bl_\bd(0);\n-491 }\n-492 };\n-493\n-494 template< int dim, class Field >\n-_\b4_\b9_\b5 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b _\b> > &, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<\n-_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b _\b> & )\n-496 {\n-497 return true;\n-498 }\n-499\n-500 template< int dim, class Field >\n-_\b5_\b0_\b1 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &f, const _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<\n-_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b _\b> > & )\n-502 {\n-503 return true;\n-504 }\n-505\n-506}\n-507\n-508#endif // #ifndef DUNE_MULTIINDEX_HH\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+487 assert(numFaceIndices==lastIndex); // added 1 face so far\n+489\n+491 for(unsigned f = 0; f < numInnerEdgeDofs; ++f) {\n+492\n+493 // lower edge (connecting edges 0 and 1)\n+494 subEntity[lastIndex++] = 0; // dof on edge 0\n+495 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+496 subEntity[lastIndex++] = 2; // dof in front face\n+497 subEntity[lastIndex++] = 1; // dof on edge 1\n+498\n+499 // iterate from bottom to top over inner edge dofs\n+500 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {\n+501 subEntity[lastIndex++] = 0; // on left face (0)\n+502 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+503 subEntity[lastIndex++] = 0; // volume dofs\n+504 subEntity[lastIndex++] = 1; // right face (1)\n+505 }\n+506\n+507 // upper edge (connecting edges 0 and 1)\n+508 subEntity[lastIndex++] = 2; // dof on edge 2\n+509 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+510 subEntity[lastIndex++] = 3; // dof on rear face (3)\n+511 subEntity[lastIndex++] = 3; // dof on edge 3\n+512\n+513 assert(lastIndex==(f+1+1)*numFaceIndices);\n+514 }\n+515\n+517 // lower edge (10)\n+518 subEntity[lastIndex++] = 4; // corner 4\n+519 for (unsigned i = 0; i < k - 1; ++i)\n+520 subEntity[lastIndex++] = 10; // inner dofs on lower edge (10)\n+521 subEntity[lastIndex++] = 5; // corner 5\n+522\n+523 // iterate from bottom to top over inner edge dofs\n+524 for (unsigned e = 0; e < k - 1; ++e) {\n+525 subEntity[lastIndex++] = 8; // left edge (8)\n+526 for (unsigned i = 0; i < k - 1; ++i)\n+527 subEntity[lastIndex++] = 5; // face dofs\n+528 subEntity[lastIndex++] = 9; // right edge (9)\n+529 }\n+530\n+531 // upper edge (11)\n+532 subEntity[lastIndex++] = 6; // corner 6\n+533 for (unsigned i = 0; i < k - 1; ++i)\n+534 subEntity[lastIndex++] = 11; // inner dofs of upper edge (11)\n+535 subEntity[lastIndex++] = 7; // corner 7\n+536\n+537 assert(numIndices==lastIndex);\n+538 }\n+539\n+540 public:\n+542 LagrangeCubeLocalCoefficients ()\n+543 : localKeys_(size())\n+544 {\n+545 if (k==0)\n+546 {\n+547 localKeys_[0] = LocalKey(0,0,0);\n+548 return;\n+549 }\n+550\n+551 if (k==1)\n+552 {\n+553 for (std::size_t i=0; i codim(size());\n+562\n+563 for (std::size_t i=0; i mIdx = multiindex(i);\n+570 for (unsigned int j=0; j index(size());\n+581\n+582 for (std::size_t i=0; i mIdx = multiindex(i);\n+587\n+588 for (int j=dim-1; j>=0; j--)\n+589 if (mIdx[j]>0 && mIdx[j] subEntity(size());\n+595\n+596 if (dim==1) {\n+597\n+598 setup1d(subEntity);\n+599\n+600 } else if (dim==2) {\n+601\n+602 setup2d(subEntity);\n+603\n+604 } else if (dim==3) {\n+605\n+606 setup3d(subEntity);\n+607\n+608 } else\n+609 DUNE_THROW(Dune::NotImplemented, \"LagrangeCubeLocalCoefficients for order \"\n+<< k << \" and dim == \" << dim);\n+610\n+611 for (size_t i=0; i localKeys_;\n+629 };\n+630\n+635 template\n+636 class LagrangeCubeLocalInterpolation\n+637 {\n+638 public:\n+639\n+647 template\n+648 void interpolate (const F& f, std::vector& out) const\n+649 {\n+650 constexpr auto dim = LocalBasis::Traits::dimDomain;\n+651 constexpr auto k = LocalBasis::order();\n+652 using D = typename LocalBasis::Traits::DomainFieldType;\n+653\n+654 typename LocalBasis::Traits::DomainType x;\n+655\n+656 out.resize(LocalBasis::size());\n+657\n+658 // Specialization for zero-order case\n+659 if (k==0)\n+660 {\n+661 auto center = ReferenceElements::cube().position(0,0);\n+662 out[0] = f(center);\n+663 return;\n+664 }\n+665\n+666 // Specialization for first-order case\n+667 if (k==1)\n+668 {\n+669 for (unsigned int i=0; i alpha(LocalBasis::multiindex(i));\n+685\n+686 // Generate coordinate of the i-th Lagrange point\n+687 for (unsigned int j=0; j\n+_\b7_\b0_\b8 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+709 {\n+710 public:\n+_\b7_\b1_\b3 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n+_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>,\n+714 Impl::LagrangeCubeLocalCoefficients,\n+715 Impl::LagrangeCubeLocalInterpolation > >;\n+716\n+_\b7_\b1_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+720 {\n+721 return basis_;\n+722 }\n+723\n+_\b7_\b2_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+727 {\n+728 return coefficients_;\n+729 }\n+730\n+_\b7_\b3_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+734 {\n+735 return interpolation_;\n+736 }\n+737\n+_\b7_\b3_\b9 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n+740 {\n+741 return power(k+1,dim);\n+742 }\n+743\n+_\b7_\b4_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+747 {\n+748 return GeometryTypes::cube(dim);\n+749 }\n+750\n+751 private:\n+752 Impl::LagrangeCubeLocalBasis basis_;\n+753 Impl::LagrangeCubeLocalCoefficients coefficients_;\n+754 Impl::LagrangeCubeLocalInterpolation > interpolation_;\n+755 };\n+756\n+757} // namespace Dune\n+758\n+759#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-\n-Field operator-(const Unity< Field > &u, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n-bool operator<(const Zero< Field > &, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/\n-Field operator/(const Unity< Field > &u, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n-std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n-Field operator*(const Unity< Field > &u, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by\n-A class representing the unit of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n-A class representing the zero of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+\n-This operator+(const This &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\ba_\bb_\bs_\bO_\bM_\bZ\n-int absOMZ() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:273\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\b~_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-~MultiIndex()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b=\n-This & operator-=(const This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:208\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-MultiIndex(int, const This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\ba_\bb_\bs_\bZ\n-int absZ() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:265\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bm_\bz\n-int omz(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b=\n-This & operator+=(const This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n-bool operator==(const This &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-bool sameMultiIndex(const This &ind)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:281\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-MultiIndex(const This &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=\n-This & operator*=(const F &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bf_\ba_\bc_\bt_\bo_\br\n-const Field & factor() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/\n-This operator/(const F &f) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:232\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-MultiIndex(const F &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b=\n-This & operator/=(const F &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:156\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n-This operator*(const F &f) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:226\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bs_\be_\bt\n-void set(int d, int power=1)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:260\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-\n-This operator-(const This &other) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:254\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bz\n-int z(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-MultiIndex()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n-Field field_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:316\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be\n-typename FieldTraits< field_type >::real_type real_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:317\n-_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-MultiIndex< dim, F > Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:462\n-_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-MultiIndex< dim, F > Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:485\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for cubes with arbitrary compile-time dimension and\n+polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+Returns the local basis, i.e., the set of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:719\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+Returns object that evaluates degrees of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:733\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+The reference element that the local finite element is defined on.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:746\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size()\n+The number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:739\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+Returns the assignment of the degrees of freedom to the element subentities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:726\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: tensor.hh File Reference\n+dune-localfunctions: pq22d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,132 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    tensor.hh File Reference
    \n+Namespaces
    \n+
    pq22d.hh File Reference
    \n \n
    \n-
    #include <ostream>
    \n-#include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n \n

    \n Classes

    class  Dune::LFETensor< F, dimD, deriv >
     
    struct  Dune::FieldTraits< LFETensor< F, dimD, deriv > >
     
    struct  Dune::LFETensor< F, 0, deriv >
     
    struct  Dune::LFETensor< F, 0, 0 >
     
    class  Dune::LFETensor< F, dimD, 0 >
     
    struct  Dune::FieldTraits< Derivatives< F, dimD, dimR, deriv, layout > >
     
    struct  Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value >
     
    struct  Dune::Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value >
     
    struct  Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative >
     
    struct  Dune::LFETensorAxpy< Vec1, Vec2, deriv >
     
    struct  Dune::LFETensorAxpy< Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value >, Vec2, deriv >
     
    struct  Dune::LFETensorAxpy< Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative >, Vec2, deriv >
     
    struct  Dune::LFETensorAxpy< Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivative >, Vec2, deriv >
     
    struct  Dune::LFETensorAxpy< Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value >, Vec2, deriv >
     
    struct  Dune::DerivativeAssign< Vec1, Vec2 >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, layout >, Derivatives< F2, dimD, dimR, deriv, layout > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, layout >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, layout >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, layout >, F2 >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value >, FieldVector< F2, dimR > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, dimR > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, FieldVector< F2, dimR > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, dimR > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, FieldVector< F2, 1 > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, 1 > >
    class  Dune::PQ22DLocalFiniteElement< D, R >
     
    \n \n \n \n-\n-\n-

    \n Namespaces

    namespace  Dune
     
    namespace  Dune::DerivativeLayoutNS
     
    \n-\n-\n-\n-

    \n-Enumerations

    enum  Dune::DerivativeLayoutNS::DerivativeLayout { Dune::DerivativeLayoutNS::value\n-, Dune::DerivativeLayoutNS::derivative\n- }
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n

    \n-Functions

    template<class F , int dimD, unsigned int deriv>
    std::ostream & Dune::operator<< (std::ostream &out, const LFETensor< F, dimD, deriv > &tensor)
     
    template<class F , int dimD, int dimR, unsigned int deriv>
    std::ostream & Dune::operator<< (std::ostream &out, const Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &d)
     
    template<class F , int dimD, int dimR, unsigned int deriv>
    std::ostream & Dune::operator<< (std::ostream &out, const Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > &d)
     
    template<class F , int dimD, int dimR>
    std::ostream & Dune::operator<< (std::ostream &out, const Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::derivative > &d)
     
    template<class F , int dimD, int dimR>
    std::ostream & Dune::operator<< (std::ostream &out, const Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > &d)
     
    template<class F , int dimD, int dimR, unsigned int deriv, DerivativeLayoutNS::DerivativeLayout layout>
    std::ostream & Dune::operator<< (std::ostream &out, const std::vector< Derivatives< F, dimD, dimR, deriv, layout > > &y)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,141 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bE_\bn_\bu_\bm_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-tensor.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+pq22d.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\b0_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\b0_\b,_\b _\b0_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n- _\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bV_\be_\bc_\b1_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n- _\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n- _\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bV_\be_\bc_\b1_\b,_\b _\bV_\be_\bc_\b2_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bF_\b2\n- _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS\n-\u00a0\n-E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n-enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt { _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n- _\bv_\ba_\bl_\bu_\be , _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be }\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br< F, dimD,\n- deriv > &tensor)\n-\u00a0\n-template\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F,\n- dimD, dimR, deriv, _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be > &d)\n-\u00a0\n-template\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F,\n- dimD, dimR, deriv, _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be > &d)\n-\u00a0\n-template\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F,\n- dimD, dimR, 0, _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be > &d)\n-\u00a0\n-template\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F,\n- dimD, dimR, 0, _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be > &d)\n-\u00a0\n-template\n-std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const std::vector<\n- _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F, dimD, dimR, deriv, layout > > &y)\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: tensor.hh Source File\n+dune-localfunctions: pq22d.hh Source File\n \n \n \n \n \n \n \n@@ -70,1417 +70,132 @@\n
    \n \n \n \n \n \n \n
    \n-
    tensor.hh
    \n+
    pq22d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_TENSOR_HH
    \n-
    7#define DUNE_TENSOR_HH
    \n-
    8
    \n-
    9#include <ostream>
    \n-
    10#include <vector>
    \n+
    5#ifndef DUNE_PQ22DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_PQ22DLOCALFINITEELEMENT_HH
    \n+
    7
    \n+
    8#include <dune/common/fmatrix.hh>
    \n+
    9
    \n+\n
    11
    \n-
    12#include <dune/common/fvector.hh>
    \n-
    13
    \n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18 /***********************************************
    \n-
    19 * The classes here are work in progress.
    \n-
    20 * Basically they provide tensor structures for
    \n-
    21 * higher order derivatives of vector valued function.
    \n-
    22 * Two storage structures are provided
    \n-
    23 * (either based on the components of the vector valued
    \n-
    24 * functions or on the order of the derivative).
    \n-
    25 * Conversions are supplied between the two storage
    \n-
    26 * structures and simple operations, which make the
    \n-
    27 * code difficult to use and requires rewriting...
    \n-
    28 ***************************************************/
    \n-
    29
    \n-
    30 // Structure for scalar tensor of order deriv
    \n-
    31 template <class F,int dimD,unsigned int deriv>
    \n-
    \n-\n-
    33 {
    \n-\n-
    35 typedef LFETensor<F,dimD-1,deriv> BaseDim;
    \n-
    36 typedef LFETensor<F,dimD,deriv-1> BaseDeriv;
    \n-
    37
    \n-
    38 public:
    \n-
    39 typedef F field_type;
    \n-
    40 static const unsigned int size = BaseDim::size+BaseDeriv::size;
    \n-
    41 typedef Dune::FieldVector<F,size> Block;
    \n-
    42
    \n-
    43 template< class FF >
    \n-
    \n-
    44 This &operator= ( const FF &f )
    \n-
    45 {
    \n-
    46 block() = field_cast< F >( f );
    \n-
    47 return *this;
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    \n-
    50 This &operator= ( const Block &b )
    \n-
    51 {
    \n-
    52 block() = b;
    \n-
    53 return *this;
    \n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17 template<class D, class R>
    \n+
    \n+\n+
    19 {
    \n+\n+\n+
    22 public:
    \n+
    23 using Traits = typename LFEVariant::Traits;
    \n+
    24
    \n+
    \n+
    25 PQ22DLocalFiniteElement ( const GeometryType &gt )
    \n+
    26 {
    \n+
    27 if ( gt.isTriangle() )
    \n+\n+
    29 else if ( gt.isQuadrilateral() )
    \n+\n+
    31 }
    \n+
    \n+
    32
    \n+
    \n+
    33 PQ22DLocalFiniteElement ( const GeometryType &gt, const std::vector<unsigned int> vertexmap )
    \n+
    34 {
    \n+
    35 if ( gt.isTriangle() )
    \n+
    36 lfeVariant_ = LagrangeSimplexLocalFiniteElement<D,R,2,2>(vertexmap);
    \n+
    37 else if ( gt.isQuadrilateral() )
    \n+\n+
    39 }
    \n+
    \n+
    40
    \n+
    \n+
    41 const typename Traits::LocalBasisType& localBasis () const
    \n+
    42 {
    \n+
    43 return lfeVariant_.localBasis();
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    \n+
    46 const typename Traits::LocalCoefficientsType& localCoefficients () const
    \n+
    47 {
    \n+
    48 return lfeVariant_.localCoefficients();
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    51 const typename Traits::LocalInterpolationType& localInterpolation () const
    \n+
    52 {
    \n+
    53 return lfeVariant_.localInterpolation();
    \n
    54 }
    \n
    \n
    55
    \n-
    \n-\n-
    57 {
    \n-
    58 block() *= f;
    \n-
    59 return *this;
    \n+
    \n+
    57 unsigned int size () const
    \n+
    58 {
    \n+
    59 return lfeVariant_.size();
    \n
    60 }
    \n
    \n
    61
    \n
    \n-
    62 const field_type &operator[] ( const unsigned int i ) const
    \n+
    62 GeometryType type () const
    \n
    63 {
    \n-
    64 return block()[ i ];
    \n+
    64 return lfeVariant_.type();
    \n
    65 }
    \n
    \n
    66
    \n-
    \n-
    67 field_type &operator[] ( const unsigned int i )
    \n-
    68 {
    \n-
    69 return block()[ i ];
    \n-
    70 }
    \n+
    67 private:
    \n+
    68
    \n+
    69 LFEVariant lfeVariant_;
    \n+
    70 };
    \n
    \n
    71
    \n-
    \n-\n-
    73 {
    \n-
    74 return block_;
    \n-
    75 }
    \n-
    \n-
    \n-
    76 const Block &block() const
    \n-
    77 {
    \n-
    78 return block_;
    \n-
    79 }
    \n-
    \n-
    \n-
    80 void axpy(const F& a, const This &y)
    \n-
    81 {
    \n-
    82 block().axpy(a,y.block());
    \n-
    83 }
    \n-
    \n-
    84 template <class Fy>
    \n-
    \n-\n-
    86 {
    \n-
    87 field_cast(y.block(),block());
    \n-
    88 }
    \n-
    \n-\n-
    90 };
    \n-
    \n-
    91
    \n-
    92
    \n-
    93 template <class F,int dimD,unsigned int deriv>
    \n-
    \n-
    94 struct FieldTraits<LFETensor<F,dimD,deriv>>
    \n-
    95 {
    \n-
    96 using field_type = F;
    \n-
    97 using real_type = typename FieldTraits<field_type>::real_type;
    \n-
    98 };
    \n-
    \n-
    99
    \n-
    100 // ******************************************
    \n-
    101 template <class F,unsigned int deriv>
    \n-
    \n-
    102 struct LFETensor<F,0,deriv>
    \n-
    103 {
    \n-
    104 static const int size = 0;
    \n-
    105 };
    \n-
    \n-
    106
    \n-
    107 template <class F>
    \n-
    \n-
    108 struct LFETensor<F,0,0>
    \n-
    109 {
    \n-
    110 static const int size = 1;
    \n-
    111 };
    \n-
    \n-
    112
    \n-
    113 template <class F,int dimD>
    \n-
    \n-
    114 class LFETensor<F,dimD,0>
    \n-
    115 {
    \n-\n-
    117
    \n-
    118 public:
    \n-
    119 typedef F field_type;
    \n-
    120 static const int size = 1;
    \n-
    121 typedef Dune::FieldVector<F,size> Block;
    \n-
    122
    \n-
    123 template< class FF >
    \n-
    \n-
    124 This &operator= ( const FF &f )
    \n-
    125 {
    \n-
    126 block() = field_cast< F >( f );
    \n-
    127 return *this;
    \n-
    128 }
    \n-
    \n-
    129
    \n-
    \n-
    130 This &operator= ( const Block &b )
    \n-
    131 {
    \n-
    132 block() = b;
    \n-
    133 return *this;
    \n-
    134 }
    \n-
    \n-
    135
    \n-
    \n-\n-
    137 {
    \n-
    138 block() *= f;
    \n-
    139 return *this;
    \n-
    140 }
    \n-
    \n-
    141
    \n-
    \n-
    142 const F &operator[] ( const unsigned int i ) const
    \n-
    143 {
    \n-
    144 return block()[ i ];
    \n-
    145 }
    \n-
    \n-
    146
    \n-
    \n-
    147 F &operator[] ( const unsigned int i )
    \n-
    148 {
    \n-
    149 return block()[ i ];
    \n-
    150 }
    \n-
    \n-
    151
    \n-
    \n-
    152 void axpy(const F& a, const This &y)
    \n-
    153 {
    \n-
    154 block().axpy(a,y.block());
    \n-
    155 }
    \n-
    \n-
    156 template <class Fy>
    \n-
    \n-\n-
    158 {
    \n-
    159 field_cast(y.block(),block());
    \n-
    160 }
    \n-
    \n-
    161
    \n-
    \n-\n-
    163 {
    \n-
    164 return block_;
    \n-
    165 }
    \n-
    \n-
    \n-
    166 const Block &block() const
    \n-
    167 {
    \n-
    168 return block_;
    \n-
    169 }
    \n-
    \n-\n-
    171 };
    \n-
    \n-
    172 // ***********************************************************
    \n-
    173 // Structure for all derivatives up to order deriv
    \n-
    174 // for vector valued function
    \n-
    \n-
    175 namespace DerivativeLayoutNS {
    \n-\n-
    177 }
    \n-
    \n-
    178 template <class F,int dimD,int dimR,unsigned int deriv,
    \n-\n-\n-
    181
    \n-
    182 template <class F,int dimD,int dimR,unsigned int deriv,
    \n-\n-
    \n-
    184 struct FieldTraits<Derivatives<F,dimD,dimR,deriv,layout>>
    \n-
    185 {
    \n-
    186 using field_type = F;
    \n-
    187 using real_type = typename FieldTraits<field_type>::real_type;
    \n-
    188 };
    \n-
    \n-
    189
    \n-
    190 // Implemnetation for valued based layout
    \n-
    191 template <class F,int dimD,int dimR,unsigned int deriv>
    \n-
    \n-
    192 struct Derivatives<F,dimD,dimR,deriv,DerivativeLayoutNS::value>
    \n-
    193 : public Derivatives<F,dimD,dimR,deriv-1,DerivativeLayoutNS::value>
    \n-
    194 {
    \n-\n-
    196 typedef Derivatives<F,dimD,dimR,deriv-1,DerivativeLayoutNS::value> Base;
    \n-\n-
    198
    \n-
    199 typedef F Field;
    \n-
    200 typedef F field_type;
    \n-
    201
    \n-\n-
    203 static const unsigned int dimDomain = dimD;
    \n-
    204 static const unsigned int dimRange = dimR;
    \n-
    205 constexpr static int size = Base::size+ThisLFETensor::size*dimR;
    \n-
    206 typedef Dune::FieldVector<F,size> Block;
    \n-
    207
    \n-
    \n-
    208 This &operator=(const F& f)
    \n-
    209 {
    \n-
    210 block() = f;
    \n-
    211 return *this;
    \n-
    212 }
    \n-
    \n-
    \n-
    213 This &operator=(const Dune::FieldVector<ThisLFETensor,dimR> &t)
    \n-
    214 {
    \n-
    215 tensor_ = t;
    \n-
    216 return *this;
    \n-
    217 }
    \n-
    \n-
    218 template <unsigned int dorder>
    \n-
    \n-
    219 This &operator=(const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &t)
    \n-
    220 {
    \n-
    221 tensor<dorder>() = t;
    \n-
    222 return *this;
    \n-
    223 }
    \n-
    \n-
    \n-\n-
    225 {
    \n-
    226 block() = t;
    \n-
    227 return *this;
    \n-
    228 }
    \n-
    \n-
    229
    \n-
    \n-
    230 This &operator*= ( const field_type &f )
    \n-
    231 {
    \n-
    232 block() *= f;
    \n-
    233 return *this;
    \n-
    234 }
    \n-
    \n-
    235
    \n-
    \n-
    236 void axpy(const F &a, const This &y)
    \n-
    237 {
    \n-
    238 block().axpy(a,y.block());
    \n-
    239 }
    \n-
    \n-
    240
    \n-
    241 // assign with same layout (only different Field)
    \n-
    242 template <class Fy>
    \n-
    \n-\n-
    244 {
    \n-
    245 field_cast(y.block(),block());
    \n-
    246 }
    \n-
    \n-
    247 // assign with different layout (same dimRange)
    \n-
    248 template <class Fy>
    \n-
    \n-\n-
    250 {
    \n-
    251 Base::assign(y);
    \n-
    252 for (int rr=0; rr<dimR; ++rr)
    \n-
    253 tensor_[rr] = y[rr].template tensor<deriv>()[0];
    \n-
    254 }
    \n-
    \n-
    255 // assign with rth component of function
    \n-
    256 template <class Fy,int dimRy>
    \n-
    \n-\n-
    258 {
    \n-
    259 assign<Fy,dimRy>(y.block(),r);
    \n-
    260 }
    \n-
    \n-
    261 // assign with scalar functions to component r
    \n-
    262 template <class Fy>
    \n-
    \n-\n-
    264 {
    \n-
    265 assign(r,y.block());
    \n-
    266 }
    \n-
    \n-
    267 template <class Fy>
    \n-
    \n-\n-
    269 {
    \n-
    270 assign(r,y[0]);
    \n-
    271 }
    \n-
    \n-
    272
    \n-
    \n-\n-
    274 {
    \n-
    275 return reinterpret_cast<Block&>(*this);
    \n-
    276 }
    \n-
    \n-
    \n-
    277 const Block &block() const
    \n-
    278 {
    \n-
    279 return reinterpret_cast<const Block&>(*this);
    \n-
    280 }
    \n-
    \n-
    281
    \n-
    282 template <unsigned int dorder>
    \n-
    \n-
    283 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &tensor() const
    \n-
    284 {
    \n-
    285 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    286 const std::integral_constant<int,dorder> a = {};
    \n-
    287 return tensor(a);
    \n-
    288 }
    \n-
    \n-
    289 template <unsigned int dorder>
    \n-
    \n-
    290 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &tensor()
    \n-
    291 {
    \n-
    292 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    293 return tensor(std::integral_constant<int,dorder>());
    \n-
    294 }
    \n-
    \n-
    295 template <unsigned int dorder>
    \n-
    \n-
    296 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block() const
    \n-
    297 {
    \n-
    298 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    299 const std::integral_constant<int,dorder> a = {};
    \n-
    300 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n-
    301 }
    \n-
    \n-
    302 template <unsigned int dorder>
    \n-
    \n-
    303 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block()
    \n-
    304 {
    \n-
    305 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    306 const std::integral_constant<int,dorder> a = {};
    \n-
    307 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n-
    308 }
    \n-
    \n-
    \n-\n-
    310 return tensor_[r];
    \n-
    311 }
    \n-
    \n-
    \n-
    312 const ThisLFETensor &operator[](int r) const {
    \n-
    313 return tensor_[r];
    \n-
    314 }
    \n-
    \n-
    315 protected:
    \n-
    316 template <class Fy,int dimRy>
    \n-
    \n-
    317 void assign(const FieldVector<Fy,size*dimRy> &y,unsigned int r)
    \n-
    318 {
    \n-
    319 Base::template assign<Fy,dimRy>(reinterpret_cast<const FieldVector<Fy,Base::size*dimRy>&>(y),r);
    \n-
    320 tensor_[0] = reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&>(y[Base::size*dimRy+r*ThisLFETensor::size]);
    \n-
    321 }
    \n-
    \n-
    322 template <class Fy>
    \n-
    \n-
    323 void assign(unsigned int r,const FieldVector<Fy,size/dimR> &y)
    \n-
    324 {
    \n-
    325 Base::assign(r,reinterpret_cast<const FieldVector<Fy,Base::size/dimR>&>(y));
    \n-
    326 tensor_[r] = reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&>(y[Base::size/dimR]);
    \n-
    327 }
    \n-
    \n-
    328 // assign with different layout (same dimRange)
    \n-
    329 template <class Fy,unsigned int dy>
    \n-
    \n-\n-
    331 {
    \n-
    332 Base::assign(y);
    \n-
    333 for (int rr=0; rr<dimR; ++rr)
    \n-
    334 tensor_[rr] = y[rr].template tensor<deriv>()[0];
    \n-
    335 }
    \n-
    \n-
    336
    \n-
    337 template <int dorder>
    \n-
    338 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
    \n-
    \n-
    339 tensor(const std::integral_constant<int,dorder> &dorderVar) const
    \n-
    340 {
    \n-
    341 return Base::tensor(dorderVar);
    \n-
    342 }
    \n-
    \n-
    343 const Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
    \n-
    \n-
    344 tensor(const std::integral_constant<int,deriv> &dorderVar) const
    \n-
    345 {
    \n-
    346 return tensor_;
    \n-
    347 }
    \n-
    \n-
    348 template <int dorder>
    \n-
    349 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
    \n-
    \n-
    350 tensor(const std::integral_constant<int,dorder> &dorderVar)
    \n-
    351 {
    \n-
    352 return Base::tensor(dorderVar);
    \n-
    353 }
    \n-
    \n-
    354 Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
    \n-
    \n-
    355 tensor(const std::integral_constant<int,deriv> &dorderVar)
    \n-
    356 {
    \n-
    357 return tensor_;
    \n-
    358 }
    \n-
    \n-
    359 Dune::FieldVector<ThisLFETensor,dimR> tensor_;
    \n-
    360 };
    \n-
    \n-
    361
    \n-
    362 template <class F,int dimD,int dimR>
    \n-
    \n-
    363 struct Derivatives<F,dimD,dimR,0,DerivativeLayoutNS::value>
    \n-
    364 {
    \n-\n-\n-
    367
    \n-
    368 typedef F Field;
    \n-
    369 typedef F field_type;
    \n-
    370
    \n-\n-
    372 static const unsigned int dimDomain = dimD;
    \n-
    373 static const unsigned int dimRange = dimR;
    \n-
    374 constexpr static int size = ThisLFETensor::size*dimR;
    \n-
    375 typedef Dune::FieldVector<F,size> Block;
    \n-
    376
    \n-
    377 template <class FF>
    \n-
    \n-
    378 This &operator=(const FF& f)
    \n-
    379 {
    \n-
    380 for (int r=0; r<dimR; ++r)
    \n-
    381 tensor_[r] = field_cast<F>(f);
    \n-
    382 return *this;
    \n-
    383 }
    \n-
    \n-
    \n-
    384 This &operator=(const Dune::FieldVector<ThisLFETensor,dimR> &t)
    \n-
    385 {
    \n-
    386 tensor_ = t;
    \n-
    387 return *this;
    \n-
    388 }
    \n-
    \n-
    389
    \n-
    \n-\n-
    391 {
    \n-
    392 block() = t;
    \n-
    393 return *this;
    \n-
    394 }
    \n-
    \n-
    395
    \n-
    \n-
    396 This &operator*= ( const field_type &f )
    \n-
    397 {
    \n-
    398 block() *= f;
    \n-
    399 return *this;
    \n-
    400 }
    \n-
    \n-
    401
    \n-
    \n-
    402 void axpy(const F &a, const This &y)
    \n-
    403 {
    \n-
    404 block().axpy(a,y.block());
    \n-
    405 }
    \n-
    \n-
    406 template <class Fy>
    \n-
    \n-\n-
    408 {
    \n-
    409 field_cast(y.block(),block());
    \n-
    410 }
    \n-
    \n-
    411 template <class Fy>
    \n-
    \n-\n-
    413 {
    \n-
    414 for (int rr=0; rr<dimR; ++rr)
    \n-
    415 tensor_[rr] = y[rr].template tensor<0>()[0];
    \n-
    416 }
    \n-
    \n-
    417 template <class Fy,int dimRy>
    \n-
    \n-\n-
    419 {
    \n-
    420 assign<Fy,dimRy>(y.block(),r);
    \n-
    421 }
    \n-
    \n-
    422 template <class Fy>
    \n-
    \n-\n-
    424 {
    \n-
    425 tensor_[r].assign(y[0]);
    \n-
    426 }
    \n-
    \n-
    427 template <class Fy>
    \n-
    \n-\n-
    429 {
    \n-
    430 tensor_[r].assign(y[0][0]);
    \n-
    431 }
    \n-
    \n-
    432
    \n-
    \n-\n-
    434 {
    \n-
    435 return reinterpret_cast<Block&>(*this);
    \n-
    436 }
    \n-
    \n-
    \n-
    437 const Block &block() const
    \n-
    438 {
    \n-
    439 return reinterpret_cast<const Block&>(*this);
    \n-
    440 }
    \n-
    \n-
    441
    \n-
    \n-\n-
    443 return tensor_[r];
    \n-
    444 }
    \n-
    \n-
    \n-
    445 const ThisLFETensor &operator[](int r) const {
    \n-
    446 return tensor_[r];
    \n-
    447 }
    \n-
    \n-
    448 template <int dorder>
    \n-
    \n-
    449 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &tensor() const
    \n-
    450 {
    \n-
    451 return tensor_;
    \n-
    452 }
    \n-
    \n-
    \n-
    453 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &tensor()
    \n-
    454 {
    \n-
    455 return tensor_;
    \n-
    456 }
    \n-
    \n-
    457 template <unsigned int dorder>
    \n-
    \n-
    458 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block() const
    \n-
    459 {
    \n-
    460 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    461 const std::integral_constant<int,dorder> a = {};
    \n-
    462 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n-
    463 }
    \n-
    \n-
    464 template <unsigned int dorder>
    \n-
    \n-
    465 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block()
    \n-
    466 {
    \n-
    467 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    468 const std::integral_constant<int,dorder> a = {};
    \n-
    469 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n-
    470 }
    \n-
    \n-
    471
    \n-
    472 protected:
    \n-
    473 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
    \n-
    \n-
    474 tensor(const std::integral_constant<int,0> &dorderVar) const
    \n-
    475 {
    \n-
    476 return tensor_;
    \n-
    477 }
    \n-
    \n-
    478 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
    \n-
    \n-
    479 tensor(const std::integral_constant<int,0> &dorderVar)
    \n-
    480 {
    \n-
    481 return tensor_;
    \n-
    482 }
    \n-
    \n-
    483 template <class Fy,unsigned int dy>
    \n-
    \n-\n-
    485 {
    \n-
    486 for (int rr=0; rr<dimR; ++rr)
    \n-
    487 tensor_[rr] = y[rr].template tensor<0>()[0];
    \n-
    488 }
    \n-
    \n-
    489 template <class Fy,int dimRy>
    \n-
    \n-
    490 void assign(const FieldVector<Fy,size*dimRy> &y,unsigned int r)
    \n-
    491 {
    \n-
    492 tensor_[0] = reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&>(y[r*ThisLFETensor::size]);
    \n-
    493 }
    \n-
    \n-
    494 template <class Fy>
    \n-
    \n-
    495 void assign(unsigned int r,const FieldVector<Fy,size/dimR> &y)
    \n-
    496 {
    \n-
    497 tensor_[r] = y;
    \n-
    498 }
    \n-
    \n-
    499 Dune::FieldVector<ThisLFETensor,dimR> tensor_;
    \n-
    500 };
    \n-
    \n-
    501
    \n-
    502 // Implemnetation for DerivativeLayoutNS::derivative based layout
    \n-
    503 template <class F,int dimD,int dimR,unsigned int deriv>
    \n-
    \n-
    504 struct Derivatives<F,dimD,dimR,deriv,DerivativeLayoutNS::derivative>
    \n-
    505 {
    \n-\n-\n-
    508
    \n-
    509 typedef F Field;
    \n-
    510 typedef F field_type;
    \n-
    511
    \n-\n-
    513 static const unsigned int dimDomain = dimD;
    \n-
    514 static const unsigned int dimRange = dimR;
    \n-
    515 constexpr static int size = ScalarDeriv::size*dimR;
    \n-
    516 typedef Dune::FieldVector<F,size> Block;
    \n-
    517
    \n-
    518 template <class FF>
    \n-
    \n-
    519 This &operator=(const FF& f)
    \n-
    520 {
    \n-
    521 block() = field_cast<F>(f);
    \n-
    522 return *this;
    \n-
    523 }
    \n-
    \n-
    \n-\n-
    525 {
    \n-
    526 block() = t;
    \n-
    527 return *this;
    \n-
    528 }
    \n-
    \n-
    529
    \n-
    \n-
    530 This &operator*= ( const field_type &f )
    \n-
    531 {
    \n-
    532 block() *= f;
    \n-
    533 return *this;
    \n-
    534 }
    \n-
    \n-
    535
    \n-
    536 template <class FF>
    \n-
    \n-
    537 void axpy(const FF &a, const This &y)
    \n-
    538 {
    \n-
    539 block().axpy(field_cast<F>(a),y.block());
    \n-
    540 }
    \n-
    \n-
    541 // assign with same layout (only different Field)
    \n-
    542 template <class Fy>
    \n-
    \n-\n-
    544 {
    \n-
    545 field_cast(y.block(),block());
    \n-
    546 }
    \n-
    \n-
    547 // assign with different layout (same dimRange)
    \n-
    548 template <class Fy>
    \n-
    \n-\n-
    550 {
    \n-
    551 for (unsigned int rr=0; rr<dimR; ++rr)
    \n-
    552 deriv_[rr].assign(y,rr);
    \n-
    553 }
    \n-
    \n-
    554 // assign with scalar functions to component r
    \n-
    555 template <class Fy,DerivativeLayoutNS::DerivativeLayout layouty>
    \n-
    \n-
    556 void assign(unsigned int r,const Derivatives<Fy,dimD,1,deriv,layouty> &y)
    \n-
    557 {
    \n-
    558 deriv_[r].assign(r,y);
    \n-
    559 }
    \n-
    \n-
    560
    \n-
    \n-\n-
    562 {
    \n-
    563 return reinterpret_cast<Block&>(*this);
    \n-
    564 }
    \n-
    \n-
    \n-
    565 const Block &block() const
    \n-
    566 {
    \n-
    567 return reinterpret_cast<const Block&>(*this);
    \n-
    568 }
    \n-
    \n-
    569
    \n-
    \n-\n-
    571 return deriv_[r];
    \n-
    572 }
    \n-
    \n-
    \n-
    573 const ScalarDeriv &operator[](int r) const {
    \n-
    574 return deriv_[r];
    \n-
    575 }
    \n-
    \n-
    576 protected:
    \n-
    577 Dune::FieldVector<ScalarDeriv,dimR> deriv_;
    \n-
    578 };
    \n-
    \n-
    579
    \n-
    580 // ******************************************
    \n-
    581 // AXPY *************************************
    \n-
    582 // ******************************************
    \n-
    583 template <class Vec1,class Vec2,unsigned int deriv>
    \n-
    \n-\n-
    585 {
    \n-
    586 template <class Field>
    \n-
    \n-
    587 static void apply(unsigned int r,const Field &a,
    \n-
    588 const Vec1 &x, Vec2 &y)
    \n-
    589 {
    \n-
    590 y.axpy(a,x);
    \n-
    591 }
    \n-
    \n-
    592 };
    \n-
    \n-
    593 template <class F1,int dimD,int dimR,
    \n-
    594 unsigned int d,
    \n-
    595 class Vec2,
    \n-
    596 unsigned int deriv>
    \n-
    \n-
    597 struct LFETensorAxpy<Derivatives<F1,dimD,dimR,d,DerivativeLayoutNS::value>,Vec2,deriv>
    \n-
    598 {
    \n-\n-
    600 template <class Field>
    \n-
    \n-
    601 static void apply(unsigned int r,const Field &a,
    \n-
    602 const Vec1 &x, Vec2 &y)
    \n-
    603 {
    \n-
    604 const FieldVector<F1,Vec2::size> &xx = x.template block<deriv>();
    \n-
    605 for (int i=0; i<y.size; ++i)
    \n-
    606 y[i] += xx[i]*a;
    \n-
    607 }
    \n-
    \n-
    608 };
    \n-
    \n-
    609 template <class F1,int dimD,int dimR,
    \n-
    610 unsigned int d,
    \n-
    611 class Vec2,
    \n-
    612 unsigned int deriv>
    \n-
    \n-
    613 struct LFETensorAxpy<Derivatives<F1,dimD,dimR,d,DerivativeLayoutNS::derivative>,Vec2,deriv>
    \n-
    614 {
    \n-\n-
    616 template <class Field>
    \n-
    \n-
    617 static void apply(unsigned int r,const Field &a,
    \n-
    618 const Vec1 &x, Vec2 &y)
    \n-
    619 {
    \n-
    620 for (int rr=0; rr<dimR; ++rr)
    \n-\n-
    622 Vec2,deriv>::apply(rr,a,x[rr],y);
    \n-
    623 }
    \n-
    \n-
    624 };
    \n-
    \n-
    625 template <class F1,int dimD,
    \n-
    626 unsigned int d,
    \n-
    627 class Vec2,
    \n-
    628 unsigned int deriv>
    \n-
    \n-
    629 struct LFETensorAxpy<Derivatives<F1,dimD,1,d,DerivativeLayoutNS::derivative>,Vec2,deriv>
    \n-
    630 {
    \n-\n-
    632 template <class Field>
    \n-
    \n-
    633 static void apply(unsigned int r,const Field &a,
    \n-
    634 const Vec1 &x, Vec2 &y)
    \n-
    635 {
    \n-\n-
    637 Vec2,deriv>::apply(r,a,x[0],y);
    \n-
    638 }
    \n-
    \n-
    639 };
    \n-
    \n-
    640 template <class F1,int dimD,
    \n-
    641 unsigned int d,
    \n-
    642 class Vec2,
    \n-
    643 unsigned int deriv>
    \n-
    \n-
    644 struct LFETensorAxpy<Derivatives<F1,dimD,1,d,DerivativeLayoutNS::value>,Vec2,deriv>
    \n-
    645 {
    \n-\n-
    647 template <class Field>
    \n-
    \n-
    648 static void apply(unsigned int r,const Field &a,
    \n-
    649 const Vec1 &x, Vec2 &y)
    \n-
    650 {
    \n-
    651 typedef LFETensor<F1,dimD,deriv> LFETensorType;
    \n-
    652 const unsigned int rr = r*LFETensorType::size;
    \n-
    653 const FieldVector<F1,LFETensorType::size> &xx = x.template block<deriv>();
    \n-
    654 for (int i=0; i<FieldVector<F1,LFETensorType::size>::dimension; ++i)
    \n-
    655 y[rr+i] += xx[i]*a;
    \n-
    656 }
    \n-
    \n-
    657 };
    \n-
    \n-
    658
    \n-
    659 // ***********************************************
    \n-
    660 // Assign ****************************************
    \n-
    661 // ***********************************************
    \n-
    662 template <class Vec1,class Vec2>
    \n-
    \n-\n-
    664 {
    \n-
    \n-
    665 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    666 {
    \n-
    667 field_cast(vec1,vec2);
    \n-
    668 }
    \n-
    \n-
    669 };
    \n-
    \n-
    670 template <int dimD,int dimR,unsigned int deriv, DerivativeLayoutNS::DerivativeLayout layout,
    \n-
    671 class F1,class F2>
    \n-
    \n-
    672 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,layout>,
    \n-
    673 Derivatives<F2,dimD,dimR,deriv,layout> >
    \n-
    674 {
    \n-\n-\n-
    \n-
    677 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    678 {
    \n-
    679 field_cast(vec1.block(),vec2.block());
    \n-
    680 }
    \n-
    \n-
    681 };
    \n-
    \n-
    682 template <int dimD,int dimR,unsigned int deriv,
    \n-
    683 class F1, class F2>
    \n-
    \n-
    684 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::value>,
    \n-
    685 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::derivative> >
    \n-
    686 {
    \n-\n-\n-
    \n-
    689 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    690 {
    \n-
    691 vec2.assign(vec1);
    \n-
    692 }
    \n-
    \n-
    693 };
    \n-
    \n-
    694 template <int dimD,int dimR,unsigned int deriv,
    \n-
    695 class F1, class F2>
    \n-
    \n-
    696 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::derivative>,
    \n-
    697 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::value> >
    \n-
    698 {
    \n-\n-\n-
    \n-
    701 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    702 {
    \n-
    703 vec2.assign(vec1);
    \n-
    704 }
    \n-
    \n-
    705 };
    \n-
    \n-
    706 template <int dimD,int dimR,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout,
    \n-
    707 class F1, class F2>
    \n-
    \n-
    708 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,layout>,
    \n-
    709 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::value> >
    \n-
    710 {
    \n-\n-\n-
    \n-
    713 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    714 {
    \n-
    715 vec2.assign(r,vec1);
    \n-
    716 }
    \n-
    \n-
    717 };
    \n-
    \n-
    718 template <int dimD,int dimR,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout,
    \n-
    719 class F1, class F2>
    \n-
    \n-
    720 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,layout>,
    \n-
    721 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::derivative> >
    \n-
    722 {
    \n-\n-\n-
    \n-
    725 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    726 {
    \n-
    727 vec2.assign(r,vec1);
    \n-
    728 }
    \n-
    \n-
    729 };
    \n-
    \n-
    730 template <int dimD,unsigned int deriv,
    \n-
    731 class F1, class F2>
    \n-
    \n-
    732 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,
    \n-
    733 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
    \n-
    734 {
    \n-\n-\n-
    \n-
    737 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    738 {
    \n-
    739 field_cast(vec1.block(),vec2.block());
    \n-
    740 }
    \n-
    \n-
    741 };
    \n-
    \n-
    742 template <int dimD,unsigned int deriv,
    \n-
    743 class F1, class F2>
    \n-
    \n-
    744 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,
    \n-
    745 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
    \n-
    746 {
    \n-\n-\n-
    \n-
    749 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    750 {
    \n-
    751 field_cast(vec1.block(),vec2.block());
    \n-
    752 }
    \n-
    \n-
    753 };
    \n-
    \n-
    754 template <int dimD,unsigned int deriv,
    \n-
    755 class F1, class F2>
    \n-
    \n-
    756 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,
    \n-
    757 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
    \n-
    758 {
    \n-\n-\n-
    \n-
    761 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    762 {
    \n-
    763 field_cast(vec1.block(),vec2.block());
    \n-
    764 }
    \n-
    \n-
    765 };
    \n-
    \n-
    766 template <int dimD,unsigned int deriv,
    \n-
    767 class F1, class F2>
    \n-
    \n-
    768 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,
    \n-
    769 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
    \n-
    770 {
    \n-\n-\n-
    \n-
    773 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    774 {
    \n-
    775 field_cast(vec1.block(),vec2.block());
    \n-
    776 }
    \n-
    \n-
    777 };
    \n-
    \n-
    778 template <int dimD,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout,
    \n-
    779 class F1, class F2>
    \n-
    \n-
    780 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,layout>,
    \n-
    781 F2 >
    \n-
    782 {
    \n-\n-
    784 typedef F2 Vec2;
    \n-
    \n-
    785 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    786 {
    \n-
    787 field_cast(vec1.block(),vec2);
    \n-
    788 }
    \n-
    \n-
    789 };
    \n-
    \n-
    790 template <int dimD,int dimR,
    \n-
    791 class F1,unsigned int deriv,
    \n-
    792 class F2>
    \n-
    \n-
    793 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::value>,FieldVector<F2,dimR> >
    \n-
    794 {
    \n-\n-
    796 typedef FieldVector<F2,dimR> Vec2;
    \n-
    \n-
    797 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    798 {
    \n-
    799 field_cast(vec1.template block<0>(),vec2);
    \n-
    800 }
    \n-
    \n-
    801 };
    \n-
    \n-
    802 template <int dimD,int dimR,
    \n-
    803 class F1,unsigned int deriv,
    \n-
    804 class F2>
    \n-
    \n-
    805 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::derivative>,FieldVector<F2,dimR> >
    \n-
    806 {
    \n-\n-
    808 typedef FieldVector<F2,dimR> Vec2;
    \n-
    \n-
    809 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    810 {
    \n-
    811 for (int rr=0; rr<dimR; ++rr)
    \n-
    812 field_cast(vec1[rr].template tensor<0>()[0].block(),vec2[rr]);
    \n-
    813 }
    \n-
    \n-
    814 };
    \n-
    \n-
    815 template <int dimD,
    \n-
    816 class F1,unsigned int deriv,
    \n-
    817 class F2,int dimR>
    \n-
    \n-
    818 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,FieldVector<F2,dimR> >
    \n-
    819 {
    \n-\n-
    821 typedef FieldVector<F2,dimR> Vec2;
    \n-
    \n-
    822 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    823 {
    \n-
    824 field_cast(vec1.template tensor<0>()[0].block(),vec2[r]);
    \n-
    825 }
    \n-
    \n-
    826 };
    \n-
    \n-
    827 template <int dimD,
    \n-
    828 class F1,unsigned int deriv,
    \n-
    829 class F2,int dimR>
    \n-
    \n-
    830 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,FieldVector<F2,dimR> >
    \n-
    831 {
    \n-\n-
    833 typedef FieldVector<F2,dimR> Vec2;
    \n-
    \n-
    834 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    835 {
    \n-
    836 field_cast(vec1[0].template tensor<0>()[0].block(),vec2[r]);
    \n-
    837 }
    \n-
    \n-
    838 };
    \n-
    \n-
    839 template <int dimD,
    \n-
    840 class F1,unsigned int deriv,
    \n-
    841 class F2>
    \n-
    \n-
    842 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,FieldVector<F2,1> >
    \n-
    843 {
    \n-\n-
    845 typedef FieldVector<F2,1> Vec2;
    \n-
    \n-
    846 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    847 {
    \n-
    848 field_cast(vec1.template tensor<0>()[0].block(),vec2);
    \n-
    849 }
    \n-
    \n-
    850 };
    \n-
    \n-
    851 template <int dimD,
    \n-
    852 class F1,unsigned int deriv,
    \n-
    853 class F2>
    \n-
    \n-
    854 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,FieldVector<F2,1> >
    \n-
    855 {
    \n-\n-
    857 typedef FieldVector<F2,1> Vec2;
    \n-
    \n-
    858 static void apply(unsigned int /*r*/,const Vec1 &vec1,Vec2 &vec2)
    \n-
    859 {
    \n-
    860 field_cast(vec1[0].template tensor<0>()[0].block(),vec2);
    \n-
    861 }
    \n-
    \n-
    862 };
    \n-
    \n-
    863
    \n-
    864 // ***********************************************
    \n-
    865 // IO ********************************************
    \n-
    866 // ***********************************************
    \n-
    867 template <class F,int dimD,unsigned int deriv>
    \n-
    \n-
    868 std::ostream &operator<< ( std::ostream &out, const LFETensor< F,dimD,deriv > &tensor )
    \n-
    869 {
    \n-
    870 return out << tensor.block();
    \n-
    871 }
    \n-
    \n-
    872#if 0
    \n-
    873 template <class F,int dimD,unsigned int deriv>
    \n-
    874 std::ostream &operator<< ( std::ostream &out, const ScalarDerivatives< F,dimD,deriv > &d )
    \n-
    875 {
    \n-
    876 out << static_cast<const ScalarDerivatives< F,dimD,deriv-1 > &>(d);
    \n-
    877 out << " , " << d.tensor() << std::endl;
    \n-
    878 return out;
    \n-
    879 }
    \n-
    880 template <class F,int dimD>
    \n-
    881 std::ostream &operator<< ( std::ostream &out, const ScalarDerivatives< F,dimD,0 > &d )
    \n-
    882 {
    \n-
    883 out << d.tensor() << std::endl;
    \n-
    884 return out;
    \n-
    885 }
    \n-
    886#endif
    \n-
    887 template <class F,int dimD,int dimR,unsigned int deriv>
    \n-
    \n-\n-
    889 {
    \n-
    890 out << " ( ";
    \n-
    891 out << d[0];
    \n-
    892 for (int r=1; r<dimR; ++r)
    \n-
    893 {
    \n-
    894 out << " , " << d[r];
    \n-
    895 }
    \n-
    896 out << " ) " << std::endl;
    \n-
    897 return out;
    \n-
    898 }
    \n-
    \n-
    899 template <class F,int dimD,int dimR,unsigned int deriv>
    \n-
    \n-\n-
    901 {
    \n-
    902 out << static_cast<const Derivatives< F,dimD,dimR,deriv-1,DerivativeLayoutNS::value > &>(d);
    \n-
    903 out << " ( ";
    \n-
    904 out << d[0];
    \n-
    905 for (int r=1; r<dimR; ++r)
    \n-
    906 {
    \n-
    907 out << " , " << d[r];
    \n-
    908 }
    \n-
    909 out << " ) " << std::endl;
    \n-
    910 return out;
    \n-
    911 }
    \n-
    \n-
    912 template <class F,int dimD,int dimR>
    \n-
    \n-\n-
    914 {
    \n-
    915 out << " ( ";
    \n-
    916 out << d[0];
    \n-
    917 for (int r=1; r<dimR; ++r)
    \n-
    918 {
    \n-
    919 out << " , " << d[r];
    \n-
    920 }
    \n-
    921 out << " ) " << std::endl;
    \n-
    922 return out;
    \n-
    923 }
    \n-
    \n-
    924 template <class F,int dimD,int dimR>
    \n-
    \n-
    925 std::ostream &operator<< ( std::ostream &out, const Derivatives< F,dimD,dimR,0,DerivativeLayoutNS::value > &d )
    \n-
    926 {
    \n-
    927 out << " ( ";
    \n-
    928 out << d[0];
    \n-
    929 for (int r=1; r<dimR; ++r)
    \n-
    930 {
    \n-
    931 out << " , " << d[r];
    \n-
    932 }
    \n-
    933 out << " ) " << std::endl;
    \n-
    934 return out;
    \n-
    935 }
    \n-
    \n-
    936 template <class F,int dimD,int dimR,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout>
    \n-
    \n-
    937 std::ostream &operator<< ( std::ostream &out, const std::vector<Derivatives< F,dimD,dimR,deriv,layout > > &y )
    \n-
    938 {
    \n-
    939 out << "Number of basis functions: " << y.size() << std::endl;
    \n-
    940 for (unsigned int i=0; i<y.size(); ++i)
    \n-
    941 {
    \n-
    942 out << "Base " << i << " : " << std::endl;
    \n-
    943 out << y[i];
    \n-
    944 out << std::endl;
    \n-
    945 }
    \n-
    946 return out;
    \n-
    947 }
    \n-
    \n-
    948}
    \n-
    949#endif // DUNE_TENSOR_HH
    \n-\n+
    72}
    \n+
    73
    \n+
    74#endif
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)
    Definition lfematrix.hh:151
    \n-
    DerivativeLayout
    Definition tensor.hh:176
    \n-
    @ derivative
    Definition tensor.hh:176
    \n-
    @ value
    Definition tensor.hh:176
    \n-
    Definition tensor.hh:33
    \n-
    const Block & block() const
    Definition tensor.hh:76
    \n-
    This & operator*=(const field_type &f)
    Definition tensor.hh:56
    \n-
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:41
    \n-
    This & operator=(const FF &f)
    Definition tensor.hh:44
    \n-
    Block block_
    Definition tensor.hh:89
    \n-
    F field_type
    Definition tensor.hh:39
    \n-
    void axpy(const F &a, const This &y)
    Definition tensor.hh:80
    \n-
    Block & block()
    Definition tensor.hh:72
    \n-
    void assign(const LFETensor< Fy, dimD, deriv > &y)
    Definition tensor.hh:85
    \n-
    static const unsigned int size
    Definition tensor.hh:40
    \n-
    const field_type & operator[](const unsigned int i) const
    Definition tensor.hh:62
    \n-
    typename FieldTraits< field_type >::real_type real_type
    Definition tensor.hh:97
    \n-\n-
    Definition tensor.hh:115
    \n-
    Block & block()
    Definition tensor.hh:162
    \n-
    F field_type
    Definition tensor.hh:119
    \n-
    Block block_
    Definition tensor.hh:170
    \n-
    void assign(const LFETensor< Fy, dimD, 0 > &y)
    Definition tensor.hh:157
    \n-
    const Block & block() const
    Definition tensor.hh:166
    \n-
    void axpy(const F &a, const This &y)
    Definition tensor.hh:152
    \n-
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:121
    \n-
    Definition tensor.hh:180
    \n-\n-
    typename FieldTraits< field_type >::real_type real_type
    Definition tensor.hh:187
    \n-\n-\n-
    Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > This
    Definition tensor.hh:195
    \n-
    This & operator=(const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > &t)
    Definition tensor.hh:219
    \n-\n-
    Derivatives< F, dimD, dimR, deriv-1, DerivativeLayoutNS::value > Base
    Definition tensor.hh:196
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar) const
    Definition tensor.hh:339
    \n-
    void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
    Definition tensor.hh:317
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:243
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:330
    \n-\n-
    const ThisLFETensor & operator[](int r) const
    Definition tensor.hh:312
    \n-
    Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
    Definition tensor.hh:303
    \n-
    LFETensor< F, dimD, deriv > ThisLFETensor
    Definition tensor.hh:197
    \n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:263
    \n-
    const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
    Definition tensor.hh:296
    \n-
    Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar)
    Definition tensor.hh:350
    \n-
    const Block & block() const
    Definition tensor.hh:277
    \n-
    void axpy(const F &a, const This &y)
    Definition tensor.hh:236
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:249
    \n-
    This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
    Definition tensor.hh:213
    \n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:268
    \n-
    This & operator=(const Block &t)
    Definition tensor.hh:224
    \n-
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:206
    \n-
    Dune::FieldVector< ThisLFETensor, dimR > tensor_
    Definition tensor.hh:359
    \n-
    Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar)
    Definition tensor.hh:355
    \n-
    Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor()
    Definition tensor.hh:290
    \n-
    void assign(const Derivatives< Fy, dimD, dimRy, deriv, DerivativeLayoutNS::value > &y, unsigned int r)
    Definition tensor.hh:257
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor() const
    Definition tensor.hh:283
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar) const
    Definition tensor.hh:344
    \n-
    ThisLFETensor & operator[](int r)
    Definition tensor.hh:309
    \n-\n-
    void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
    Definition tensor.hh:323
    \n-\n-
    ThisLFETensor & operator[](int r)
    Definition tensor.hh:442
    \n-
    LFETensor< F, dimD, 0 > ThisLFETensor
    Definition tensor.hh:366
    \n-
    Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
    Definition tensor.hh:465
    \n-
    Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar)
    Definition tensor.hh:479
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:407
    \n-\n-
    Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > This
    Definition tensor.hh:365
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:484
    \n-
    void assign(const Derivatives< Fy, dimD, dimRy, 0, DerivativeLayoutNS::value > &y, unsigned int r)
    Definition tensor.hh:418
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor() const
    Definition tensor.hh:449
    \n-
    Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor()
    Definition tensor.hh:453
    \n-
    This & operator=(const Block &t)
    Definition tensor.hh:390
    \n-\n-
    const ThisLFETensor & operator[](int r) const
    Definition tensor.hh:445
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar) const
    Definition tensor.hh:474
    \n-
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:375
    \n-
    const Block & block() const
    Definition tensor.hh:437
    \n-
    const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
    Definition tensor.hh:458
    \n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:428
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:412
    \n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:423
    \n-
    This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
    Definition tensor.hh:384
    \n-
    void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
    Definition tensor.hh:490
    \n-
    Dune::FieldVector< ThisLFETensor, dimR > tensor_
    Definition tensor.hh:499
    \n-
    void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
    Definition tensor.hh:495
    \n-
    This & operator=(const FF &f)
    Definition tensor.hh:378
    \n-\n-
    void axpy(const F &a, const This &y)
    Definition tensor.hh:402
    \n-\n-\n-\n-\n-\n-\n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, layouty > &y)
    Definition tensor.hh:556
    \n-\n-
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:549
    \n-
    Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > This
    Definition tensor.hh:506
    \n-
    Derivatives< F, dimD, 1, deriv, DerivativeLayoutNS::value > ScalarDeriv
    Definition tensor.hh:507
    \n-
    const ScalarDeriv & operator[](int r) const
    Definition tensor.hh:573
    \n-
    void axpy(const FF &a, const This &y)
    Definition tensor.hh:537
    \n-
    This & operator=(const Block &t)
    Definition tensor.hh:524
    \n-
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:516
    \n-
    Dune::FieldVector< ScalarDeriv, dimR > deriv_
    Definition tensor.hh:577
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:543
    \n-
    Definition tensor.hh:585
    \n-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:587
    \n-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:601
    \n-
    Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:599
    \n-
    Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:615
    \n-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:617
    \n-
    Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:631
    \n-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:633
    \n-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:648
    \n-
    Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:646
    \n-
    Definition tensor.hh:664
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:665
    \n-\n-\n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:677
    \n-\n-\n-\n-\n-\n-\n-\n-\n-
    Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2
    Definition tensor.hh:712
    \n-\n-\n-
    Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2
    Definition tensor.hh:724
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:785
    \n-
    Derivatives< F1, dimD, 1, deriv, layout > Vec1
    Definition tensor.hh:783
    \n-
    Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:795
    \n-\n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:797
    \n-
    Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:807
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:809
    \n-\n-
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:820
    \n-\n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:822
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:834
    \n-
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:832
    \n-\n-\n-
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:844
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:846
    \n-
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:856
    \n-
    static void apply(unsigned int, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:858
    \n-\n+\n+
    typename Dune::LocalFiniteElementTraits< LocalBasis, LocalCoefficients, LocalInterpolation > Traits
    Export LocalFiniteElementTraits.
    Definition localfiniteelementvariant.hh:269
    \n+
    unsigned int size() const
    Number of shape functions.
    Definition localfiniteelementvariant.hh:374
    \n+
    constexpr GeometryType type() const
    Number of shape functions.
    Definition localfiniteelementvariant.hh:382
    \n+
    const Traits::LocalBasisType & localBasis() const
    Provide access to LocalBasis implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:350
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Provide access to LocalCoefficients implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:358
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Provide access to LocalInterpolation implementation of this LocalFiniteElement.
    Definition localfiniteelementvariant.hh:366
    \n+
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:836
    \n+
    Definition pq22d.hh:19
    \n+
    typename LFEVariant::Traits Traits
    Definition pq22d.hh:23
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition pq22d.hh:46
    \n+
    PQ22DLocalFiniteElement(const GeometryType &gt, const std::vector< unsigned int > vertexmap)
    Definition pq22d.hh:33
    \n+
    PQ22DLocalFiniteElement(const GeometryType &gt)
    Definition pq22d.hh:25
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition pq22d.hh:57
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition pq22d.hh:51
    \n+
    GeometryType type() const
    Definition pq22d.hh:62
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition pq22d.hh:41
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,1635 +1,156 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-tensor.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+pq22d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_TENSOR_HH\n-7#define DUNE_TENSOR_HH\n-8\n-9#include \n-10#include \n+5#ifndef DUNE_PQ22DLOCALFINITEELEMENT_HH\n+6#define DUNE_PQ22DLOCALFINITEELEMENT_HH\n+7\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\b._\bh_\bh>\n 11\n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18 /***********************************************\n-19 * The classes here are work in progress.\n-20 * Basically they provide tensor structures for\n-21 * higher order derivatives of vector valued function.\n-22 * Two storage structures are provided\n-23 * (either based on the components of the vector valued\n-24 * functions or on the order of the derivative).\n-25 * Conversions are supplied between the two storage\n-26 * structures and simple operations, which make the\n-27 * code difficult to use and requires rewriting...\n-28 ***************************************************/\n-29\n-30 // Structure for scalar tensor of order deriv\n-31 template \n-_\b3_\b2 class _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-33 {\n-34 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv_\b> _\bT_\bh_\bi_\bs;\n-35 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br _\bB_\ba_\bs_\be_\bD_\bi_\bm;\n-36 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br _\bB_\ba_\bs_\be_\bD_\be_\br_\bi_\bv;\n-37\n-38 public:\n-_\b3_\b9 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n-_\b4_\b0 static const unsigned int _\bs_\bi_\bz_\be = _\bB_\ba_\bs_\be_\bD_\bi_\bm_\b:_\b:_\bs_\bi_\bz_\be+_\bB_\ba_\bs_\be_\bD_\be_\br_\bi_\bv_\b:_\b:_\bs_\bi_\bz_\be;\n-_\b4_\b1 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-42\n-43 template< class FF >\n-_\b4_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const FF &f )\n-45 {\n-46 _\bb_\bl_\bo_\bc_\bk() = field_cast< F >( f );\n-47 return *this;\n-48 }\n-49\n-_\b5_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bB_\bl_\bo_\bc_\bk &b )\n-51 {\n-52 _\bb_\bl_\bo_\bc_\bk() = b;\n-53 return *this;\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17 template\n+_\b1_\b8 class _\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+19 {\n+20 using _\bL_\bF_\bE_\bV_\ba_\br_\bi_\ba_\bn_\bt =\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b<_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>,\n+21 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b> >;\n+22 public:\n+_\b2_\b3 using _\bT_\br_\ba_\bi_\bt_\bs = typename _\bL_\bF_\bE_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs;\n+24\n+_\b2_\b5 _\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( const GeometryType > )\n+26 {\n+27 if ( gt.isTriangle() )\n+28 lfeVariant_ = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>();\n+29 else if ( gt.isQuadrilateral() )\n+30 lfeVariant_ = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>();\n+31 }\n+32\n+_\b3_\b3 _\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( const GeometryType >, const std::vector vertexmap )\n+34 {\n+35 if ( gt.isTriangle() )\n+36 lfeVariant_ = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>(vertexmap);\n+37 else if ( gt.isQuadrilateral() )\n+38 lfeVariant_ = _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\b2_\b,_\b2_\b>();\n+39 }\n+40\n+_\b4_\b1 const typename Traits::LocalBasisType& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+42 {\n+43 return lfeVariant_._\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs();\n+44 }\n+45\n+_\b4_\b6 const typename Traits::LocalCoefficientsType& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+47 {\n+48 return lfeVariant_._\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs();\n+49 }\n+50\n+_\b5_\b1 const typename Traits::LocalInterpolationType& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+52 {\n+53 return lfeVariant_._\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn();\n 54 }\n 55\n-_\b5_\b6 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n-57 {\n-58 _\bb_\bl_\bo_\bc_\bk() *= f;\n-59 return *this;\n+_\b5_\b7 unsigned int _\bs_\bi_\bz_\be () const\n+58 {\n+59 return lfeVariant_._\bs_\bi_\bz_\be();\n 60 }\n 61\n-_\b6_\b2 const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i ) const\n+_\b6_\b2 GeometryType _\bt_\by_\bp_\be () const\n 63 {\n-64 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n+64 return lfeVariant_._\bt_\by_\bp_\be();\n 65 }\n 66\n-_\b6_\b7 _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i )\n-68 {\n-69 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n-70 }\n+67 private:\n+68\n+69 LFEVariant lfeVariant_;\n+70 };\n 71\n-_\b7_\b2 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n-73 {\n-74 return _\bb_\bl_\bo_\bc_\bk_\b_;\n-75 }\n-_\b7_\b6 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n-77 {\n-78 return _\bb_\bl_\bo_\bc_\bk_\b_;\n-79 }\n-_\b8_\b0 void _\ba_\bx_\bp_\by(const F& a, const _\bT_\bh_\bi_\bs &y)\n-81 {\n-82 _\bb_\bl_\bo_\bc_\bk().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n-83 }\n-84 template \n-_\b8_\b5 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv_\b> &y)\n-86 {\n-87 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y._\bb_\bl_\bo_\bc_\bk(),_\bb_\bl_\bo_\bc_\bk());\n-88 }\n-_\b8_\b9 _\bB_\bl_\bo_\bc_\bk _\bb_\bl_\bo_\bc_\bk_\b_;\n-90 };\n-91\n-92\n-93 template \n-_\b9_\b4 struct FieldTraits<_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br>\n-95 {\n-_\b9_\b6 using _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be = F;\n-_\b9_\b7 using _\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be = typename FieldTraits::real_type;\n-98 };\n-99\n-100 // ******************************************\n-101 template \n-_\b1_\b0_\b2 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-103 {\n-_\b1_\b0_\b4 static const int _\bs_\bi_\bz_\be = 0;\n-105 };\n-106\n-107 template \n-_\b1_\b0_\b8 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-109 {\n-_\b1_\b1_\b0 static const int _\bs_\bi_\bz_\be = 1;\n-111 };\n-112\n-113 template \n-_\b1_\b1_\b4 class _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-115 {\n-116 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\b0_\b> _\bT_\bh_\bi_\bs;\n-117\n-118 public:\n-_\b1_\b1_\b9 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n-_\b1_\b2_\b0 static const int _\bs_\bi_\bz_\be = 1;\n-_\b1_\b2_\b1 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-122\n-123 template< class FF >\n-_\b1_\b2_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const FF &f )\n-125 {\n-126 _\bb_\bl_\bo_\bc_\bk() = field_cast< F >( f );\n-127 return *this;\n-128 }\n-129\n-_\b1_\b3_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bB_\bl_\bo_\bc_\bk &b )\n-131 {\n-132 _\bb_\bl_\bo_\bc_\bk() = b;\n-133 return *this;\n-134 }\n-135\n-_\b1_\b3_\b6 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n-137 {\n-138 _\bb_\bl_\bo_\bc_\bk() *= f;\n-139 return *this;\n-140 }\n-141\n-_\b1_\b4_\b2 const F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i ) const\n-143 {\n-144 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n-145 }\n-146\n-_\b1_\b4_\b7 F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i )\n-148 {\n-149 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n-150 }\n-151\n-_\b1_\b5_\b2 void _\ba_\bx_\bp_\by(const F& a, const _\bT_\bh_\bi_\bs &y)\n-153 {\n-154 _\bb_\bl_\bo_\bc_\bk().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n-155 }\n-156 template \n-_\b1_\b5_\b7 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b0_\b> &y)\n-158 {\n-159 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y._\bb_\bl_\bo_\bc_\bk(),_\bb_\bl_\bo_\bc_\bk());\n-160 }\n-161\n-_\b1_\b6_\b2 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n-163 {\n-164 return _\bb_\bl_\bo_\bc_\bk_\b_;\n-165 }\n-_\b1_\b6_\b6 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n-167 {\n-168 return _\bb_\bl_\bo_\bc_\bk_\b_;\n-169 }\n-_\b1_\b7_\b0 _\bB_\bl_\bo_\bc_\bk _\bb_\bl_\bo_\bc_\bk_\b_;\n-171 };\n-172 // ***********************************************************\n-173 // Structure for all derivatives up to order deriv\n-174 // for vector valued function\n-_\b1_\b7_\b5 namespace DerivativeLayoutNS {\n-_\b1_\b7_\b6 enum _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt {_\bv_\ba_\bl_\bu_\be,_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be};\n-177 }\n-178 template \n-_\b1_\b8_\b0 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs;\n-181\n-182 template \n-_\b1_\b8_\b4 struct FieldTraits<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs>\n-185 {\n-_\b1_\b8_\b6 using _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be = F;\n-_\b1_\b8_\b7 using _\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be = typename FieldTraits::real_type;\n-188 };\n-189\n-190 // Implemnetation for valued based layout\n-191 template \n-_\b1_\b9_\b2 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-193 : public _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-194 {\n-_\b1_\b9_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bT_\bh_\bi_\bs;\n-_\b1_\b9_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs _\bB_\ba_\bs_\be;\n-_\b1_\b9_\b7 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv_\b> _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br;\n-198\n-_\b1_\b9_\b9 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b2_\b0_\b0 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n-201\n-_\b2_\b0_\b2 static const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt layout =\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-_\b2_\b0_\b3 static const unsigned int dimDomain = dimD;\n-_\b2_\b0_\b4 static const unsigned int dimRange = dimR;\n-_\b2_\b0_\b5 constexpr static int size = Base::size+ThisLFETensor::size*dimR;\n-_\b2_\b0_\b6 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-207\n-_\b2_\b0_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const F& f)\n-209 {\n-210 block() = f;\n-211 return *this;\n-212 }\n-_\b2_\b1_\b3 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const Dune::FieldVector &t)\n-214 {\n-215 tensor_ = t;\n-216 return *this;\n-217 }\n-218 template \n-_\b2_\b1_\b9 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const Dune::FieldVector<_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bo_\br_\bd_\be_\br_\b>,dimR> &t)\n-220 {\n-221 tensor() = t;\n-222 return *this;\n-223 }\n-_\b2_\b2_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bB_\bl_\bo_\bc_\bk &t)\n-225 {\n-226 block() = t;\n-227 return *this;\n-228 }\n-229\n-_\b2_\b3_\b0 _\bT_\bh_\bi_\bs &operator*= ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n-231 {\n-232 block() *= f;\n-233 return *this;\n-234 }\n-235\n-_\b2_\b3_\b6 void _\ba_\bx_\bp_\by(const F &a, const _\bT_\bh_\bi_\bs &y)\n-237 {\n-238 block().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n-239 }\n-240\n-241 // assign with same layout (only different Field)\n-242 template \n-_\b2_\b4_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b>\n-&y)\n-244 {\n-245 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y.block(),block());\n-246 }\n-247 // assign with different layout (same dimRange)\n-248 template \n-_\b2_\b4_\b9 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n-250 {\n-251 Base::assign(y);\n-252 for (int rr=0; rr()[0];\n-254 }\n-255 // assign with rth component of function\n-256 template \n-_\b2_\b5_\b7 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\by_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b> &y,unsigned int r)\n-258 {\n-259 assign(y.block(),r);\n-260 }\n-261 // assign with scalar functions to component r\n-262 template \n-_\b2_\b6_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> &y)\n-264 {\n-265 assign(r,y.block());\n-266 }\n-267 template \n-_\b2_\b6_\b8 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n-269 {\n-270 assign(r,y[0]);\n-271 }\n-272\n-_\b2_\b7_\b3 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n-274 {\n-275 return reinterpret_cast<_\bB_\bl_\bo_\bc_\bk&>(*this);\n-276 }\n-_\b2_\b7_\b7 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n-278 {\n-279 return reinterpret_cast(*this);\n-280 }\n-281\n-282 template \n-_\b2_\b8_\b3 const Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br() const\n-284 {\n-285 // use integral_constant here to stay compatible with Int2Type\n-286 const std::integral_constant a = {};\n-287 return tensor(a);\n-288 }\n-289 template \n-_\b2_\b9_\b0 Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br()\n-291 {\n-292 // use integral_constant here to stay compatible with Int2Type\n-293 return tensor(std::integral_constant());\n-294 }\n-295 template \n-_\b2_\b9_\b6 const Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n-const\n-297 {\n-298 // use integral_constant here to stay compatible with Int2Type\n-299 const std::integral_constant a = {};\n-300 return reinterpret_cast::size*dimR>&>(tensor(a));\n-301 }\n-302 template \n-_\b3_\b0_\b3 Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n-304 {\n-305 // use integral_constant here to stay compatible with Int2Type\n-306 const std::integral_constant a = {};\n-307 return reinterpret_cast::\n-size*dimR>&>(tensor(a));\n-308 }\n-_\b3_\b0_\b9 _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) {\n-310 return tensor_[r];\n-311 }\n-_\b3_\b1_\b2 const _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) const {\n-313 return tensor_[r];\n-314 }\n-315 protected:\n-316 template \n-_\b3_\b1_\b7 void _\ba_\bs_\bs_\bi_\bg_\bn(const FieldVector &y,unsigned int r)\n-318 {\n-319 Base::template assign(reinterpret_cast&>(y),r);\n-320 tensor_[0] = reinterpret_cast&>(y\n-[Base::size*dimRy+r*ThisLFETensor::size]);\n-321 }\n-322 template \n-_\b3_\b2_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const FieldVector &y)\n-324 {\n-325 Base::assign(r,reinterpret_cast&>\n-(y));\n-326 tensor_[r] = reinterpret_cast&>(y\n-[Base::size/dimR]);\n-327 }\n-328 // assign with different layout (same dimRange)\n-329 template \n-_\b3_\b3_\b0 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\by_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n-331 {\n-332 Base::assign(y);\n-333 for (int rr=0; rr()[0];\n-335 }\n-336\n-337 template \n-338 const Dune::FieldVector,dimR> &\n-_\b3_\b3_\b9 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar) const\n-340 {\n-341 return Base::tensor(dorderVar);\n-342 }\n-343 const Dune::FieldVector,dimR> &\n-_\b3_\b4_\b4 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar) const\n-345 {\n-346 return tensor_;\n-347 }\n-348 template \n-349 Dune::FieldVector,dimR> &\n-_\b3_\b5_\b0 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar)\n-351 {\n-352 return Base::tensor(dorderVar);\n-353 }\n-354 Dune::FieldVector,dimR> &\n-_\b3_\b5_\b5 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar)\n-356 {\n-357 return tensor_;\n-358 }\n-_\b3_\b5_\b9 Dune::FieldVector _\bt_\be_\bn_\bs_\bo_\br_\b_;\n-360 };\n-361\n-362 template \n-_\b3_\b6_\b3 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-364 {\n-_\b3_\b6_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bT_\bh_\bi_\bs;\n-_\b3_\b6_\b6 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\b0_\b> _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br;\n-367\n-_\b3_\b6_\b8 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b3_\b6_\b9 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n-370\n-_\b3_\b7_\b1 static const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt layout =\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-_\b3_\b7_\b2 static const unsigned int dimDomain = dimD;\n-_\b3_\b7_\b3 static const unsigned int dimRange = dimR;\n-_\b3_\b7_\b4 constexpr static int size = ThisLFETensor::size*dimR;\n-_\b3_\b7_\b5 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-376\n-377 template \n-_\b3_\b7_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const FF& f)\n-379 {\n-380 for (int r=0; r(f);\n-382 return *this;\n-383 }\n-_\b3_\b8_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const Dune::FieldVector &t)\n-385 {\n-386 tensor_ = t;\n-387 return *this;\n-388 }\n-389\n-_\b3_\b9_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bB_\bl_\bo_\bc_\bk &t)\n-391 {\n-392 block() = t;\n-393 return *this;\n-394 }\n-395\n-_\b3_\b9_\b6 _\bT_\bh_\bi_\bs &operator*= ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n-397 {\n-398 block() *= f;\n-399 return *this;\n-400 }\n-401\n-_\b4_\b0_\b2 void _\ba_\bx_\bp_\by(const F &a, const _\bT_\bh_\bi_\bs &y)\n-403 {\n-404 block().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n-405 }\n-406 template \n-_\b4_\b0_\b7 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> &y)\n-408 {\n-409 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y.block(),block());\n-410 }\n-411 template \n-_\b4_\b1_\b2 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n-413 {\n-414 for (int rr=0; rr()[0];\n-416 }\n-417 template \n-_\b4_\b1_\b8 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\by_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b>\n-&y,unsigned int r)\n-419 {\n-420 assign(y.block(),r);\n-421 }\n-422 template \n-_\b4_\b2_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> &y)\n-424 {\n-425 tensor_[r].assign(y[0]);\n-426 }\n-427 template \n-_\b4_\b2_\b8 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n-429 {\n-430 tensor_[r].assign(y[0][0]);\n-431 }\n-432\n-_\b4_\b3_\b3 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n-434 {\n-435 return reinterpret_cast<_\bB_\bl_\bo_\bc_\bk&>(*this);\n-436 }\n-_\b4_\b3_\b7 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n-438 {\n-439 return reinterpret_cast(*this);\n-440 }\n-441\n-_\b4_\b4_\b2 _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) {\n-443 return tensor_[r];\n-444 }\n-_\b4_\b4_\b5 const _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) const {\n-446 return tensor_[r];\n-447 }\n-448 template \n-_\b4_\b4_\b9 const Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br() const\n-450 {\n-451 return tensor_;\n-452 }\n-_\b4_\b5_\b3 Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br()\n-454 {\n-455 return tensor_;\n-456 }\n-457 template \n-_\b4_\b5_\b8 const Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n-const\n-459 {\n-460 // use integral_constant here to stay compatible with Int2Type\n-461 const std::integral_constant a = {};\n-462 return reinterpret_cast::size*dimR>&>(tensor(a));\n-463 }\n-464 template \n-_\b4_\b6_\b5 Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n-466 {\n-467 // use integral_constant here to stay compatible with Int2Type\n-468 const std::integral_constant a = {};\n-469 return reinterpret_cast::\n-size*dimR>&>(tensor(a));\n-470 }\n-471\n-472 protected:\n-473 const Dune::FieldVector,dimR> &\n-_\b4_\b7_\b4 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar) const\n-475 {\n-476 return tensor_;\n-477 }\n-478 Dune::FieldVector,dimR> &\n-_\b4_\b7_\b9 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar)\n-480 {\n-481 return tensor_;\n-482 }\n-483 template \n-_\b4_\b8_\b4 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\by_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n-485 {\n-486 for (int rr=0; rr()[0];\n-488 }\n-489 template \n-_\b4_\b9_\b0 void _\ba_\bs_\bs_\bi_\bg_\bn(const FieldVector &y,unsigned int r)\n-491 {\n-492 tensor_[0] = reinterpret_cast&>(y\n-[r*ThisLFETensor::size]);\n-493 }\n-494 template \n-_\b4_\b9_\b5 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const FieldVector &y)\n-496 {\n-497 tensor_[r] = y;\n-498 }\n-_\b4_\b9_\b9 Dune::FieldVector _\bt_\be_\bn_\bs_\bo_\br_\b_;\n-500 };\n-501\n-502 // Implemnetation for DerivativeLayoutNS::derivative based layout\n-503 template \n-_\b5_\b0_\b4 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-505 {\n-_\b5_\b0_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bT_\bh_\bi_\bs;\n-_\b5_\b0_\b7 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bS_\bc_\ba_\bl_\ba_\br_\bD_\be_\br_\bi_\bv;\n-508\n-_\b5_\b0_\b9 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b5_\b1_\b0 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n-511\n-_\b5_\b1_\b2 static const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt layout =\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n-_\b5_\b1_\b3 static const unsigned int dimDomain = dimD;\n-_\b5_\b1_\b4 static const unsigned int dimRange = dimR;\n-_\b5_\b1_\b5 constexpr static int size = ScalarDeriv::size*dimR;\n-_\b5_\b1_\b6 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-517\n-518 template \n-_\b5_\b1_\b9 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const FF& f)\n-520 {\n-521 block() = field_cast(f);\n-522 return *this;\n-523 }\n-_\b5_\b2_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bB_\bl_\bo_\bc_\bk &t)\n-525 {\n-526 block() = t;\n-527 return *this;\n-528 }\n-529\n-_\b5_\b3_\b0 _\bT_\bh_\bi_\bs &operator*= ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n-531 {\n-532 block() *= f;\n-533 return *this;\n-534 }\n-535\n-536 template \n-_\b5_\b3_\b7 void _\ba_\bx_\bp_\by(const FF &a, const _\bT_\bh_\bi_\bs &y)\n-538 {\n-539 block().axpy(field_cast(a),y._\bb_\bl_\bo_\bc_\bk());\n-540 }\n-541 // assign with same layout (only different Field)\n-542 template \n-_\b5_\b4_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n-544 {\n-545 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y.block(),block());\n-546 }\n-547 // assign with different layout (same dimRange)\n-548 template \n-_\b5_\b4_\b9 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b>\n-&y)\n-550 {\n-551 for (unsigned int rr=0; rr\n-_\b5_\b5_\b6 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\by_\b> &y)\n-557 {\n-558 deriv_[r].assign(r,y);\n-559 }\n-560\n-_\b5_\b6_\b1 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n-562 {\n-563 return reinterpret_cast<_\bB_\bl_\bo_\bc_\bk&>(*this);\n-564 }\n-_\b5_\b6_\b5 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n-566 {\n-567 return reinterpret_cast(*this);\n-568 }\n-569\n-_\b5_\b7_\b0 _\bS_\bc_\ba_\bl_\ba_\br_\bD_\be_\br_\bi_\bv &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) {\n-571 return deriv_[r];\n-572 }\n-_\b5_\b7_\b3 const _\bS_\bc_\ba_\bl_\ba_\br_\bD_\be_\br_\bi_\bv &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) const {\n-574 return deriv_[r];\n-575 }\n-576 protected:\n-_\b5_\b7_\b7 Dune::FieldVector _\bd_\be_\br_\bi_\bv_\b_;\n-578 };\n-579\n-580 // ******************************************\n-581 // AXPY *************************************\n-582 // ******************************************\n-583 template \n-_\b5_\b8_\b4 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by\n-585 {\n-586 template \n-_\b5_\b8_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n-588 const Vec1 &x, Vec2 &y)\n-589 {\n-590 y.axpy(a,x);\n-591 }\n-592 };\n-593 template \n-_\b5_\b9_\b7 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,Vec2,deriv>\n-598 {\n-_\b5_\b9_\b9 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-600 template \n-_\b6_\b0_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n-602 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n-603 {\n-604 const FieldVector &xx = x.template block();\n-605 for (int i=0; i\n-_\b6_\b1_\b3 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,Vec2,deriv>\n-614 {\n-_\b6_\b1_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n-616 template \n-_\b6_\b1_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n-618 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n-619 {\n-620 for (int rr=0; rr,\n-622 Vec2,deriv>_\b:_\b:_\ba_\bp_\bp_\bl_\by(rr,a,x[rr],y);\n-623 }\n-624 };\n-625 template \n-_\b6_\b2_\b9 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,Vec2,deriv>\n-630 {\n-_\b6_\b3_\b1 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n-632 template \n-_\b6_\b3_\b3 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n-634 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n-635 {\n-636 _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b>,\n-637 Vec2,deriv>_\b:_\b:_\ba_\bp_\bp_\bl_\by(r,a,x[0],y);\n-638 }\n-639 };\n-640 template \n-_\b6_\b4_\b4 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,Vec2,deriv>\n-645 {\n-_\b6_\b4_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-647 template \n-_\b6_\b4_\b8 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n-649 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n-650 {\n-651 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv_\b> LFETensorType;\n-652 const unsigned int rr = r*LFETensorType::size;\n-653 const FieldVector &xx = x.template block();\n-654 for (int i=0; i::dimension; ++i)\n-655 y[rr+i] += xx[i]*a;\n-656 }\n-657 };\n-658\n-659 // ***********************************************\n-660 // Assign ****************************************\n-661 // ***********************************************\n-662 template \n-_\b6_\b6_\b3 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn\n-664 {\n-_\b6_\b6_\b5 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Vec1 &vec1,Vec2 &vec2)\n-666 {\n-667 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1,vec2);\n-668 }\n-669 };\n-670 template \n-_\b6_\b7_\b2 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-673 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-674 {\n-_\b6_\b7_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n-_\b6_\b7_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b2;\n-_\b6_\b7_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-678 {\n-679 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-680 }\n-681 };\n-682 template \n-_\b6_\b8_\b4 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-685 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-686 {\n-_\b6_\b8_\b7 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-_\b6_\b8_\b8 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>\n-_\bV_\be_\bc_\b2;\n-_\b6_\b8_\b9 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-690 {\n-691 vec2.assign(vec1);\n-692 }\n-693 };\n-694 template \n-_\b6_\b9_\b6 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-697 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-698 {\n-_\b6_\b9_\b9 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>\n-_\bV_\be_\bc_\b1;\n-_\b7_\b0_\b0 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b2;\n-_\b7_\b0_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-702 {\n-703 vec2.assign(vec1);\n-704 }\n-705 };\n-706 template \n-_\b7_\b0_\b8 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-709 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-710 {\n-_\b7_\b1_\b1 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b1_\b2 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b2;\n-_\b7_\b1_\b3 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-714 {\n-715 vec2.assign(r,vec1);\n-716 }\n-717 };\n-718 template \n-_\b7_\b2_\b0 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-721 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-722 {\n-_\b7_\b2_\b3 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b2_\b4 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>\n-_\bV_\be_\bc_\b2;\n-_\b7_\b2_\b5 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-726 {\n-727 vec2.assign(r,vec1);\n-728 }\n-729 };\n-730 template \n-_\b7_\b3_\b2 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-733 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-734 {\n-_\b7_\b3_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b3_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b2;\n-_\b7_\b3_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-738 {\n-739 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-740 }\n-741 };\n-742 template \n-_\b7_\b4_\b4 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-745 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-746 {\n-_\b7_\b4_\b7 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b4_\b8 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b2;\n-_\b7_\b4_\b9 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-750 {\n-751 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-752 }\n-753 };\n-754 template \n-_\b7_\b5_\b6 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-757 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-758 {\n-_\b7_\b5_\b9 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b6_\b0 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b2;\n-_\b7_\b6_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-762 {\n-763 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-764 }\n-765 };\n-766 template \n-_\b7_\b6_\b8 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-769 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-770 {\n-_\b7_\b7_\b1 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b7_\b2 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b2;\n-_\b7_\b7_\b3 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-774 {\n-775 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-776 }\n-777 };\n-778 template \n-_\b7_\b8_\b0 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n-781 F2 >\n-782 {\n-_\b7_\b8_\b3 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b8_\b4 typedef F2 _\bV_\be_\bc_\b2;\n-_\b7_\b8_\b5 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-786 {\n-787 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2);\n-788 }\n-789 };\n-790 template \n-_\b7_\b9_\b3 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n-794 {\n-_\b7_\b9_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b9_\b6 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b7_\b9_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-798 {\n-799 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.template block<0>(),vec2);\n-800 }\n-801 };\n-802 template \n-_\b8_\b0_\b5 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n-806 {\n-_\b8_\b0_\b7 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>\n-_\bV_\be_\bc_\b1;\n-_\b8_\b0_\b8 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b8_\b0_\b9 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-810 {\n-811 for (int rr=0; rr()[0].block(),vec2[rr]);\n-813 }\n-814 };\n-815 template \n-_\b8_\b1_\b8 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n-819 {\n-_\b8_\b2_\b0 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-_\b8_\b2_\b1 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b8_\b2_\b2 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-823 {\n-824 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.template tensor<0>()[0].block(),vec2[r]);\n-825 }\n-826 };\n-827 template \n-_\b8_\b3_\b0 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n-831 {\n-_\b8_\b3_\b2 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n-_\b8_\b3_\b3 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b8_\b3_\b4 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-835 {\n-836 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1[0].template tensor<0>()[0].block(),vec2[r]);\n-837 }\n-838 };\n-839 template \n-_\b8_\b4_\b2 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n-843 {\n-_\b8_\b4_\b4 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-_\b8_\b4_\b5 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b8_\b4_\b6 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-847 {\n-848 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.template tensor<0>()[0].block(),vec2);\n-849 }\n-850 };\n-851 template \n-_\b8_\b5_\b4 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n-855 {\n-_\b8_\b5_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n-_\b8_\b5_\b7 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b8_\b5_\b8 static void _\ba_\bp_\bp_\bl_\by(unsigned int /*r*/,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-859 {\n-860 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1[0].template tensor<0>()[0].block(),vec2);\n-861 }\n-862 };\n-863\n-864 // ***********************************************\n-865 // IO ********************************************\n-866 // ***********************************************\n-867 template \n-_\b8_\b6_\b8 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv\n-_\b> &tensor )\n-869 {\n-870 return out << tensor._\bb_\bl_\bo_\bc_\bk();\n-871 }\n-872#if 0\n-873 template \n-874 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const ScalarDerivatives<\n-F,dimD,deriv > &d )\n-875 {\n-876 out << static_cast &>(d);\n-877 out << \" , \" << d.tensor() << std::endl;\n-878 return out;\n-879 }\n-880 template \n-881 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const ScalarDerivatives<\n-F,dimD,0 > &d )\n-882 {\n-883 out << d.tensor() << std::endl;\n-884 return out;\n-885 }\n-886#endif\n-887 template \n-_\b8_\b8_\b8 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b> &d )\n-889 {\n-890 out << \" ( \";\n-891 out << d[0];\n-892 for (int r=1; r\n-_\b9_\b0_\b0 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b> &d )\n-901 {\n-902 out << static_cast &>(d);\n-903 out << \" ( \";\n-904 out << d[0];\n-905 for (int r=1; r\n-_\b9_\b1_\b3 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b> &d )\n-914 {\n-915 out << \" ( \";\n-916 out << d[0];\n-917 for (int r=1; r\n-_\b9_\b2_\b5 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b> &d )\n-926 {\n-927 out << \" ( \";\n-928 out << d[0];\n-929 for (int r=1; r\n-_\b9_\b3_\b7 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const std::\n-vector<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b _\b> > &y )\n-938 {\n-939 out << \"Number of basis functions: \" << y.size() << std::endl;\n-940 for (unsigned int i=0; i &mat)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt\n-DerivativeLayout\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be\n-@ derivative\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-@ value\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-const Block & block() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=\n-This & operator*=(const field_type &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n-Dune::FieldVector< F, size > Block\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const FF &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bb_\bl_\bo_\bc_\bk_\b_\n-Block block_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n-F field_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\ba_\bx_\bp_\by\n-void axpy(const F &a, const This &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-Block & block()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const LFETensor< Fy, dimD, deriv > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n-static const unsigned int size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const field_type & operator[](const unsigned int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be\n-typename FieldTraits< field_type >::real_type real_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n-F field_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:96\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-Block & block()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:162\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n-F field_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk_\b_\n-Block block_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:170\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const LFETensor< Fy, dimD, 0 > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:157\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-const Block & block() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\ba_\bx_\bp_\by\n-void axpy(const F &a, const This &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:152\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n-Dune::FieldVector< F, size > Block\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:180\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n-F field_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be\n-typename FieldTraits< field_type >::real_type real_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:194\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:199\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs\n-Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > This\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:195\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR >\n-&t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:219\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:\n-_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n-F field_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:200\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n-Derivatives< F, dimD, dimR, deriv-1, DerivativeLayoutNS::value > Base\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const\n-std::integral_constant< int, dorder > &dorderVar) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:339\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:317\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value\n-> &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:243\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::\n-derivative > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:330\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const F &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:208\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br\n-_\b[_\b]\n-const ThisLFETensor & operator[](int r) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:312\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:303\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:\n-_\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-LFETensor< F, dimD, deriv > ThisLFETensor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv,\n-DerivativeLayoutNS::value > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:263\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block\n-() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:296\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::\n-integral_constant< int, dorder > &dorderVar)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:350\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-const Block & block() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:277\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bx_\bp_\by\n-void axpy(const F &a, const This &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::\n-derivative > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:249\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:213\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv,\n-DerivativeLayoutNS::derivative > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:268\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const Block &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:224\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n-Dune::FieldVector< F, size > Block\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:206\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br_\b_\n-Dune::FieldVector< ThisLFETensor, dimR > tensor_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:359\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::\n-integral_constant< int, deriv > &dorderVar)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:355\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:290\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimRy, deriv, DerivativeLayoutNS::\n-value > &y, unsigned int r)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:257\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:283\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-const Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const\n-std::integral_constant< int, deriv > &dorderVar) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:344\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br\n-_\b[_\b]\n-ThisLFETensor & operator[](int r)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:309\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-Block & block()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:273\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:323\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:364\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-ThisLFETensor & operator[](int r)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:442\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-LFETensor< F, dimD, 0 > ThisLFETensor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:366\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:465\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::\n-integral_constant< int, 0 > &dorderVar)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:479\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::value >\n-&y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:407\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:368\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs\n-Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > This\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:365\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::\n-derivative > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:484\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimRy, 0, DerivativeLayoutNS::value >\n-&y, unsigned int r)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:418\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:449\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:453\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const Block &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:390\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n-F field_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:369\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const ThisLFETensor & operator[](int r) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:445\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n-const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::\n-integral_constant< int, 0 > &dorderVar) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:474\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n-Dune::FieldVector< F, size > Block\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:375\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-const Block & block() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:437\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block\n-() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:458\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0,\n-DerivativeLayoutNS::derivative > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:428\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::\n-derivative > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:412\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0,\n-DerivativeLayoutNS::value > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:423\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:384\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:490\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br_\b_\n-Dune::FieldVector< ThisLFETensor, dimR > tensor_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:499\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:495\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const FF &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:378\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n-Block & block()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:433\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bx_\bp_\by\n-void axpy(const F &a, const This &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:402\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:505\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const FF &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:519\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bb_\bl_\bo_\bc_\bk\n-Block & block()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:561\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:509\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bb_\bl_\bo_\bc_\bk\n-const Block & block() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:565\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n-F field_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:510\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, layouty >\n-&y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:556\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-ScalarDeriv & operator[](int r)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:570\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value\n-> &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:549\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs\n-Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > This\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:506\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bS_\bc_\ba_\bl_\ba_\br_\bD_\be_\br_\bi_\bv\n-Derivatives< F, dimD, 1, deriv, DerivativeLayoutNS::value > ScalarDeriv\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:507\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const ScalarDeriv & operator[](int r) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:573\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:_\ba_\bx_\bp_\by\n-void axpy(const FF &a, const This &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:537\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-This & operator=(const Block &t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:524\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bB_\bl_\bo_\bc_\bk\n-Dune::FieldVector< F, size > Block\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:516\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\b_\n-Dune::FieldVector< ScalarDeriv, dimR > deriv_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:577\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn\n-void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::\n-derivative > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:543\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:585\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:587\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-_\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:601\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be\n-_\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:599\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:615\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:617\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivative > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:631\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:633\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,\n-_\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:648\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,\n-_\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:646\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:664\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:665\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, dimR, deriv, layout > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:675\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-Derivatives< F2, dimD, dimR, deriv, layout > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:676\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:677\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:687\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:689\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:688\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:700\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:699\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:701\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, layout > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:711\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:713\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:712\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, layout > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:723\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:725\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n-_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:724\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:735\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:736\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:737\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n-_\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:747\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n-_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:749\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n-_\b>_\b:_\b:_\bV_\be_\bc_\b2\n-Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:748\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:\n-_\bV_\be_\bc_\b2\n-Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:760\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:\n-_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:761\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:\n-_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:759\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:\n-_\bV_\be_\bc_\b2\n-Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:772\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:\n-_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:773\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:\n-_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:771\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bF_\b2_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-F2 Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:784\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bF_\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:785\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bF_\b2_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, layout > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:783\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:795\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-FieldVector< F2, dimR > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:796\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:797\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:807\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:809\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-FieldVector< F2, dimR > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:808\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:820\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-FieldVector< F2, dimR > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:821\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:822\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:834\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:832\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-FieldVector< F2, dimR > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:833\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-FieldVector< F2, 1 > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:845\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:844\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:846\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n-Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:856\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n-static void apply(unsigned int, const Vec1 &vec1, Vec2 &vec2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:858\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n-FieldVector< F2, 1 > Vec2\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:857\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b<_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2\n+_\b>_\b,_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b _\b>\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b<_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2\n+_\b>_\b,_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+typename Dune::LocalFiniteElementTraits< LocalBasis, LocalCoefficients,\n+LocalInterpolation > Traits\n+Export LocalFiniteElementTraits.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:269\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:374\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+constexpr GeometryType type() const\n+Number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:382\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+Provide access to LocalBasis implementation of this LocalFiniteElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:350\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+Provide access to LocalCoefficients implementation of this LocalFiniteElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:358\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+Provide access to LocalInterpolation implementation of this LocalFiniteElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariant.hh:366\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for cubes with arbitrary compile-time dimension and\n+polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for simplices with arbitrary compile-time dimension and\n+polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:836\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:19\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+typename LFEVariant::Traits Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+PQ22DLocalFiniteElement(const GeometryType >, const std::vector< unsigned int\n+> vertexmap)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+PQ22DLocalFiniteElement(const GeometryType >)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bQ_\b2_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pq22d.hh:41\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomialbasis.hh File Reference\n+dune-localfunctions: q2.hh File Reference\n \n \n \n \n \n \n \n@@ -65,60 +65,37 @@\n
    \n
    \n
    \n \n \n \n \n
    \n \n-
    monomialbasis.hh File Reference
    \n+
    q2.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n+
    #include <dune/common/typetraits.hh>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/geometry/topologyfactory.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n-#include <dune/localfunctions/utility/multiindex.hh>
    \n-#include <dune/localfunctions/utility/tensor.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/common/localtoglobaladaptors.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::MonomialBasisSize< geometryId >
     
    struct  Dune::MonomialBasisHelper< mydim, dim, F >
     
    class  Dune::MonomialBasisImpl< geometryId, F >
     
    class  Dune::MonomialBasis< geometryId, F >
     
    class  Dune::StandardMonomialBasis< dim, F >
     
    class  Dune::StandardBiMonomialBasis< dim, F >
     
    class  Dune::VirtualMonomialBasis< dim, F >
     
    class  Dune::VirtualMonomialBasisImpl< geometryId, F >
     
    struct  Dune::MonomialBasisFactory< dim, F >
     
    struct  Dune::MonomialBasisFactory< dim, F >::EvaluationBasisFactory< dd, FF >
     
    struct  Dune::MonomialBasisProvider< dim, SF >
     
    struct  Dune::MonomialBasisProvider< dim, SF >::EvaluationBasisFactory< dd, FF >
    class  Dune::Q2FiniteElementFactory< Geometry, RF >
     Factory for global-valued Q23D elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,49 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-monomialbasis.hh File Reference\n-#include \n-#include \n-#include \n+q2.hh File Reference\n+#include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bd_\b,_\b _\bF_\bF_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bd_\b,_\b _\bF_\bF\n- _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n+\u00a0 Factory for global-valued Q23D elements. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomialbasis.hh Source File\n+dune-localfunctions: q2.hh Source File\n \n \n \n \n \n \n \n@@ -70,1025 +70,77 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    monomialbasis.hh
    \n+
    q2.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_MONOMIALBASIS_HH
    \n-
    6#define DUNE_MONOMIALBASIS_HH
    \n+
    5#ifndef DUNE_Q2_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_Q2_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12
    \n-
    13#include <dune/geometry/type.hh>
    \n-
    14#include <dune/geometry/topologyfactory.hh>
    \n-
    15
    \n-\n-\n-\n-
    19
    \n-
    20namespace Dune
    \n-
    21{
    \n-
    22 /************************************************
    \n-
    23 * Classes for evaluating ''Monomials'' on any order
    \n-
    24 * for all reference element type.
    \n-
    25 * For a simplex topology these are the normal
    \n-
    26 * monomials for cube topologies the bimonomials.
    \n-
    27 * The construction follows the construction of the
    \n-
    28 * generic geometries using tensor products for
    \n-
    29 * prism generation and duffy transform for pyramid
    \n-
    30 * construction.
    \n-
    31 * A derivative argument can be applied, in which case
    \n-
    32 * all derivatives up to the desired order are
    \n-
    33 * evaluated. Note that for higher order derivatives
    \n-
    34 * only the ''lower'' part of the symmetric tensor
    \n-
    35 * is evaluated, e.g., passing derivative equal to 2
    \n-
    36 * to the class will provide the vector
    \n-
    37 * (d/dxdx p, d/dxydx p, d/dydy p,
    \n-
    38 * d/dx p, d/dy p, p)
    \n-
    39 * Important:
    \n-
    40 * So far the computation of the derivatives has not
    \n-
    41 * been fully implemented for general pyramid
    \n-
    42 * construction, i.e., in the case where a pyramid is
    \n-
    43 * build over a non simplex base geometry.
    \n-
    44 *
    \n-
    45 * Central classes:
    \n-
    46 * 1) template< GeometryType::Id geometryId, class F >
    \n-
    47 * class MonomialBasisImpl;
    \n-
    48 * Implementation of the monomial evaluation for
    \n-
    49 * a given topology and field type.
    \n-
    50 * The method evaluate fills a F* vector
    \n-
    51 * 2) template< GeometryType::Id geometryId, class F >
    \n-
    52 * class MonomialBasis
    \n-
    53 * The base class for the static monomial evaluation
    \n-
    54 * providing additional evaluate methods including
    \n-
    55 * one taking std::vector<F>.
    \n-
    56 * 3) template< int dim, class F >
    \n-
    57 * class VirtualMonomialBasis
    \n-
    58 * Virtualization of the MonomialBasis.
    \n-
    59 * 4) template< int dim, class F >
    \n-
    60 * struct MonomialBasisFactory;
    \n-
    61 * A factory class for the VirtualMonomialBasis
    \n-
    62 * 5) template< int dim, class F >
    \n-
    63 * struct MonomialBasisProvider
    \n-
    64 * A singleton container for the virtual monomial
    \n-
    65 * basis
    \n-
    66 ************************************************/
    \n-
    67
    \n-
    68 // Internal Forward Declarations
    \n-
    69 // -----------------------------
    \n-
    70
    \n-
    71 template< GeometryType::Id geometryId >
    \n-
    72 class MonomialBasisSize;
    \n-
    73
    \n-
    74 template< GeometryType::Id geometryId, class F >
    \n-
    75 class MonomialBasis;
    \n-
    76
    \n-
    77
    \n-
    78
    \n-
    79 // MonomialBasisSize
    \n-
    80 // -----------------
    \n-
    81
    \n-
    82 template< GeometryType::Id geometryId >
    \n-
    \n-\n-
    84 {
    \n-\n-
    86
    \n-
    87 public:
    \n-
    \n-
    88 static This &instance ()
    \n-
    89 {
    \n-
    90 static This _instance;
    \n-
    91 return _instance;
    \n-
    92 }
    \n-
    \n-
    93
    \n-
    94 unsigned int maxOrder_;
    \n-
    95
    \n-
    96 // sizes_[ k ]: number of basis functions of exactly order k
    \n-
    97 mutable unsigned int *sizes_;
    \n-
    98
    \n-
    99 // numBaseFunctions_[ k ] = sizes_[ 0 ] + ... + sizes_[ k ]
    \n-
    100 mutable unsigned int *numBaseFunctions_;
    \n-
    101
    \n-
    \n-\n-
    103 : maxOrder_( 0 ),
    \n-
    104 sizes_( 0 ),
    \n-\n-
    106 {
    \n-
    107 computeSizes( 2 );
    \n-
    108 }
    \n-
    \n-
    109
    \n-
    \n-\n-
    111 {
    \n-
    112 delete[] sizes_;
    \n-
    113 delete[] numBaseFunctions_;
    \n-
    114 }
    \n-
    \n-
    115
    \n-
    \n-
    116 unsigned int operator() ( const unsigned int order ) const
    \n-
    117 {
    \n-
    118 return numBaseFunctions_[ order ];
    \n-
    119 }
    \n-
    \n-
    120
    \n-
    \n-
    121 unsigned int maxOrder() const
    \n-
    122 {
    \n-
    123 return maxOrder_;
    \n-
    124 }
    \n-
    \n-
    125
    \n-
    \n-
    126 void computeSizes ( unsigned int order )
    \n-
    127 {
    \n-
    128 if (order <= maxOrder_)
    \n-
    129 return;
    \n-
    130
    \n-
    131 maxOrder_ = order;
    \n-
    132
    \n-
    133 delete[] sizes_;
    \n-
    134 delete[] numBaseFunctions_;
    \n-
    135 sizes_ = new unsigned int[ order+1 ];
    \n-
    136 numBaseFunctions_ = new unsigned int[ order+1 ];
    \n-
    137
    \n-
    138 constexpr GeometryType geometry = geometryId;
    \n-
    139 constexpr auto dim = geometry.dim();
    \n-
    140
    \n-
    141 sizes_[ 0 ] = 1;
    \n-
    142 for( unsigned int k = 1; k <= order; ++k )
    \n-
    143 sizes_[ k ] = 0;
    \n-
    144
    \n-
    145 std::fill(numBaseFunctions_, numBaseFunctions_+order+1, 1);
    \n-
    146
    \n-
    147 for( int codim=dim-1; codim>=0; codim--)
    \n-
    148 {
    \n-
    149 if (Impl::isPrism(geometry.id(),dim,codim))
    \n-
    150 {
    \n-
    151 for( unsigned int k = 1; k <= order; ++k )
    \n-
    152 {
    \n-
    153 sizes_[ k ] = numBaseFunctions_[ k ] + k*sizes_[ k ];
    \n-
    154 numBaseFunctions_[ k ] = numBaseFunctions_[ k-1 ] + sizes_[ k ];
    \n-
    155 }
    \n-
    156 }
    \n-
    157 else
    \n-
    158 {
    \n-
    159 for( unsigned int k = 1; k <= order; ++k )
    \n-
    160 {
    \n-
    161 sizes_[ k ] = numBaseFunctions_[ k ];
    \n-
    162 numBaseFunctions_[ k ] = numBaseFunctions_[ k-1 ] + sizes_[ k ];
    \n-
    163 }
    \n-
    164 }
    \n-
    165 }
    \n-
    166 }
    \n-
    \n-
    167 };
    \n-
    \n-
    168
    \n-
    169
    \n-
    170
    \n-
    171 // MonomialBasisHelper
    \n-
    172 // -------------------
    \n-
    173
    \n-
    174
    \n-
    175 template< int mydim, int dim, class F >
    \n-
    \n-\n-
    177 {
    \n-
    178 typedef MonomialBasisSize< GeometryTypes::simplex(mydim).toId() > MySize;
    \n-
    179 typedef MonomialBasisSize< GeometryTypes::simplex(dim).toId() > Size;
    \n-
    180
    \n-
    \n-
    181 static void copy ( const unsigned int deriv, F *&wit, F *&rit,
    \n-
    182 const unsigned int numBaseFunctions, const F &z )
    \n-
    183 {
    \n-
    184 // n(d,k) = size<k>[d];
    \n-
    185 MySize &mySize = MySize::instance();
    \n-
    186 Size &size = Size::instance();
    \n-
    187
    \n-
    188 const F *const rend = rit + size( deriv )*numBaseFunctions;
    \n-
    189 for( ; rit != rend; )
    \n-
    190 {
    \n-
    191 F *prit = rit;
    \n-
    192
    \n-
    193 *wit = z * *rit;
    \n-
    194 ++rit, ++wit;
    \n-
    195
    \n-
    196 for( unsigned d = 1; d <= deriv; ++d )
    \n-
    197 {
    \n-
    198 #ifndef NDEBUG
    \n-
    199 const F *const derivEnd = rit + mySize.sizes_[ d ];
    \n-
    200 #endif
    \n-
    201
    \n-
    202 {
    \n-
    203 const F *const drend = rit + mySize.sizes_[ d ] - mySize.sizes_[ d-1 ];
    \n-
    204 for( ; rit != drend ; ++rit, ++wit )
    \n-
    205 *wit = z * *rit;
    \n-
    206 }
    \n-
    207
    \n-
    208 for (unsigned int j=1; j<d; ++j)
    \n-
    209 {
    \n-
    210 const F *const drend = rit + mySize.sizes_[ d-j ] - mySize.sizes_[ d-j-1 ];
    \n-
    211 for( ; rit != drend ; ++prit, ++rit, ++wit )
    \n-
    212 *wit = F(j) * *prit + z * *rit;
    \n-
    213 }
    \n-
    214 *wit = F(d) * *prit + z * *rit;
    \n-
    215 ++prit, ++rit, ++wit;
    \n-
    216 assert(derivEnd == rit);
    \n-
    217 rit += size.sizes_[d] - mySize.sizes_[d];
    \n-
    218 prit += size.sizes_[d-1] - mySize.sizes_[d-1];
    \n-
    219 const F *const emptyWitEnd = wit + size.sizes_[d] - mySize.sizes_[d];
    \n-
    220 for ( ; wit != emptyWitEnd; ++wit )
    \n-
    221 *wit = Zero<F>();
    \n-
    222 }
    \n-
    223 }
    \n-
    224 }
    \n-
    \n-
    225 };
    \n-
    \n-
    226
    \n-
    227
    \n-
    228
    \n-
    229 // MonomialBasisImpl
    \n-
    230 // -----------------
    \n-
    231
    \n-
    232 template< GeometryType::Id geometryId, class F>
    \n-
    \n-\n-
    234 {
    \n-
    235 public:
    \n-
    236 typedef F Field;
    \n-
    237
    \n-
    238 static constexpr GeometryType geometry = geometryId;
    \n-
    239
    \n-
    240 static const unsigned int dimDomain = geometry.dim();
    \n-
    241
    \n-
    242 typedef FieldVector< Field, dimDomain > DomainVector;
    \n-
    243
    \n-
    244 private:
    \n-
    245 friend class MonomialBasis< geometryId, Field >;
    \n-
    246
    \n-\n-
    248 {}
    \n-
    249
    \n-
    250 template< int dimD >
    \n-
    251 void evaluate ( const unsigned int deriv, const unsigned int order,
    \n-
    252 const FieldVector< Field, dimD > &x,
    \n-
    253 const unsigned int block, const unsigned int *const offsets,
    \n-
    254 Field *const values ) const
    \n-
    255 {
    \n-
    256 //start with vertex
    \n-
    257 *values = Unity< F >();
    \n-
    258 F *const end = values + block;
    \n-
    259 for( Field *it = values+1 ; it != end; ++it )
    \n-
    260 *it = Zero< F >();
    \n-
    261
    \n-
    262 constexpr GeometryType gt = GeometryTypes::vertex;
    \n-
    263
    \n-
    264 if constexpr ( geometry == gt)
    \n-
    265 return;
    \n-
    266 else
    \n-
    267 evaluate<gt,dimD>(deriv, order, x, block, offsets, values );
    \n-
    268 }
    \n-
    269
    \n-
    270 template<GeometryType::Id baseGeometryId, int dimD >
    \n-
    271 void evaluate ( const unsigned int deriv, const unsigned int order,
    \n-
    272 const FieldVector< Field, dimD > &x,
    \n-
    273 const unsigned int block, const unsigned int *const offsets,
    \n-
    274 Field *const values ) const
    \n-
    275 {
    \n-
    276
    \n-
    277 static constexpr GeometryType baseGeometry = baseGeometryId;
    \n-
    278
    \n-
    279 auto constexpr isPrismatic = geometry.isPrismatic(baseGeometry.dim());
    \n-
    280
    \n-
    281 // compute
    \n-
    282 typedef MonomialBasisHelper< baseGeometry.dim() + 1, dimD, Field > Helper;
    \n-
    283 typedef MonomialBasisSize<baseGeometryId> BaseSize;
    \n-
    284
    \n-
    285 const BaseSize &size = BaseSize::instance();
    \n-
    286 const_cast<BaseSize&>(size).computeSizes(order);
    \n-
    287
    \n-
    288 const Field &z = x[ baseGeometry.dim() ];
    \n-
    289
    \n-
    290 Field *row0 = values;
    \n-
    291 for( unsigned int k = 1; k <= order; ++k )
    \n-
    292 {
    \n-
    293 Field *row1 = values + block*offsets[ k-1 ];
    \n-
    294 Field *wit = row1 + block*size.sizes_[ k ];
    \n-
    295 if constexpr ( isPrismatic )
    \n-
    296 Helper::copy( deriv, wit, row1, k*size.sizes_[ k ], z );
    \n-
    297 Helper::copy( deriv, wit, row0, size( k-1 ), z );
    \n-
    298 row0 = row1;
    \n-
    299 }
    \n-
    300
    \n-
    301 // stop if desired dimension is reached
    \n-
    302 if constexpr( baseGeometry.dim() == dimDomain-1)
    \n-
    303 return;
    \n-
    304 else
    \n-
    305 {
    \n-
    306 constexpr GeometryType nextGeometry = isPrismatic ? GeometryTypes::prismaticExtension(baseGeometry)
    \n-
    307 : GeometryTypes::conicalExtension(baseGeometry);
    \n-
    308
    \n-
    309 evaluate<nextGeometry.toId(),dimD>(deriv, order, x, block, offsets, values );
    \n-
    310 }
    \n-
    311 }
    \n-
    312
    \n-
    313 void integrate ( const unsigned int order,
    \n-
    314 const unsigned int *const offsets,
    \n-
    315 Field *const values ) const
    \n-
    316 {
    \n-
    317 //start with vertex
    \n-
    318 values[ 0 ] = Unity< Field >();
    \n-
    319 static constexpr GeometryType gt = GeometryTypes::vertex;
    \n-
    320
    \n-
    321 if constexpr ( geometry == gt)
    \n-
    322 return;
    \n-
    323 else
    \n-
    324 integrate<gt>(order, offsets, values);
    \n-
    325 }
    \n-
    326
    \n-
    327 template<GeometryType::Id baseGeometryId>
    \n-
    328 void integrate ( const unsigned int order,
    \n-
    329 const unsigned int *const offsets,
    \n-
    330 Field *const values) const
    \n-
    331 {
    \n-
    332 static constexpr GeometryType baseGeometry = baseGeometryId;
    \n-
    333
    \n-
    334 auto constexpr isPrismatic = geometry.isPrismatic(baseGeometry.dim());
    \n-
    335
    \n-
    336 // decide which kind of integration should be performed
    \n-
    337 if constexpr ( isPrismatic )
    \n-
    338 integratePrismatic<baseGeometry>(order, offsets, values);
    \n-
    339 else
    \n-
    340 integrateConical<baseGeometry>(order, offsets, values);
    \n-
    341
    \n-
    342 // stop if the desired dimension is reached
    \n-
    343 if constexpr( baseGeometry.dim() == dimDomain-1)
    \n-
    344 return;
    \n-
    345 else
    \n-
    346 {
    \n-
    347 static constexpr GeometryType nextGeometry = (isPrismatic ? GeometryTypes::prismaticExtension(baseGeometry)
    \n-
    348 : GeometryTypes::conicalExtension(baseGeometry));
    \n-
    349
    \n-
    350 integrate<nextGeometry.toId()>(order, offsets, values);
    \n-
    351 }
    \n-
    352
    \n-
    353 }
    \n-
    354
    \n-
    355 template<GeometryType::Id baseGeometryId>
    \n-
    356 void integratePrismatic ( const unsigned int order,
    \n-
    357 const unsigned int *const offsets,
    \n-
    358 Field *const values ) const
    \n-
    359 {
    \n-
    360 typedef MonomialBasisSize<baseGeometryId> BaseSize;
    \n-
    361 static const BaseSize &size = BaseSize::instance();
    \n-
    362 const unsigned int *const baseSizes = size.sizes_;
    \n-
    363
    \n-
    364 static constexpr GeometryType baseGeometry = baseGeometryId;
    \n-
    365 static constexpr GeometryType nextGeometry = GeometryTypes::prismaticExtension(baseGeometry);
    \n-
    366
    \n-
    367 typedef MonomialBasisSize<nextGeometry.toId()> Size;
    \n-
    368 static const Size &mySize = Size::instance();
    \n-
    369
    \n-
    370 Field *row0 = values;
    \n-
    371 for( unsigned int k = 1; k <= order; ++k )
    \n-
    372 {
    \n-
    373 Field *const row1begin = values + offsets[ k-1 ];
    \n-
    374 Field *const row1End = row1begin + mySize.sizes_[ k ];
    \n-
    375 assert( (unsigned int)(row1End - values) <= offsets[ k ] );
    \n-
    376
    \n-
    377 Field *row1 = row1begin;
    \n-
    378 Field *it = row1begin + baseSizes[ k ];
    \n-
    379 for( unsigned int j = 1; j <= k; ++j )
    \n-
    380 {
    \n-
    381 Field *const end = it + baseSizes[ k ];
    \n-
    382 assert( (unsigned int)(end - values) <= offsets[ k ] );
    \n-
    383 for( ; it != end; ++row1, ++it )
    \n-
    384 *it = (Field( j ) / Field( j+1 )) * (*row1);
    \n-
    385 }
    \n-
    386 for( ; it != row1End; ++row0, ++it )
    \n-
    387 *it = (Field( k ) / Field( k+1 )) * (*row0);
    \n-
    388 row0 = row1;
    \n-
    389 }
    \n-
    390 }
    \n-
    391
    \n-
    392
    \n-
    393 template<GeometryType::Id baseGeometryId>
    \n-
    394 void integrateConical ( const unsigned int order,
    \n-
    395 const unsigned int *const offsets,
    \n-
    396 Field *const values) const
    \n-
    397 {
    \n-
    398 typedef MonomialBasisSize<baseGeometryId> BaseSize;
    \n-
    399 static const BaseSize &size = BaseSize::instance();
    \n-
    400 const unsigned int *const baseSizes = size.sizes_;
    \n-
    401
    \n-
    402 static constexpr GeometryType baseGeometry = baseGeometryId;
    \n-
    403
    \n-
    404 {
    \n-
    405 Field *const col0End = values + baseSizes[ 0 ];
    \n-
    406 for( Field *it = values; it != col0End; ++it )
    \n-
    407 *it *= Field( 1 ) / Field( int(baseGeometry.dim()+1) );
    \n-
    408 }
    \n-
    409
    \n-
    410 Field *row0 = values;
    \n-
    411 for( unsigned int k = 1; k <= order; ++k )
    \n-
    412 {
    \n-
    413 const Field factor = (Field( 1 ) / Field( k + baseGeometry.dim()+1));
    \n-
    414
    \n-
    415 Field *const row1 = values+offsets[ k-1 ];
    \n-
    416 Field *const col0End = row1 + baseSizes[ k ];
    \n-
    417 Field *it = row1;
    \n-
    418 for( ; it != col0End; ++it )
    \n-
    419 *it *= factor;
    \n-
    420 for( unsigned int i = 1; i <= k; ++i )
    \n-
    421 {
    \n-
    422 Field *const end = it + baseSizes[ k-i ];
    \n-
    423 assert( (unsigned int)(end - values) <= offsets[ k ] );
    \n-
    424 for( ; it != end; ++row0, ++it )
    \n-
    425 *it = (*row0) * (Field( i ) * factor);
    \n-
    426 }
    \n-
    427 row0 = row1;
    \n-
    428 }
    \n-
    429 }
    \n-
    430
    \n-
    431 };
    \n-
    \n-
    432
    \n-
    433
    \n-
    434 // MonomialBasis
    \n-
    435 // -------------
    \n-
    436
    \n-
    437 template< GeometryType::Id geometryId, class F >
    \n-
    \n-\n-
    439 : public MonomialBasisImpl< geometryId, F >
    \n-
    440 {
    \n-
    441 static constexpr GeometryType geometry = geometryId;
    \n-\n-\n-
    444
    \n-
    445 public:
    \n-
    446 static const unsigned int dimension = Base::dimDomain;
    \n-
    447 static const unsigned int dimRange = 1;
    \n-
    448
    \n-
    449 typedef typename Base::Field Field;
    \n-
    450
    \n-\n-
    452
    \n-
    453 typedef Dune::FieldVector<Field,dimRange> RangeVector;
    \n-
    454
    \n-\n-
    456
    \n-
    \n-
    457 MonomialBasis (unsigned int order)
    \n-
    458 : Base(),
    \n-
    459 order_(order),
    \n-
    460 size_(Size::instance())
    \n-
    461 {
    \n-
    462 assert(order<=1024); // avoid wrapping of unsigned int (0-1) order=1024 is quite high...)
    \n-
    463 }
    \n-
    \n-
    464
    \n-
    \n-
    465 const unsigned int *sizes ( unsigned int order ) const
    \n-
    466 {
    \n-
    467 size_.computeSizes( order );
    \n-
    468 return size_.numBaseFunctions_;
    \n-
    469 }
    \n-
    \n-
    470
    \n-
    \n-
    471 const unsigned int *sizes () const
    \n-
    472 {
    \n-
    473 return sizes( order_ );
    \n-
    474 }
    \n-
    \n-
    475
    \n-
    \n-
    476 unsigned int size () const
    \n-
    477 {
    \n-
    478 size_.computeSizes( order_ );
    \n-
    479 return size_( order_ );
    \n-
    480 }
    \n-
    \n-
    481
    \n-
    \n-
    482 unsigned int derivSize ( const unsigned int deriv ) const
    \n-
    483 {
    \n-
    484 MonomialBasisSize< GeometryTypes::simplex(dimension).toId() >::instance().computeSizes( deriv );
    \n-
    485 return MonomialBasisSize< GeometryTypes::simplex(dimension).toId() >::instance() ( deriv );
    \n-
    486 }
    \n-
    \n-
    487
    \n-
    \n-
    488 unsigned int order () const
    \n-
    489 {
    \n-
    490 return order_ ;
    \n-
    491 }
    \n-
    \n-
    492
    \n-
    \n-
    493 unsigned int topologyId ( ) const
    \n-
    494 {
    \n-
    495 return geometry.id();
    \n-
    496 }
    \n-
    \n-
    497
    \n-
    \n-
    498 void evaluate ( const unsigned int deriv, const DomainVector &x,
    \n-
    499 Field *const values ) const
    \n-
    500 {
    \n-
    501 Base::evaluate( deriv, order_, x, derivSize( deriv ), sizes( order_ ), values );
    \n-
    502 }
    \n-
    \n-
    503
    \n-
    504 template <unsigned int deriv>
    \n-
    \n-
    505 void evaluate ( const DomainVector &x,
    \n-
    506 Field *const values ) const
    \n-
    507 {
    \n-
    508 evaluate( deriv, x, values );
    \n-
    509 }
    \n-
    \n-
    510
    \n-
    511 template<unsigned int deriv, class Vector >
    \n-
    \n-
    512 void evaluate ( const DomainVector &x,
    \n-
    513 Vector &values ) const
    \n-
    514 {
    \n-
    515 evaluate<deriv>(x,&(values[0]));
    \n-
    516 }
    \n-
    \n-
    517 template<unsigned int deriv, DerivativeLayoutNS::DerivativeLayout layout >
    \n-
    \n-
    518 void evaluate ( const DomainVector &x,
    \n-\n-
    520 {
    \n-
    521 evaluate<deriv>(x,&(values->block()));
    \n-
    522 }
    \n-
    \n-
    523 template< unsigned int deriv >
    \n-
    \n-
    524 void evaluate ( const DomainVector &x,
    \n-\n-
    526 {
    \n-
    527 evaluate(0,x,&(values[0][0]));
    \n-
    528 }
    \n-
    \n-
    529
    \n-
    530 template<class Vector >
    \n-
    \n-
    531 void evaluate ( const DomainVector &x,
    \n-
    532 Vector &values ) const
    \n-
    533 {
    \n-
    534 evaluate<0>(x,&(values[0]));
    \n-
    535 }
    \n-
    \n-
    536
    \n-
    537 template< class DVector, class RVector >
    \n-
    \n-
    538 void evaluate ( const DVector &x, RVector &values ) const
    \n-
    539 {
    \n-
    540 assert( DVector::dimension == dimension);
    \n-
    541 DomainVector bx;
    \n-
    542 for( int d = 0; d < dimension; ++d )
    \n-
    543 field_cast( x[ d ], bx[ d ] );
    \n-
    544 evaluate<0>( bx, values );
    \n-
    545 }
    \n-
    \n-
    546
    \n-
    \n-
    547 void integrate ( Field *const values ) const
    \n-
    548 {
    \n-
    549 Base::integrate( order_, sizes( order_ ), values );
    \n-
    550 }
    \n-
    \n-
    551 template <class Vector>
    \n-
    \n-
    552 void integrate ( Vector &values ) const
    \n-
    553 {
    \n-
    554 integrate( &(values[ 0 ]) );
    \n-
    555 }
    \n-
    \n-
    556 private:
    \n-
    557 MonomialBasis(const This&);
    \n-
    558 This& operator=(const This&);
    \n-
    559 unsigned int order_;
    \n-
    560 Size &size_;
    \n-
    561 };
    \n-
    \n-
    562
    \n-
    563
    \n-
    564
    \n-
    565 // StdMonomialBasis
    \n-
    566 // ----------------
    \n-
    567
    \n-
    568 template< int dim,class F >
    \n-
    \n-\n-
    570 : public MonomialBasis< GeometryTypes::simplex(dim).toId() , F >
    \n-
    571 {
    \n-\n-
    573 typedef MonomialBasis< GeometryTypes::simplex(dim).toId(), F > Base;
    \n-
    574
    \n-
    575 public:
    \n-
    576 static constexpr GeometryType geometry = GeometryTypes::simplex(dim);
    \n-
    577 static const int dimension = dim;
    \n-
    578
    \n-
    \n-\n-
    580 : Base( order )
    \n-
    581 {}
    \n-
    \n-
    582 };
    \n-
    \n-
    583
    \n-
    584
    \n-
    585
    \n-
    586 // StandardBiMonomialBasis
    \n-
    587 // -----------------------
    \n-
    588
    \n-
    589 template< int dim, class F >
    \n-
    \n-\n-
    591 : public MonomialBasis< GeometryTypes::cube(dim).toId() , F >
    \n-
    592 {
    \n-\n-
    594 typedef MonomialBasis< GeometryTypes::cube(dim).toId() , F > Base;
    \n-
    595
    \n-
    596 public:
    \n-
    597 static constexpr GeometryType geometry = GeometryTypes::cube(dim);
    \n-
    598 static const int dimension = dim;
    \n-
    599
    \n-
    \n-\n-
    601 : Base( order )
    \n-
    602 {}
    \n-
    \n-
    603 };
    \n-
    \n-
    604
    \n-
    605 // -----------------------------------------------------------
    \n-
    606 // -----------------------------------------------------------
    \n-
    607 // VirtualMonomialBasis
    \n-
    608 // -------------------
    \n-
    609
    \n-
    610 template< int dim, class F >
    \n-
    \n-\n-
    612 {
    \n-\n-
    614
    \n-
    615 public:
    \n-
    616 typedef F Field;
    \n-
    617 typedef F StorageField;
    \n-
    618 static const int dimension = dim;
    \n-
    619 static const unsigned int dimRange = 1;
    \n-
    620
    \n-
    621 typedef FieldVector<Field,dimension> DomainVector;
    \n-
    622 typedef FieldVector<Field,dimRange> RangeVector;
    \n-
    623
    \n-
    \n-
    624 explicit VirtualMonomialBasis(const GeometryType& gt,
    \n-
    625 unsigned int order)
    \n-
    626 : order_(order), geometry_(gt) {}
    \n-
    \n-
    627
    \n-\n-
    629
    \n-
    630 virtual const unsigned int *sizes ( ) const = 0;
    \n-
    631
    \n-
    \n-
    632 unsigned int size ( ) const
    \n-
    633 {
    \n-
    634 return sizes( )[ order_ ];
    \n-
    635 }
    \n-
    \n-
    636
    \n-
    \n-
    637 unsigned int order () const
    \n-
    638 {
    \n-
    639 return order_;
    \n-
    640 }
    \n-
    \n-
    641
    \n-
    \n-
    642 GeometryType type() const
    \n-
    643 {
    \n-
    644 return geometry_;
    \n-
    645 }
    \n-
    \n-
    646
    \n-
    647 virtual void evaluate ( const unsigned int deriv, const DomainVector &x,
    \n-
    648 Field *const values ) const = 0;
    \n-
    649 template < unsigned int deriv >
    \n-
    \n-
    650 void evaluate ( const DomainVector &x,
    \n-
    651 Field *const values ) const
    \n-
    652 {
    \n-
    653 evaluate( deriv, x, values );
    \n-
    654 }
    \n-
    \n-
    655 template < unsigned int deriv, int size >
    \n-
    \n-
    656 void evaluate ( const DomainVector &x,
    \n-
    657 Dune::FieldVector<Field,size> *const values ) const
    \n-
    658 {
    \n-
    659 evaluate( deriv, x, &(values[0][0]) );
    \n-
    660 }
    \n-
    \n-
    661 template<unsigned int deriv, DerivativeLayoutNS::DerivativeLayout layout >
    \n-
    \n-
    662 void evaluate ( const DomainVector &x,
    \n-\n-
    664 {
    \n-
    665 evaluate<deriv>(x,&(values->block()));
    \n-
    666 }
    \n-
    \n-
    667 template <unsigned int deriv, class Vector>
    \n-
    \n-
    668 void evaluate ( const DomainVector &x,
    \n-
    669 Vector &values ) const
    \n-
    670 {
    \n-
    671 evaluate<deriv>( x, &(values[ 0 ]) );
    \n-
    672 }
    \n-
    \n-
    673 template< class Vector >
    \n-
    \n-
    674 void evaluate ( const DomainVector &x,
    \n-
    675 Vector &values ) const
    \n-
    676 {
    \n-
    677 evaluate<0>(x,values);
    \n-
    678 }
    \n-
    \n-
    679 template< class DVector, class RVector >
    \n-
    \n-
    680 void evaluate ( const DVector &x, RVector &values ) const
    \n-
    681 {
    \n-
    682 assert( DVector::dimension == dimension);
    \n-
    683 DomainVector bx;
    \n-
    684 for( int d = 0; d < dimension; ++d )
    \n-
    685 field_cast( x[ d ], bx[ d ] );
    \n-
    686 evaluate<0>( bx, values );
    \n-
    687 }
    \n-
    \n-
    688 template< unsigned int deriv, class DVector, class RVector >
    \n-
    \n-
    689 void evaluate ( const DVector &x, RVector &values ) const
    \n-
    690 {
    \n-
    691 assert( DVector::dimension == dimension);
    \n-
    692 DomainVector bx;
    \n-
    693 for( int d = 0; d < dimension; ++d )
    \n-
    694 field_cast( x[ d ], bx[ d ] );
    \n-
    695 evaluate<deriv>( bx, values );
    \n-
    696 }
    \n-
    \n-
    697
    \n-
    698 virtual void integrate ( Field *const values ) const = 0;
    \n-
    699 template <class Vector>
    \n-
    \n-
    700 void integrate ( Vector &values ) const
    \n-
    701 {
    \n-
    702 integrate( &(values[ 0 ]) );
    \n-
    703 }
    \n-
    \n-
    704 protected:
    \n-
    705 unsigned int order_;
    \n-
    706 GeometryType geometry_;
    \n-
    707 };
    \n-
    \n-
    708
    \n-
    709 template< GeometryType::Id geometryId, class F >
    \n-
    \n-\n-
    711 : public VirtualMonomialBasis< static_cast<GeometryType>(geometryId).dim(), F >
    \n-
    712 {
    \n-
    713 static constexpr GeometryType geometry = geometryId;
    \n-
    714 typedef VirtualMonomialBasis< geometry.dim(), F > Base;
    \n-\n-
    716
    \n-
    717 public:
    \n-
    718 typedef typename Base::Field Field;
    \n-\n-
    720
    \n-
    \n-\n-
    722 : Base(geometry,order), basis_(order)
    \n-
    723 {}
    \n-
    \n-
    724
    \n-
    \n-
    725 const unsigned int *sizes ( ) const
    \n-
    726 {
    \n-
    727 return basis_.sizes(order_);
    \n-
    728 }
    \n-
    \n-
    729
    \n-
    \n-
    730 void evaluate ( const unsigned int deriv, const DomainVector &x,
    \n-
    731 Field *const values ) const
    \n-
    732 {
    \n-
    733 basis_.evaluate(deriv,x,values);
    \n-
    734 }
    \n-
    \n-
    735
    \n-
    \n-
    736 void integrate ( Field *const values ) const
    \n-
    737 {
    \n-
    738 basis_.integrate(values);
    \n-
    739 }
    \n-
    \n-
    740
    \n-
    741 private:
    \n-\n-
    743 using Base::order_;
    \n-
    744 };
    \n-
    \n-
    745
    \n-
    746 // MonomialBasisFactory
    \n-
    747 // --------------------
    \n-
    748
    \n-
    749 template< int dim, class F >
    \n-
    \n-\n-
    751 {
    \n-
    752 static const unsigned int dimension = dim;
    \n-
    753 typedef F StorageField;
    \n-
    754
    \n-
    755 typedef unsigned int Key;
    \n-\n-
    757
    \n-
    758 template < int dd, class FF >
    \n-
    \n-\n-
    760 {
    \n-\n-
    762 };
    \n-
    \n-
    763
    \n-
    764 template< GeometryType::Id geometryId >
    \n-
    \n-
    765 static Object* create ( const Key &order )
    \n-
    766 {
    \n-\n-
    768 }
    \n-
    \n-
    769 static void release( Object *object ) { delete object; }
    \n-
    770 };
    \n-
    \n-
    771
    \n-
    772
    \n-
    773
    \n-
    774 // MonomialBasisProvider
    \n-
    775 // ---------------------
    \n-
    776
    \n-
    777 template< int dim, class SF >
    \n-
    \n-\n-
    779 : public TopologySingletonFactory< MonomialBasisFactory< dim, SF > >
    \n-
    780 {
    \n-
    781 static const unsigned int dimension = dim;
    \n-
    782 typedef SF StorageField;
    \n-
    783 template < int dd, class FF >
    \n-
    \n-\n-
    785 {
    \n-\n-
    787 };
    \n-
    \n-
    788 };
    \n-
    \n-
    789
    \n-
    790}
    \n-
    791
    \n-
    792#endif
    \n-\n-\n-\n+
    8#include <dune/common/typetraits.hh>
    \n+
    9#include <dune/geometry/type.hh>
    \n+
    10
    \n+\n+\n+
    13
    \n+\n+\n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    20
    \n+
    25 template<class Geometry, class RF>
    \n+
    \n+\n+\n+
    28 typename std::conditional<Geometry::mydimension == 1,
    \n+
    29 LagrangeSimplexLocalFiniteElement<typename Geometry::ctype, RF, 1, 2>,
    \n+
    30 LagrangeCubeLocalFiniteElement<typename Geometry::ctype, RF, Geometry::mydimension, 2> >::type,
    \n+
    31 Geometry>
    \n+
    32 {
    \n+
    33 typedef typename std::conditional<Geometry::mydimension == 1,
    \n+\n+\n+\n+
    37
    \n+
    38 static const LFE lfe;
    \n+
    39
    \n+
    40 public:
    \n+\n+
    43 };
    \n+
    \n+
    44
    \n+
    45 template<class Geometry, class RF>
    \n+
    46 const typename Q2FiniteElementFactory<Geometry, RF>::LFE
    \n+
    47 Q2FiniteElementFactory<Geometry, RF>::lfe;
    \n+
    48}
    \n+
    49
    \n+
    50#endif
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    A class representing the unit of a given Field.
    Definition field.hh:30
    \n-
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n-
    Definition monomialbasis.hh:84
    \n-
    unsigned int * numBaseFunctions_
    Definition monomialbasis.hh:100
    \n-
    void computeSizes(unsigned int order)
    Definition monomialbasis.hh:126
    \n-
    unsigned int * sizes_
    Definition monomialbasis.hh:97
    \n-
    MonomialBasisSize()
    Definition monomialbasis.hh:102
    \n-
    ~MonomialBasisSize()
    Definition monomialbasis.hh:110
    \n-
    unsigned int operator()(const unsigned int order) const
    Definition monomialbasis.hh:116
    \n-
    unsigned int maxOrder_
    Definition monomialbasis.hh:94
    \n-
    unsigned int maxOrder() const
    Definition monomialbasis.hh:121
    \n-
    static This & instance()
    Definition monomialbasis.hh:88
    \n-
    Definition monomialbasis.hh:440
    \n-
    unsigned int size() const
    Definition monomialbasis.hh:476
    \n-
    static const unsigned int dimension
    Definition monomialbasis.hh:446
    \n-
    Dune::FieldVector< Field, dimRange > RangeVector
    Definition monomialbasis.hh:453
    \n-
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:498
    \n-
    const unsigned int * sizes() const
    Definition monomialbasis.hh:471
    \n-
    unsigned int topologyId() const
    Definition monomialbasis.hh:493
    \n-
    void integrate(Vector &values) const
    Definition monomialbasis.hh:552
    \n-
    Base::Field Field
    Definition monomialbasis.hh:449
    \n-
    void integrate(Field *const values) const
    Definition monomialbasis.hh:547
    \n-
    static const unsigned int dimRange
    Definition monomialbasis.hh:447
    \n-
    Base::DomainVector DomainVector
    Definition monomialbasis.hh:451
    \n-
    void evaluate(const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:505
    \n-
    void evaluate(const DomainVector &x, Vector &values) const
    Definition monomialbasis.hh:531
    \n-
    void evaluate(const DomainVector &x, FieldVector< Field, Derivatives< Field, dimension, 1, deriv, DerivativeLayoutNS::value >::size > *values) const
    Definition monomialbasis.hh:524
    \n-
    void evaluate(const DomainVector &x, Derivatives< Field, dimension, 1, deriv, layout > *values) const
    Definition monomialbasis.hh:518
    \n-
    void evaluate(const DVector &x, RVector &values) const
    Definition monomialbasis.hh:538
    \n-
    MonomialBasisSize< geometryId > Size
    Definition monomialbasis.hh:455
    \n-
    void evaluate(const DomainVector &x, Vector &values) const
    Definition monomialbasis.hh:512
    \n-
    MonomialBasis(unsigned int order)
    Definition monomialbasis.hh:457
    \n-
    unsigned int derivSize(const unsigned int deriv) const
    Definition monomialbasis.hh:482
    \n-
    const unsigned int * sizes(unsigned int order) const
    Definition monomialbasis.hh:465
    \n-
    unsigned int order() const
    Definition monomialbasis.hh:488
    \n-
    Definition monomialbasis.hh:177
    \n-
    MonomialBasisSize< GeometryTypes::simplex(dim).toId() > Size
    Definition monomialbasis.hh:179
    \n-
    static void copy(const unsigned int deriv, F *&wit, F *&rit, const unsigned int numBaseFunctions, const F &z)
    Definition monomialbasis.hh:181
    \n-
    MonomialBasisSize< GeometryTypes::simplex(mydim).toId() > MySize
    Definition monomialbasis.hh:178
    \n-
    Definition monomialbasis.hh:234
    \n-
    FieldVector< Field, dimDomain > DomainVector
    Definition monomialbasis.hh:242
    \n-
    static constexpr GeometryType geometry
    Definition monomialbasis.hh:238
    \n-
    F Field
    Definition monomialbasis.hh:236
    \n-
    static const unsigned int dimDomain
    Definition monomialbasis.hh:240
    \n-
    Definition monomialbasis.hh:571
    \n-
    static constexpr GeometryType geometry
    Definition monomialbasis.hh:576
    \n-
    StandardMonomialBasis(unsigned int order)
    Definition monomialbasis.hh:579
    \n-
    static const int dimension
    Definition monomialbasis.hh:577
    \n-
    Definition monomialbasis.hh:592
    \n-
    static const int dimension
    Definition monomialbasis.hh:598
    \n-
    static constexpr GeometryType geometry
    Definition monomialbasis.hh:597
    \n-
    StandardBiMonomialBasis(unsigned int order)
    Definition monomialbasis.hh:600
    \n-
    Definition monomialbasis.hh:612
    \n-
    GeometryType geometry_
    Definition monomialbasis.hh:706
    \n-
    FieldVector< Field, dimension > DomainVector
    Definition monomialbasis.hh:621
    \n-
    unsigned int order_
    Definition monomialbasis.hh:705
    \n-
    void evaluate(const DomainVector &x, Vector &values) const
    Definition monomialbasis.hh:674
    \n-
    void evaluate(const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:650
    \n-
    F Field
    Definition monomialbasis.hh:616
    \n-
    void evaluate(const DomainVector &x, Vector &values) const
    Definition monomialbasis.hh:668
    \n-
    void evaluate(const DVector &x, RVector &values) const
    Definition monomialbasis.hh:680
    \n-
    unsigned int order() const
    Definition monomialbasis.hh:637
    \n-
    static const unsigned int dimRange
    Definition monomialbasis.hh:619
    \n-
    F StorageField
    Definition monomialbasis.hh:617
    \n-
    static const int dimension
    Definition monomialbasis.hh:618
    \n-
    unsigned int size() const
    Definition monomialbasis.hh:632
    \n-
    FieldVector< Field, dimRange > RangeVector
    Definition monomialbasis.hh:622
    \n-
    virtual ~VirtualMonomialBasis()
    Definition monomialbasis.hh:628
    \n-
    virtual void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const =0
    \n-
    virtual void integrate(Field *const values) const =0
    \n-
    void evaluate(const DomainVector &x, Dune::FieldVector< Field, size > *const values) const
    Definition monomialbasis.hh:656
    \n-
    void evaluate(const DVector &x, RVector &values) const
    Definition monomialbasis.hh:689
    \n-
    GeometryType type() const
    Definition monomialbasis.hh:642
    \n-
    void evaluate(const DomainVector &x, Derivatives< Field, dimension, 1, deriv, layout > *values) const
    Definition monomialbasis.hh:662
    \n-
    VirtualMonomialBasis(const GeometryType &gt, unsigned int order)
    Definition monomialbasis.hh:624
    \n-
    virtual const unsigned int * sizes() const =0
    \n-
    void integrate(Vector &values) const
    Definition monomialbasis.hh:700
    \n-
    Definition monomialbasis.hh:712
    \n-
    void integrate(Field *const values) const
    Definition monomialbasis.hh:736
    \n-
    const unsigned int * sizes() const
    Definition monomialbasis.hh:725
    \n-
    Base::DomainVector DomainVector
    Definition monomialbasis.hh:719
    \n-
    Base::Field Field
    Definition monomialbasis.hh:718
    \n-
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:730
    \n-
    VirtualMonomialBasisImpl(unsigned int order)
    Definition monomialbasis.hh:721
    \n-
    Definition monomialbasis.hh:751
    \n-
    static void release(Object *object)
    Definition monomialbasis.hh:769
    \n-
    const VirtualMonomialBasis< dimension, F > Object
    Definition monomialbasis.hh:756
    \n-
    static Object * create(const Key &order)
    Definition monomialbasis.hh:765
    \n-
    F StorageField
    Definition monomialbasis.hh:753
    \n-
    static const unsigned int dimension
    Definition monomialbasis.hh:752
    \n-
    unsigned int Key
    Definition monomialbasis.hh:755
    \n-\n-
    MonomialBasisFactory< dd, FF > Type
    Definition monomialbasis.hh:761
    \n-
    Definition monomialbasis.hh:780
    \n-
    static const unsigned int dimension
    Definition monomialbasis.hh:781
    \n-
    SF StorageField
    Definition monomialbasis.hh:782
    \n-\n-
    MonomialBasisProvider< dd, FF > Type
    Definition monomialbasis.hh:786
    \n-
    Definition tensor.hh:180
    \n+
    Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.
    Definition localtoglobaladaptors.hh:244
    \n+
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:836
    \n+
    Factory for global-valued Q23D elements.
    Definition q2.hh:32
    \n+
    Q2FiniteElementFactory()
    default constructor
    Definition q2.hh:42
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,1112 +1,82 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-monomialbasis.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+q2.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_MONOMIALBASIS_HH\n-6#define DUNE_MONOMIALBASIS_HH\n+5#ifndef DUNE_Q2_LOCALFINITEELEMENT_HH\n+6#define DUNE_Q2_LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9\n-10#include \n-11#include \n-12\n-13#include \n-14#include \n-15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n-19\n-20namespace _\bD_\bu_\bn_\be\n-21{\n-22 /************************************************\n-23 * Classes for evaluating ''Monomials'' on any order\n-24 * for all reference element type.\n-25 * For a simplex topology these are the normal\n-26 * monomials for cube topologies the bimonomials.\n-27 * The construction follows the construction of the\n-28 * generic geometries using tensor products for\n-29 * prism generation and duffy transform for pyramid\n-30 * construction.\n-31 * A derivative argument can be applied, in which case\n-32 * all derivatives up to the desired order are\n-33 * evaluated. Note that for higher order derivatives\n-34 * only the ''lower'' part of the symmetric tensor\n-35 * is evaluated, e.g., passing derivative equal to 2\n-36 * to the class will provide the vector\n-37 * (d/dxdx p, d/dxydx p, d/dydy p,\n-38 * d/dx p, d/dy p, p)\n-39 * Important:\n-40 * So far the computation of the derivatives has not\n-41 * been fully implemented for general pyramid\n-42 * construction, i.e., in the case where a pyramid is\n-43 * build over a non simplex base geometry.\n-44 *\n-45 * Central classes:\n-46 * 1) template< GeometryType::Id geometryId, class F >\n-47 * class MonomialBasisImpl;\n-48 * Implementation of the monomial evaluation for\n-49 * a given topology and field type.\n-50 * The method evaluate fills a F* vector\n-51 * 2) template< GeometryType::Id geometryId, class F >\n-52 * class MonomialBasis\n-53 * The base class for the static monomial evaluation\n-54 * providing additional evaluate methods including\n-55 * one taking std::vector.\n-56 * 3) template< int dim, class F >\n-57 * class VirtualMonomialBasis\n-58 * Virtualization of the MonomialBasis.\n-59 * 4) template< int dim, class F >\n-60 * struct MonomialBasisFactory;\n-61 * A factory class for the VirtualMonomialBasis\n-62 * 5) template< int dim, class F >\n-63 * struct MonomialBasisProvider\n-64 * A singleton container for the virtual monomial\n-65 * basis\n-66 ************************************************/\n-67\n-68 // Internal Forward Declarations\n-69 // -----------------------------\n-70\n-71 template< GeometryType::Id geometryId >\n-72 class MonomialBasisSize;\n-73\n-74 template< GeometryType::Id geometryId, class F >\n-75 class MonomialBasis;\n-76\n-77\n-78\n-79 // MonomialBasisSize\n-80 // -----------------\n-81\n-82 template< GeometryType::Id geometryId >\n-_\b8_\b3 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be\n-84 {\n-85 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b _\b> _\bT_\bh_\bi_\bs;\n-86\n-87 public:\n-_\b8_\b8 static _\bT_\bh_\bi_\bs &_\bi_\bn_\bs_\bt_\ba_\bn_\bc_\be ()\n-89 {\n-90 static _\bT_\bh_\bi_\bs _instance;\n-91 return _instance;\n-92 }\n-93\n-_\b9_\b4 unsigned int _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_;\n-95\n-96 // sizes_[ k ]: number of basis functions of exactly order k\n-_\b9_\b7 mutable unsigned int *_\bs_\bi_\bz_\be_\bs_\b_;\n-98\n-99 // numBaseFunctions_[ k ] = sizes_[ 0 ] + ... + sizes_[ k ]\n-_\b1_\b0_\b0 mutable unsigned int *_\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_;\n-101\n-_\b1_\b0_\b2 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be ()\n-103 : _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_( 0 ),\n-104 _\bs_\bi_\bz_\be_\bs_\b_( 0 ),\n-105 _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_( 0 )\n-106 {\n-107 _\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs( 2 );\n-108 }\n-109\n-_\b1_\b1_\b0 _\b~_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be ()\n-111 {\n-112 delete[] _\bs_\bi_\bz_\be_\bs_\b_;\n-113 delete[] _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_;\n-114 }\n-115\n-_\b1_\b1_\b6 unsigned int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const unsigned int order ) const\n-117 {\n-118 return _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ order ];\n-119 }\n-120\n-_\b1_\b2_\b1 unsigned int _\bm_\ba_\bx_\bO_\br_\bd_\be_\br() const\n-122 {\n-123 return _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_;\n-124 }\n-125\n-_\b1_\b2_\b6 void _\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs ( unsigned int order )\n-127 {\n-128 if (order <= _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_)\n-129 return;\n-130\n-131 _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_ = order;\n-132\n-133 delete[] _\bs_\bi_\bz_\be_\bs_\b_;\n-134 delete[] _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_;\n-135 _\bs_\bi_\bz_\be_\bs_\b_ = new unsigned int[ order+1 ];\n-136 _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_ = new unsigned int[ order+1 ];\n-137\n-138 constexpr GeometryType geometry = geometryId;\n-139 constexpr auto dim = geometry.dim();\n-140\n-141 _\bs_\bi_\bz_\be_\bs_\b_[ 0 ] = 1;\n-142 for( unsigned int k = 1; k <= order; ++k )\n-143 _\bs_\bi_\bz_\be_\bs_\b_[ k ] = 0;\n-144\n-145 std::fill(_\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_, _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_+order+1, 1);\n-146\n-147 for( int codim=dim-1; codim>=0; codim--)\n-148 {\n-149 if (Impl::isPrism(geometry.id(),dim,codim))\n-150 {\n-151 for( unsigned int k = 1; k <= order; ++k )\n-152 {\n-153 _\bs_\bi_\bz_\be_\bs_\b_[ k ] = _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k ] + k*_\bs_\bi_\bz_\be_\bs_\b_[ k ];\n-154 _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k ] = _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k-1 ] + _\bs_\bi_\bz_\be_\bs_\b_[ k ];\n-155 }\n-156 }\n-157 else\n-158 {\n-159 for( unsigned int k = 1; k <= order; ++k )\n-160 {\n-161 _\bs_\bi_\bz_\be_\bs_\b_[ k ] = _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k ];\n-162 _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k ] = _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k-1 ] + _\bs_\bi_\bz_\be_\bs_\b_[ k ];\n-163 }\n-164 }\n-165 }\n-166 }\n-167 };\n-168\n-169\n-170\n-171 // MonomialBasisHelper\n-172 // -------------------\n-173\n-174\n-175 template< int mydim, int dim, class F >\n-_\b1_\b7_\b6 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br\n-177 {\n-_\b1_\b7_\b8 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be< GeometryTypes::simplex(mydim).toId() > _\bM_\by_\bS_\bi_\bz_\be;\n-_\b1_\b7_\b9 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be< GeometryTypes::simplex(dim).toId() > _\bS_\bi_\bz_\be;\n-180\n-_\b1_\b8_\b1 static void _\bc_\bo_\bp_\by ( const unsigned int deriv, F *&wit, F *&rit,\n-182 const unsigned int numBaseFunctions, const F &z )\n-183 {\n-184 // n(d,k) = size[d];\n-185 _\bM_\by_\bS_\bi_\bz_\be &mySize = _\bM_\by_\bS_\bi_\bz_\be_\b:_\b:_\bi_\bn_\bs_\bt_\ba_\bn_\bc_\be();\n-186 _\bS_\bi_\bz_\be &size = _\bS_\bi_\bz_\be_\b:_\b:_\bi_\bn_\bs_\bt_\ba_\bn_\bc_\be();\n-187\n-188 const F *const rend = rit + size( deriv )*numBaseFunctions;\n-189 for( ; rit != rend; )\n-190 {\n-191 F *prit = rit;\n-192\n-193 *wit = z * *rit;\n-194 ++rit, ++wit;\n-195\n-196 for( unsigned d = 1; d <= deriv; ++d )\n-197 {\n-198 #ifndef NDEBUG\n-199 const F *const derivEnd = rit + mySize._\bs_\bi_\bz_\be_\bs_\b_[ d ];\n-200 #endif\n-201\n-202 {\n-203 const F *const drend = rit + mySize._\bs_\bi_\bz_\be_\bs_\b_[ d ] - mySize._\bs_\bi_\bz_\be_\bs_\b_[ d-1 ];\n-204 for( ; rit != drend ; ++rit, ++wit )\n-205 *wit = z * *rit;\n-206 }\n-207\n-208 for (unsigned int j=1; j();\n-222 }\n-223 }\n-224 }\n-225 };\n-226\n-227\n-228\n-229 // MonomialBasisImpl\n-230 // -----------------\n-231\n-232 template< GeometryType::Id geometryId, class F>\n-_\b2_\b3_\b3 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n-234 {\n-235 public:\n-_\b2_\b3_\b6 typedef F _\bF_\bi_\be_\bl_\bd;\n-237\n-_\b2_\b3_\b8 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n-239\n-_\b2_\b4_\b0 static const unsigned int _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn = _\bg_\be_\bo_\bm_\be_\bt_\br_\by.dim();\n-241\n-_\b2_\b4_\b2 typedef FieldVector< Field, dimDomain > _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-243\n-244 private:\n-245 friend class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< geometryId, _\bF_\bi_\be_\bl_\bd >;\n-246\n-247 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl ()\n-248 {}\n-249\n-250 template< int dimD >\n-251 void evaluate ( const unsigned int deriv, const unsigned int order,\n-252 const FieldVector< Field, dimD > &x,\n-253 const unsigned int block, const unsigned int *const offsets,\n-254 _\bF_\bi_\be_\bl_\bd *const values ) const\n-255 {\n-256 //start with vertex\n-257 *values = _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\b _\b>();\n-258 F *const end = values + block;\n-259 for( _\bF_\bi_\be_\bl_\bd *it = values+1 ; it != end; ++it )\n-260 *it = _\bZ_\be_\br_\bo_\b<_\b _\bF_\b _\b>();\n-261\n-262 constexpr GeometryType gt = GeometryTypes::vertex;\n-263\n-264 if constexpr ( _\bg_\be_\bo_\bm_\be_\bt_\br_\by == gt)\n-265 return;\n-266 else\n-267 evaluate(deriv, order, x, block, offsets, values );\n-268 }\n-269\n-270 template\n-271 void evaluate ( const unsigned int deriv, const unsigned int order,\n-272 const FieldVector< Field, dimD > &x,\n-273 const unsigned int block, const unsigned int *const offsets,\n-274 _\bF_\bi_\be_\bl_\bd *const values ) const\n-275 {\n-276\n-277 static constexpr GeometryType baseGeometry = baseGeometryId;\n-278\n-279 auto constexpr isPrismatic = _\bg_\be_\bo_\bm_\be_\bt_\br_\by.isPrismatic(baseGeometry.dim());\n-280\n-281 // compute\n-282 typedef MonomialBasisHelper< baseGeometry.dim() + 1, dimD, _\bF_\bi_\be_\bl_\bd > Helper;\n-283 typedef MonomialBasisSize BaseSize;\n-284\n-285 const BaseSize &size = BaseSize::instance();\n-286 const_cast(size).computeSizes(order);\n-287\n-288 const _\bF_\bi_\be_\bl_\bd &z = x[ baseGeometry.dim() ];\n-289\n-290 _\bF_\bi_\be_\bl_\bd *row0 = values;\n-291 for( unsigned int k = 1; k <= order; ++k )\n-292 {\n-293 _\bF_\bi_\be_\bl_\bd *row1 = values + block*offsets[ k-1 ];\n-294 _\bF_\bi_\be_\bl_\bd *wit = row1 + block*size.sizes_[ k ];\n-295 if constexpr ( isPrismatic )\n-296 Helper::copy( deriv, wit, row1, k*size.sizes_[ k ], z );\n-297 Helper::copy( deriv, wit, row0, size( k-1 ), z );\n-298 row0 = row1;\n-299 }\n-300\n-301 // stop if desired dimension is reached\n-302 if constexpr( baseGeometry.dim() == _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn-1)\n-303 return;\n-304 else\n-305 {\n-306 constexpr GeometryType nextGeometry = isPrismatic ? GeometryTypes::\n-prismaticExtension(baseGeometry)\n-307 : GeometryTypes::conicalExtension(baseGeometry);\n-308\n-309 evaluate(deriv, order, x, block, offsets, values\n-);\n-310 }\n-311 }\n-312\n-313 void integrate ( const unsigned int order,\n-314 const unsigned int *const offsets,\n-315 _\bF_\bi_\be_\bl_\bd *const values ) const\n-316 {\n-317 //start with vertex\n-318 values[ 0 ] = Unity< Field >();\n-319 static constexpr GeometryType gt = GeometryTypes::vertex;\n-320\n-321 if constexpr ( _\bg_\be_\bo_\bm_\be_\bt_\br_\by == gt)\n-322 return;\n-323 else\n-324 integrate(order, offsets, values);\n-325 }\n-326\n-327 template\n-328 void integrate ( const unsigned int order,\n-329 const unsigned int *const offsets,\n-330 _\bF_\bi_\be_\bl_\bd *const values) const\n-331 {\n-332 static constexpr GeometryType baseGeometry = baseGeometryId;\n-333\n-334 auto constexpr isPrismatic = _\bg_\be_\bo_\bm_\be_\bt_\br_\by.isPrismatic(baseGeometry.dim());\n-335\n-336 // decide which kind of integration should be performed\n-337 if constexpr ( isPrismatic )\n-338 integratePrismatic(order, offsets, values);\n-339 else\n-340 integrateConical(order, offsets, values);\n-341\n-342 // stop if the desired dimension is reached\n-343 if constexpr( baseGeometry.dim() == _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn-1)\n-344 return;\n-345 else\n-346 {\n-347 static constexpr GeometryType nextGeometry = (isPrismatic ? GeometryTypes::\n-prismaticExtension(baseGeometry)\n-348 : GeometryTypes::conicalExtension(baseGeometry));\n-349\n-350 integrate(order, offsets, values);\n-351 }\n-352\n-353 }\n-354\n-355 template\n-356 void integratePrismatic ( const unsigned int order,\n-357 const unsigned int *const offsets,\n-358 _\bF_\bi_\be_\bl_\bd *const values ) const\n-359 {\n-360 typedef MonomialBasisSize BaseSize;\n-361 static const BaseSize &size = BaseSize::instance();\n-362 const unsigned int *const baseSizes = size.sizes_;\n-363\n-364 static constexpr GeometryType baseGeometry = baseGeometryId;\n-365 static constexpr GeometryType nextGeometry = GeometryTypes::\n-prismaticExtension(baseGeometry);\n-366\n-367 typedef MonomialBasisSize Size;\n-368 static const Size &mySize = Size::instance();\n-369\n-370 _\bF_\bi_\be_\bl_\bd *row0 = values;\n-371 for( unsigned int k = 1; k <= order; ++k )\n-372 {\n-373 _\bF_\bi_\be_\bl_\bd *const row1begin = values + offsets[ k-1 ];\n-374 _\bF_\bi_\be_\bl_\bd *const row1End = row1begin + mySize.sizes_[ k ];\n-375 assert( (unsigned int)(row1End - values) <= offsets[ k ] );\n-376\n-377 _\bF_\bi_\be_\bl_\bd *row1 = row1begin;\n-378 _\bF_\bi_\be_\bl_\bd *it = row1begin + baseSizes[ k ];\n-379 for( unsigned int j = 1; j <= k; ++j )\n-380 {\n-381 _\bF_\bi_\be_\bl_\bd *const end = it + baseSizes[ k ];\n-382 assert( (unsigned int)(end - values) <= offsets[ k ] );\n-383 for( ; it != end; ++row1, ++it )\n-384 *it = (_\bF_\bi_\be_\bl_\bd( j ) / _\bF_\bi_\be_\bl_\bd( j+1 )) * (*row1);\n-385 }\n-386 for( ; it != row1End; ++row0, ++it )\n-387 *it = (_\bF_\bi_\be_\bl_\bd( k ) / _\bF_\bi_\be_\bl_\bd( k+1 )) * (*row0);\n-388 row0 = row1;\n-389 }\n-390 }\n-391\n-392\n-393 template\n-394 void integrateConical ( const unsigned int order,\n-395 const unsigned int *const offsets,\n-396 _\bF_\bi_\be_\bl_\bd *const values) const\n-397 {\n-398 typedef MonomialBasisSize BaseSize;\n-399 static const BaseSize &size = BaseSize::instance();\n-400 const unsigned int *const baseSizes = size.sizes_;\n-401\n-402 static constexpr GeometryType baseGeometry = baseGeometryId;\n-403\n-404 {\n-405 _\bF_\bi_\be_\bl_\bd *const col0End = values + baseSizes[ 0 ];\n-406 for( _\bF_\bi_\be_\bl_\bd *it = values; it != col0End; ++it )\n-407 *it *= _\bF_\bi_\be_\bl_\bd( 1 ) / _\bF_\bi_\be_\bl_\bd( int(baseGeometry.dim()+1) );\n-408 }\n-409\n-410 _\bF_\bi_\be_\bl_\bd *row0 = values;\n-411 for( unsigned int k = 1; k <= order; ++k )\n-412 {\n-413 const _\bF_\bi_\be_\bl_\bd factor = (_\bF_\bi_\be_\bl_\bd( 1 ) / _\bF_\bi_\be_\bl_\bd( k + baseGeometry.dim()+1));\n-414\n-415 _\bF_\bi_\be_\bl_\bd *const row1 = values+offsets[ k-1 ];\n-416 _\bF_\bi_\be_\bl_\bd *const col0End = row1 + baseSizes[ k ];\n-417 _\bF_\bi_\be_\bl_\bd *it = row1;\n-418 for( ; it != col0End; ++it )\n-419 *it *= factor;\n-420 for( unsigned int i = 1; i <= k; ++i )\n-421 {\n-422 _\bF_\bi_\be_\bl_\bd *const end = it + baseSizes[ k-i ];\n-423 assert( (unsigned int)(end - values) <= offsets[ k ] );\n-424 for( ; it != end; ++row0, ++it )\n-425 *it = (*row0) * (_\bF_\bi_\be_\bl_\bd( i ) * factor);\n-426 }\n-427 row0 = row1;\n-428 }\n-429 }\n-430\n-431 };\n-432\n-433\n-434 // MonomialBasis\n-435 // -------------\n-436\n-437 template< GeometryType::Id geometryId, class F >\n-_\b4_\b3_\b8 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-439 : public _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl< geometryId, F >\n-440 {\n-441 static constexpr GeometryType geometry = geometryId;\n-442 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n-443 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b> _\bB_\ba_\bs_\be;\n-444\n-445 public:\n-_\b4_\b4_\b6 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn;\n-_\b4_\b4_\b7 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = 1;\n-448\n-_\b4_\b4_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd _\bF_\bi_\be_\bl_\bd;\n-450\n-_\b4_\b5_\b1 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-452\n-_\b4_\b5_\b3 typedef Dune::FieldVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n-454\n-_\b4_\b5_\b5 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b> _\bS_\bi_\bz_\be;\n-456\n-_\b4_\b5_\b7 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int _\bo_\br_\bd_\be_\br)\n-458 : _\bB_\ba_\bs_\be(),\n-459 order_(_\bo_\br_\bd_\be_\br),\n-460 size_(_\bS_\bi_\bz_\be::instance())\n-461 {\n-462 assert(_\bo_\br_\bd_\be_\br<=1024); // avoid wrapping of unsigned int (0-1) order=1024 is\n-quite high...)\n-463 }\n-464\n-_\b4_\b6_\b5 const unsigned int *_\bs_\bi_\bz_\be_\bs ( unsigned int _\bo_\br_\bd_\be_\br ) const\n-466 {\n-467 size_._\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs( _\bo_\br_\bd_\be_\br );\n-468 return size_._\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_;\n-469 }\n-470\n-_\b4_\b7_\b1 const unsigned int *_\bs_\bi_\bz_\be_\bs () const\n-472 {\n-473 return _\bs_\bi_\bz_\be_\bs( order_ );\n-474 }\n-475\n-_\b4_\b7_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-477 {\n-478 size_._\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs( order_ );\n-479 return size_( order_ );\n-480 }\n-481\n-_\b4_\b8_\b2 unsigned int _\bd_\be_\br_\bi_\bv_\bS_\bi_\bz_\be ( const unsigned int deriv ) const\n-483 {\n-484 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be< GeometryTypes::simplex(_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn).toId() >::instance\n-()._\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs( deriv );\n-485 return _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be< GeometryTypes::simplex(_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn).toId() >::\n-instance() ( deriv );\n-486 }\n-487\n-_\b4_\b8_\b8 unsigned int _\bo_\br_\bd_\be_\br () const\n-489 {\n-490 return order_ ;\n-491 }\n-492\n-_\b4_\b9_\b3 unsigned int _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd ( ) const\n-494 {\n-495 return geometry.id();\n-496 }\n-497\n-_\b4_\b9_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const unsigned int deriv, const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-499 _\bF_\bi_\be_\bl_\bd *const values ) const\n-500 {\n-501 Base::evaluate( deriv, order_, x, _\bd_\be_\br_\bi_\bv_\bS_\bi_\bz_\be( deriv ), _\bs_\bi_\bz_\be_\bs( order_ ),\n-values );\n-502 }\n-503\n-504 template \n-_\b5_\b0_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-506 _\bF_\bi_\be_\bl_\bd *const values ) const\n-507 {\n-508 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( deriv, x, values );\n-509 }\n-510\n-511 template\n-_\b5_\b1_\b2 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-513 Vector &values ) const\n-514 {\n-515 evaluate(x,&(values[0]));\n-516 }\n-517 template\n-_\b5_\b1_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-519 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> *values ) const\n-520 {\n-521 evaluate(x,&(values->block()));\n-522 }\n-523 template< unsigned int deriv >\n-_\b5_\b2_\b4 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-525 FieldVector<_\bF_\bi_\be_\bl_\bd,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b>_\b:_\b:_\bs_\bi_\bz_\be> *values ) const\n-526 {\n-527 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(0,x,&(values[0][0]));\n-528 }\n-529\n-530 template\n-_\b5_\b3_\b1 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-532 Vector &values ) const\n-533 {\n-534 evaluate<0>(x,&(values[0]));\n-535 }\n-536\n-537 template< class DVector, class RVector >\n-_\b5_\b3_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n-539 {\n-540 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-541 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n-542 for( int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n-543 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n-544 evaluate<0>( bx, values );\n-545 }\n-546\n-_\b5_\b4_\b7 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( _\bF_\bi_\be_\bl_\bd *const values ) const\n-548 {\n-549 Base::integrate( order_, _\bs_\bi_\bz_\be_\bs( order_ ), values );\n-550 }\n-551 template \n-_\b5_\b5_\b2 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( Vector &values ) const\n-553 {\n-554 _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be( &(values[ 0 ]) );\n-555 }\n-556 private:\n-557 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs(const This&);\n-558 This& operator=(const This&);\n-559 unsigned int order_;\n-560 _\bS_\bi_\bz_\be &size_;\n-561 };\n-562\n-563\n-564\n-565 // StdMonomialBasis\n-566 // ----------------\n-567\n-568 template< int dim,class F >\n-_\b5_\b6_\b9 class _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-570 : public _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< GeometryTypes::simplex(dim).toId() , F >\n-571 {\n-572 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n-573 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< GeometryTypes::simplex(dim).toId(), F > _\bB_\ba_\bs_\be;\n-574\n-575 public:\n-_\b5_\b7_\b6 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = GeometryTypes::simplex(dim);\n-_\b5_\b7_\b7 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-578\n-_\b5_\b7_\b9 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs ( unsigned int _\bo_\br_\bd_\be_\br )\n-580 : _\bB_\ba_\bs_\be( _\bo_\br_\bd_\be_\br )\n-581 {}\n-582 };\n-583\n-584\n-585\n-586 // StandardBiMonomialBasis\n-587 // -----------------------\n-588\n-589 template< int dim, class F >\n-_\b5_\b9_\b0 class _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-591 : public _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< GeometryTypes::cube(dim).toId() , F >\n-592 {\n-593 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n-594 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< GeometryTypes::cube(dim).toId() , F > _\bB_\ba_\bs_\be;\n-595\n-596 public:\n-_\b5_\b9_\b7 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = GeometryTypes::cube(dim);\n-_\b5_\b9_\b8 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-599\n-_\b6_\b0_\b0 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs ( unsigned int _\bo_\br_\bd_\be_\br )\n-601 : _\bB_\ba_\bs_\be( _\bo_\br_\bd_\be_\br )\n-602 {}\n-603 };\n-604\n-605 // -----------------------------------------------------------\n-606 // -----------------------------------------------------------\n-607 // VirtualMonomialBasis\n-608 // -------------------\n-609\n-610 template< int dim, class F >\n-_\b6_\b1_\b1 class _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-612 {\n-613 typedef _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n-614\n-615 public:\n-_\b6_\b1_\b6 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b6_\b1_\b7 typedef F _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-_\b6_\b1_\b8 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-_\b6_\b1_\b9 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = 1;\n-620\n-_\b6_\b2_\b1 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-_\b6_\b2_\b2 typedef FieldVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n-623\n-_\b6_\b2_\b4 explicit _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs(const GeometryType& gt,\n-625 unsigned int _\bo_\br_\bd_\be_\br)\n-626 : _\bo_\br_\bd_\be_\br_\b_(_\bo_\br_\bd_\be_\br), _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b_(gt) {}\n-627\n-_\b6_\b2_\b8 virtual _\b~_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs() {}\n-629\n-_\b6_\b3_\b0 virtual const unsigned int *_\bs_\bi_\bz_\be_\bs ( ) const = 0;\n-631\n-_\b6_\b3_\b2 unsigned int _\bs_\bi_\bz_\be ( ) const\n-633 {\n-634 return _\bs_\bi_\bz_\be_\bs( )[ _\bo_\br_\bd_\be_\br_\b_ ];\n-635 }\n-636\n-_\b6_\b3_\b7 unsigned int _\bo_\br_\bd_\be_\br () const\n-638 {\n-639 return _\bo_\br_\bd_\be_\br_\b_;\n-640 }\n-641\n-_\b6_\b4_\b2 GeometryType _\bt_\by_\bp_\be() const\n-643 {\n-644 return _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b_;\n-645 }\n-646\n-_\b6_\b4_\b7 virtual void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const unsigned int deriv, const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-648 _\bF_\bi_\be_\bl_\bd *const values ) const = 0;\n-649 template < unsigned int deriv >\n-_\b6_\b5_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-651 _\bF_\bi_\be_\bl_\bd *const values ) const\n-652 {\n-653 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( deriv, x, values );\n-654 }\n-655 template < unsigned int deriv, int size >\n-_\b6_\b5_\b6 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-657 Dune::FieldVector *const values ) const\n-658 {\n-659 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( deriv, x, &(values[0][0]) );\n-660 }\n-661 template\n-_\b6_\b6_\b2 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-663 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> *values ) const\n-664 {\n-665 evaluate(x,&(values->block()));\n-666 }\n-667 template \n-_\b6_\b6_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-669 Vector &values ) const\n-670 {\n-671 evaluate( x, &(values[ 0 ]) );\n-672 }\n-673 template< class Vector >\n-_\b6_\b7_\b4 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-675 Vector &values ) const\n-676 {\n-677 evaluate<0>(x,values);\n-678 }\n-679 template< class DVector, class RVector >\n-_\b6_\b8_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n-681 {\n-682 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-683 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n-684 for( int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n-685 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n-686 evaluate<0>( bx, values );\n-687 }\n-688 template< unsigned int deriv, class DVector, class RVector >\n-_\b6_\b8_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n-690 {\n-691 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n-692 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n-693 for( int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n-694 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n-695 evaluate( bx, values );\n-696 }\n-697\n-_\b6_\b9_\b8 virtual void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( _\bF_\bi_\be_\bl_\bd *const values ) const = 0;\n-699 template \n-_\b7_\b0_\b0 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( Vector &values ) const\n-701 {\n-702 _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be( &(values[ 0 ]) );\n-703 }\n-704 protected:\n-_\b7_\b0_\b5 unsigned int _\bo_\br_\bd_\be_\br_\b_;\n-_\b7_\b0_\b6 GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b_;\n-707 };\n-708\n-709 template< GeometryType::Id geometryId, class F >\n-_\b7_\b1_\b0 class _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n-711 : public _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< static_cast(geometryId).dim(),\n-F >\n-712 {\n-713 static constexpr GeometryType geometry = geometryId;\n-714 typedef _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< geometry.dim(), F > _\bB_\ba_\bs_\be;\n-715 typedef _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n-716\n-717 public:\n-_\b7_\b1_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd _\bF_\bi_\be_\bl_\bd;\n-_\b7_\b1_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-720\n-_\b7_\b2_\b1 _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl(unsigned int _\bo_\br_\bd_\be_\br)\n-722 : _\bB_\ba_\bs_\be(geometry,_\bo_\br_\bd_\be_\br), basis_(_\bo_\br_\bd_\be_\br)\n-723 {}\n-724\n-_\b7_\b2_\b5 const unsigned int *_\bs_\bi_\bz_\be_\bs ( ) const\n-726 {\n-727 return basis_._\bs_\bi_\bz_\be_\bs(order_);\n-728 }\n-729\n-_\b7_\b3_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const unsigned int deriv, const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n-731 _\bF_\bi_\be_\bl_\bd *const values ) const\n-732 {\n-733 basis_._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(deriv,x,values);\n-734 }\n-735\n-_\b7_\b3_\b6 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( _\bF_\bi_\be_\bl_\bd *const values ) const\n-737 {\n-738 basis_._\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be(values);\n-739 }\n-740\n-741 private:\n-742 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bF_\bi_\be_\bl_\bd_\b> basis_;\n-743 using _\bB_\ba_\bs_\be_\b:_\b:_\bo_\br_\bd_\be_\br_\b_;\n-744 };\n-745\n-746 // MonomialBasisFactory\n-747 // --------------------\n-748\n-749 template< int dim, class F >\n-_\b7_\b5_\b0 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-751 {\n-_\b7_\b5_\b2 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-_\b7_\b5_\b3 typedef F _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-754\n-_\b7_\b5_\b5 typedef unsigned int _\bK_\be_\by;\n-_\b7_\b5_\b6 typedef const _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b> _\bO_\bb_\bj_\be_\bc_\bt;\n-757\n-758 template < int dd, class FF >\n-_\b7_\b5_\b9 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-760 {\n-_\b7_\b6_\b1 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n-762 };\n-763\n-764 template< GeometryType::Id geometryId >\n-_\b7_\b6_\b5 static _\bO_\bb_\bj_\be_\bc_\bt* _\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &order )\n-766 {\n-767 return new _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd_\b _\b>( order );\n-768 }\n-_\b7_\b6_\b9 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-770 };\n-771\n-772\n-773\n-774 // MonomialBasisProvider\n-775 // ---------------------\n-776\n-777 template< int dim, class SF >\n-_\b7_\b7_\b8 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-779 : public TopologySingletonFactory< MonomialBasisFactory< dim, SF > >\n-780 {\n-_\b7_\b8_\b1 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-_\b7_\b8_\b2 typedef SF _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-783 template < int dd, class FF >\n-_\b7_\b8_\b4 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-785 {\n-_\b7_\b8_\b6 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n-787 };\n-788 };\n-789\n-790}\n-791\n-792#endif\n-_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n-_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+8#include \n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+20\n+25 template\n+_\b2_\b6 class _\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by :\n+27 public _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by<\n+28 typename std::conditional,\n+30 LagrangeCubeLocalFiniteElement >::type,\n+31 Geometry>\n+32 {\n+33 typedef typename std::conditional,\n+35 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bc_\bt_\by_\bp_\be_\b,_\b _\bR_\bF_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:\n+_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\b2_\b> >::type LFE;\n+36 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bL_\bF_\bE_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bB_\ba_\bs_\be;\n+37\n+38 static const LFE lfe;\n+39\n+40 public:\n+_\b4_\b2 _\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by() : _\bB_\ba_\bs_\be(lfe) {}\n+43 };\n+44\n+45 template\n+46 const typename Q2FiniteElementFactory::LFE\n+47 Q2FiniteElementFactory::lfe;\n+48}\n+49\n+50#endif\n+_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by\n-A class representing the unit of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n-A class representing the zero of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_\n-unsigned int * numBaseFunctions_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs\n-void computeSizes(unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:126\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bs_\bi_\bz_\be_\bs_\b_\n-unsigned int * sizes_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be\n-MonomialBasisSize()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\b~_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be\n-~MonomialBasisSize()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-unsigned int operator()(const unsigned int order) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:116\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_\n-unsigned int maxOrder_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bm_\ba_\bx_\bO_\br_\bd_\be_\br\n-unsigned int maxOrder() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bi_\bn_\bs_\bt_\ba_\bn_\bc_\be\n-static This & instance()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:440\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:476\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:446\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-Dune::FieldVector< Field, dimRange > RangeVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:453\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n-values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:498\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n-const unsigned int * sizes() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:471\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd\n-unsigned int topologyId() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:493\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n-void integrate(Vector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:552\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-Base::Field Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:449\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n-void integrate(Field *const values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:547\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const unsigned int dimRange\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:447\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n-Base::DomainVector DomainVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:451\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, Field *const values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:505\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, Vector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:531\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, FieldVector< Field, Derivatives< Field,\n-dimension, 1, deriv, DerivativeLayoutNS::value >::size > *values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:524\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, Derivatives< Field, dimension, 1, deriv,\n-layout > *values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:518\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DVector &x, RVector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:538\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bi_\bz_\be\n-MonomialBasisSize< geometryId > Size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:455\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, Vector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:512\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-MonomialBasis(unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:457\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\be_\br_\bi_\bv_\bS_\bi_\bz_\be\n-unsigned int derivSize(const unsigned int deriv) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:482\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n-const unsigned int * sizes(unsigned int order) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:465\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:488\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bS_\bi_\bz_\be\n-MonomialBasisSize< GeometryTypes::simplex(dim).toId() > Size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:179\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bc_\bo_\bp_\by\n-static void copy(const unsigned int deriv, F *&wit, F *&rit, const unsigned int\n-numBaseFunctions, const F &z)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:181\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bM_\by_\bS_\bi_\bz_\be\n-MonomialBasisSize< GeometryTypes::simplex(mydim).toId() > MySize\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:178\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:234\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< Field, dimDomain > DomainVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:242\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-static constexpr GeometryType geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:238\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n-static const unsigned int dimDomain\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:571\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-static constexpr GeometryType geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:576\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-StandardMonomialBasis(unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:579\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:577\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:592\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:598\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-static constexpr GeometryType geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:597\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-StandardBiMonomialBasis(unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:600\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:612\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b_\n-GeometryType geometry_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:706\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< Field, dimension > DomainVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:621\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n-unsigned int order_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:705\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, Vector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:674\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, Field *const values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:650\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:616\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, Vector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:668\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DVector &x, RVector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:680\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:637\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const unsigned int dimRange\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:619\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n-F StorageField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:617\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:618\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:632\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n-FieldVector< Field, dimRange > RangeVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:622\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\b~_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-virtual ~VirtualMonomialBasis()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:628\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-virtual void evaluate(const unsigned int deriv, const DomainVector &x, Field\n-*const values) const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n-virtual void integrate(Field *const values) const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, Dune::FieldVector< Field, size > *const\n-values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:656\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DVector &x, RVector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:689\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:642\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const DomainVector &x, Derivatives< Field, dimension, 1, deriv,\n-layout > *values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:662\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-VirtualMonomialBasis(const GeometryType >, unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:624\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n-virtual const unsigned int * sizes() const =0\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n-void integrate(Vector &values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:700\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:712\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n-void integrate(Field *const values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:736\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bs_\bi_\bz_\be_\bs\n-const unsigned int * sizes() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:725\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n-Base::DomainVector DomainVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:719\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-Base::Field Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:718\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n-values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:730\n-_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n-VirtualMonomialBasisImpl(unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:721\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:751\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:769\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const VirtualMonomialBasis< dimension, F > Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:756\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:765\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n-F StorageField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:753\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:752\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-unsigned int Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:755\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:760\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n-MonomialBasisFactory< dd, FF > Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:761\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:780\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:781\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n-SF StorageField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:782\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:785\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n-MonomialBasisProvider< dd, FF > Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:786\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:180\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:244\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for cubes with arbitrary compile-time dimension and\n+polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for simplices with arbitrary compile-time dimension and\n+polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:836\n+_\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for global-valued Q23D elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn q2.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\b2_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Q2FiniteElementFactory()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn q2.hh:42\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dglocalcoefficients.hh File Reference\n+dune-localfunctions: p0.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    dglocalcoefficients.hh File Reference
    \n+
    p0.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+
    #include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include "p0/p0localbasis.hh"
    \n+#include "p0/p0localcoefficients.hh"
    \n+#include "p0/p0localinterpolation.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::DGLocalCoefficients
     A class providing local coefficients for dg spaces. More...
     
    struct  Dune::DGLocalCoefficientsFactory< BasisFactory >
     A factory class for the dg local coefficients. More...
    class  Dune::P0LocalFiniteElement< D, R, d >
     The local p0 finite element on all types of reference elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dglocalcoefficients.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+p0.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 A class providing local coefficients for dg spaces. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b _\b>\n-\u00a0 A factory class for the dg local coefficients. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n+\u00a0 The local p0 finite element on all types of reference elements. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dglocalcoefficients.hh Source File\n+dune-localfunctions: p0.hh Source File\n \n \n \n \n \n \n \n@@ -70,117 +70,118 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dglocalcoefficients.hh
    \n+
    p0.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_DGLOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_DGLOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_P0LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_P0LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <cassert>
    \n-
    9#include <vector>
    \n-
    10
    \n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    16 // DGLocalCoefficients
    \n-
    17 // -------------------
    \n-
    18
    \n-
    \n-\n-
    23 {
    \n-\n-
    25
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n+
    11#include "p0/p0localbasis.hh"
    \n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17
    \n+
    23 template<class D, class R, int d>
    \n+
    \n+\n+
    25 {
    \n
    26 public:
    \n-
    \n-
    28 DGLocalCoefficients ( const unsigned int n )
    \n-
    29 : localKey_( n )
    \n-
    30 {
    \n-
    31 for( unsigned i = 0; i < n; ++i )
    \n-
    32 localKey_[ i ] = LocalKey( 0, 0, i );
    \n-
    33 }
    \n-
    \n-
    34
    \n-
    \n-
    35 const LocalKey &localKey ( const unsigned int i ) const
    \n-
    36 {
    \n-
    37 assert( i < size() );
    \n-
    38 return localKey_[ i ];
    \n-
    39 }
    \n-
    \n-
    40
    \n-
    \n-
    41 unsigned int size () const
    \n-
    42 {
    \n-
    43 return localKey_.size();
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    46 private:
    \n-
    47 std::vector< LocalKey > localKey_;
    \n-
    48 };
    \n+\n+\n+
    31
    \n+
    \n+
    34 P0LocalFiniteElement (const GeometryType& type)
    \n+
    35 : interpolation(type), gt(type)
    \n+
    36 {}
    \n+
    \n+
    37
    \n+
    \n+
    40 const typename Traits::LocalBasisType& localBasis () const
    \n+
    41 {
    \n+
    42 return basis;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+\n+
    48 {
    \n+
    49 return coefficients;
    \n+
    50 }
    \n
    \n-
    49
    \n-
    50
    \n
    51
    \n-
    52 // DGLocalCoefficientsFactory
    \n-
    53 // --------------------------
    \n-
    57 template< class BasisFactory >
    \n-
    \n-\n-
    59 {
    \n-
    60 static const unsigned int dimension = BasisFactory::dimension;
    \n-
    61 typedef typename BasisFactory::Key Key;
    \n-\n-
    63
    \n-
    64 template< GeometryType::Id geometryId >
    \n-
    \n-
    65 static Object *create ( const Key &key )
    \n-
    66 {
    \n-
    67 const typename BasisFactory::Object *basis
    \n-
    68 = BasisFactory::template create< geometryId >( key );
    \n-
    69 Object *coefficients = new Object( basis->size() );
    \n-
    70 BasisFactory::release( basis );
    \n-
    71 return coefficients;
    \n-
    72 }
    \n-
    \n-
    73 static void release( Object *object ) { delete object; }
    \n-
    74 };
    \n-
    \n-
    75
    \n-
    76}
    \n-
    77
    \n-
    78#endif // #ifndef DUNE_DGLOCALCOEFFICIENTS_HH
    \n-\n+
    \n+\n+
    55 {
    \n+
    56 return interpolation;
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+
    60 unsigned int size () const
    \n+
    61 {
    \n+
    62 return 1;
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    \n+
    67 GeometryType type () const
    \n+
    68 {
    \n+
    69 return gt;
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    72 private:
    \n+\n+
    74 P0LocalCoefficients coefficients;
    \n+\n+
    76 GeometryType gt;
    \n+
    77 };
    \n+
    \n+
    78
    \n+
    79}
    \n+
    80
    \n+
    81#endif
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    A class providing local coefficients for dg spaces.
    Definition dglocalcoefficients.hh:23
    \n-
    unsigned int size() const
    Definition dglocalcoefficients.hh:41
    \n-
    const LocalKey & localKey(const unsigned int i) const
    Definition dglocalcoefficients.hh:35
    \n-
    DGLocalCoefficients(const unsigned int n)
    construct local keys for n basis functions
    Definition dglocalcoefficients.hh:28
    \n-
    A factory class for the dg local coefficients.
    Definition dglocalcoefficients.hh:59
    \n-
    static void release(Object *object)
    Definition dglocalcoefficients.hh:73
    \n-
    const DGLocalCoefficients Object
    Definition dglocalcoefficients.hh:62
    \n-
    static Object * create(const Key &key)
    Definition dglocalcoefficients.hh:65
    \n-
    BasisFactory::Key Key
    Definition dglocalcoefficients.hh:61
    \n-
    static const unsigned int dimension
    Definition dglocalcoefficients.hh:60
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    The local p0 finite element on all types of reference elements.
    Definition p0.hh:25
    \n+
    P0LocalFiniteElement(const GeometryType &type)
    Definition p0.hh:34
    \n+
    unsigned int size() const
    The number of shape functions \u2013 here: 1.
    Definition p0.hh:60
    \n+
    GeometryType type() const
    Definition p0.hh:67
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition p0.hh:40
    \n+
    LocalFiniteElementTraits< P0LocalBasis< D, R, d >, P0LocalCoefficients, P0LocalInterpolation< P0LocalBasis< D, R, d > > > Traits
    Definition p0.hh:30
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition p0.hh:47
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition p0.hh:54
    \n+
    Definition p0localbasis.hh:31
    \n+
    Definition p0localcoefficients.hh:25
    \n+
    Definition p0localinterpolation.hh:20
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,120 +1,125 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-dglocalcoefficients.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+p0.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_DGLOCALCOEFFICIENTS_HH\n-6#define DUNE_DGLOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_P0LOCALFINITEELEMENT_HH\n+6#define DUNE_P0LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-16 // DGLocalCoefficients\n-17 // -------------------\n-18\n-_\b2_\b2 class _\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-23 {\n-24 typedef _\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs _\bT_\bh_\bi_\bs;\n-25\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\bp_\b0_\b/_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17\n+23 template\n+_\b2_\b4 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+25 {\n 26 public:\n-_\b2_\b8 _\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs ( const unsigned int n )\n-29 : localKey_( n )\n-30 {\n-31 for( unsigned i = 0; i < n; ++i )\n-32 localKey_[ i ] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( 0, 0, i );\n-33 }\n-34\n-_\b3_\b5 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by ( const unsigned int i ) const\n-36 {\n-37 assert( i < _\bs_\bi_\bz_\be() );\n-38 return localKey_[ i ];\n-39 }\n-40\n-_\b4_\b1 unsigned int _\bs_\bi_\bz_\be () const\n-42 {\n-43 return localKey_.size();\n-44 }\n-45\n-46 private:\n-47 std::vector< LocalKey > localKey_;\n-48 };\n-49\n-50\n+29 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b>, _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b0 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+31\n+_\b3_\b4 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (const GeometryType& _\bt_\by_\bp_\be)\n+35 : interpolation(_\bt_\by_\bp_\be), gt(_\bt_\by_\bp_\be)\n+36 {}\n+37\n+_\b4_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+41 {\n+42 return basis;\n+43 }\n+44\n+_\b4_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+48 {\n+49 return coefficients;\n+50 }\n 51\n-52 // DGLocalCoefficientsFactory\n-53 // --------------------------\n-57 template< class BasisFactory >\n-_\b5_\b8 struct _\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-59 {\n-_\b6_\b0 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = BasisFactory::dimension;\n-_\b6_\b1 typedef typename BasisFactory::Key _\bK_\be_\by;\n-_\b6_\b2 typedef const _\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n-63\n-64 template< GeometryType::Id geometryId >\n-_\b6_\b5 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n-66 {\n-67 const typename BasisFactory::Object *basis\n-68 = BasisFactory::template create< geometryId >( key );\n-69 _\bO_\bb_\bj_\be_\bc_\bt *coefficients = new _\bO_\bb_\bj_\be_\bc_\bt( basis->size() );\n-70 BasisFactory::release( basis );\n-71 return coefficients;\n-72 }\n-_\b7_\b3 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-74 };\n-75\n-76}\n-77\n-78#endif // #ifndef DUNE_DGLOCALCOEFFICIENTS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+55 {\n+56 return interpolation;\n+57 }\n+58\n+_\b6_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+61 {\n+62 return 1;\n+63 }\n+64\n+_\b6_\b7 GeometryType _\bt_\by_\bp_\be () const\n+68 {\n+69 return gt;\n+70 }\n+71\n+72 private:\n+73 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b> basis;\n+74 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+75 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b> > interpolation;\n+76 GeometryType gt;\n+77 };\n+78\n+79}\n+80\n+81#endif\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-A class providing local coefficients for dg spaces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+The local p0 finite element on all types of reference elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+P0LocalFiniteElement(const GeometryType &type)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(const unsigned int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-DGLocalCoefficients(const unsigned int n)\n-construct local keys for n basis functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-A factory class for the dg local coefficients.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const DGLocalCoefficients Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-BasisFactory::Key Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:60\n+The number of shape functions \u00e2\u0080\u0093 here: 1.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< P0LocalBasis< D, R, d >, P0LocalCoefficients,\n+P0LocalInterpolation< P0LocalBasis< D, R, d > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localinterpolation.hh:20\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: field.hh File Reference\n+dune-localfunctions: p0localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,128 +65,38 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    field.hh File Reference
    \n+Namespaces
    \n+
    p0localinterpolation.hh File Reference
    \n \n
    \n-
    #include <dune/common/gmpfield.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n+
    #include <vector>
    \n+#include <dune/geometry/referenceelements.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n \n

    \n Classes

    struct  Dune::Unity< Field >
     A class representing the unit of a given Field. More...
     
    struct  Dune::Zero< Field >
     A class representing the zero of a given Field. More...
     
    struct  Dune::FieldCast< F2, V >
     
    struct  Dune::FieldCast< F2, Dune::FieldVector< F1, dim > >
     
    struct  Dune::FieldCast< F2, Dune::FieldMatrix< F1, dim1, dim2 > >
     
    struct  Dune::Precision< double >
     
    struct  Dune::Precision< long double >
     
    struct  Dune::Precision< float >
     
    struct  Dune::ComputeField< Field, sum >
    class  Dune::P0LocalInterpolation< LB >
     
    \n \n \n \n-

    \n Namespaces

    namespace  Dune
     
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n

    \n-Functions

    template<class Field >
    Field Dune::operator+ (const Unity< Field > &u, const Field &f)
     
    template<class Field >
    Field Dune::operator- (const Unity< Field > &u, const Field &f)
     
    template<class Field >
    Field Dune::operator* (const Unity< Field > &u, const Field &f)
     
    template<class Field >
    Field Dune::operator/ (const Unity< Field > &u, const Field &f)
     
    template<class Field >
    bool Dune::operator== (const Zero< Field > &, const Field &f)
     
    template<class Field >
    bool Dune::operator== (const Field &f, const Zero< Field > &z)
     
    template<class Field >
    bool Dune::operator< (const Zero< Field > &, const Field &f)
     
    template<class Field >
    bool Dune::operator< (const Field &f, const Zero< Field > &)
     
    template<class Field >
    bool Dune::operator> (const Zero< Field > &z, const Field &f)
     
    template<class Field >
    bool Dune::operator> (const Field &f, const Zero< Field > &z)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const F1 &f1, F2 &f2)
     a helper class to cast from one field to another
     
    template<class F2 , class F1 , int dim>
    void Dune::field_cast (const Dune::FieldVector< F1, dim > &f1, Dune::FieldVector< F2, dim > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldVector< F1, 1 > &f1, F2 &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const F1 &f1, Dune::FieldVector< F2, 1 > &f2)
     
    template<class F2 , class F1 , int rdim, int cdim>
    void Dune::field_cast (const Dune::FieldMatrix< F1, rdim, cdim > &f1, Dune::FieldMatrix< F2, rdim, cdim > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldMatrix< F1, 1, 1 > &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldMatrix< F1, 1, 1 > &f1, F2 &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const F1 &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldVector< F1, 1 > &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldMatrix< F1, 1, 1 > &f1, Dune::FieldVector< F2, 1 > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldVector< F1, 1 > &f1, Dune::FieldVector< F2, 1 > &f2)
     
    template<class F2 , class V >
    FieldCast< F2, V >::type Dune::field_cast (const V &f1)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,127 +1,21 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-field.hh File Reference\n-#include \n-#include \n-#include \n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bp_\b0\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+p0localinterpolation.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0 A class representing the unit of a given Field. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0 A class representing the zero of a given Field. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bV_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\b1_\b,_\b _\bd_\bi_\bm_\b2_\b _\b>_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b<_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b<_\b _\bl_\bo_\bn_\bg_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b<_\b _\bf_\bl_\bo_\ba_\bt_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bs_\bu_\bm_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n- Field\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+ (const _\bU_\bn_\bi_\bt_\by< Field > &u, const Field\n- &f)\n-\u00a0\n-template\n- Field\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b- (const _\bU_\bn_\bi_\bt_\by< Field > &u, const Field\n- &f)\n-\u00a0\n-template\n- Field\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b* (const _\bU_\bn_\bi_\bt_\by< Field > &u, const Field\n- &f)\n-\u00a0\n-template\n- Field\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/ (const _\bU_\bn_\bi_\bt_\by< Field > &u, const Field\n- &f)\n-\u00a0\n-template\n- bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b= (const _\bZ_\be_\br_\bo< Field > &, const Field\n- &f)\n-\u00a0\n-template\n- bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b= (const Field &f, const _\bZ_\be_\br_\bo< Field >\n- &z)\n-\u00a0\n-template\n- bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b< (const _\bZ_\be_\br_\bo< Field > &, const Field\n- &f)\n-\u00a0\n-template\n- bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b< (const Field &f, const _\bZ_\be_\br_\bo< Field >\n- &)\n-\u00a0\n-template\n- bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b> (const _\bZ_\be_\br_\bo< Field > &z, const Field\n- &f)\n-\u00a0\n-template\n- bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b> (const Field &f, const _\bZ_\be_\br_\bo< Field >\n- &z)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const F1 &f1, F2 &f2)\n-\u00a0 a helper class to cast from one field to another\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldVector< F1, dim >\n- &f1, Dune::FieldVector< F2, dim > &f2)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldVector< F1, 1 >\n- &f1, F2 &f2)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const F1 &f1, Dune::FieldVector<\n- F2, 1 > &f2)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldMatrix< F1, rdim,\n- cdim > &f1, Dune::FieldMatrix< F2, rdim, cdim > &f2)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldMatrix< F1, 1, 1 >\n- &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldMatrix< F1, 1, 1 >\n- &f1, F2 &f2)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const F1 &f1, Dune::FieldMatrix<\n- F2, 1, 1 > &f2)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldVector< F1, 1 >\n- &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldMatrix< F1, 1, 1 >\n- &f1, Dune::FieldVector< F2, 1 > &f2)\n-\u00a0\n-template\n- void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldVector< F1, 1 >\n- &f1, Dune::FieldVector< F2, 1 > &f2)\n-\u00a0\n-template\n-_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt< F2, V >::type\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const V &f1)\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: field.hh Source File\n+dune-localfunctions: p0localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,385 +70,72 @@\n
    \n \n \n \n \n \n \n
    \n-
    field.hh
    \n+
    p0localinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH
    \n+
    5#ifndef DUNE_P0LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_P0LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <dune/common/gmpfield.hh>
    \n-
    9#include <dune/common/fvector.hh>
    \n-
    10#include <dune/common/fmatrix.hh>
    \n+
    8#include <vector>
    \n+
    9#include <dune/geometry/referenceelements.hh>
    \n+
    10
    \n
    11
    \n
    12namespace Dune
    \n
    13{
    \n
    14
    \n-
    15 // Unity
    \n-
    16 // -----
    \n-
    17
    \n-
    28 template< class Field >
    \n-
    \n-
    29 struct Unity
    \n-
    30 {
    \n-
    \n-
    31 operator Field () const
    \n-
    32 {
    \n-
    33 return Field( 1 );
    \n-
    34 }
    \n-
    \n-
    35 };
    \n-
    \n-
    36
    \n-
    37 template< class Field >
    \n-
    \n-
    38 Field operator+ ( const Unity< Field > &u, const Field &f )
    \n-
    39 {
    \n-
    40 return (Field)u + f;
    \n-
    41 }
    \n+
    18 template<class LB>
    \n+
    \n+\n+
    20 {
    \n+
    21 public:
    \n+
    \n+
    22 P0LocalInterpolation (const GeometryType& gt) : gt_(gt)
    \n+
    23 {}
    \n+
    \n+
    24
    \n+
    26 template<typename F, typename C>
    \n+
    \n+
    27 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    28 {
    \n+
    29 typedef typename LB::Traits::DomainType DomainType;
    \n+
    30 typedef typename LB::Traits::DomainFieldType DF;
    \n+
    31 const int dim=LB::Traits::dimDomain;
    \n+
    32
    \n+
    33 DomainType x = Dune::ReferenceElements<DF,dim>::general(gt_).position(0,0);
    \n+
    34
    \n+
    35 out.resize(1);
    \n+
    36 out[0] = f(x);
    \n+
    37 }
    \n+
    \n+
    38
    \n+
    39 private:
    \n+
    40 GeometryType gt_;
    \n+
    41 };
    \n
    \n
    42
    \n-
    43 template< class Field >
    \n-
    \n-
    44 Field operator- ( const Unity< Field > &u, const Field &f )
    \n-
    45 {
    \n-
    46 return (Field)u - f;
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    49 template< class Field >
    \n-
    \n-
    50 Field operator* ( const Unity< Field > &u, const Field &f )
    \n-
    51 {
    \n-
    52 return f;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    55 template< class Field >
    \n-
    \n-
    56 Field operator/ ( const Unity< Field > &u, const Field &f )
    \n-
    57 {
    \n-
    58 return (Field)u / f;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    61
    \n-
    62
    \n-
    63 // Zero
    \n-
    64 // ----
    \n-
    65
    \n-
    77 template< class Field >
    \n-
    \n-
    78 struct Zero
    \n-
    79 {
    \n-
    \n-
    80 operator Field () const
    \n-
    81 {
    \n-
    82 return Field( 0 );
    \n-
    83 }
    \n-
    \n-
    \n-
    84 static const Field epsilon()
    \n-
    85 {
    \n-
    86 return Field(1e-12);
    \n-
    87 }
    \n-
    \n-
    88 };
    \n-
    \n-
    89
    \n-
    90#if HAVE_GMP
    \n-
    91 template< unsigned int precision >
    \n-
    92 struct Zero< GMPField< precision > >
    \n-
    93 {
    \n-
    94 typedef GMPField< precision > Field;
    \n-
    95 operator Field () const
    \n-
    96 {
    \n-
    97 return Field( 0 );
    \n-
    98 }
    \n-
    99 static const Field epsilon()
    \n-
    100 {
    \n-
    101 return Field(1e-20);
    \n-
    102 }
    \n-
    103 };
    \n-
    104#endif
    \n-
    105
    \n-
    106 template< class Field >
    \n-
    \n-
    107 inline bool operator == ( const Zero< Field > &, const Field &f )
    \n-
    108 {
    \n-
    109 return ( f < Zero<Field>::epsilon() && f > -Zero<Field>::epsilon() );
    \n-
    110 }
    \n-
    \n-
    111
    \n-
    112 template< class Field >
    \n-
    \n-
    113 inline bool operator == ( const Field &f, const Zero< Field > &z)
    \n-
    114 {
    \n-
    115 return ( z == f );
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    118 template< class Field >
    \n-
    \n-
    119 inline bool operator< ( const Zero< Field > &, const Field &f )
    \n-
    120 {
    \n-
    121 return f > Zero<Field>::epsilon();
    \n-
    122 }
    \n-
    \n-
    123
    \n-
    124 template< class Field >
    \n-
    \n-
    125 inline bool operator< ( const Field &f, const Zero< Field > & )
    \n-
    126 {
    \n-
    127 return f < -Zero<Field>::epsilon();
    \n-
    128 }
    \n-
    \n-
    129
    \n-
    130 template< class Field >
    \n-
    \n-
    131 inline bool operator> ( const Zero< Field > &z, const Field &f )
    \n-
    132 {
    \n-
    133 return f < z;
    \n-
    134 }
    \n-
    \n-
    135
    \n-
    136 template< class Field >
    \n-
    \n-
    137 inline bool operator> ( const Field &f, const Zero< Field > &z )
    \n-
    138 {
    \n-
    139 return z < f;
    \n-
    140 }
    \n-
    \n-
    141
    \n-
    142
    \n-
    143 // field_cast
    \n-
    144 // ----------
    \n-
    145
    \n-
    158 template< class F2, class F1 >
    \n-
    \n-
    159 inline void field_cast ( const F1 &f1, F2 &f2 )
    \n-
    160 {
    \n-
    161 f2 = f1;
    \n-
    162 }
    \n-
    \n-
    163
    \n-
    164#if HAVE_GMP
    \n-
    165 template< unsigned int precision >
    \n-
    166 inline void field_cast ( const Dune::GMPField< precision > &f1, double &f2 )
    \n-
    167 {
    \n-
    168 f2 = f1.get_d();
    \n-
    169 }
    \n-
    170
    \n-
    171 template< unsigned int precision >
    \n-
    172 inline void field_cast ( const Dune::GMPField< precision > &f1, long double &f2 )
    \n-
    173 {
    \n-
    174 f2 = f1.get_d();
    \n-
    175 }
    \n-
    176#endif
    \n-
    177
    \n-
    178 template< class F2, class F1, int dim >
    \n-
    \n-
    179 inline void field_cast ( const Dune::FieldVector< F1, dim > &f1, Dune::FieldVector< F2, dim > &f2 )
    \n-
    180 {
    \n-
    181 for( int d = 0; d < dim; ++d )
    \n-
    182 field_cast( f1[ d ], f2[ d ] );
    \n-
    183 }
    \n-
    \n-
    184 template< class F2, class F1 >
    \n-
    \n-
    185 inline void field_cast ( const Dune::FieldVector< F1, 1 > &f1, F2 &f2 )
    \n-
    186 {
    \n-
    187 field_cast( f1[ 0 ], f2 );
    \n-
    188 }
    \n-
    \n-
    189 template< class F2, class F1 >
    \n-
    \n-
    190 inline void field_cast ( const F1 &f1, Dune::FieldVector< F2, 1 > &f2 )
    \n-
    191 {
    \n-
    192 field_cast( f1, f2[ 0 ] );
    \n-
    193 }
    \n-
    \n-
    194
    \n-
    195 template< class F2, class F1, int rdim, int cdim >
    \n-
    \n-
    196 inline void field_cast ( const Dune::FieldMatrix< F1, rdim, cdim > &f1, Dune::FieldMatrix< F2, rdim, cdim > &f2 )
    \n-
    197 {
    \n-
    198 for( int r = 0; r < rdim; ++r )
    \n-
    199 field_cast( f1[ r ], f2[ r ] );
    \n-
    200 }
    \n-
    \n-
    201 template< class F2, class F1 >
    \n-
    \n-
    202 inline void field_cast ( const Dune::FieldMatrix<F1,1,1> &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )
    \n-
    203 {
    \n-
    204 field_cast( f1[ 0 ][ 0 ], f2[ 0 ][ 0 ] );
    \n-
    205 }
    \n-
    \n-
    206 template< class F2, class F1 >
    \n-
    \n-
    207 inline void field_cast ( const Dune::FieldMatrix< F1, 1,1 > &f1, F2 &f2 )
    \n-
    208 {
    \n-
    209 field_cast( f1[ 0 ][ 0 ], f2 );
    \n-
    210 }
    \n-
    \n-
    211 template< class F2, class F1 >
    \n-
    \n-
    212 inline void field_cast ( const F1 &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )
    \n-
    213 {
    \n-
    214 field_cast( f1, f2[ 0 ][ 0 ] );
    \n-
    215 }
    \n-
    \n-
    216 template< class F2, class F1 >
    \n-
    \n-
    217 inline void field_cast ( const Dune::FieldVector<F1,1> &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )
    \n-
    218 {
    \n-
    219 field_cast( f1[ 0 ], f2[ 0 ][ 0 ] );
    \n-
    220 }
    \n-
    \n-
    221 template< class F2, class F1 >
    \n-
    \n-
    222 inline void field_cast ( const Dune::FieldMatrix<F1,1,1> &f1, Dune::FieldVector< F2, 1 > &f2 )
    \n-
    223 {
    \n-
    224 field_cast( f1[ 0 ][ 0 ], f2[ 0 ] );
    \n-
    225 }
    \n-
    \n-
    226
    \n-
    227 template< class F2, class F1 >
    \n-
    \n-
    228 inline void field_cast ( const Dune::FieldVector< F1, 1 > &f1, Dune::FieldVector<F2, 1> &f2 )
    \n-
    229 {
    \n-
    230 field_cast( f1[ 0 ], f2[ 0 ] );
    \n-
    231 }
    \n-
    \n-
    232
    \n-
    233 template< class F2,class V >
    \n-
    \n-\n-
    235 {
    \n-
    236 typedef F2 type;
    \n-
    237 };
    \n-
    \n-
    238 template< class F2,class F1,int dim >
    \n-
    \n-
    239 struct FieldCast< F2, Dune::FieldVector<F1,dim> >
    \n-
    240 {
    \n-
    241 typedef Dune::FieldVector<F2,dim> type;
    \n-
    242 };
    \n-
    \n-
    243 template< class F2,class F1,int dim1, int dim2>
    \n-
    \n-
    244 struct FieldCast< F2, Dune::FieldMatrix<F1,dim1,dim2> >
    \n-
    245 {
    \n-
    246 typedef Dune::FieldMatrix<F2,dim1,dim2> type;
    \n-
    247 };
    \n-
    \n-
    248 template< class F2,class V >
    \n-
    \n-
    249 inline typename FieldCast<F2,V>::type field_cast ( const V &f1 )
    \n-
    250 {
    \n-
    251 typename FieldCast<F2,V>::type f2;
    \n-
    252 field_cast( f1, f2 );
    \n-
    253 return f2;
    \n-
    254 }
    \n-
    \n-
    255
    \n-
    256
    \n-
    257 // Precision
    \n-
    258 // this is not a perfect solution to obtain the
    \n-
    259 // precision of a field - definition is not clear
    \n-
    260 // to be removed
    \n-
    261 // ---------
    \n-
    262
    \n-
    263 template <class Field>
    \n-
    264 struct Precision;
    \n-
    265
    \n-
    266 template<>
    \n-
    \n-
    267 struct Precision< double >
    \n-
    268 {
    \n-
    269 static const unsigned int value = 64;
    \n-
    270 };
    \n-
    \n-
    271
    \n-
    272 template<>
    \n-
    \n-
    273 struct Precision< long double >
    \n-
    274 {
    \n-
    275 static const unsigned int value = 80;
    \n-
    276 };
    \n-
    \n-
    277
    \n-
    278 template<>
    \n-
    \n-
    279 struct Precision< float >
    \n-
    280 {
    \n-
    281 static const unsigned int value = 32;
    \n-
    282 };
    \n-
    \n-
    283
    \n-
    284#if HAVE_GMP
    \n-
    285 template< unsigned int precision >
    \n-
    286 struct Precision< GMPField< precision > >
    \n-
    287 {
    \n-
    288 static const unsigned int value = precision;
    \n-
    289 };
    \n-
    290#endif
    \n-
    291
    \n-
    292 // ComputeField
    \n-
    293 // ------------
    \n-
    294
    \n-
    295 template <class Field,unsigned int sum>
    \n-
    \n-\n-
    297 {
    \n-
    298 typedef Field Type;
    \n-
    299 };
    \n-
    \n-
    300
    \n-
    301#if HAVE_GMP
    \n-
    302 template< unsigned int precision, unsigned int sum >
    \n-
    303 struct ComputeField< GMPField< precision >, sum >
    \n-
    304 {
    \n-
    305 typedef GMPField<precision+sum> Type;
    \n-
    306 };
    \n-
    307#endif
    \n-
    308} // namespace Dune
    \n-
    309
    \n-
    310#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH
    \n+
    43}
    \n+
    44
    \n+
    45#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Field operator-(const Unity< Field > &u, const Field &f)
    Definition field.hh:44
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    bool operator<(const Zero< Field > &, const Field &f)
    Definition field.hh:119
    \n-
    bool operator==(const Zero< Field > &, const Field &f)
    Definition field.hh:107
    \n-
    bool operator>(const Zero< Field > &z, const Field &f)
    Definition field.hh:131
    \n-
    Field operator+(const Unity< Field > &u, const Field &f)
    Definition field.hh:38
    \n-
    Field operator/(const Unity< Field > &u, const Field &f)
    Definition field.hh:56
    \n-
    Field operator*(const Unity< Field > &u, const Field &f)
    Definition field.hh:50
    \n-
    A class representing the unit of a given Field.
    Definition field.hh:30
    \n-
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n-
    static const Field epsilon()
    Definition field.hh:84
    \n-
    Definition field.hh:235
    \n-
    F2 type
    Definition field.hh:236
    \n-
    Dune::FieldVector< F2, dim > type
    Definition field.hh:241
    \n-
    Dune::FieldMatrix< F2, dim1, dim2 > type
    Definition field.hh:246
    \n-
    Definition field.hh:264
    \n-
    Definition field.hh:297
    \n-
    Field Type
    Definition field.hh:298
    \n+
    Definition p0localinterpolation.hh:20
    \n+
    P0LocalInterpolation(const GeometryType &gt)
    Definition p0localinterpolation.hh:22
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    determine coefficients interpolating a given function
    Definition p0localinterpolation.hh:27
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,351 +1,65 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-field.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bp_\b0\n+p0localinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH\n-6#define DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH\n+5#ifndef DUNE_P0LOCALINTERPOLATION_HH\n+6#define DUNE_P0LOCALINTERPOLATION_HH\n 7\n-8#include \n-9#include \n-10#include \n+8#include \n+9#include \n+10\n 11\n 12namespace _\bD_\bu_\bn_\be\n 13{\n 14\n-15 // Unity\n-16 // -----\n-17\n-28 template< class Field >\n-_\b2_\b9 struct _\bU_\bn_\bi_\bt_\by\n-30 {\n-_\b3_\b1 operator Field () const\n-32 {\n-33 return Field( 1 );\n-34 }\n-35 };\n-36\n-37 template< class Field >\n-_\b3_\b8 Field _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &u, const Field &f )\n-39 {\n-40 return (Field)u + f;\n-41 }\n+18 template\n+_\b1_\b9 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+20 {\n+21 public:\n+_\b2_\b2 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (const GeometryType& gt) : gt_(gt)\n+23 {}\n+24\n+26 template\n+_\b2_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+28 {\n+29 typedef typename LB::Traits::DomainType DomainType;\n+30 typedef typename LB::Traits::DomainFieldType DF;\n+31 const int dim=LB::Traits::dimDomain;\n+32\n+33 DomainType x = Dune::ReferenceElements::general(gt_).position(0,0);\n+34\n+35 out.resize(1);\n+36 out[0] = f(x);\n+37 }\n+38\n+39 private:\n+40 GeometryType gt_;\n+41 };\n 42\n-43 template< class Field >\n-_\b4_\b4 Field _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &u, const Field &f )\n-45 {\n-46 return (Field)u - f;\n-47 }\n-48\n-49 template< class Field >\n-_\b5_\b0 Field _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &u, const Field &f )\n-51 {\n-52 return f;\n-53 }\n-54\n-55 template< class Field >\n-_\b5_\b6 Field _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &u, const Field &f )\n-57 {\n-58 return (Field)u / f;\n-59 }\n-60\n-61\n-62\n-63 // Zero\n-64 // ----\n-65\n-77 template< class Field >\n-_\b7_\b8 struct _\bZ_\be_\br_\bo\n-79 {\n-_\b8_\b0 operator Field () const\n-81 {\n-82 return Field( 0 );\n-83 }\n-_\b8_\b4 static const Field _\be_\bp_\bs_\bi_\bl_\bo_\bn()\n-85 {\n-86 return Field(1e-12);\n-87 }\n-88 };\n-89\n-90#if HAVE_GMP\n-91 template< unsigned int precision >\n-92 struct Zero< GMPField< precision > >\n-93 {\n-94 typedef GMPField< precision > Field;\n-95 operator Field () const\n-96 {\n-97 return Field( 0 );\n-98 }\n-99 static const Field _\be_\bp_\bs_\bi_\bl_\bo_\bn()\n-100 {\n-101 return Field(1e-20);\n-102 }\n-103 };\n-104#endif\n-105\n-106 template< class Field >\n-_\b1_\b0_\b7 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b ( const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &, const Field &f )\n-108 {\n-109 return ( f < _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn() && f > -_\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn() );\n-110 }\n-111\n-112 template< class Field >\n-_\b1_\b1_\b3 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b ( const Field &f, const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &z)\n-114 {\n-115 return ( z == f );\n-116 }\n-117\n-118 template< class Field >\n-_\b1_\b1_\b9 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &, const Field &f )\n-120 {\n-121 return f > _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn();\n-122 }\n-123\n-124 template< class Field >\n-_\b1_\b2_\b5 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const Field &f, const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> & )\n-126 {\n-127 return f < -_\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn();\n-128 }\n-129\n-130 template< class Field >\n-_\b1_\b3_\b1 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b>_\b ( const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &z, const Field &f )\n-132 {\n-133 return f < z;\n-134 }\n-135\n-136 template< class Field >\n-_\b1_\b3_\b7 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b>_\b ( const Field &f, const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &z )\n-138 {\n-139 return z < f;\n-140 }\n-141\n-142\n-143 // field_cast\n-144 // ----------\n-145\n-158 template< class F2, class F1 >\n-_\b1_\b5_\b9 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const F1 &f1, F2 &f2 )\n-160 {\n-161 f2 = f1;\n-162 }\n-163\n-164#if HAVE_GMP\n-165 template< unsigned int precision >\n-166 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::GMPField< precision > &f1, double &f2\n-)\n-167 {\n-168 f2 = f1.get_d();\n-169 }\n-170\n-171 template< unsigned int precision >\n-172 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::GMPField< precision > &f1, long double\n-&f2 )\n-173 {\n-174 f2 = f1.get_d();\n-175 }\n-176#endif\n-177\n-178 template< class F2, class F1, int dim >\n-_\b1_\b7_\b9 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldVector< F1, dim > &f1, Dune::\n-FieldVector< F2, dim > &f2 )\n-180 {\n-181 for( int d = 0; d < dim; ++d )\n-182 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ d ], f2[ d ] );\n-183 }\n-184 template< class F2, class F1 >\n-_\b1_\b8_\b5 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldVector< F1, 1 > &f1, F2 &f2 )\n-186 {\n-187 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ], f2 );\n-188 }\n-189 template< class F2, class F1 >\n-_\b1_\b9_\b0 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const F1 &f1, Dune::FieldVector< F2, 1 > &f2 )\n-191 {\n-192 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1, f2[ 0 ] );\n-193 }\n-194\n-195 template< class F2, class F1, int rdim, int cdim >\n-_\b1_\b9_\b6 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldMatrix< F1, rdim, cdim > &f1,\n-Dune::FieldMatrix< F2, rdim, cdim > &f2 )\n-197 {\n-198 for( int r = 0; r < rdim; ++r )\n-199 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ r ], f2[ r ] );\n-200 }\n-201 template< class F2, class F1 >\n-_\b2_\b0_\b2 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldMatrix &f1, Dune::\n-FieldMatrix< F2, 1,1 > &f2 )\n-203 {\n-204 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ][ 0 ], f2[ 0 ][ 0 ] );\n-205 }\n-206 template< class F2, class F1 >\n-_\b2_\b0_\b7 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldMatrix< F1, 1,1 > &f1, F2 &f2 )\n-208 {\n-209 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ][ 0 ], f2 );\n-210 }\n-211 template< class F2, class F1 >\n-_\b2_\b1_\b2 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const F1 &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )\n-213 {\n-214 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1, f2[ 0 ][ 0 ] );\n-215 }\n-216 template< class F2, class F1 >\n-_\b2_\b1_\b7 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldVector &f1, Dune::\n-FieldMatrix< F2, 1,1 > &f2 )\n-218 {\n-219 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ], f2[ 0 ][ 0 ] );\n-220 }\n-221 template< class F2, class F1 >\n-_\b2_\b2_\b2 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldMatrix &f1, Dune::\n-FieldVector< F2, 1 > &f2 )\n-223 {\n-224 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ][ 0 ], f2[ 0 ] );\n-225 }\n-226\n-227 template< class F2, class F1 >\n-_\b2_\b2_\b8 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldVector< F1, 1 > &f1, Dune::\n-FieldVector &f2 )\n-229 {\n-230 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ], f2[ 0 ] );\n-231 }\n-232\n-233 template< class F2,class V >\n-_\b2_\b3_\b4 struct _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt\n-235 {\n-_\b2_\b3_\b6 typedef F2 _\bt_\by_\bp_\be;\n-237 };\n-238 template< class F2,class F1,int dim >\n-_\b2_\b3_\b9 struct _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt< F2, _\bD_\bu_\bn_\be::FieldVector >\n-240 {\n-_\b2_\b4_\b1 typedef Dune::FieldVector _\bt_\by_\bp_\be;\n-242 };\n-243 template< class F2,class F1,int dim1, int dim2>\n-_\b2_\b4_\b4 struct _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt< F2, _\bD_\bu_\bn_\be::FieldMatrix >\n-245 {\n-_\b2_\b4_\b6 typedef Dune::FieldMatrix _\bt_\by_\bp_\be;\n-247 };\n-248 template< class F2,class V >\n-_\b2_\b4_\b9 inline typename _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\bF_\b2_\b,_\bV_\b>_\b:_\b:_\bt_\by_\bp_\be _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const V &f1 )\n-250 {\n-251 typename _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\bF_\b2_\b,_\bV_\b>_\b:_\b:_\bt_\by_\bp_\be f2;\n-252 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1, f2 );\n-253 return f2;\n-254 }\n-255\n-256\n-257 // Precision\n-258 // this is not a perfect solution to obtain the\n-259 // precision of a field - definition is not clear\n-260 // to be removed\n-261 // ---------\n-262\n-263 template \n-_\b2_\b6_\b4 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn;\n-265\n-266 template<>\n-_\b2_\b6_\b7 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn< double >\n-268 {\n-_\b2_\b6_\b9 static const unsigned int value = 64;\n-270 };\n-271\n-272 template<>\n-_\b2_\b7_\b3 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn< long double >\n-274 {\n-_\b2_\b7_\b5 static const unsigned int value = 80;\n-276 };\n-277\n-278 template<>\n-_\b2_\b7_\b9 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn< float >\n-280 {\n-_\b2_\b8_\b1 static const unsigned int value = 32;\n-282 };\n-283\n-284#if HAVE_GMP\n-285 template< unsigned int precision >\n-286 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn< GMPField< precision > >\n-287 {\n-288 static const unsigned int value = precision;\n-289 };\n-290#endif\n-291\n-292 // ComputeField\n-293 // ------------\n-294\n-295 template \n-_\b2_\b9_\b6 struct _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd\n-297 {\n-_\b2_\b9_\b8 typedef Field _\bT_\by_\bp_\be;\n-299 };\n-300\n-301#if HAVE_GMP\n-302 template< unsigned int precision, unsigned int sum >\n-303 struct _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd< GMPField< precision >, sum >\n-304 {\n-305 typedef GMPField _\bT_\by_\bp_\be;\n-306 };\n-307#endif\n-308} // namespace Dune\n-309\n-310#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH\n+43}\n+44\n+45#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-\n-Field operator-(const Unity< Field > &u, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n-bool operator<(const Zero< Field > &, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n-bool operator==(const Zero< Field > &, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b>\n-bool operator>(const Zero< Field > &z, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+\n-Field operator+(const Unity< Field > &u, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/\n-Field operator/(const Unity< Field > &u, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n-Field operator*(const Unity< Field > &u, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by\n-A class representing the unit of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n-A class representing the zero of a given Field.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn\n-static const Field epsilon()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:235\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b:_\b:_\bt_\by_\bp_\be\n-F2 type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-Dune::FieldVector< F2, dim > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:241\n-_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\b1_\b,_\b _\bd_\bi_\bm_\b2_\b _\b>_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-Dune::FieldMatrix< F2, dim1, dim2 > type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:246\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:264\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:297\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd_\b:_\b:_\bT_\by_\bp_\be\n-Field Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:298\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localinterpolation.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+P0LocalInterpolation(const GeometryType >)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localinterpolation.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+determine coefficients interpolating a given function\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localinterpolation.hh:27\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basisevaluator.hh File Reference\n+dune-localfunctions: p0localcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,34 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    basisevaluator.hh File Reference
    \n+
    p0localcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n-#include <dune/localfunctions/utility/multiindex.hh>
    \n-#include <dune/localfunctions/utility/tensor.hh>
    \n+
    #include <cstddef>
    \n+#include <iostream>
    \n+#include <vector>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n \n

    \n Classes

    struct  Dune::MonomialEvaluator< B >
     
    struct  Dune::MonomialEvaluator< B >::Iterator< deriv >
     
    struct  Dune::MonomialEvaluator< B >::BaseIterator< Deriv >
     
    struct  Dune::StandardEvaluator< B >
     
    struct  Dune::StandardEvaluator< B >::Iterator< deriv >
    class  Dune::P0LocalCoefficients
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,34 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bp_\b0\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-basisevaluator.hh File Reference\n+p0localcoefficients.hh File Reference\n+#include \n+#include \n #include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bD_\be_\br_\bi_\bv_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basisevaluator.hh Source File\n+dune-localfunctions: p0localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,279 +70,74 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    basisevaluator.hh
    \n+
    p0localcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_BASISEVALUATOR_HH
    \n-
    6#define DUNE_BASISEVALUATOR_HH
    \n+
    5#ifndef DUNE_P0LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_P0LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n-
    11#include <dune/common/fvector.hh>
    \n-
    12#include <dune/common/typetraits.hh>
    \n+
    8#include <cstddef>
    \n+
    9#include <iostream>
    \n+
    10#include <vector>
    \n+
    11
    \n+\n
    13
    \n-
    14#include <dune/geometry/type.hh>
    \n-
    15
    \n-\n-\n-\n-
    19
    \n-
    20namespace Dune
    \n-
    21{
    \n-
    22 /*******************************************
    \n-
    23 * Should be removed as soon as the Tensor
    \n-
    24 * classes have been revisited. See remarks
    \n-
    25 * in tensor.hh (also hold true here).
    \n-
    26 *******************************************/
    \n-
    27
    \n-
    28
    \n-
    29 template <class B>
    \n-
    \n-\n-
    31 {
    \n-
    32 typedef B Basis;
    \n-
    33 typedef typename Basis::Field Field;
    \n-
    34 typedef typename Basis::DomainVector DomainVector;
    \n-
    35 static const int dimension = Basis::dimension;
    \n-
    36 static const int dimRange = Basis::dimRange;
    \n-
    37
    \n-
    38 typedef std::vector<Field> Container;
    \n-
    39
    \n-
    40 template< class Deriv >
    \n-
    41 struct BaseIterator;
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    \n+\n+
    25 {
    \n+
    26 public:
    \n+
    \n+
    28 P0LocalCoefficients () : index(0,0,0)
    \n+
    29 {}
    \n+
    \n+
    30
    \n+
    \n+
    32 std::size_t size () const
    \n+
    33 {
    \n+
    34 return 1;
    \n+
    35 }
    \n+
    \n+
    36
    \n+
    \n+
    38 const LocalKey& localKey ([[maybe_unused]] std::size_t i) const
    \n+
    39 {
    \n+
    40 return index;
    \n+
    41 }
    \n+
    \n
    42
    \n-
    43 template <unsigned int deriv>
    \n-\n-
    49
    \n-
    \n-
    50 unsigned int size() const
    \n-
    51 {
    \n-
    52 return size_;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    55 protected:
    \n-
    \n-
    56 MonomialEvaluator(const Basis &basis,unsigned int order,unsigned int size)
    \n-
    57 : basis_(basis),
    \n-
    58 order_(order),
    \n-
    59 size_(size),
    \n-
    60 container_(0)
    \n-
    61 {}
    \n-
    \n-
    62 template <int deriv>
    \n-
    \n-
    63 void resize()
    \n-
    64 {
    \n-\n-
    66 container_.resize(totalSize);
    \n-
    67 }
    \n-
    \n-\n-
    69 const Basis &basis_;
    \n-
    70 unsigned int order_,size_;
    \n-\n-
    72 };
    \n-
    \n-
    73
    \n-
    74
    \n-
    75 template< class B >
    \n-
    76 template< class Deriv >
    \n-
    \n-\n-
    78 {
    \n-
    79 typedef Deriv Derivatives;
    \n-
    80 typedef typename Deriv::Field Field;
    \n-
    81 static const unsigned int blockSize = Deriv::size;
    \n-
    82 typedef Dune::FieldVector<Field,blockSize> Block;
    \n-
    83 static const DerivativeLayoutNS::DerivativeLayout layout = Deriv::layout;
    \n-
    84 static const unsigned int dimDomain = Deriv::dimDomain;
    \n-
    85 static const unsigned int dimRange = Deriv::dimRange;
    \n-
    86
    \n-
    87 typedef std::vector<Field> Container;
    \n-
    88 typedef typename Container::iterator CIter;
    \n-
    89
    \n-
    \n-
    90 explicit BaseIterator ( Container &container )
    \n-
    91 : pos_( container.begin() ),
    \n-
    92 end_( container.end() )
    \n-
    93 {}
    \n-
    \n-
    94
    \n-
    \n-
    95 const Deriv &operator*() const
    \n-
    96 {
    \n-
    97 assert(!done());
    \n-
    98 return reinterpret_cast<const Deriv&>(*pos_);
    \n-
    99 }
    \n-
    \n-
    100
    \n-
    \n-
    101 const Deriv *operator->() const
    \n-
    102 {
    \n-
    103 return &(operator*());
    \n-
    104 }
    \n-
    \n-
    105
    \n-
    \n-
    106 bool done () const
    \n-
    107 {
    \n-
    108 return pos_ == end_;
    \n-
    109 }
    \n-
    \n-
    110
    \n-
    \n-
    111 BaseIterator &operator++ ()
    \n-
    112 {
    \n-
    113 pos_ += blockSize;
    \n-
    114 return *this;
    \n-
    115 }
    \n-
    \n-
    116
    \n-
    \n-
    117 BaseIterator &operator+= ( unsigned int skip )
    \n-
    118 {
    \n-
    119 pos_ += skip*blockSize;
    \n-
    120 return *this;
    \n-
    121 }
    \n-
    \n-
    122
    \n-
    123 private:
    \n-
    124 CIter pos_;
    \n-
    125 const CIter end_;
    \n-
    126 };
    \n-
    \n-
    127
    \n-
    128 template< class B >
    \n-
    \n-\n-
    130 : public MonomialEvaluator< B >
    \n-
    131 {
    \n-
    132 typedef B Basis;
    \n-
    133 typedef typename Basis::Field Field;
    \n-
    134 typedef typename Basis::DomainVector DomainVector;
    \n-
    135 typedef std::vector<Field> Container;
    \n-
    136 static const int dimension = Basis::dimension;
    \n-
    137 static const int dimRange = Basis::dimRange;
    \n-\n-
    139
    \n-
    140 template <unsigned int deriv>
    \n-
    \n-
    141 struct Iterator : public Base::template Iterator<deriv>
    \n-
    142 {};
    \n-
    \n-
    143
    \n-
    \n-\n-
    145 : Base(basis,basis.order(),basis.size())
    \n-
    146 {}
    \n-
    \n-
    147 template <unsigned int deriv,class DVector>
    \n-
    \n-
    148 typename Iterator<deriv>::All evaluate(const DVector &x)
    \n-
    149 {
    \n-
    150 Base::template resize<deriv>();
    \n-
    151 basis_.template evaluate<deriv>(x,&(container_[0]));
    \n-
    152 return typename Iterator<deriv>::All(container_);
    \n-
    153 }
    \n-
    \n-
    \n-\n-
    155 {
    \n-
    156 Base::template resize<0>();
    \n-
    157 basis_.integrate(&(container_[0]));
    \n-
    158 return typename Iterator<0>::Integrate(container_);
    \n-
    159 }
    \n-
    \n-
    160
    \n-
    161 protected:
    \n-
    \n-
    162 StandardEvaluator ( const Basis &basis, unsigned int size )
    \n-
    163 : Base( basis, basis.order(), size )
    \n-
    164 {}
    \n-
    \n-
    165
    \n-
    166 private:
    \n-\n-
    168 using Base::basis_;
    \n-
    169 using Base::container_;
    \n-
    170 };
    \n-
    \n-
    171
    \n-
    172}
    \n-
    173
    \n-
    174#endif
    \n-\n-\n-\n+
    43 private:
    \n+
    44 LocalKey index;
    \n+
    45 };
    \n+
    \n+
    46
    \n+
    47}
    \n+
    48#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Field operator*(const Unity< Field > &u, const Field &f)
    Definition field.hh:50
    \n-
    DerivativeLayout
    Definition tensor.hh:176
    \n-
    Definition basisevaluator.hh:31
    \n-
    static const int dimRange
    Definition basisevaluator.hh:36
    \n-
    B Basis
    Definition basisevaluator.hh:32
    \n-
    unsigned int order_
    Definition basisevaluator.hh:70
    \n-
    const Basis & basis_
    Definition basisevaluator.hh:69
    \n-
    MonomialEvaluator(const Basis &basis, unsigned int order, unsigned int size)
    Definition basisevaluator.hh:56
    \n-
    Basis::Field Field
    Definition basisevaluator.hh:33
    \n-
    unsigned int size_
    Definition basisevaluator.hh:70
    \n-
    Basis::DomainVector DomainVector
    Definition basisevaluator.hh:34
    \n-
    void resize()
    Definition basisevaluator.hh:63
    \n-
    Container container_
    Definition basisevaluator.hh:71
    \n-
    unsigned int size() const
    Definition basisevaluator.hh:50
    \n-
    std::vector< Field > Container
    Definition basisevaluator.hh:38
    \n-
    MonomialEvaluator(const MonomialEvaluator &)
    \n-
    static const int dimension
    Definition basisevaluator.hh:35
    \n-
    Definition basisevaluator.hh:78
    \n-
    BaseIterator(Container &container)
    Definition basisevaluator.hh:90
    \n-
    const Deriv & operator*() const
    Definition basisevaluator.hh:95
    \n-
    Dune::FieldVector< Field, blockSize > Block
    Definition basisevaluator.hh:82
    \n-
    bool done() const
    Definition basisevaluator.hh:106
    \n-
    Container::iterator CIter
    Definition basisevaluator.hh:88
    \n-
    const Deriv * operator->() const
    Definition basisevaluator.hh:101
    \n-
    Deriv Derivatives
    Definition basisevaluator.hh:79
    \n-
    std::vector< Field > Container
    Definition basisevaluator.hh:87
    \n-
    Deriv::Field Field
    Definition basisevaluator.hh:80
    \n-
    Definition basisevaluator.hh:45
    \n-
    BaseIterator< Derivatives< Field, dimension, 1, 0, DerivativeLayoutNS::value > > Integrate
    Definition basisevaluator.hh:47
    \n-
    BaseIterator< Derivatives< Field, dimension, dimRange, deriv, DerivativeLayoutNS::derivative > > All
    Definition basisevaluator.hh:46
    \n-
    Definition basisevaluator.hh:131
    \n-
    Basis::Field Field
    Definition basisevaluator.hh:133
    \n-
    Basis::DomainVector DomainVector
    Definition basisevaluator.hh:134
    \n-
    Iterator< deriv >::All evaluate(const DVector &x)
    Definition basisevaluator.hh:148
    \n-
    MonomialEvaluator< B > Base
    Definition basisevaluator.hh:138
    \n-
    StandardEvaluator(const Basis &basis)
    Definition basisevaluator.hh:144
    \n-
    static const int dimRange
    Definition basisevaluator.hh:137
    \n-
    std::vector< Field > Container
    Definition basisevaluator.hh:135
    \n-
    Iterator< 0 >::Integrate integrate()
    Definition basisevaluator.hh:154
    \n-
    B Basis
    Definition basisevaluator.hh:132
    \n-
    StandardEvaluator(const Basis &basis, unsigned int size)
    Definition basisevaluator.hh:162
    \n-
    static const int dimension
    Definition basisevaluator.hh:136
    \n-
    Definition basisevaluator.hh:142
    \n-
    Definition tensor.hh:180
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Definition p0localcoefficients.hh:25
    \n+
    P0LocalCoefficients()
    Standard constructor.
    Definition p0localcoefficients.hh:28
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition p0localcoefficients.hh:38
    \n+
    std::size_t size() const
    number of coefficients
    Definition p0localcoefficients.hh:32
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,323 +1,71 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-basisevaluator.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bp_\b0\n+p0localcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_BASISEVALUATOR_HH\n-6#define DUNE_BASISEVALUATOR_HH\n+5#ifndef DUNE_P0LOCALCOEFFICIENTS_HH\n+6#define DUNE_P0LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9\n-10#include \n-11#include \n-12#include \n+8#include \n+9#include \n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n 13\n-14#include \n-15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n-19\n-20namespace _\bD_\bu_\bn_\be\n-21{\n-22 /*******************************************\n-23 * Should be removed as soon as the Tensor\n-24 * classes have been revisited. See remarks\n-25 * in tensor.hh (also hold true here).\n-26 *******************************************/\n-27\n-28\n-29 template \n-_\b3_\b0 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-31 {\n-_\b3_\b2 typedef B _\bB_\ba_\bs_\bi_\bs;\n-_\b3_\b3 typedef typename Basis::Field _\bF_\bi_\be_\bl_\bd;\n-_\b3_\b4 typedef typename Basis::DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-_\b3_\b5 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Basis::dimension;\n-_\b3_\b6 static const int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Basis::dimRange;\n-37\n-_\b3_\b8 typedef std::vector _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br;\n-39\n-40 template< class Deriv >\n-41 struct _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+_\b2_\b4 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+25 {\n+26 public:\n+_\b2_\b8 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : index(0,0,0)\n+29 {}\n+30\n+_\b3_\b2 std::size_t _\bs_\bi_\bz_\be () const\n+33 {\n+34 return 1;\n+35 }\n+36\n+_\b3_\b8 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by ([[maybe_unused]] std::size_t i) const\n+39 {\n+40 return index;\n+41 }\n 42\n-43 template \n-_\b4_\b4 struct _\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-45 {\n-_\b4_\b6 typedef\n-_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> > _\bA_\bl_\bl;\n-_\b4_\b7 typedef _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b1_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\b> > _\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\be;\n-48 };\n-49\n-_\b5_\b0 unsigned int _\bs_\bi_\bz_\be() const\n-51 {\n-52 return _\bs_\bi_\bz_\be_\b_;\n-53 }\n-54\n-55 protected:\n-_\b5_\b6 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(const _\bB_\ba_\bs_\bi_\bs &basis,unsigned int order,unsigned int _\bs_\bi_\bz_\be)\n-57 : _\bb_\ba_\bs_\bi_\bs_\b_(basis),\n-58 _\bo_\br_\bd_\be_\br_\b_(order),\n-59 _\bs_\bi_\bz_\be_\b_(_\bs_\bi_\bz_\be),\n-60 _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_(0)\n-61 {}\n-62 template \n-_\b6_\b3 void _\br_\be_\bs_\bi_\bz_\be()\n-64 {\n-65 const int totalSize =\n-_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>_\b:_\b:\n-_\bs_\bi_\bz_\be*_\bs_\bi_\bz_\be_\b_;\n-66 _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_.resize(totalSize);\n-67 }\n-_\b6_\b8 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br&);\n-_\b6_\b9 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs_\b_;\n-_\b7_\b0 unsigned int _\bo_\br_\bd_\be_\br_\b_,_\bs_\bi_\bz_\be_\b_;\n-_\b7_\b1 _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_;\n-72 };\n-73\n-74\n-75 template< class B >\n-76 template< class Deriv >\n-_\b7_\b7 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br< B >::_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-78 {\n-_\b7_\b9 typedef Deriv _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs;\n-_\b8_\b0 typedef typename Deriv::Field _\bF_\bi_\be_\bl_\bd;\n-_\b8_\b1 static const unsigned int blockSize = Deriv::size;\n-_\b8_\b2 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-_\b8_\b3 static const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt layout = Deriv::layout;\n-_\b8_\b4 static const unsigned int dimDomain = Deriv::dimDomain;\n-_\b8_\b5 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Deriv::dimRange;\n-86\n-_\b8_\b7 typedef std::vector _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br;\n-_\b8_\b8 typedef typename Container::iterator _\bC_\bI_\bt_\be_\br;\n-89\n-_\b9_\b0 explicit _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br &container )\n-91 : pos_( container.begin() ),\n-92 end_( container.end() )\n-93 {}\n-94\n-_\b9_\b5 const Deriv &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*() const\n-96 {\n-97 assert(!done());\n-98 return reinterpret_cast(*pos_);\n-99 }\n-100\n-_\b1_\b0_\b1 const Deriv *_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>() const\n-102 {\n-103 return &(_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*());\n-104 }\n-105\n-_\b1_\b0_\b6 bool _\bd_\bo_\bn_\be () const\n-107 {\n-108 return pos_ == end_;\n-109 }\n-110\n-_\b1_\b1_\b1 _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &operator++ ()\n-112 {\n-113 pos_ += blockSize;\n-114 return *this;\n-115 }\n-116\n-_\b1_\b1_\b7 _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &operator+= ( unsigned int skip )\n-118 {\n-119 pos_ += skip*blockSize;\n-120 return *this;\n-121 }\n-122\n-123 private:\n-124 CIter pos_;\n-125 const CIter end_;\n-126 };\n-127\n-128 template< class B >\n-_\b1_\b2_\b9 struct _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-130 : public _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br< B >\n-131 {\n-_\b1_\b3_\b2 typedef B _\bB_\ba_\bs_\bi_\bs;\n-_\b1_\b3_\b3 typedef typename Basis::Field _\bF_\bi_\be_\bl_\bd;\n-_\b1_\b3_\b4 typedef typename Basis::DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n-_\b1_\b3_\b5 typedef std::vector _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br;\n-_\b1_\b3_\b6 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Basis::dimension;\n-_\b1_\b3_\b7 static const int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Basis::dimRange;\n-_\b1_\b3_\b8 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\bB_\b> _\bB_\ba_\bs_\be;\n-139\n-140 template \n-_\b1_\b4_\b1 struct _\bI_\bt_\be_\br_\ba_\bt_\bo_\br : public Base::template _\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-142 {};\n-143\n-_\b1_\b4_\b4 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(const _\bB_\ba_\bs_\bi_\bs &basis)\n-145 : _\bB_\ba_\bs_\be(basis,basis.order(),basis._\bs_\bi_\bz_\be())\n-146 {}\n-147 template \n-_\b1_\b4_\b8 typename _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bd_\be_\br_\bi_\bv_\b>_\b:_\b:_\bA_\bl_\bl _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DVector &x)\n-149 {\n-150 Base::template resize();\n-151 basis_.template evaluate(x,&(container_[0]));\n-152 return typename _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bd_\be_\br_\bi_\bv_\b>_\b:_\b:_\bA_\bl_\bl(container_);\n-153 }\n-_\b1_\b5_\b4 typename _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b0_\b>_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\be _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be()\n-155 {\n-156 Base::template resize<0>();\n-157 basis_.integrate(&(container_[0]));\n-158 return typename _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b0_\b>_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\be(container_);\n-159 }\n-160\n-161 protected:\n-_\b1_\b6_\b2 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br ( const _\bB_\ba_\bs_\bi_\bs &basis, unsigned int _\bs_\bi_\bz_\be )\n-163 : _\bB_\ba_\bs_\be( basis, basis.order(), _\bs_\bi_\bz_\be )\n-164 {}\n-165\n-166 private:\n-167 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(const _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br&);\n-168 using _\bB_\ba_\bs_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_;\n-169 using _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_;\n-170 };\n-171\n-172}\n-173\n-174#endif\n-_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n-_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+43 private:\n+44 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by index;\n+45 };\n+46\n+47}\n+48#endif\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n-Field operator*(const Unity< Field > &u, const Field &f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt\n-DerivativeLayout\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:176\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const int dimRange\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-B Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n-unsigned int order_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_\n-const Basis & basis_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-MonomialEvaluator(const Basis &basis, unsigned int order, unsigned int size)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-Basis::Field Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be_\b_\n-unsigned int size_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n-Basis::DomainVector DomainVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_\n-Container container_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-std::vector< Field > Container\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-MonomialEvaluator(const MonomialEvaluator &)\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-BaseIterator(Container &container)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n-const Deriv & operator*() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n-Dune::FieldVector< Field, blockSize > Block\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bo_\bn_\be\n-bool done() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bI_\bt_\be_\br\n-Container::iterator CIter\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>\n-const Deriv * operator->() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-Deriv Derivatives\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-std::vector< Field > Container\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-Deriv::Field Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n-BaseIterator< Derivatives< Field, dimension, 1, 0, DerivativeLayoutNS::value >\n-> Integrate\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bl\n-BaseIterator< Derivatives< Field, dimension, dimRange, deriv,\n-DerivativeLayoutNS::derivative > > All\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-Basis::Field Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n-Basis::DomainVector DomainVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-Iterator< deriv >::All evaluate(const DVector &x)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:148\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be\n-MonomialEvaluator< B > Base\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-StandardEvaluator(const Basis &basis)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:144\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const int dimRange\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:137\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-std::vector< Field > Container\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n-Iterator< 0 >::Integrate integrate()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:154\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-B Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-StandardEvaluator(const Basis &basis, unsigned int size)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:162\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:136\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:180\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+P0LocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:32\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolationhelper.hh File Reference\n+dune-localfunctions: p0localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,38 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    interpolationhelper.hh File Reference
    \n+
    p0localbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/concept.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n+
    #include <numeric>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n+\n \n

    \n Classes

    struct  Dune::InterpolationHelper< F, dimension >
     
    struct  Dune::InterpolationHelper< F, dimension >::Helper< Func, Vector, true >
     
    struct  Dune::InterpolationHelper< F, dimension >::Helper< Basis, Matrix, false >
    class  Dune::P0LocalBasis< D, R, d >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bp_\b0\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-interpolationhelper.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+p0localbasis.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be\n- _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,\n- _\bf_\ba_\bl_\bs_\be_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolationhelper.hh Source File\n+dune-localfunctions: p0localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,199 +70,109 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    interpolationhelper.hh
    \n+
    p0localbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef GENERIC_INTERPOLATIONHELPER_HH
    \n-
    6#define GENERIC_INTERPOLATIONHELPER_HH
    \n+
    5#ifndef DUNE_P0LOCALBASIS_HH
    \n+
    6#define DUNE_P0LOCALBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8#include <numeric>
    \n
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11#include <dune/common/concept.hh>
    \n-\n+
    10#include <dune/common/fmatrix.hh>
    \n+
    11
    \n+\n
    13
    \n
    14namespace Dune
    \n
    15{
    \n-
    16 // A small helper class to avoid having to
    \n-
    17 // write the interpolation twice (once for function
    \n-
    18 // and once for a basis)
    \n-
    19 template< class F, unsigned int dimension >
    \n-
    \n-\n-
    21 {
    \n-
    22 template <class Func,class Container, bool type>
    \n-
    23 struct Helper;
    \n-
    24 };
    \n-
    \n-
    25 template <class F,unsigned int d>
    \n-
    26 template <class Func,class Vector>
    \n-
    \n-
    27 struct InterpolationHelper<F,d>::Helper<Func,Vector,true>
    \n-
    28 // Func is of Function type
    \n-
    29 {
    \n-
    30 typedef std::vector< Dune::FieldVector<F,d> > Result;
    \n-
    \n-
    31 Helper(const Func & func, Vector &vec)
    \n-
    32 : func_(func),
    \n-
    33 vec_(vec),
    \n-
    34 tmp_(1)
    \n-
    35 {}
    \n-
    \n-
    \n-
    36 const typename Vector::value_type &operator()(unsigned int row,unsigned int col)
    \n-
    37 {
    \n-
    38 return vec_[row];
    \n-
    39 }
    \n-
    \n-
    40 template <class Fy>
    \n-
    \n-
    41 void set(unsigned int row,unsigned int col,
    \n-
    42 const Fy &val)
    \n-
    43 {
    \n-
    44 assert(col==0);
    \n-
    45 assert(row<vec_.size());
    \n-
    46 field_cast( val, vec_[row] );
    \n-
    47 }
    \n-
    \n-
    48 template <class Fy>
    \n-
    \n-
    49 void add(unsigned int row,unsigned int col,
    \n-
    50 const Fy &val)
    \n-
    51 {
    \n-
    52 assert(col==0);
    \n-
    53 assert(row<vec_.size());
    \n-
    54 vec_[row] += field_cast<typename Vector::value_type>(val);
    \n-
    55 }
    \n-
    \n-
    56 template <class DomainVector>
    \n-
    \n-
    57 const Result &evaluate(const DomainVector &x) const
    \n-
    58 {
    \n-
    59 field_cast(func_(x), tmp_[0] );
    \n-
    60 return tmp_;
    \n-
    61 }
    \n-
    \n-
    \n-
    62 unsigned int size() const
    \n-
    63 {
    \n-
    64 return 1;
    \n-
    65 }
    \n-
    \n-
    66 const Func &func_;
    \n-
    67 Vector &vec_;
    \n-
    68 mutable Result tmp_;
    \n-
    69 };
    \n-
    \n-
    70 template <class F,unsigned int d>
    \n-
    71 template <class Basis,class Matrix>
    \n-
    \n-
    72 struct InterpolationHelper<F,d>::Helper<Basis,Matrix,false>
    \n-
    73 // Func is of Basis type
    \n-
    74 {
    \n-
    75 typedef std::vector< Dune::FieldVector<F,d> > Result;
    \n-
    \n-
    76 Helper(const Basis & basis, Matrix &matrix)
    \n-
    77 : basis_(basis),
    \n-
    78 matrix_(matrix),
    \n-
    79 tmp_(basis.size()) {}
    \n+
    29 template<class D, class R, int d>
    \n+
    \n+\n+
    31 {
    \n+
    32 public:
    \n+
    34 typedef LocalBasisTraits<D,d,Dune::FieldVector<D,d>,R,1,Dune::FieldVector<R,1>,
    \n+
    35 Dune::FieldMatrix<R,1,d> > Traits;
    \n+
    36
    \n+
    \n+
    38 unsigned int size () const
    \n+
    39 {
    \n+
    40 return 1;
    \n+
    41 }
    \n+
    \n+
    42
    \n+
    \n+
    44 inline void evaluateFunction (const typename Traits::DomainType&,
    \n+
    45 std::vector<typename Traits::RangeType>& out) const
    \n+
    46 {
    \n+
    47 out.resize(1);
    \n+
    48 out[0] = 1;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    52 inline void
    \n+
    \n+
    53 evaluateJacobian (const typename Traits::DomainType&, // position
    \n+
    54 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    55 {
    \n+
    56 out.resize(1);
    \n+
    57 for (int i=0; i<d; i++)
    \n+
    58 out[0][0][i] = 0;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    66 void partial(const std::array<unsigned int,d>& order,
    \n+
    67 const typename Traits::DomainType& in,
    \n+
    68 std::vector<typename Traits::RangeType>& out) const
    \n+
    69 {
    \n+
    70 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    71 if (totalOrder == 0) {
    \n+
    72 evaluateFunction(in, out);
    \n+
    73 } else {
    \n+
    74 out.resize(1);
    \n+
    75 out[0] = 0;
    \n+
    76 }
    \n+
    77 }
    \n
    \n+
    78
    \n
    \n-
    80 const F &operator()(unsigned int row,unsigned int col) const
    \n+
    80 unsigned int order () const
    \n
    81 {
    \n-
    82 return matrix_[row][col];
    \n+
    82 return 0;
    \n
    83 }
    \n
    \n-
    \n-
    84 F &operator()(unsigned int row,unsigned int col)
    \n-
    85 {
    \n-
    86 return matrix_[row][col];
    \n-
    87 }
    \n-
    \n-
    88 template <class Fy>
    \n-
    \n-
    89 void set(unsigned int row,unsigned int col,
    \n-
    90 const Fy &val)
    \n-
    91 {
    \n-
    92 assert(col<matrix_.cols());
    \n-
    93 assert(row<matrix_.rows());
    \n-
    94 field_cast(val,matrix_[row][col]);
    \n-
    95 }
    \n-
    \n-
    96 template <class Fy>
    \n-
    \n-
    97 void add(unsigned int row,unsigned int col,
    \n-
    98 const Fy &val)
    \n-
    99 {
    \n-
    100 assert(col<matrix_.cols());
    \n-
    101 assert(row<matrix_.rows());
    \n-
    102 matrix_[row][col] += val;
    \n-
    103 }
    \n-
    \n-
    104 template <class DomainVector>
    \n-
    \n-
    105 const Result &evaluate(const DomainVector &x) const
    \n-
    106 {
    \n-
    107 basis_.template evaluate<0>(x,tmp_);
    \n-
    108 return tmp_;
    \n-
    109 }
    \n-
    \n-
    \n-
    110 unsigned int size() const
    \n-
    111 {
    \n-
    112 return basis_.size();
    \n-
    113 }
    \n-
    \n-
    114
    \n-
    115 const Basis &basis_;
    \n-
    116 Matrix &matrix_;
    \n-
    117 mutable Result tmp_;
    \n-
    118 };
    \n-
    \n-
    119}
    \n-
    120#endif // GENERIC_INTERPOLATIONHELPER_HH
    \n-\n+
    84 };
    \n+
    \n+
    85
    \n+
    86}
    \n+
    87
    \n+
    88#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    Definition interpolationhelper.hh:21
    \n-
    Definition interpolationhelper.hh:23
    \n-
    void add(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:49
    \n-
    const Func & func_
    Definition interpolationhelper.hh:66
    \n-
    Helper(const Func &func, Vector &vec)
    Definition interpolationhelper.hh:31
    \n-
    const Result & evaluate(const DomainVector &x) const
    Definition interpolationhelper.hh:57
    \n-
    std::vector< Dune::FieldVector< F, d > > Result
    Definition interpolationhelper.hh:30
    \n-
    unsigned int size() const
    Definition interpolationhelper.hh:62
    \n-
    Vector & vec_
    Definition interpolationhelper.hh:67
    \n-
    void set(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:41
    \n-
    Result tmp_
    Definition interpolationhelper.hh:68
    \n-
    const Vector::value_type & operator()(unsigned int row, unsigned int col)
    Definition interpolationhelper.hh:36
    \n-
    const Basis & basis_
    Definition interpolationhelper.hh:115
    \n-
    const Result & evaluate(const DomainVector &x) const
    Definition interpolationhelper.hh:105
    \n-
    F & operator()(unsigned int row, unsigned int col)
    Definition interpolationhelper.hh:84
    \n-
    void set(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:89
    \n-
    Helper(const Basis &basis, Matrix &matrix)
    Definition interpolationhelper.hh:76
    \n-
    unsigned int size() const
    Definition interpolationhelper.hh:110
    \n-
    Result tmp_
    Definition interpolationhelper.hh:117
    \n-
    void add(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:97
    \n-
    std::vector< Dune::FieldVector< F, d > > Result
    Definition interpolationhelper.hh:75
    \n-
    Matrix & matrix_
    Definition interpolationhelper.hh:116
    \n-
    const F & operator()(unsigned int row, unsigned int col) const
    Definition interpolationhelper.hh:80
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Definition p0localbasis.hh:31
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition p0localbasis.hh:80
    \n+
    void evaluateJacobian(const typename Traits::DomainType &, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition p0localbasis.hh:53
    \n+
    void evaluateFunction(const typename Traits::DomainType &, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition p0localbasis.hh:44
    \n+
    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 p0localbasis.hh:66
    \n+
    unsigned int size() const
    number of shape functions
    Definition p0localbasis.hh:38
    \n+
    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 p0localbasis.hh:35
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,207 +1,119 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-interpolationhelper.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bp_\b0\n+p0localbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef GENERIC_INTERPOLATIONHELPER_HH\n-6#define GENERIC_INTERPOLATIONHELPER_HH\n+5#ifndef DUNE_P0LOCALBASIS_HH\n+6#define DUNE_P0LOCALBASIS_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11#include \n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n 13\n 14namespace _\bD_\bu_\bn_\be\n 15{\n-16 // A small helper class to avoid having to\n-17 // write the interpolation twice (once for function\n-18 // and once for a basis)\n-19 template< class F, unsigned int dimension >\n-_\b2_\b0 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n-21 {\n-22 template \n-_\b2_\b3 struct _\bH_\be_\bl_\bp_\be_\br;\n-24 };\n-25 template \n-26 template \n-_\b2_\b7 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br::_\bH_\be_\bl_\bp_\be_\br\n-28 // Func is of Function type\n-29 {\n-_\b3_\b0 typedef std::vector< Dune::FieldVector > _\bR_\be_\bs_\bu_\bl_\bt;\n-_\b3_\b1 _\bH_\be_\bl_\bp_\be_\br(const Func & func, Vector &vec)\n-32 : func_(func),\n-33 vec_(vec),\n-34 tmp_(1)\n-35 {}\n-_\b3_\b6 const typename Vector::value_type &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int\n-col)\n-37 {\n-38 return vec_[row];\n-39 }\n-40 template \n-_\b4_\b1 void _\bs_\be_\bt(unsigned int row,unsigned int col,\n-42 const Fy &val)\n-43 {\n-44 assert(col==0);\n-45 assert(row\n-_\b4_\b9 void _\ba_\bd_\bd(unsigned int row,unsigned int col,\n-50 const Fy &val)\n-51 {\n-52 assert(col==0);\n-53 assert(row(val);\n-55 }\n-56 template \n-_\b5_\b7 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n-58 {\n-59 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(func_(x), tmp_[0] );\n-60 return tmp_;\n-61 }\n-_\b6_\b2 unsigned int _\bs_\bi_\bz_\be() const\n-63 {\n-64 return 1;\n-65 }\n-_\b6_\b6 const Func &_\bf_\bu_\bn_\bc_\b_;\n-_\b6_\b7 Vector &_\bv_\be_\bc_\b_;\n-_\b6_\b8 mutable _\bR_\be_\bs_\bu_\bl_\bt _\bt_\bm_\bp_\b_;\n-69 };\n-70 template \n-71 template \n-_\b7_\b2 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br::_\bH_\be_\bl_\bp_\be_\br\n-73 // Func is of Basis type\n-74 {\n-_\b7_\b5 typedef std::vector< Dune::FieldVector > _\bR_\be_\bs_\bu_\bl_\bt;\n-_\b7_\b6 _\bH_\be_\bl_\bp_\be_\br(const Basis & basis, Matrix &matrix)\n-77 : basis_(basis),\n-78 matrix_(matrix),\n-79 tmp_(basis.size()) {}\n-_\b8_\b0 const F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int col) const\n+29 template\n+_\b3_\b0 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+31 {\n+32 public:\n+34 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\b>,R,1,Dune::\n+FieldVector,\n+_\b3_\b5 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+36\n+_\b3_\b8 unsigned int _\bs_\bi_\bz_\be () const\n+39 {\n+40 return 1;\n+41 }\n+42\n+_\b4_\b4 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be&,\n+45 std::vector& out) const\n+46 {\n+47 out.resize(1);\n+48 out[0] = 1;\n+49 }\n+50\n+52 inline void\n+_\b5_\b3 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be&, // position\n+54 std::vector& out) const // return value\n+55 {\n+56 out.resize(1);\n+57 for (int i=0; i& _\bo_\br_\bd_\be_\br,\n+67 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+68 std::vector& out) const\n+69 {\n+70 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+71 if (totalOrder == 0) {\n+72 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+73 } else {\n+74 out.resize(1);\n+75 out[0] = 0;\n+76 }\n+77 }\n+78\n+_\b8_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n 81 {\n-82 return matrix_[row][col];\n+82 return 0;\n 83 }\n-_\b8_\b4 F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int col)\n-85 {\n-86 return matrix_[row][col];\n-87 }\n-88 template \n-_\b8_\b9 void _\bs_\be_\bt(unsigned int row,unsigned int col,\n-90 const Fy &val)\n-91 {\n-92 assert(col\n-_\b9_\b7 void _\ba_\bd_\bd(unsigned int row,unsigned int col,\n-98 const Fy &val)\n-99 {\n-100 assert(col\n-_\b1_\b0_\b5 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n-106 {\n-107 basis_.template evaluate<0>(x,tmp_);\n-108 return tmp_;\n-109 }\n-_\b1_\b1_\b0 unsigned int _\bs_\bi_\bz_\be() const\n-111 {\n-112 return basis_.size();\n-113 }\n-114\n-_\b1_\b1_\b5 const Basis &_\bb_\ba_\bs_\bi_\bs_\b_;\n-_\b1_\b1_\b6 Matrix &_\bm_\ba_\bt_\br_\bi_\bx_\b_;\n-_\b1_\b1_\b7 mutable _\bR_\be_\bs_\bu_\bl_\bt _\bt_\bm_\bp_\b_;\n-118 };\n-119}\n-120#endif // GENERIC_INTERPOLATIONHELPER_HH\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+84 };\n+85\n+86}\n+87\n+88#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\ba_\bd_\bd\n-void add(unsigned int row, unsigned int col, const Fy &val)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bf_\bu_\bn_\bc_\b_\n-const Func & func_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n-Helper(const Func &func, Vector &vec)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-const Result & evaluate(const DomainVector &x) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bR_\be_\bs_\bu_\bl_\bt\n-std::vector< Dune::FieldVector< F, d > > Result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, d > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of any order of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bv_\be_\bc_\b_\n-Vector & vec_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bs_\be_\bt\n-void set(unsigned int row, unsigned int col, const Fy &val)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bt_\bm_\bp_\b_\n-Result tmp_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const Vector::value_type & operator()(unsigned int row, unsigned int col)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_\n-const Basis & basis_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-const Result & evaluate(const DomainVector &x) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-F & operator()(unsigned int row, unsigned int col)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bs_\be_\bt\n-void set(unsigned int row, unsigned int col, const Fy &val)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n-Helper(const Basis &basis, Matrix &matrix)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bt_\bm_\bp_\b_\n-Result tmp_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\ba_\bd_\bd\n-void add(unsigned int row, unsigned int col, const Fy &val)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bR_\be_\bs_\bu_\bl_\bt\n-std::vector< Dune::FieldVector< F, d > > Result\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bm_\ba_\bt_\br_\bi_\bx_\b_\n-Matrix & matrix_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:116\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const F & operator()(unsigned int row, unsigned int col) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:80\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, d, Dune::FieldVector< D, d >, R, 1, Dune::FieldVector< R,\n+1 >, Dune::FieldMatrix< R, 1, d > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:35\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basisprint.hh File Reference\n+dune-localfunctions: pk1d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,47 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    basisprint.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    pk1d.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/utility/multiindex.hh>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n+\n

    Go to the source code of this file.

    \n \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::Pk1DFiniteElement< Geometry, RF, k >
     Langrange finite element of arbitrary order on triangles. More...
     
    struct  Dune::Pk1DFiniteElement< Geometry, RF, k >::Traits
     
    struct  Dune::Pk1DFiniteElementFactory< Geometry, RF, k >
     Factory for Pk1DFiniteElement objects. More...
     
    \n \n \n \n-

    \n Namespaces

    namespace  Dune
     
    \n-\n-\n-\n-\n-\n-\n-\n

    \n-Functions

    template<int deriv, class BasisFactory , class PrintField , GeometryType::Id geometryId>
    void Dune::basisPrint (std::ostream &out, typename BasisFactory::Object &basis)
     
    template<int deriv, class BasisFactory , class PrintField = typename BasisFactory::StorageField>
    void Dune::basisPrint (std::ostream &out, typename BasisFactory::Key &key)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,29 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-basisprint.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+pk1d.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n+C\bCl\bla\bas\bss\bse\bes\bs\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>\n+\u00a0 Langrange finite element of arbitrary order on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n \u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template\n-void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt (std::ostream &out, typename BasisFactory::Object\n- &basis)\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>\n+\u00a0 Factory for _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt objects. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-template\n-void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt (std::ostream &out, typename BasisFactory::Key &key)\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basisprint.hh Source File\n+dune-localfunctions: pk1d.hh Source File\n \n \n \n \n \n \n \n@@ -70,105 +70,144 @@\n
    \n \n \n \n \n \n \n
    \n-
    basisprint.hh
    \n+
    pk1d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef BASISPRINT
    \n-
    6#define BASISPRINT
    \n-\n-\n-
    9namespace Dune {
    \n-
    10 /**********************************************
    \n-
    11 * Methods for printing a PolynomialBasis.
    \n-
    12 * Is achieved by using the MultiIndex class as
    \n-
    13 * Field type and printing the results.
    \n-
    14 * The basis and higher order derivatives can be
    \n-
    15 * printed. This could be the basis for printing
    \n-
    16 * routings providing C++ or matlab methods
    \n-
    17 * for computing the basisfunctions for given
    \n-
    18 * orders or reference elements.
    \n-
    19 **********************************************/
    \n-
    20 // default argument does not work for gcc 4.1.2
    \n-
    21 // template <int deriv,class BasisFactory,class PrintField=typename BasisFactory::StorageField>
    \n-
    22 template <int deriv,class BasisFactory,class PrintField,GeometryType::Id geometryId>
    \n-
    \n-
    23 void basisPrint(std::ostream &out,
    \n-
    24 typename BasisFactory::Object &basis)
    \n-
    25 {
    \n-
    26 typedef typename BasisFactory::Object Basis;
    \n-
    27 const int dimension = Basis::dimension;
    \n-
    28
    \n-\n-
    30 typedef typename BasisFactory::template EvaluationBasisFactory<dimension,Field>::Type
    \n-
    31 MIBasisFactory;
    \n-
    32 typedef typename MIBasisFactory::Object MIBasis;
    \n-
    33 typedef typename Basis::CoefficientMatrix CMatrix;
    \n-
    34 typedef PolynomialBasis<StandardEvaluator<MIBasis>, CMatrix > PrintBasis;
    \n-
    35
    \n-
    36 MIBasis *miBasis = MIBasisFactory::template create<geometryId>( basis.basis().order());
    \n-
    37 PrintBasis printBasis(*miBasis,basis.matrix(),basis.size());
    \n-
    38
    \n-
    39 unsigned int size = printBasis.size();
    \n-
    40
    \n-
    41 out << "% Number of base functions: " << size << std::endl;
    \n-
    42 out << "% Derivative order: " << deriv << std::endl;
    \n-
    43
    \n-
    44 std::vector< FieldVector<
    \n-
    45 FieldVector<Field,LFETensor<Field,dimension,deriv>::size>,
    \n-
    46 PrintBasis::dimRange> > y( size );
    \n-
    47
    \n-
    48 FieldVector< Field, dimension > x;
    \n-
    49 for( int i = 0; i < dimension; ++i )
    \n-
    50 x[ i ].set( i, 1 );
    \n-
    51 printBasis.template evaluateSingle<deriv>( x, y );
    \n-
    52 for (unsigned int i=0; i<size; ++i)
    \n-
    53 {
    \n-
    54 out << "$\\\\varphi_" << i << "(a,b,c)$&$=$&$" << std::endl;
    \n-
    55 out << "( ";
    \n-
    56 for (unsigned int r=0; r<PrintBasis::dimRange; ++r)
    \n-
    57 out << y[i][r] << (r<PrintBasis::dimRange-1 ? " , $ \\\\\\\\ && $" : " )$ \\\\\\\\");
    \n-
    58 out << std::endl;
    \n-
    59 }
    \n-
    60 MIBasisFactory::release(miBasis);
    \n-
    61 }
    \n-
    \n-
    62
    \n-
    63 template <int deriv,class BasisFactory,class PrintField=typename BasisFactory::StorageField>
    \n-
    \n-
    64 void basisPrint(std::ostream &out,
    \n-
    65 typename BasisFactory::Key &key)
    \n-
    66 {
    \n-
    67 typename BasisFactory::Object *basis = BasisFactory::create(key);
    \n-
    68 basisPrint<deriv,BasisFactory,PrintField>(out,*basis);
    \n-
    69 BasisFactory::release(basis);
    \n-
    70 }
    \n-
    \n-
    71}
    \n-
    72
    \n-
    73
    \n-
    74#endif // BASISPRINT
    \n-\n-\n+
    5#ifndef DUNE_PK1DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_PK1DLOCALFINITEELEMENT_HH
    \n+
    7
    \n+
    8#include <cstddef>
    \n+
    9
    \n+
    10#include <dune/geometry/type.hh>
    \n+
    11
    \n+\n+\n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    19
    \n+
    21
    \n+
    28 template<class Geometry, class RF, std::size_t k>
    \n+
    \n+\n+
    30 typedef typename Geometry::ctype DF;
    \n+
    31 typedef Impl::LagrangeSimplexLocalBasis<DF,RF,1,k> LocalBasis;
    \n+
    32 typedef Impl::LagrangeSimplexLocalInterpolation<LocalBasis> LocalInterpolation;
    \n+
    33
    \n+
    34 public:
    \n+
    \n+
    38 struct Traits {
    \n+\n+\n+
    41 LocalInterpolation,
    \n+
    42 typename Basis::Traits
    \n+\n+
    44 typedef Impl::LagrangeSimplexLocalCoefficients<1,k> Coefficients;
    \n+
    45 };
    \n+
    \n+
    46
    \n+
    47 private:
    \n+
    48 static const GeometryType gt;
    \n+
    49 static const LocalBasis localBasis;
    \n+
    50 static const LocalInterpolation localInterpolation;
    \n+
    51
    \n+
    52 typename Traits::Basis basis_;
    \n+
    53 typename Traits::Interpolation interpolation_;
    \n+
    54 typename Traits::Coefficients coefficients_;
    \n+
    55
    \n+
    56 public:
    \n+
    58
    \n+
    71 template<class VertexOrder>
    \n+
    \n+
    72 Pk1DFiniteElement(const Geometry &geometry,
    \n+
    73 const VertexOrder& vertexOrder) :
    \n+
    74 basis_(localBasis, geometry), interpolation_(localInterpolation),
    \n+
    75 coefficients_(vertexOrder.begin(0, 0))
    \n+
    76 { }
    \n+
    \n+
    77
    \n+
    78 const typename Traits::Basis& basis() const { return basis_; }
    \n+
    \n+
    79 const typename Traits::Interpolation& interpolation() const
    \n+
    80 { return interpolation_; }
    \n+
    \n+
    \n+
    81 const typename Traits::Coefficients& coefficients() const
    \n+
    82 { return coefficients_; }
    \n+
    \n+
    83 const GeometryType &type() const { return gt; }
    \n+
    84 };
    \n+
    \n+
    85
    \n+
    86 template<class Geometry, class RF, std::size_t k>
    \n+
    87 const GeometryType
    \n+
    88 Pk1DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
    \n+
    89
    \n+
    90 template<class Geometry, class RF, std::size_t k>
    \n+
    91 const typename Pk1DFiniteElement<Geometry, RF, k>::LocalBasis
    \n+
    92 Pk1DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
    \n+
    93
    \n+
    94 template<class Geometry, class RF, std::size_t k>
    \n+
    95 const typename Pk1DFiniteElement<Geometry, RF, k>::LocalInterpolation
    \n+
    96 Pk1DFiniteElement<Geometry, RF, k>::localInterpolation =
    \n+
    97 LocalInterpolation();
    \n+
    98
    \n+
    100
    \n+
    110 template<class Geometry, class RF, std::size_t k>
    \n+
    \n+\n+\n+
    113
    \n+
    115
    \n+
    129 template<class VertexOrder>
    \n+
    \n+
    130 const FiniteElement make(const Geometry& geometry,
    \n+
    131 const VertexOrder& vertexOrder)
    \n+
    132 { return FiniteElement(geometry, vertexOrder); }
    \n+
    \n+
    133 };
    \n+
    \n+
    134}
    \n+
    135
    \n+
    136#endif
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    void basisPrint(std::ostream &out, typename BasisFactory::Object &basis)
    Definition basisprint.hh:23
    \n-
    Definition multiindex.hh:38
    \n-
    Definition polynomialbasis.hh:65
    \n+
    Traits class for local-to-global basis adaptors.
    Definition localtoglobaladaptors.hh:30
    \n+
    Convert a simple scalar local basis into a global basis.
    Definition localtoglobaladaptors.hh:65
    \n+
    Convert a local interpolation into a global interpolation.
    Definition localtoglobaladaptors.hh:149
    \n+
    Langrange finite element of arbitrary order on triangles.
    Definition pk1d.hh:29
    \n+
    Pk1DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct a Pk1DFiniteElement
    Definition pk1d.hh:72
    \n+
    const Traits::Basis & basis() const
    Definition pk1d.hh:78
    \n+
    const GeometryType & type() const
    Definition pk1d.hh:83
    \n+
    const Traits::Coefficients & coefficients() const
    Definition pk1d.hh:81
    \n+
    const Traits::Interpolation & interpolation() const
    Definition pk1d.hh:79
    \n+
    Definition pk1d.hh:38
    \n+
    ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
    Definition pk1d.hh:39
    \n+
    LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
    Definition pk1d.hh:43
    \n+
    Impl::LagrangeSimplexLocalCoefficients< 1, k > Coefficients
    Definition pk1d.hh:44
    \n+
    Factory for Pk1DFiniteElement objects.
    Definition pk1d.hh:111
    \n+
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct Pk1DFiniteElementFactory
    Definition pk1d.hh:130
    \n+
    Pk1DFiniteElement< Geometry, RF, k > FiniteElement
    Definition pk1d.hh:112
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,103 +1,158 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n-basisprint.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+pk1d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef BASISPRINT\n-6#define BASISPRINT\n-7#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n-8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-9namespace _\bD_\bu_\bn_\be {\n-10 /**********************************************\n-11 * Methods for printing a PolynomialBasis.\n-12 * Is achieved by using the MultiIndex class as\n-13 * Field type and printing the results.\n-14 * The basis and higher order derivatives can be\n-15 * printed. This could be the basis for printing\n-16 * routings providing C++ or matlab methods\n-17 * for computing the basisfunctions for given\n-18 * orders or reference elements.\n-19 **********************************************/\n-20 // default argument does not work for gcc 4.1.2\n-21 // template \n-22 template \n-_\b2_\b3 void _\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt(std::ostream &out,\n-24 typename BasisFactory::Object &basis)\n-25 {\n-26 typedef typename BasisFactory::Object Basis;\n-27 const int dimension = Basis::dimension;\n-28\n-29 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bP_\br_\bi_\bn_\bt_\bF_\bi_\be_\bl_\bd_\b _\b> Field;\n-30 typedef typename BasisFactory::template\n-EvaluationBasisFactory::Type\n-31 MIBasisFactory;\n-32 typedef typename MIBasisFactory::Object MIBasis;\n-33 typedef typename Basis::CoefficientMatrix CMatrix;\n-34 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\bM_\bI_\bB_\ba_\bs_\bi_\bs_\b>, CMatrix > PrintBasis;\n-35\n-36 MIBasis *miBasis = MIBasisFactory::template create( basis.basis\n-().order());\n-37 PrintBasis printBasis(*miBasis,basis.matrix(),basis.size());\n-38\n-39 unsigned int size = printBasis.size();\n-40\n-41 out << \"% Number of base functions: \" << size << std::endl;\n-42 out << \"% Derivative order: \" << deriv << std::endl;\n-43\n-44 std::vector< FieldVector<\n-45 FieldVector::size>,\n-46 PrintBasis::dimRange> > y( size );\n-47\n-48 FieldVector< Field, dimension > x;\n-49 for( int i = 0; i < dimension; ++i )\n-50 x[ i ].set( i, 1 );\n-51 printBasis.template evaluateSingle( x, y );\n-52 for (unsigned int i=0; i\n-_\b6_\b4 void _\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt(std::ostream &out,\n-65 typename BasisFactory::Key &key)\n-66 {\n-67 typename BasisFactory::Object *basis = BasisFactory::create(key);\n-68 basisPrint(out,*basis);\n-69 BasisFactory::release(basis);\n-70 }\n-71}\n-72\n-73\n-74#endif // BASISPRINT\n-_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n+5#ifndef DUNE_PK1DLOCALFINITEELEMENT_HH\n+6#define DUNE_PK1DLOCALFINITEELEMENT_HH\n+7\n+8#include \n+9\n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+19\n+21\n+28 template\n+_\b2_\b9 class _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n+30 typedef typename Geometry::ctype DF;\n+31 typedef Impl::LagrangeSimplexLocalBasis LocalBasis;\n+32 typedef Impl::LagrangeSimplexLocalInterpolation\n+LocalInterpolation;\n+33\n+34 public:\n+_\b3_\b8 struct _\bT_\br_\ba_\bi_\bt_\bs {\n+_\b3_\b9 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bB_\ba_\bs_\bi_\bs;\n+40 typedef _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br<\n+41 LocalInterpolation,\n+42 typename _\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+_\b4_\b3 > _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+_\b4_\b4 typedef Impl::LagrangeSimplexLocalCoefficients<1,k> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+45 };\n+46\n+47 private:\n+48 static const GeometryType gt;\n+49 static const LocalBasis localBasis;\n+50 static const LocalInterpolation localInterpolation;\n+51\n+52 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n+53 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n+54 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n+55\n+56 public:\n+58\n+71 template\n+_\b7_\b2 _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry &geometry,\n+73 const VertexOrder& vertexOrder) :\n+74 basis_(localBasis, geometry), interpolation_(localInterpolation),\n+75 coefficients_(vertexOrder.begin(0, 0))\n+76 { }\n+77\n+_\b7_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\n+_\b7_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n+80 { return interpolation_; }\n+_\b8_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n+82 { return coefficients_; }\n+_\b8_\b3 const GeometryType &_\bt_\by_\bp_\be() const { return gt; }\n+84 };\n+85\n+86 template\n+87 const GeometryType\n+88 Pk1DFiniteElement::gt(GeometryTypes::simplex(2));\n+89\n+90 template\n+91 const typename Pk1DFiniteElement::LocalBasis\n+92 Pk1DFiniteElement::localBasis = LocalBasis();\n+93\n+94 template\n+95 const typename Pk1DFiniteElement::LocalInterpolation\n+96 Pk1DFiniteElement::localInterpolation =\n+97 LocalInterpolation();\n+98\n+100\n+110 template\n+_\b1_\b1_\b1 struct _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+_\b1_\b1_\b2 typedef _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+113\n+115\n+129 template\n+_\b1_\b3_\b0 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n+131 const VertexOrder& vertexOrder)\n+132 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n+133 };\n+134}\n+135\n+136#endif\n+_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt\n-void basisPrint(std::ostream &out, typename BasisFactory::Object &basis)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisprint.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs\n+Traits class for local-to-global basis adaptors.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+Convert a simple scalar local basis into a global basis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+Convert a local interpolation into a global interpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Langrange finite element of arbitrary order on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Pk1DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)\n+construct a Pk1DFiniteElement\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n+const Traits::Basis & basis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+const GeometryType & type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::Coefficients & coefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::Interpolation & interpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits >\n+Interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Impl::LagrangeSimplexLocalCoefficients< 1, k > Coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for Pk1DFiniteElement objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const Geometry &geometry, const VertexOrder\n+&vertexOrder)\n+construct Pk1DFiniteElementFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Pk1DFiniteElement< Geometry, RF, k > FiniteElement\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:112\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini.hh File Reference\n+dune-localfunctions: pk2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,25 +65,48 @@\n \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini.hh File Reference
    \n+ \n+
    pk2d.hh File Reference
    \n
    \n
    \n-\n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,13 +1,29 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-brezzidouglasmarini.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+pk2d.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>\n+\u00a0 Langrange finite element of arbitrary order on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>\n+\u00a0 Factory for _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt objects. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini.hh Source File\n+dune-localfunctions: pk2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,35 +70,144 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini.hh
    \n+
    pk2d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH
    \n+
    5#ifndef DUNE_PK2DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_PK2DLOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8// BDM implementations with compile-time order
    \n-\n-\n+
    8#include <cstddef>
    \n+
    9
    \n+
    10#include <dune/geometry/type.hh>
    \n
    11
    \n-
    12#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH
    \n-\n-\n+\n+\n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    19
    \n+
    21
    \n+
    28 template<class Geometry, class RF, std::size_t k>
    \n+
    \n+\n+
    30 typedef typename Geometry::ctype DF;
    \n+
    31 typedef Impl::LagrangeSimplexLocalBasis<DF,RF,2,k> LocalBasis;
    \n+
    32 typedef Impl::LagrangeSimplexLocalInterpolation<LocalBasis> LocalInterpolation;
    \n+
    33
    \n+
    34 public:
    \n+
    \n+
    38 struct Traits {
    \n+\n+\n+
    41 LocalInterpolation,
    \n+
    42 typename Basis::Traits
    \n+\n+
    44 typedef Impl::LagrangeSimplexLocalCoefficients<2,k> Coefficients;
    \n+
    45 };
    \n+
    \n+
    46
    \n+
    47 private:
    \n+
    48 static const GeometryType gt;
    \n+
    49 static const LocalBasis localBasis;
    \n+
    50 static const LocalInterpolation localInterpolation;
    \n+
    51
    \n+
    52 typename Traits::Basis basis_;
    \n+
    53 typename Traits::Interpolation interpolation_;
    \n+
    54 typename Traits::Coefficients coefficients_;
    \n+
    55
    \n+
    56 public:
    \n+
    58
    \n+
    71 template<class VertexOrder>
    \n+
    \n+
    72 Pk2DFiniteElement(const Geometry &geometry,
    \n+
    73 const VertexOrder& vertexOrder) :
    \n+
    74 basis_(localBasis, geometry), interpolation_(localInterpolation),
    \n+
    75 coefficients_(vertexOrder.begin(0, 0))
    \n+
    76 { }
    \n+
    \n+
    77
    \n+
    78 const typename Traits::Basis& basis() const { return basis_; }
    \n+
    \n+
    79 const typename Traits::Interpolation& interpolation() const
    \n+
    80 { return interpolation_; }
    \n+
    \n+
    \n+
    81 const typename Traits::Coefficients& coefficients() const
    \n+
    82 { return coefficients_; }
    \n+
    \n+
    83 const GeometryType &type() const { return gt; }
    \n+
    84 };
    \n+
    \n+
    85
    \n+
    86 template<class Geometry, class RF, std::size_t k>
    \n+
    87 const GeometryType
    \n+
    88 Pk2DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
    \n+
    89
    \n+
    90 template<class Geometry, class RF, std::size_t k>
    \n+
    91 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalBasis
    \n+
    92 Pk2DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
    \n+
    93
    \n+
    94 template<class Geometry, class RF, std::size_t k>
    \n+
    95 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalInterpolation
    \n+
    96 Pk2DFiniteElement<Geometry, RF, k>::localInterpolation =
    \n+
    97 LocalInterpolation();
    \n+
    98
    \n+
    100
    \n+
    110 template<class Geometry, class RF, std::size_t k>
    \n+
    \n+\n+\n+
    113
    \n+
    115
    \n+
    129 template<class VertexOrder>
    \n+
    \n+
    130 const FiniteElement make(const Geometry& geometry,
    \n+
    131 const VertexOrder& vertexOrder)
    \n+
    132 { return FiniteElement(geometry, vertexOrder); }
    \n+
    \n+
    133 };
    \n+
    \n+
    134}
    \n+
    135
    \n+
    136#endif
    \n+\n+\n+\n+
    Definition bdfmcube.hh:18
    \n+
    Traits class for local-to-global basis adaptors.
    Definition localtoglobaladaptors.hh:30
    \n+
    Convert a simple scalar local basis into a global basis.
    Definition localtoglobaladaptors.hh:65
    \n+
    Convert a local interpolation into a global interpolation.
    Definition localtoglobaladaptors.hh:149
    \n+
    Langrange finite element of arbitrary order on triangles.
    Definition pk2d.hh:29
    \n+
    Pk2DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct a Pk2DFiniteElement
    Definition pk2d.hh:72
    \n+
    const Traits::Interpolation & interpolation() const
    Definition pk2d.hh:79
    \n+
    const Traits::Basis & basis() const
    Definition pk2d.hh:78
    \n+
    const Traits::Coefficients & coefficients() const
    Definition pk2d.hh:81
    \n+
    const GeometryType & type() const
    Definition pk2d.hh:83
    \n+
    Definition pk2d.hh:38
    \n+
    ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
    Definition pk2d.hh:39
    \n+
    Impl::LagrangeSimplexLocalCoefficients< 2, k > Coefficients
    Definition pk2d.hh:44
    \n+
    LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
    Definition pk2d.hh:43
    \n+
    Factory for Pk2DFiniteElement objects.
    Definition pk2d.hh:111
    \n+
    Pk2DFiniteElement< Geometry, RF, k > FiniteElement
    Definition pk2d.hh:112
    \n+
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct Pk2DFiniteElementFactory
    Definition pk2d.hh:130
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,158 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-brezzidouglasmarini.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+pk2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH\n+5#ifndef DUNE_PK2DLOCALFINITEELEMENT_HH\n+6#define DUNE_PK2DLOCALFINITEELEMENT_HH\n 7\n-8// BDM implementations with compile-time order\n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+8#include \n+9\n+10#include \n 11\n-12#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\bc_\bu_\bb_\be_\b._\bh_\bh\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+19\n+21\n+28 template\n+_\b2_\b9 class _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n+30 typedef typename Geometry::ctype DF;\n+31 typedef Impl::LagrangeSimplexLocalBasis LocalBasis;\n+32 typedef Impl::LagrangeSimplexLocalInterpolation\n+LocalInterpolation;\n+33\n+34 public:\n+_\b3_\b8 struct _\bT_\br_\ba_\bi_\bt_\bs {\n+_\b3_\b9 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bB_\ba_\bs_\bi_\bs;\n+40 typedef _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br<\n+41 LocalInterpolation,\n+42 typename _\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+_\b4_\b3 > _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+_\b4_\b4 typedef Impl::LagrangeSimplexLocalCoefficients<2,k> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+45 };\n+46\n+47 private:\n+48 static const GeometryType gt;\n+49 static const LocalBasis localBasis;\n+50 static const LocalInterpolation localInterpolation;\n+51\n+52 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n+53 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n+54 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n+55\n+56 public:\n+58\n+71 template\n+_\b7_\b2 _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry &geometry,\n+73 const VertexOrder& vertexOrder) :\n+74 basis_(localBasis, geometry), interpolation_(localInterpolation),\n+75 coefficients_(vertexOrder.begin(0, 0))\n+76 { }\n+77\n+_\b7_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\n+_\b7_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n+80 { return interpolation_; }\n+_\b8_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n+82 { return coefficients_; }\n+_\b8_\b3 const GeometryType &_\bt_\by_\bp_\be() const { return gt; }\n+84 };\n+85\n+86 template\n+87 const GeometryType\n+88 Pk2DFiniteElement::gt(GeometryTypes::simplex(2));\n+89\n+90 template\n+91 const typename Pk2DFiniteElement::LocalBasis\n+92 Pk2DFiniteElement::localBasis = LocalBasis();\n+93\n+94 template\n+95 const typename Pk2DFiniteElement::LocalInterpolation\n+96 Pk2DFiniteElement::localInterpolation =\n+97 LocalInterpolation();\n+98\n+100\n+110 template\n+_\b1_\b1_\b1 struct _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+_\b1_\b1_\b2 typedef _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+113\n+115\n+129 template\n+_\b1_\b3_\b0 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n+131 const VertexOrder& vertexOrder)\n+132 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n+133 };\n+134}\n+135\n+136#endif\n+_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs\n+Traits class for local-to-global basis adaptors.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+Convert a simple scalar local basis into a global basis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+Convert a local interpolation into a global interpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:149\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Langrange finite element of arbitrary order on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Pk2DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)\n+construct a Pk2DFiniteElement\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::Interpolation & interpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n+const Traits::Basis & basis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::Coefficients & coefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+const GeometryType & type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Impl::LagrangeSimplexLocalCoefficients< 2, k > Coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits >\n+Interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for Pk2DFiniteElement objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Pk2DFiniteElement< Geometry, RF, k > FiniteElement\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const Geometry &geometry, const VertexOrder\n+&vertexOrder)\n+construct Pk2DFiniteElementFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk2d.hh:130\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0cube2dall.hh File Reference\n+dune-localfunctions: lagrangebasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0cube2dall.hh File Reference
    \n+
    lagrangebasis.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+
    #include <fstream>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/localfunctions/utility/defaultbasisfactory.hh>
    \n+#include <dune/localfunctions/utility/monomialbasis.hh>
    \n+#include <dune/localfunctions/lagrange/interpolation.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n+\n \n

    \n Classes

    class  Dune::RT0Cube2DLocalBasis< D, R >
     
    class  Dune::RT0Cube2DLocalInterpolation< LB >
     
    class  Dune::RT0Cube2DLocalCoefficients
    struct  Dune::LagrangeBasisFactory< LP, dim, SF, CF >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0cube2dall.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+lagrangebasis.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0cube2dall.hh Source File\n+dune-localfunctions: lagrangebasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,249 +70,58 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0cube2dall.hh
    \n+
    lagrangebasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH
    \n+
    5#ifndef DUNE_LAGRANGEBASIS_HH
    \n+
    6#define DUNE_LAGRANGEBASIS_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <numeric>
    \n-
    10#include <vector>
    \n-
    11
    \n-
    12#include <dune/common/fmatrix.hh>
    \n+
    8#include <fstream>
    \n+
    9#include <dune/common/exceptions.hh>
    \n+
    10
    \n+\n+\n
    13
    \n-\n-\n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    28 template<class D, class R>
    \n-
    \n-\n-
    30 {
    \n-
    31 public:
    \n-
    32 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    33 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    34
    \n-
    \n-
    36 RT0Cube2DLocalBasis (std::bitset<4> s = 0)
    \n-
    37 {
    \n-
    38 for (int i=0; i<4; i++)
    \n-
    39 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    40 }
    \n-
    \n-
    41
    \n-
    \n-
    43 unsigned int size () const
    \n-
    44 {
    \n-
    45 return 4;
    \n-
    46 }
    \n-
    \n-
    47
    \n-
    \n-
    49 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    50 std::vector<typename Traits::RangeType>& out) const
    \n-
    51 {
    \n-
    52 out.resize(4);
    \n-
    53 out[0] = {sign_[0]*(in[0]-1.0), 0.0};
    \n-
    54 out[1] = {sign_[1]*(in[0]), 0.0};
    \n-
    55 out[2] = {0.0, sign_[2]*(in[1]-1.0)};
    \n-
    56 out[3] = {0.0, sign_[3]*(in[1])};
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    60 inline void
    \n-
    \n-
    61 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    62 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    63 {
    \n-
    64 out.resize(4);
    \n-
    65 out[0][0] = {sign_[0], 0};
    \n-
    66 out[0][1] = {0, 0};
    \n-
    67
    \n-
    68 out[1][0] = {sign_[1], 0};
    \n-
    69 out[1][1] = {0, 0};
    \n-
    70
    \n-
    71 out[2][0] = {0, 0};
    \n-
    72 out[2][1] = {0, sign_[2]};
    \n-
    73
    \n-
    74 out[3][0] = {0, 0};
    \n-
    75 out[3][1] = {0, sign_[3]};
    \n-
    76 }
    \n-
    \n-
    77
    \n-
    \n-
    79 void partial (const std::array<unsigned int, 2>& order,
    \n-
    80 const typename Traits::DomainType& in, // position
    \n-
    81 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    82 {
    \n-
    83 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    84 if (totalOrder == 0) {
    \n-
    85 evaluateFunction(in, out);
    \n-
    86 } else if (totalOrder == 1) {
    \n-
    87 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    88 out.resize(size());
    \n-
    89
    \n-
    90 for (std::size_t i = 0; i < size(); ++i)
    \n-
    91 out[i] = {0, 0};
    \n-
    92
    \n-
    93 switch (direction) {
    \n-
    94 case 0:
    \n-
    95 out[0][0] = sign_[0];
    \n-
    96 out[1][0] = sign_[1];
    \n-
    97 break;
    \n-
    98 case 1:
    \n-
    99 out[2][1] = sign_[2];
    \n-
    100 out[3][1] = sign_[3];
    \n-
    101 break;
    \n-
    102 default:
    \n-
    103 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    104 }
    \n-
    105 } else {
    \n-
    106 out.resize(size());
    \n-
    107 for (std::size_t i = 0; i < size(); ++i)
    \n-
    108 for (std::size_t j = 0; j < 2; ++j)
    \n-
    109 out[i][j] = 0;
    \n-
    110 }
    \n-
    111
    \n-
    112 }
    \n-
    \n-
    113
    \n-
    \n-
    115 unsigned int order () const
    \n-
    116 {
    \n-
    117 return 1;
    \n-
    118 }
    \n-
    \n-
    119
    \n-
    120 private:
    \n-
    121 std::array<R,4> sign_;
    \n-
    122 };
    \n-
    \n-
    123
    \n-
    124
    \n-
    133 template<class LB>
    \n-
    \n-\n-
    135 {
    \n-
    136 public:
    \n-
    137
    \n-
    \n-
    139 RT0Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n-
    140 {
    \n-
    141 for (int i=0; i<4; i++)
    \n-
    142 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    143
    \n-
    144 m0 = {0.0, 0.5};
    \n-
    145 m1 = {1.0, 0.5};
    \n-
    146 m2 = {0.5, 0.0};
    \n-
    147 m3 = {0.5, 1.0};
    \n-
    148
    \n-
    149 n0 = {-1.0, 0.0};
    \n-
    150 n1 = { 1.0, 0.0};
    \n-
    151 n2 = { 0.0, -1.0};
    \n-
    152 n3 = { 0.0, 1.0};
    \n-
    153 }
    \n-
    \n-
    154
    \n-
    155 template<typename F, typename C>
    \n-
    \n-
    156 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    157 {
    \n-
    158 // f gives v*outer normal at a point on the edge!
    \n-
    159
    \n-
    160 out.resize(4);
    \n-
    161
    \n-
    162 // Evaluate the normal components at the edge midpoints
    \n-
    163 auto y = f(m0); out[0] = (y[0]*n0[0]+y[1]*n0[1])*sign_[0];
    \n-
    164 y = f(m1); out[1] = (y[0]*n1[0]+y[1]*n1[1])*sign_[1];
    \n-
    165 y = f(m2); out[2] = (y[0]*n2[0]+y[1]*n2[1])*sign_[2];
    \n-
    166 y = f(m3); out[3] = (y[0]*n3[0]+y[1]*n3[1])*sign_[3];
    \n-
    167 }
    \n-
    \n-
    168
    \n-
    169 private:
    \n-
    170 std::array<typename LB::Traits::RangeFieldType,4> sign_;
    \n-
    171
    \n-
    172 // The four edge midpoints of the reference quadrilateral
    \n-
    173 typename LB::Traits::DomainType m0,m1,m2,m3;
    \n-
    174
    \n-
    175 // The four edge normals of the reference quadrilateral
    \n-
    176 typename LB::Traits::DomainType n0,n1,n2,n3;
    \n-
    177 };
    \n-
    \n-
    178
    \n-
    \n-\n-
    187 {
    \n-
    188 public:
    \n-
    \n-\n-
    191 {
    \n-
    192 for (std::size_t i=0; i<4; i++)
    \n-
    193 li[i] = LocalKey(i,1,0);
    \n-
    194 }
    \n-
    \n-
    195
    \n-
    \n-
    197 std::size_t size () const
    \n-
    198 {
    \n-
    199 return 4;
    \n-
    200 }
    \n-
    \n-
    201
    \n-
    \n-
    203 const LocalKey& localKey (std::size_t i) const
    \n-
    204 {
    \n-
    205 return li[i];
    \n-
    206 }
    \n-
    \n-
    207
    \n-
    208 private:
    \n-
    209 std::vector<LocalKey> li;
    \n-
    210 };
    \n-
    \n-
    211
    \n-
    212}
    \n-
    213#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH
    \n-\n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    19 template< template <class,unsigned int> class LP,
    \n+
    20 unsigned int dim, class SF, class CF >
    \n+
    \n+\n+
    22 : public DefaultBasisFactory< MonomialBasisFactory<dim,CF>,
    \n+
    23 LagrangeInterpolationFactory<LP,dim,CF>,
    \n+
    24 dim,1,SF,CF >
    \n+
    25 {};
    \n+
    \n+
    26
    \n+
    27}
    \n+
    28
    \n+
    29#endif // #ifndef DUNE_LAGRANGEBASIS_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Definition raviartthomas0cube2dall.hh:30
    \n-
    RT0Cube2DLocalBasis(std::bitset< 4 > s=0)
    Constructor with a set of edge orientations.
    Definition raviartthomas0cube2dall.hh:36
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas0cube2dall.hh:33
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas0cube2dall.hh:49
    \n-
    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 raviartthomas0cube2dall.hh:79
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas0cube2dall.hh:61
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas0cube2dall.hh:115
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas0cube2dall.hh:43
    \n-
    Definition raviartthomas0cube2dall.hh:135
    \n-
    RT0Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Constructor with explicitly given edge orientations.
    Definition raviartthomas0cube2dall.hh:139
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Definition raviartthomas0cube2dall.hh:156
    \n-
    Definition raviartthomas0cube2dall.hh:187
    \n-
    RT0Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0cube2dall.hh:190
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0cube2dall.hh:197
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0cube2dall.hh:203
    \n-\n+
    Definition lagrangebasis.hh:25
    \n+
    Definition defaultbasisfactory.hh:38
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,264 +1,50 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas0cube2dall.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+lagrangebasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH\n+5#ifndef DUNE_LAGRANGEBASIS_HH\n+6#define DUNE_LAGRANGEBASIS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include \n+8#include \n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n 13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-28 template\n-_\b2_\b9 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-30 {\n-31 public:\n-32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n-FieldVector,\n-_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b3_\b6 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n-37 {\n-38 for (int i=0; i<4; i++)\n-39 sign_[i] = s[i] ? -1.0 : 1.0;\n-40 }\n-41\n-_\b4_\b3 unsigned int _\bs_\bi_\bz_\be () const\n-44 {\n-45 return 4;\n-46 }\n-47\n-_\b4_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-50 std::vector& out) const\n-51 {\n-52 out.resize(4);\n-53 out[0] = {sign_[0]*(in[0]-1.0), 0.0};\n-54 out[1] = {sign_[1]*(in[0]), 0.0};\n-55 out[2] = {0.0, sign_[2]*(in[1]-1.0)};\n-56 out[3] = {0.0, sign_[3]*(in[1])};\n-57 }\n-58\n-60 inline void\n-_\b6_\b1 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-62 std::vector& out) const // return value\n-63 {\n-64 out.resize(4);\n-65 out[0][0] = {sign_[0], 0};\n-66 out[0][1] = {0, 0};\n-67\n-68 out[1][0] = {sign_[1], 0};\n-69 out[1][1] = {0, 0};\n-70\n-71 out[2][0] = {0, 0};\n-72 out[2][1] = {0, sign_[2]};\n-73\n-74 out[3][0] = {0, 0};\n-75 out[3][1] = {0, sign_[3]};\n-76 }\n-77\n-_\b7_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-80 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-81 std::vector& out) const // return value\n-82 {\n-83 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-84 if (totalOrder == 0) {\n-85 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-86 } else if (totalOrder == 1) {\n-87 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n-_\bo_\br_\bd_\be_\br.end(), 1));\n-88 out.resize(_\bs_\bi_\bz_\be());\n-89\n-90 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-91 out[i] = {0, 0};\n-92\n-93 switch (direction) {\n-94 case 0:\n-95 out[0][0] = sign_[0];\n-96 out[1][0] = sign_[1];\n-97 break;\n-98 case 1:\n-99 out[2][1] = sign_[2];\n-100 out[3][1] = sign_[3];\n-101 break;\n-102 default:\n-103 DUNE_THROW(RangeError, \"Component out of range.\");\n-104 }\n-105 } else {\n-106 out.resize(_\bs_\bi_\bz_\be());\n-107 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-108 for (std::size_t j = 0; j < 2; ++j)\n-109 out[i][j] = 0;\n-110 }\n-111\n-112 }\n-113\n-_\b1_\b1_\b5 unsigned int _\bo_\br_\bd_\be_\br () const\n-116 {\n-117 return 1;\n-118 }\n-119\n-120 private:\n-121 std::array sign_;\n-122 };\n-123\n-124\n-133 template\n-_\b1_\b3_\b4 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-135 {\n-136 public:\n-137\n-_\b1_\b3_\b9 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<4> s = 0)\n-140 {\n-141 for (int i=0; i<4; i++)\n-142 sign_[i] = s[i] ? -1.0 : 1.0;\n-143\n-144 m0 = {0.0, 0.5};\n-145 m1 = {1.0, 0.5};\n-146 m2 = {0.5, 0.0};\n-147 m3 = {0.5, 1.0};\n-148\n-149 n0 = {-1.0, 0.0};\n-150 n1 = { 1.0, 0.0};\n-151 n2 = { 0.0, -1.0};\n-152 n3 = { 0.0, 1.0};\n-153 }\n-154\n-155 template\n-_\b1_\b5_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-157 {\n-158 // f gives v*outer normal at a point on the edge!\n-159\n-160 out.resize(4);\n-161\n-162 // Evaluate the normal components at the edge midpoints\n-163 auto y = f(m0); out[0] = (y[0]*n0[0]+y[1]*n0[1])*sign_[0];\n-164 y = f(m1); out[1] = (y[0]*n1[0]+y[1]*n1[1])*sign_[1];\n-165 y = f(m2); out[2] = (y[0]*n2[0]+y[1]*n2[1])*sign_[2];\n-166 y = f(m3); out[3] = (y[0]*n3[0]+y[1]*n3[1])*sign_[3];\n-167 }\n-168\n-169 private:\n-170 std::array sign_;\n-171\n-172 // The four edge midpoints of the reference quadrilateral\n-173 typename LB::Traits::DomainType m0,m1,m2,m3;\n-174\n-175 // The four edge normals of the reference quadrilateral\n-176 typename LB::Traits::DomainType n0,n1,n2,n3;\n-177 };\n-178\n-_\b1_\b8_\b6 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-187 {\n-188 public:\n-_\b1_\b9_\b0 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(4)\n-191 {\n-192 for (std::size_t i=0; i<4; i++)\n-193 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-194 }\n-195\n-_\b1_\b9_\b7 std::size_t _\bs_\bi_\bz_\be () const\n-198 {\n-199 return 4;\n-200 }\n-201\n-_\b2_\b0_\b3 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-204 {\n-205 return li[i];\n-206 }\n-207\n-208 private:\n-209 std::vector li;\n-210 };\n-211\n-212}\n-213#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+19 template< template class LP,\n+20 unsigned int dim, class SF, class CF >\n+_\b2_\b1 struct _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+22 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< MonomialBasisFactory,\n+23 LagrangeInterpolationFactory,\n+24 dim,1,SF,CF >\n+25 {};\n+26\n+27}\n+28\n+29#endif // #ifndef DUNE_LAGRANGEBASIS_HH\n+_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT0Cube2DLocalBasis(std::bitset< 4 > s=0)\n-Constructor with a set of edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT0Cube2DLocalInterpolation(std::bitset< 4 > s=0)\n-Constructor with explicitly given edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:156\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT0Cube2DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:190\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:203\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangebasis.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:38\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomascube.hh File Reference\n+dune-localfunctions: lagrangepyramid.hh File Reference\n \n \n \n \n \n \n \n@@ -65,68 +65,47 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomascube.hh File Reference
    \n+
    lagrangepyramid.hh File Reference
    \n
    \n
    \n-\n-

    Convenience header that includes all available Raviart-Thomas local finite elements for cubes. \n-More...

    \n-
    #include "raviartthomas0cube2d.hh"
    \n-#include "raviartthomas0cube3d.hh"
    \n-#include "raviartthomas1cube2d.hh"
    \n-#include "raviartthomas1cube3d.hh"
    \n-#include "raviartthomas2cube2d.hh"
    \n-#include "raviartthomas3cube2d.hh"
    \n-#include "raviartthomas4cube2d.hh"
    \n+
    #include <array>
    \n+#include <numeric>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/math.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 0 >
     Raviart-Thomas local finite elements for cubes with dimension 2 and order 0. More...
     
    class  Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 1 >
     Raviart-Thomas local finite elements for cubes with dimension 2 and order 1. More...
     
    class  Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 2 >
     Raviart-Thomas local finite elements for cubes with dimension 2 and order 2. More...
     
    class  Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 3 >
     Raviart-Thomas local finite elements for cubes with dimension 2 and order 3. More...
     
    class  Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 4 >
     Raviart-Thomas local finite elements for cubes with dimension 2 and order 4. More...
     
    class  Dune::RaviartThomasCubeLocalFiniteElement< D, R, 3, 0 >
     Raviart-Thomas local finite elements for cubes with dimension 3 and order 0. More...
     
    class  Dune::RaviartThomasCubeLocalFiniteElement< D, R, 3, 1 >
     Raviart-Thomas local finite elements for cubes with dimension 3 and order 1. More...
    class  Dune::LagrangePyramidLocalFiniteElement< D, R, k >
     Lagrange finite element for 3d pyramids with compile-time polynomial order. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-

    Detailed Description

    \n-

    Convenience header that includes all available Raviart-Thomas local finite elements for cubes.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,56 +1,29 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomascube.hh File Reference\n-Convenience header that includes all available Raviart-Thomas local finite\n-elements for cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n+lagrangepyramid.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b0_\b _\b>\n-\u00a0 Raviart-Thomas local finite elements for cubes with dimension 2 and\n- order 0. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>\n-\u00a0 Raviart-Thomas local finite elements for cubes with dimension 2 and\n- order 1. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>\n-\u00a0 Raviart-Thomas local finite elements for cubes with dimension 2 and\n- order 2. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b3_\b _\b>\n-\u00a0 Raviart-Thomas local finite elements for cubes with dimension 2 and\n- order 3. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b4_\b _\b>\n-\u00a0 Raviart-Thomas local finite elements for cubes with dimension 2 and\n- order 4. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b0_\b _\b>\n-\u00a0 Raviart-Thomas local finite elements for cubes with dimension 3 and\n- order 0. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>\n-\u00a0 Raviart-Thomas local finite elements for cubes with dimension 3 and\n- order 1. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bk_\b _\b>\n+\u00a0 Lagrange finite element for 3d pyramids with compile-time polynomial\n+ order. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Convenience header that includes all available Raviart-Thomas local finite\n-elements for cubes.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomascube.hh Source File\n+dune-localfunctions: lagrangepyramid.hh Source File\n \n \n \n \n \n \n \n@@ -70,213 +70,824 @@\n \n \n \n \n \n \n \n
    \n-
    raviartthomascube.hh
    \n+
    lagrangepyramid.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH
    \n
    7
    \n-\n-\n-\n-\n-\n-\n-\n-
    15
    \n-
    22namespace Dune
    \n-
    23{
    \n-
    39 template<class D, class R, unsigned int dim, unsigned int order>
    \n-\n-
    41
    \n-
    45 template<class D, class R>
    \n-
    \n-\n-
    47 : public RT0Cube2DLocalFiniteElement<D, R>
    \n-
    48 {
    \n-
    49 public:
    \n-\n+
    8#include <array>
    \n+
    9#include <numeric>
    \n+
    10
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12#include <dune/common/fvector.hh>
    \n+
    13#include <dune/common/math.hh>
    \n+
    14
    \n+
    15#include <dune/geometry/referenceelements.hh>
    \n+
    16
    \n+\n+\n+\n+
    20
    \n+
    21namespace Dune { namespace Impl
    \n+
    22{
    \n+
    32 template<class D, class R, unsigned int k>
    \n+
    33 class LagrangePyramidLocalBasis
    \n+
    34 {
    \n+
    35 public:
    \n+
    36 using Traits = LocalBasisTraits<D,3,FieldVector<D,3>,R,1,FieldVector<R,1>,FieldMatrix<R,1,3> >;
    \n+
    37
    \n+
    40 static constexpr std::size_t size ()
    \n+
    41 {
    \n+
    42 std::size_t result = 0;
    \n+
    43 for (unsigned int i=0; i<=k; i++)
    \n+
    44 result += power(i+1,2);
    \n+
    45 return result;
    \n+
    46 }
    \n+
    47
    \n+
    49 void evaluateFunction(const typename Traits::DomainType& in,
    \n+
    50 std::vector<typename Traits::RangeType>& out) const
    \n+
    51 {
    \n+
    52 out.resize(size());
    \n
    53
    \n-\n-
    57 };
    \n-
    \n-
    58
    \n-
    62 template<class D, class R>
    \n-
    \n-\n-
    64 : public RT1Cube2DLocalFiniteElement<D, R>
    \n-
    65 {
    \n-
    66 public:
    \n-\n-
    70
    \n-\n-
    74 };
    \n-
    \n-
    75
    \n-
    79 template<class D, class R>
    \n-
    \n-\n-
    81 : public RT2Cube2DLocalFiniteElement<D, R>
    \n-
    82 {
    \n-
    83 public:
    \n-\n-
    87
    \n-\n-
    91 };
    \n-
    \n-
    92
    \n-
    96 template<class D, class R>
    \n-
    \n-\n-
    98 : public RT3Cube2DLocalFiniteElement<D, R>
    \n-
    99 {
    \n-
    100 public:
    \n-\n+
    54 // Specialization for zero-order case
    \n+
    55 if (k==0)
    \n+
    56 {
    \n+
    57 out[0] = 1;
    \n+
    58 return;
    \n+
    59 }
    \n+
    60
    \n+
    61 if (k==1)
    \n+
    62 {
    \n+
    63 if(in[0] > in[1])
    \n+
    64 {
    \n+
    65 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[1]);
    \n+
    66 out[1] = in[0]*(1-in[1])-in[2]*in[1];
    \n+
    67 out[2] = (1-in[0])*in[1]-in[2]*in[1];
    \n+
    68 out[3] = in[0]*in[1]+in[2]*in[1];
    \n+
    69 }
    \n+
    70 else
    \n+
    71 {
    \n+
    72 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[0]);
    \n+
    73 out[1] = in[0]*(1-in[1])-in[2]*in[0];
    \n+
    74 out[2] = (1-in[0])*in[1]-in[2]*in[0];
    \n+
    75 out[3] = in[0]*in[1]+in[2]*in[0];
    \n+
    76 }
    \n+
    77
    \n+
    78 out[4] = in[2];
    \n+
    79
    \n+
    80 return;
    \n+
    81 }
    \n+
    82
    \n+
    83 if (k==2)
    \n+
    84 {
    \n+
    85 // transform to reference element with base [-1,1]^2
    \n+
    86 const R x = 2.0*in[0] + in[2] - 1.0;
    \n+
    87 const R y = 2.0*in[1] + in[2] - 1.0;
    \n+
    88 const R z = in[2];
    \n+
    89
    \n+
    90 if (x > y)
    \n+
    91 {
    \n+
    92 // vertices
    \n+
    93 out[0] = 0.25*(x + z)*(x + z - 1)*(y - z - 1)*(y - z);
    \n+
    94 out[1] = -0.25*(x + z)*(y - z)*((x + z + 1)*(-y + z + 1) - 4*z) - z*(x - y);
    \n+
    95 out[2] = 0.25*(x + z)*(y - z)*(y - z + 1)*(x + z - 1);
    \n+
    96 out[3] = 0.25*(y - z)*(x + z)*(y - z + 1)*(x + z + 1);
    \n+
    97 out[4] = z*(2*z - 1);
    \n+
    98
    \n+
    99 // lower edges
    \n+
    100 out[5] = -0.5*(y - z + 1)*(x + z - 1)*(y - 1)*x;
    \n+
    101 out[6] = -0.5*(y - z + 1)*(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1));
    \n+
    102 out[7] = -0.5*(x + z - 1)*(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1));
    \n+
    103 out[8] = -0.5*(y - z + 1)*(x + z - 1)*(x + 1)*y;
    \n
    104
    \n-\n-
    108 };
    \n-
    \n-
    109
    \n-
    113 template<class D, class R>
    \n-
    \n-\n-
    115 : public RT4Cube2DLocalFiniteElement<D, R>
    \n-
    116 {
    \n-
    117 public:
    \n-\n-
    121
    \n-\n-
    125 };
    \n-
    \n-
    126
    \n-
    130 template<class D, class R>
    \n-
    \n-\n-
    132 : public RT0Cube3DLocalFiniteElement<D, R>
    \n-
    133 {
    \n-
    134 public:
    \n-\n+
    105 // upper edges
    \n+
    106 out[9] = z*(x + z - 1)*(y - z - 1);
    \n+
    107 out[10] = -z*((x + z + 1)*(y - z - 1) + 4*z);
    \n+
    108 out[11] = -z*(y - z + 1)*(x + z - 1);
    \n+
    109 out[12] = z*(y - z + 1)*(x + z + 1);
    \n+
    110
    \n+
    111 // base face
    \n+
    112 out[13] = (y - z + 1)*(x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1));
    \n+
    113 }
    \n+
    114 else
    \n+
    115 {
    \n+
    116 // vertices
    \n+
    117 out[0] = 0.25*(y + z)*(y + z - 1)*(x - z - 1)*(x - z);
    \n+
    118 out[1] = -0.25*(x - z)*(y + z)*(x - z + 1)*(-y - z + 1);
    \n+
    119 out[2] = 0.25*(x - z)*(y + z)*((x - z - 1)*(y + z + 1) + 4*z) + z*(x - y);
    \n+
    120 out[3] = 0.25*(y + z)*(x - z)*(x - z + 1)*(y + z + 1);
    \n+
    121 out[4] = z*(2*z - 1);
    \n+
    122
    \n+
    123 // lower edges
    \n+
    124 out[5] = -0.5*(y + z - 1)*(((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1));
    \n+
    125 out[6] = -0.5*(x - z + 1)*(y + z - 1)*(y + 1)*x;
    \n+
    126 out[7] = -0.5*(x - z + 1)*(y + z - 1)*(x - 1)*y;
    \n+
    127 out[8] = -0.5*(x - z + 1)*(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1));
    \n+
    128
    \n+
    129 // upper edges
    \n+
    130 out[9] = z*(y + z - 1)*(x - z - 1);
    \n+
    131 out[10] = -z*(x - z + 1)*(y + z - 1);
    \n+
    132 out[11] = -z*((y + z + 1)*(x - z - 1) + 4*z);
    \n+
    133 out[12] = z*(x - z + 1)*(y + z + 1);
    \n+
    134
    \n+
    135 // base face
    \n+
    136 out[13] = (x - z + 1)*(y + z - 1)*((y + 1)*(x - 1) - z*(x - y - z - 1));
    \n+
    137 }
    \n
    138
    \n-\n-
    142 };
    \n-
    \n-
    143
    \n-
    147 template<class D, class R>
    \n-
    \n-\n-
    149 : public RT1Cube3DLocalFiniteElement<D, R>
    \n-
    150 {
    \n-
    151 public:
    \n-\n-
    155
    \n-\n-
    159 };
    \n-
    \n-
    160} // namespace Dune
    \n+
    139 return;
    \n+
    140 }
    \n+
    141
    \n+
    142 DUNE_THROW(NotImplemented, "LagrangePyramidLocalBasis::evaluateFunction for order " << k);
    \n+
    143 }
    \n+
    144
    \n+
    150 void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    151 std::vector<typename Traits::JacobianType>& out) const
    \n+
    152 {
    \n+
    153 out.resize(size());
    \n+
    154
    \n+
    155 // Specialization for k==0
    \n+
    156 if (k==0)
    \n+
    157 {
    \n+
    158 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n+
    159 return;
    \n+
    160 }
    \n
    161
    \n-
    162#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH
    \n-\n-\n-\n-\n-\n-\n-\n+
    162 if (k==1)
    \n+
    163 {
    \n+
    164 if(in[0] > in[1])
    \n+
    165 {
    \n+
    166 out[0][0] = {-1 + in[1], -1 + in[0] + in[2], -1 + in[1]};
    \n+
    167 out[1][0] = { 1 - in[1], -in[0] - in[2], -in[1]};
    \n+
    168 out[2][0] = { -in[1], 1 - in[0] - in[2], -in[1]};
    \n+
    169 out[3][0] = { in[1], in[0] + in[2], in[1]};
    \n+
    170 }
    \n+
    171 else
    \n+
    172 {
    \n+
    173 out[0][0] = {-1 + in[1] + in[2], -1 + in[0], -1 + in[0]};
    \n+
    174 out[1][0] = { 1 - in[1] - in[2], -in[0], -in[0]};
    \n+
    175 out[2][0] = { -in[1] - in[2], 1 - in[0], -in[0]};
    \n+
    176 out[3][0] = { in[1] + in[2], in[0], in[0]};
    \n+
    177 }
    \n+
    178
    \n+
    179 out[4][0] = {0, 0, 1};
    \n+
    180 return;
    \n+
    181 }
    \n+
    182
    \n+
    183 if (k==2)
    \n+
    184 {
    \n+
    185 // transform to reference element with base [-1,1]^2
    \n+
    186 const R x = 2.0*in[0] + in[2] - 1.0;
    \n+
    187 const R y = 2.0*in[1] + in[2] - 1.0;
    \n+
    188 const R z = in[2];
    \n+
    189
    \n+
    190 // transformation of the gradient leads to a multiplication
    \n+
    191 // with the Jacobian [2 0 0; 0 2 0; 1 1 1]
    \n+
    192 if (x > y)
    \n+
    193 {
    \n+
    194 // vertices
    \n+
    195 out[0][0][0] = 0.5*(y - z - 1)*(y - z)*(2*x + 2*z - 1);
    \n+
    196 out[0][0][1] = 0.5*(x + z)*(x + z - 1)*(2*y - 2*z - 1);
    \n+
    197 out[0][0][2] = 0.5*(out[0][0][0] + out[0][0][1])
    \n+
    198 + 0.25*((2*x + 2*z - 1)*(y - z - 1)*(y - z)
    \n+
    199 + (x + z)*(x + z - 1)*(-2*y + 2*z + 1));
    \n+
    200
    \n+
    201 out[1][0][0] = 2*(-0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z)
    \n+
    202 + (x + z)*(y - z)*(-y + z + 1)) - z);
    \n+
    203 out[1][0][1] = 2*(-0.25*((x + z)*((x + z + 1)*(-y + z + 1) - 4*z)
    \n+
    204 + (x + z)*(y - z)*(-(x + z + 1))) + z);
    \n+
    205 out[1][0][2] = 0.5*(out[1][0][0] + out[1][0][1])
    \n+
    206 - 0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z)
    \n+
    207 - (x + z)*((x + z + 1)*(-y + z + 1) - 4*z)
    \n+
    208 + (x + z)*(y - z)*(x - y + 2*z - 2))
    \n+
    209 - (x - y);
    \n+
    210
    \n+
    211 out[2][0][0] = 0.5*(y - z)*(y - z + 1)*(2*x + 2*z - 1);
    \n+
    212 out[2][0][1] = 0.5*(x + z)*(2*y - 2*z + 1)*(x + z - 1);
    \n+
    213 out[2][0][2] = 0.5*(out[2][0][0] + out[2][0][1])
    \n+
    214 + 0.25*((y - x - 2*z)*(y - z + 1)*(x + z - 1)
    \n+
    215 + (x + z)*(y - z)*(y - x - 2*z + 2));
    \n+
    216
    \n+
    217 out[3][0][0] = 0.5*(y - z)*(2*x + 2*z + 1)*(y - z + 1);
    \n+
    218 out[3][0][1] = 0.5*(2*y - 2*z + 1)*(x + z)*(x + z + 1);
    \n+
    219 out[3][0][2] = 0.5*(out[3][0][0] + out[3][0][1])
    \n+
    220 + 0.25*((y - x - 2*z)*(y - z + 1)*(x + z + 1)
    \n+
    221 + (y - z)*(x + z)*(y - x - 2*z));
    \n+
    222
    \n+
    223 out[4][0][0] = 0;
    \n+
    224 out[4][0][1] = 0;
    \n+
    225 out[4][0][2] = 4*z - 1;
    \n+
    226
    \n+
    227 // lower edges
    \n+
    228 out[5][0][0] = -(y - z + 1)*(y - 1)*(2*x + z - 1);
    \n+
    229 out[5][0][1] = -(x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x;
    \n+
    230 out[5][0][2] = 0.5*(out[5][0][0] + out[5][0][1])
    \n+
    231 + 0.5*(x + z - 1)*(y - 1)*x - 0.5*(y - z + 1)*(y - 1)*x;
    \n+
    232
    \n+
    233 out[6][0][0] = -(y - z + 1)*(2*x + z + 1)*(y - 1);
    \n+
    234 out[6][0][1] = -(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1)
    \n+
    235 + (y - z + 1)*((x + z + 1)*x + 2*z));
    \n+
    236 out[6][0][2] = 0.5*(out[6][0][0] + out[6][0][1])
    \n+
    237 - 0.5*(-(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1))
    \n+
    238 + (y - z + 1)*(((y - 1)*x - 1) + 2*y + 1));
    \n+
    239
    \n+
    240 out[7][0][0] = -(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1)
    \n+
    241 + (x + z - 1)*((y - z - 1)*y + 2*z));
    \n+
    242 out[7][0][1] = -(x + z - 1)*(2*y - z - 1)*(x + 1);
    \n+
    243 out[7][0][2] = 0.5*(out[7][0][0] + out[7][0][1])
    \n+
    244 - 0.5*(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1)
    \n+
    245 + (x + z - 1)*((-(x + 1)*y - 1) + 2*x + 1));
    \n+
    246
    \n+
    247 out[8][0][0] = -(y - z + 1)*(2*x + z)*y;
    \n+
    248 out[8][0][1] = -(2*y - z + 1)*(x + z - 1)*(x + 1);
    \n+
    249 out[8][0][2] = 0.5*(out[8][0][0] + out[8][0][1])
    \n+
    250 - 0.5*(-x + y - 2*z + 2)*(x + 1)*y;
    \n+
    251
    \n+
    252 // upper edges
    \n+
    253 out[9][0][0] = 2*z*(y - z - 1);
    \n+
    254 out[9][0][1] = 2*z*(x + z - 1);
    \n+
    255 out[9][0][2] = 0.5*(out[9][0][0] + out[9][0][1])
    \n+
    256 + (x + z - 1)*(y - z - 1) + z*(-x + y - 2*z);
    \n+
    257
    \n+
    258 out[10][0][0] = -2*z*(y - z - 1);
    \n+
    259 out[10][0][1] = -2*z*(x + z + 1);
    \n+
    260 out[10][0][2] = 0.5*(out[10][0][0] + out[10][0][1])
    \n+
    261 - ((x + z + 1)*(y - z - 1) + 4*z)
    \n+
    262 - z*(-x + y - 2*z + 2);
    \n+
    263
    \n+
    264 out[11][0][0] = -2*z*(y - z + 1);
    \n+
    265 out[11][0][1] = -2*z*(x + z - 1);
    \n+
    266 out[11][0][2] = 0.5*(out[11][0][0] + out[11][0][1])
    \n+
    267 - (y - z + 1)*(x + z - 1) - z*(-x + y - 2*z + 2);
    \n+
    268
    \n+
    269 out[12][0][0] = 2*z*(y - z + 1);
    \n+
    270 out[12][0][1] = 2*z*(x + z + 1);
    \n+
    271 out[12][0][2] = 0.5*(out[12][0][0] + out[12][0][1])
    \n+
    272 + (y - z + 1)*(x + z + 1) + z*(-x + y - 2*z);
    \n+
    273
    \n+
    274 // base face
    \n+
    275 out[13][0][0] = 2*((y - z + 1)*((y - 1)*(x + 1) + z*(x - y + z + 1))
    \n+
    276 + (y - z + 1)*(x + z - 1)*(y - 1 + z));
    \n+
    277 out[13][0][1] = 2*((x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1))
    \n+
    278 + (y - z + 1)*(x + z - 1)*(x + 1 - z));
    \n+
    279 out[13][0][2] = 0.5*(out[13][0][0] + out[13][0][1])
    \n+
    280 + ((-x + y - 2*z + 2)*((y - 1)*(x + 1) + z*(x - y + z + 1))
    \n+
    281 + (y - z + 1)*(x + z - 1)*(x - y + 2*z + 1));
    \n+
    282 }
    \n+
    283 else
    \n+
    284 {
    \n+
    285 // vertices
    \n+
    286 out[0][0][0] = 0.5*(y + z)*(y + z - 1)*(2*x - 2*z - 1);
    \n+
    287 out[0][0][1] = 0.5*(2*y + 2*z - 1)*(x - z - 1)*(x - z);
    \n+
    288 out[0][0][2] = 0.5*(out[0][0][0] + out[0][0][1])
    \n+
    289 + 0.25*((2*y + 2*z - 1)*(x - z - 1)*(x - z)
    \n+
    290 + (y + z)*(y + z - 1)*(-2*x + 2*z + 1));
    \n+
    291
    \n+
    292 out[1][0][0] = -0.5*(y + z)*(2*x - 2*z + 1)*(-y - z + 1);
    \n+
    293 out[1][0][1] = -0.5*(x - z)*(x - z + 1)*(-2*y - 2*z + 1);
    \n+
    294 out[1][0][2] = 0.5*(out[1][0][0] + out[1][0][1])
    \n+
    295 - 0.25*((x - y - 2*z)*(x - z + 1)*(-y - z + 1)
    \n+
    296 + (x - z)*(y + z)*(-x + y + 2*z - 2));
    \n+
    297
    \n+
    298 out[2][0][0] = 0.5*((y + z)*((x - z - 1)*(y + z + 1) + 4*z)
    \n+
    299 + (x - z)*(y + z)*(y + z + 1) + 4*z);
    \n+
    300 out[2][0][1] = 0.5*((x - z)*((x - z - 1)*(y + z + 1) + 4*z)
    \n+
    301 + (x - z)*(y + z)*(x - z - 1) - 4*z);
    \n+
    302 out[2][0][2] = 0.5*(out[2][0][0] + out[2][0][1])
    \n+
    303 + 0.25*((x - y - 2*z)*((x - z - 1)*(y + z + 1) + 4*z)
    \n+
    304 + (x - z)*(y + z)*(x - y - 2*z + 2) + 4*(x - y));
    \n+
    305
    \n+
    306 out[3][0][0] = 0.5*(y + z)*(2*x - 2*z + 1)*(y + z + 1);
    \n+
    307 out[3][0][1] = 0.5*(x - z)*(x - z + 1)*(2*y + 2*z + 1);
    \n+
    308 out[3][0][2] = 0.5*(out[3][0][0] + out[3][0][1])
    \n+
    309 + 0.25*((x - y - 2*z)*(x - z + 1)*(y + z + 1)
    \n+
    310 + (y + z)*(x - z)*(x - y - 2*z));
    \n+
    311
    \n+
    312 out[4][0][0] = 0;
    \n+
    313 out[4][0][1] = 0;
    \n+
    314 out[4][0][2] = 4*z - 1;
    \n+
    315
    \n+
    316 // lower edges
    \n+
    317 out[5][0][0] = -(y + z - 1)*(2*x - z - 1)*(y + 1);
    \n+
    318 out[5][0][1] = -(((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1)
    \n+
    319 + (y + z - 1)*((x - z - 1)*x + 2*z));
    \n+
    320 out[5][0][2] = 0.5*(out[5][0][0] + out[5][0][1])
    \n+
    321 - 0.5*((((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1))
    \n+
    322 + (y + z - 1)*((-(y + 1)*x - 1) + 2*y + 1));
    \n+
    323
    \n+
    324 out[6][0][0] = -(2*x - z + 1)*(y + z - 1)*(y + 1);
    \n+
    325 out[6][0][1] = -(x - z + 1)*(2*y + z)*x;
    \n+
    326 out[6][0][2] = 0.5*(out[6][0][0] + out[6][0][1])
    \n+
    327 - 0.5*(x - y - 2*z + 2)*(y + 1)*x;
    \n+
    328
    \n+
    329 out[7][0][0] = -(2*x - z)*(y + z - 1)*y;
    \n+
    330 out[7][0][1] = -(x - z + 1)*(2*y + z - 1)*(x - 1);
    \n+
    331 out[7][0][2] = 0.5*(out[7][0][0] + out[7][0][1])
    \n+
    332 - 0.5*(x - y - 2*z + 2)*(x - 1)*y;
    \n+
    333
    \n+
    334 out[8][0][0] = -(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1)
    \n+
    335 + (x - z + 1)*((y + z + 1)*y + 2*z));
    \n+
    336 out[8][0][1] = -(x - z + 1)*(2*y + z + 1)*(x - 1);
    \n+
    337 out[8][0][2] = 0.5*(out[8][0][0] + out[8][0][1])
    \n+
    338 - 0.5*(-(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1))
    \n+
    339 + (x - z + 1)*(((x - 1)*y - 1) + 2*x + 1));
    \n+
    340
    \n+
    341 // upper edges
    \n+
    342 out[9][0][0] = 2*z*(y + z - 1);
    \n+
    343 out[9][0][1] = 2*z*(x - z - 1);
    \n+
    344 out[9][0][2] = 0.5*(out[9][0][0] + out[9][0][1])
    \n+
    345 + (y + z - 1)*(x - z - 1) + z*(x - y - 2*z);
    \n+
    346
    \n+
    347 out[10][0][0] = -2*z*(y + z - 1);
    \n+
    348 out[10][0][1] = -2*z*(x - z + 1);
    \n+
    349 out[10][0][2] = 0.5*(out[10][0][0] + out[10][0][1])
    \n+
    350 - (x - z + 1)*(y + z - 1) - z*(x - y - 2*z + 2);
    \n+
    351
    \n+
    352 out[11][0][0] = -2*z*(y + z + 1);
    \n+
    353 out[11][0][1] = -2*z*(x - z - 1);
    \n+
    354 out[11][0][2] = 0.5*(out[11][0][0] + out[11][0][1])
    \n+
    355 - ((y + z + 1)*(x - z - 1) + 4*z) - z*(x - y - 2*z + 2);
    \n+
    356
    \n+
    357 out[12][0][0] = 2*z*(y + z + 1);
    \n+
    358 out[12][0][1] = 2*z*(x - z + 1);
    \n+
    359 out[12][0][2] = 0.5*(out[12][0][0] + out[12][0][1])
    \n+
    360 + (x - z + 1)*(y + z + 1) + z*(x - y - 2*z);
    \n+
    361
    \n+
    362 // base face
    \n+
    363 out[13][0][0] = 2*((y + z - 1)*((y + 1)*(x - 1) - z*(x - y - z - 1))
    \n+
    364 + (x - z + 1)*(y + z - 1)*(y + 1 - z));
    \n+
    365 out[13][0][1] = 2*((x - z + 1)*((y + 1)*(x - 1) - z*(x - y - z - 1))
    \n+
    366 + (x - z + 1)*(y + z - 1)*(x - 1 + z));
    \n+
    367 out[13][0][2] = 0.5*(out[13][0][0] + out[13][0][1])
    \n+
    368 + (x - y - 2*z + 2)*((y + 1)*(x - 1) - z*(x - y - z - 1))
    \n+
    369 + (x - z + 1)*(y + z - 1)*(-(x - y - 2*z - 1));
    \n+
    370 }
    \n+
    371
    \n+
    372 return;
    \n+
    373 }
    \n+
    374
    \n+
    375 DUNE_THROW(NotImplemented, "LagrangePyramidLocalBasis::evaluateJacobian for order " << k);
    \n+
    376 }
    \n+
    377
    \n+
    384 void partial(const std::array<unsigned int,3>& order,
    \n+
    385 const typename Traits::DomainType& in,
    \n+
    386 std::vector<typename Traits::RangeType>& out) const
    \n+
    387 {
    \n+
    388 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    389
    \n+
    390 out.resize(size());
    \n+
    391
    \n+
    392 if (totalOrder == 0)
    \n+
    393 {
    \n+
    394 evaluateFunction(in, out);
    \n+
    395 return;
    \n+
    396 }
    \n+
    397
    \n+
    398 if (k==0)
    \n+
    399 {
    \n+
    400 out[0] = 0;
    \n+
    401 return;
    \n+
    402 }
    \n+
    403
    \n+
    404 if (k==1)
    \n+
    405 {
    \n+
    406 if (totalOrder == 1)
    \n+
    407 {
    \n+
    408 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    409 if (in[0] > in[1])
    \n+
    410 {
    \n+
    411 switch (direction)
    \n+
    412 {
    \n+
    413 case 0:
    \n+
    414 out[0] = -1 + in[1];
    \n+
    415 out[1] = 1 - in[1];
    \n+
    416 out[2] = -in[1];
    \n+
    417 out[3] = in[1];
    \n+
    418 out[4] = 0;
    \n+
    419 break;
    \n+
    420 case 1:
    \n+
    421 out[0] = -1 + in[0] + in[2];
    \n+
    422 out[1] = -in[0] - in[2];
    \n+
    423 out[2] = 1 - in[0] - in[2];
    \n+
    424 out[3] = in[0]+in[2];
    \n+
    425 out[4] = 0;
    \n+
    426 break;
    \n+
    427 case 2:
    \n+
    428 out[0] = -1 + in[1];
    \n+
    429 out[1] = -in[1];
    \n+
    430 out[2] = -in[1];
    \n+
    431 out[3] = in[1];
    \n+
    432 out[4] = 1;
    \n+
    433 break;
    \n+
    434 default:
    \n+
    435 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    436 }
    \n+
    437 }
    \n+
    438 else /* (in[0] <= in[1]) */
    \n+
    439 {
    \n+
    440 switch (direction)
    \n+
    441 {
    \n+
    442 case 0:
    \n+
    443 out[0] = -1 + in[1] + in[2];
    \n+
    444 out[1] = 1 - in[1] - in[2];
    \n+
    445 out[2] = -in[1] - in[2];
    \n+
    446 out[3] = in[1] + in[2];
    \n+
    447 out[4] = 0;
    \n+
    448 break;
    \n+
    449 case 1:
    \n+
    450 out[0] = -1 + in[0];
    \n+
    451 out[1] = -in[0];
    \n+
    452 out[2] = 1 - in[0];
    \n+
    453 out[3] = in[0];
    \n+
    454 out[4] = 0;
    \n+
    455 break;
    \n+
    456 case 2:
    \n+
    457 out[0] = -1 + in[0];
    \n+
    458 out[1] = -in[0];
    \n+
    459 out[2] = -in[0];
    \n+
    460 out[3] = in[0];
    \n+
    461 out[4] = 1;
    \n+
    462 break;
    \n+
    463 default:
    \n+
    464 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    465 }
    \n+
    466 }
    \n+
    467 } else if (totalOrder == 2)
    \n+
    468 {
    \n+
    469 if ((order[0] == 1 && order[1] == 1) ||
    \n+
    470 (order[1] == 1 && order[2] == 1 && in[0] > in[1]) ||
    \n+
    471 (order[0] == 1 && order[2] == 1 && in[0] <=in[1]))
    \n+
    472 {
    \n+
    473 out = {1, -1, -1, 1, 0};
    \n+
    474 } else
    \n+
    475 {
    \n+
    476 out = {0, 0, 0, 0, 0};
    \n+
    477 }
    \n+
    478
    \n+
    479 } else
    \n+
    480 {
    \n+
    481 out = {0, 0, 0, 0, 0};
    \n+
    482 }
    \n+
    483
    \n+
    484 return;
    \n+
    485 }
    \n+
    486
    \n+
    487 if (k==2)
    \n+
    488 {
    \n+
    489 if (totalOrder == 1)
    \n+
    490 {
    \n+
    491 // transform to reference element with base [-1,1]^2
    \n+
    492 const R x = 2.0*in[0] + in[2] - 1.0;
    \n+
    493 const R y = 2.0*in[1] + in[2] - 1.0;
    \n+
    494 const R z = in[2];
    \n+
    495
    \n+
    496 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    497
    \n+
    498 // transformation of the gradient leads to a multiplication
    \n+
    499 // with the Jacobian [2 0 0; 0 2 0; 1 1 1]
    \n+
    500 if (x > y)
    \n+
    501 {
    \n+
    502 switch (direction)
    \n+
    503 {
    \n+
    504 case 0:
    \n+
    505 out[0] = 0.5*(y - z - 1)*(y - z)*(2*x + 2*z - 1);
    \n+
    506 out[1] = 2*(-0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z) + (x + z)*(y - z)*(-y + z + 1)) - z);
    \n+
    507 out[2] = 0.5*(y - z)*(y - z + 1)*(2*x + 2*z - 1);
    \n+
    508 out[3] = 0.5*(y - z)*(2*x + 2*z + 1)*(y - z + 1);
    \n+
    509 out[4] = 0;
    \n+
    510 out[5] = -(y - z + 1)*(2*x + z - 1)*(y - 1);
    \n+
    511 out[6] = -(y - z + 1)*(2*x + z + 1)*(y - 1);
    \n+
    512 out[7] = -(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1) + (x + z - 1)*((y - z - 1)*y + 2*z));
    \n+
    513 out[8] = -(y - z + 1)*(2*x + z)*y;
    \n+
    514 out[9] = 2*z*(y - z - 1);
    \n+
    515 out[10] = -2*z*(y - z - 1);
    \n+
    516 out[11] = -2*z*(y - z + 1);
    \n+
    517 out[12] = 2*z*(y - z + 1);
    \n+
    518 out[13] = 2*((y - z + 1)*((y - 1)*(x + 1) + z*(x - y + z + 1)) + (y - z + 1)*(x + z - 1)*(y - 1 + z));
    \n+
    519 break;
    \n+
    520 case 1:
    \n+
    521 out[0] = 0.5*(x + z)*(x + z - 1)*(2*y - 2*z - 1);
    \n+
    522 out[1] = 2*(-0.25*((x + z)*((x + z + 1)*(-y + z + 1) - 4*z) + (x + z)*(y - z)*(-(x + z + 1))) + z);
    \n+
    523 out[2] = 0.5*(x + z)*(2*y - 2*z + 1)*(x + z - 1);
    \n+
    524 out[3] = 0.5*(2*y - 2*z + 1)*(x + z)*(x + z + 1);
    \n+
    525 out[4] = 0;
    \n+
    526 out[5] = -(x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x;
    \n+
    527 out[6] = -(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1) + (y - z + 1)*((x + z + 1)*x + 2*z));
    \n+
    528 out[7] = -(x + z - 1)*(2*y - z - 1)*(x + 1);
    \n+
    529 out[8] = -(2*y - z + 1)*(x + z - 1)*(x + 1);
    \n+
    530 out[9] = 2*z*(x + z - 1);
    \n+
    531 out[10] = -2*z*(x + z + 1);
    \n+
    532 out[11] = -2*z*(x + z - 1);
    \n+
    533 out[12] = 2*z*(x + z + 1);
    \n+
    534 out[13] = 2*((x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1)) + (y - z + 1)*(x + z - 1)*(x + 1 - z));
    \n+
    535 break;
    \n+
    536 case 2:
    \n+
    537 out[0] = -((y - z)*(2*x + 2*z - 1)*(z - y + 1))/2;
    \n+
    538 out[1] = ((y - z + 1)*(y - 2*x + z + 2*x*y - 2*x*z + 2*y*z - 2*z*z))/2;
    \n+
    539 out[2] = ((y - z)*(2*x + 2*z - 1)*(y - z + 1))/2;
    \n+
    540 out[3] = ((y - z)*(2*x + 2*z + 1)*(y - z + 1))/2;
    \n+
    541 out[4] = 4*z - 1;
    \n+
    542 out[5] = (-(y - z + 1)*(2*x + z - 1)*(y - 1) - (x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x + (x + z - 1)*(y - 1)*x - (y - z + 1)*(y - 1)*x)/2;
    \n+
    543 out[6] = -((y - z + 1)*(3*y - 2*x + z + 3*x*y + x*z + y*z + x*x - 1))/2;
    \n+
    544 out[7] = z - z*(2*x + 1) - ((2*z - y*(z - y + 1))*(x + z - 1))/2 - ((2*x - y*(x + 1))*(x + z - 1))/2 + ((x + 1)*(x + z - 1)*(z - 2*y + 1))/2 + y*(x + 1)*(z - y + 1);
    \n+
    545 out[8] = -((y - z + 1)*(y + z + 3*x*y + x*z + y*z + x*x - 1))/2;
    \n+
    546 out[9] = -(x + 3*z - 1)*(z - y + 1);
    \n+
    547 out[10] = (x + z + 1)*(z - y + 1) - 2*y*z - 6*z + 2*z*z;
    \n+
    548 out[11] = -(x + 3*z - 1)*(y - z + 1);
    \n+
    549 out[12] = (x + 3*z + 1)*(y - z + 1);
    \n+
    550 out[13] = (y - z + 1)*(2*y - 3*x + z + 2*x*y + 6*x*z - 2*y*z + 2*x*x + 4*z*z - 3);
    \n+
    551 break;
    \n+
    552 default:
    \n+
    553 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    554 }
    \n+
    555 }
    \n+
    556 else // x <= y
    \n+
    557 {
    \n+
    558 switch (direction)
    \n+
    559 {
    \n+
    560 case 0:
    \n+
    561 out[0] = -((y + z)*(2*z - 2*x + 1)*(y + z - 1))/2;
    \n+
    562 out[1] = ((y + z)*(2*x - 2*z + 1)*(y + z - 1))/2;
    \n+
    563 out[2] = -((y + z + 1)*(y - 3*z - 2*x*y - 2*x*z + 2*y*z + 2*z*z))/2;
    \n+
    564 out[3] = ((y + z)*(2*x - 2*z + 1)*(y + z + 1))/2;
    \n+
    565 out[4] = 0;
    \n+
    566 out[5] = (y + 1)*(y + z - 1)*(z - 2*x + 1);
    \n+
    567 out[6] = -(y + 1)*(2*x - z + 1)*(y + z - 1);
    \n+
    568 out[7] = -y*(2*x - z)*(y + z - 1);
    \n+
    569 out[8] = z - z*(2*x + 1) - (2*z + y*(y + z + 1))*(x - z + 1) - y*(x - 1)*(y + z + 1);
    \n+
    570 out[9] = 2*z*(y + z - 1);
    \n+
    571 out[10] = -2*z*(y + z - 1);
    \n+
    572 out[11] = -2*z*(y + z + 1);
    \n+
    573 out[12] = 2*z*(y + z + 1);
    \n+
    574 out[13] = 2*(y + z - 1)*(2*x - z + 2*x*y - 2*x*z + 2*z*z);
    \n+
    575 break;
    \n+
    576 case 1:
    \n+
    577 out[0] = -(x - z)*(y + z - 0.5)*(z - x + 1);
    \n+
    578 out[1] = ((x - z)*(2*y + 2*z - 1)*(x - z + 1))/2;
    \n+
    579 out[2] = -((z - x + 1)*(x + 3*z + 2*x*y + 2*x*z - 2*y*z - 2*z*z))/2;
    \n+
    580 out[3] = ((x - z)*(2*y + 2*z + 1)*(x - z + 1))/2;
    \n+
    581 out[4] = 0;
    \n+
    582 out[5] = z - z*(2*y + 1) - (2*z - x*(z - x + 1))*(y + z - 1) + x*(y + 1)*(z - x + 1);
    \n+
    583 out[6] = -x*(2*y + z)*(x - z + 1);
    \n+
    584 out[7] = -(x - 1)*(x - z + 1)*(2*y + z - 1);
    \n+
    585 out[8] = -(x - 1)*(x - z + 1)*(2*y + z + 1);
    \n+
    586 out[9] = -2*z*(z - x + 1);
    \n+
    587 out[10] = -2*z*(x - z + 1);
    \n+
    588 out[11] = 2*z*(z - x + 1);
    \n+
    589 out[12] = 2*z*(x - z + 1);
    \n+
    590 out[13] = 2*(x - z + 1)*(2*x*y - z - 2*y + 2*y*z + 2*z*z);
    \n+
    591 break;
    \n+
    592 case 2:
    \n+
    593 out[0] = -((x - z)*(2*y + 2*z - 1)*(z - x + 1))/2;
    \n+
    594 out[1] = ((x - z)*(2*y + 2*z - 1)*(x - z + 1))/2;
    \n+
    595 out[2] = ((x - z + 1)*(x - 2*y + z + 2*x*y + 2*x*z - 2*y*z - 2*z*z))/2;
    \n+
    596 out[3] = ((x - z)*(2*y + 2*z + 1)*(x - z + 1))/2;
    \n+
    597 out[4] = 4*z - 1;
    \n+
    598 out[5] = z - z*(2*y + 1) - ((2*z - x*(z - x + 1))*(y + z - 1))/2 - ((2*y - x*(y + 1))*(y + z - 1))/2 + ((y + 1)*(y + z - 1)*(z - 2*x + 1))/2 + x*(y + 1)*(z - x + 1);
    \n+
    599 out[6] = -((x - z + 1)*(x + z + 3*x*y + x*z + y*z + y*y - 1))/2;
    \n+
    600 out[7] = -((x - z + 1)*(3*x*y - 4*y - z - x + x*z + y*z + y*y + 1))/2;
    \n+
    601 out[8] = -((x - z + 1)*(3*x - 2*y + z + 3*x*y + x*z + y*z + y*y - 1))/2;
    \n+
    602 out[9] = -(z - x + 1)*(y + 3*z - 1);
    \n+
    603 out[10] = -(x - z + 1)*(y + 3*z - 1);
    \n+
    604 out[11] = (y + z + 1)*(z - x + 1) - 2*x*z - 6*z + 2*z*z;
    \n+
    605 out[12] = (x - z + 1)*(y + 3*z + 1);
    \n+
    606 out[13] = (x - z + 1)*(2*x - 3*y + z + 2*x*y - 2*x*z + 6*y*z + 2*y*y + 4*z*z - 3);
    \n+
    607 break;
    \n+
    608 default:
    \n+
    609 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    610 }
    \n+
    611 }
    \n+
    612 } else {
    \n+
    613 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    614 }
    \n+
    615
    \n+
    616 return;
    \n+
    617 }
    \n+
    618
    \n+
    619 DUNE_THROW(NotImplemented, "LagrangePyramidLocalBasis::partial for order " << k);
    \n+
    620 }
    \n+
    621
    \n+
    623 static constexpr unsigned int order ()
    \n+
    624 {
    \n+
    625 return k;
    \n+
    626 }
    \n+
    627 };
    \n+
    628
    \n+
    633 template<unsigned int k>
    \n+
    634 class LagrangePyramidLocalCoefficients
    \n+
    635 {
    \n+
    636 public:
    \n+
    638 LagrangePyramidLocalCoefficients ()
    \n+
    639 : localKeys_(size())
    \n+
    640 {
    \n+
    641 if (k==0)
    \n+
    642 {
    \n+
    643 localKeys_[0] = LocalKey(0,0,0);
    \n+
    644 return;
    \n+
    645 }
    \n+
    646
    \n+
    647 if (k==1)
    \n+
    648 {
    \n+
    649 for (std::size_t i=0; i<size(); i++)
    \n+
    650 localKeys_[i] = LocalKey(i,3,0);
    \n+
    651 return;
    \n+
    652 }
    \n+
    653
    \n+
    654 if (k==2)
    \n+
    655 {
    \n+
    656 // Vertex shape functions
    \n+
    657 localKeys_[0] = LocalKey(0,3,0);
    \n+
    658 localKeys_[1] = LocalKey(1,3,0);
    \n+
    659 localKeys_[2] = LocalKey(2,3,0);
    \n+
    660 localKeys_[3] = LocalKey(3,3,0);
    \n+
    661 localKeys_[4] = LocalKey(4,3,0);
    \n+
    662
    \n+
    663 // Edge shape functions
    \n+
    664 localKeys_[5] = LocalKey(0,2,0);
    \n+
    665 localKeys_[6] = LocalKey(1,2,0);
    \n+
    666 localKeys_[7] = LocalKey(2,2,0);
    \n+
    667 localKeys_[8] = LocalKey(3,2,0);
    \n+
    668 localKeys_[9] = LocalKey(4,2,0);
    \n+
    669 localKeys_[10] = LocalKey(5,2,0);
    \n+
    670 localKeys_[11] = LocalKey(6,2,0);
    \n+
    671 localKeys_[12] = LocalKey(7,2,0);
    \n+
    672
    \n+
    673 // base face shape function
    \n+
    674 localKeys_[13] = LocalKey(0,1,0);
    \n+
    675
    \n+
    676 return;
    \n+
    677 }
    \n+
    678
    \n+
    679 // No general case
    \n+
    680 DUNE_THROW(NotImplemented, "LagrangePyramidLocalCoefficients for order " << k);
    \n+
    681
    \n+
    682 }
    \n+
    683
    \n+
    685 static constexpr std::size_t size ()
    \n+
    686 {
    \n+
    687 std::size_t result = 0;
    \n+
    688 for (unsigned int i=0; i<=k; i++)
    \n+
    689 result += power(i+1,2);
    \n+
    690 return result;
    \n+
    691 }
    \n+
    692
    \n+
    694 const LocalKey& localKey (std::size_t i) const
    \n+
    695 {
    \n+
    696 return localKeys_[i];
    \n+
    697 }
    \n+
    698
    \n+
    699 private:
    \n+
    700 std::vector<LocalKey> localKeys_;
    \n+
    701 };
    \n+
    702
    \n+
    707 template<class LocalBasis>
    \n+
    708 class LagrangePyramidLocalInterpolation
    \n+
    709 {
    \n+
    710 public:
    \n+
    711
    \n+
    719 template<typename F, typename C>
    \n+
    720 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    721 {
    \n+
    722 constexpr auto k = LocalBasis::order();
    \n+
    723 using D = typename LocalBasis::Traits::DomainType;
    \n+
    724 using DF = typename LocalBasis::Traits::DomainFieldType;
    \n+
    725
    \n+
    726 out.resize(LocalBasis::size());
    \n+
    727
    \n+
    728 // Specialization for zero-order case
    \n+
    729 if (k==0)
    \n+
    730 {
    \n+
    731 auto center = ReferenceElements<DF,3>::general(GeometryTypes::pyramid).position(0,0);
    \n+
    732 out[0] = f(center);
    \n+
    733 return;
    \n+
    734 }
    \n+
    735
    \n+
    736 // Specialization for first-order case
    \n+
    737 if (k==1)
    \n+
    738 {
    \n+
    739 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n+
    740 {
    \n+
    741 auto vertex = ReferenceElements<DF,3>::general(GeometryTypes::pyramid).position(i,3);
    \n+
    742 out[i] = f(vertex);
    \n+
    743 }
    \n+
    744 return;
    \n+
    745 }
    \n+
    746
    \n+
    747 // Specialization for second-order case
    \n+
    748 if (k==2)
    \n+
    749 {
    \n+
    750 out[0] = f( D( {0.0, 0.0, 0.0} ) );
    \n+
    751 out[1] = f( D( {1.0, 0.0, 0.0} ) );
    \n+
    752 out[2] = f( D( {0.0, 1.0, 0.0} ) );
    \n+
    753 out[3] = f( D( {1.0, 1.0, 0.0} ) );
    \n+
    754 out[4] = f( D( {0.0, 0.0, 1.0} ) );
    \n+
    755 out[5] = f( D( {0.0, 0.5, 0.0} ) );
    \n+
    756 out[6] = f( D( {1.0, 0.5, 0.0} ) );
    \n+
    757 out[7] = f( D( {0.5, 0.0, 0.0} ) );
    \n+
    758 out[8] = f( D( {0.5, 1.0, 0.0} ) );
    \n+
    759 out[9] = f( D( {0.0, 0.0, 0.5} ) );
    \n+
    760 out[10] = f( D( {0.5, 0.0, 0.5} ) );
    \n+
    761 out[11] = f( D( {0.0, 0.5, 0.5} ) );
    \n+
    762 out[12] = f( D( {0.5, 0.5, 0.5} ) );
    \n+
    763 out[13] = f( D( {0.5, 0.5, 0.0} ) );
    \n+
    764
    \n+
    765 return;
    \n+
    766 }
    \n+
    767
    \n+
    768 DUNE_THROW(NotImplemented, "LagrangePyramidLocalInterpolation not implemented for order " << k);
    \n+
    769 }
    \n+
    770
    \n+
    771 };
    \n+
    772
    \n+
    773} } // namespace Dune::Impl
    \n+
    774
    \n+
    775namespace Dune
    \n+
    776{
    \n+
    807 template<class D, class R, int k>
    \n+
    \n+\n+
    809 {
    \n+
    810 public:
    \n+\n+
    814 Impl::LagrangePyramidLocalCoefficients<k>,
    \n+
    815 Impl::LagrangePyramidLocalInterpolation<Impl::LagrangePyramidLocalBasis<D,R,k> > >;
    \n+
    816
    \n+
    \n+
    819 const typename Traits::LocalBasisType& localBasis () const
    \n+
    820 {
    \n+
    821 return basis_;
    \n+
    822 }
    \n+
    \n+
    823
    \n+
    \n+\n+
    827 {
    \n+
    828 return coefficients_;
    \n+
    829 }
    \n+
    \n+
    830
    \n+
    \n+\n+
    834 {
    \n+
    835 return interpolation_;
    \n+
    836 }
    \n+
    \n+
    837
    \n+
    \n+
    839 static constexpr std::size_t size ()
    \n+
    840 {
    \n+
    841 return Impl::LagrangePyramidLocalBasis<D,R,k>::size();
    \n+
    842 }
    \n+
    \n+
    843
    \n+
    \n+
    846 static constexpr GeometryType type ()
    \n+
    847 {
    \n+
    848 return GeometryTypes::pyramid;
    \n+
    849 }
    \n+
    \n+
    850
    \n+
    851 private:
    \n+
    852 Impl::LagrangePyramidLocalBasis<D,R,k> basis_;
    \n+
    853 Impl::LagrangePyramidLocalCoefficients<k> coefficients_;
    \n+
    854 Impl::LagrangePyramidLocalInterpolation<Impl::LagrangePyramidLocalBasis<D,R,k> > interpolation_;
    \n+
    855 };
    \n+
    \n+
    856
    \n+
    857} // namespace Dune
    \n+
    858
    \n+
    859#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Zero order Raviart-Thomas shape functions on rectangles.
    Definition raviartthomas0cube2d.hh:25
    \n-
    Zero order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas0cube3d.hh:25
    \n-
    First order Raviart-Thomas shape functions on quadrilaterals.
    Definition raviartthomas1cube2d.hh:28
    \n-
    First order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas1cube3d.hh:27
    \n-
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas2cube2d.hh:27
    \n-
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas3cube2d.hh:29
    \n-
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas4cube2d.hh:29
    \n-
    Raviart-Thomas local finite elements for cubes.
    Definition raviartthomascube.hh:40
    \n-
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:54
    \n-
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:50
    \n-
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:67
    \n-
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:71
    \n-
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:84
    \n-
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:88
    \n-
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:105
    \n-
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:101
    \n-
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:122
    \n-
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:118
    \n-
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:135
    \n-
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:139
    \n-
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:152
    \n-
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:156
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:809
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangepyramid.hh:826
    \n+
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangepyramid.hh:839
    \n+
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangepyramid.hh:846
    \n+
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangepyramid.hh:819
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangepyramid.hh:833
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,221 +1,861 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomascube.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+lagrangepyramid.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH\n 7\n-8#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n-9#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\"\n-10#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n-14#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n-15\n-22namespace _\bD_\bu_\bn_\be\n-23{\n-39 template\n-_\b4_\b0 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-41\n-45 template\n-_\b4_\b6 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-47 : public _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-48 {\n-49 public:\n-_\b5_\b0 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-51 : _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-52 {}\n+8#include \n+9#include \n+10\n+11#include \n+12#include \n+13#include \n+14\n+15#include \n+16\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be { namespace Impl\n+22{\n+32 template\n+33 class LagrangePyramidLocalBasis\n+34 {\n+35 public:\n+36 using Traits =\n+LocalBasisTraits,R,1,FieldVector,FieldMatrix\n+>;\n+37\n+40 static constexpr std::size_t size ()\n+41 {\n+42 std::size_t result = 0;\n+43 for (unsigned int i=0; i<=k; i++)\n+44 result += power(i+1,2);\n+45 return result;\n+46 }\n+47\n+49 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+50 std::vector& out) const\n+51 {\n+52 out.resize(size());\n 53\n-_\b5_\b4 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-55 : _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-56 {}\n-57 };\n-58\n-62 template\n-_\b6_\b3 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-64 : public _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-65 {\n-66 public:\n-_\b6_\b7 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-68 : _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-69 {}\n-70\n-_\b7_\b1 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-72 : _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-73 {}\n-74 };\n-75\n-79 template\n-_\b8_\b0 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-81 : public _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-82 {\n-83 public:\n-_\b8_\b4 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-85 : _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-86 {}\n-87\n-_\b8_\b8 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-89 : _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-90 {}\n-91 };\n-92\n-96 template\n-_\b9_\b7 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-98 : public _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-99 {\n-100 public:\n-_\b1_\b0_\b1 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-102 : _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-103 {}\n+54 // Specialization for zero-order case\n+55 if (k==0)\n+56 {\n+57 out[0] = 1;\n+58 return;\n+59 }\n+60\n+61 if (k==1)\n+62 {\n+63 if(in[0] > in[1])\n+64 {\n+65 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[1]);\n+66 out[1] = in[0]*(1-in[1])-in[2]*in[1];\n+67 out[2] = (1-in[0])*in[1]-in[2]*in[1];\n+68 out[3] = in[0]*in[1]+in[2]*in[1];\n+69 }\n+70 else\n+71 {\n+72 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[0]);\n+73 out[1] = in[0]*(1-in[1])-in[2]*in[0];\n+74 out[2] = (1-in[0])*in[1]-in[2]*in[0];\n+75 out[3] = in[0]*in[1]+in[2]*in[0];\n+76 }\n+77\n+78 out[4] = in[2];\n+79\n+80 return;\n+81 }\n+82\n+83 if (k==2)\n+84 {\n+85 // transform to reference element with base [-1,1]^2\n+86 const R x = 2.0*in[0] + in[2] - 1.0;\n+87 const R y = 2.0*in[1] + in[2] - 1.0;\n+88 const R z = in[2];\n+89\n+90 if (x > y)\n+91 {\n+92 // vertices\n+93 out[0] = 0.25*(x + z)*(x + z - 1)*(y - z - 1)*(y - z);\n+94 out[1] = -0.25*(x + z)*(y - z)*((x + z + 1)*(-y + z + 1) - 4*z) - z*(x - y);\n+95 out[2] = 0.25*(x + z)*(y - z)*(y - z + 1)*(x + z - 1);\n+96 out[3] = 0.25*(y - z)*(x + z)*(y - z + 1)*(x + z + 1);\n+97 out[4] = z*(2*z - 1);\n+98\n+99 // lower edges\n+100 out[5] = -0.5*(y - z + 1)*(x + z - 1)*(y - 1)*x;\n+101 out[6] = -0.5*(y - z + 1)*(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1));\n+102 out[7] = -0.5*(x + z - 1)*(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1));\n+103 out[8] = -0.5*(y - z + 1)*(x + z - 1)*(x + 1)*y;\n 104\n-_\b1_\b0_\b5 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-106 : _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-107 {}\n-108 };\n-109\n-113 template\n-_\b1_\b1_\b4 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-115 : public _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-116 {\n-117 public:\n-_\b1_\b1_\b8 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-119 : _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-120 {}\n-121\n-_\b1_\b2_\b2 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-123 : _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-124 {}\n-125 };\n-126\n-130 template\n-_\b1_\b3_\b1 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-132 : public _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-133 {\n-134 public:\n-_\b1_\b3_\b5 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-136 : _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-137 {}\n+105 // upper edges\n+106 out[9] = z*(x + z - 1)*(y - z - 1);\n+107 out[10] = -z*((x + z + 1)*(y - z - 1) + 4*z);\n+108 out[11] = -z*(y - z + 1)*(x + z - 1);\n+109 out[12] = z*(y - z + 1)*(x + z + 1);\n+110\n+111 // base face\n+112 out[13] = (y - z + 1)*(x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1));\n+113 }\n+114 else\n+115 {\n+116 // vertices\n+117 out[0] = 0.25*(y + z)*(y + z - 1)*(x - z - 1)*(x - z);\n+118 out[1] = -0.25*(x - z)*(y + z)*(x - z + 1)*(-y - z + 1);\n+119 out[2] = 0.25*(x - z)*(y + z)*((x - z - 1)*(y + z + 1) + 4*z) + z*(x - y);\n+120 out[3] = 0.25*(y + z)*(x - z)*(x - z + 1)*(y + z + 1);\n+121 out[4] = z*(2*z - 1);\n+122\n+123 // lower edges\n+124 out[5] = -0.5*(y + z - 1)*(((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1));\n+125 out[6] = -0.5*(x - z + 1)*(y + z - 1)*(y + 1)*x;\n+126 out[7] = -0.5*(x - z + 1)*(y + z - 1)*(x - 1)*y;\n+127 out[8] = -0.5*(x - z + 1)*(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1));\n+128\n+129 // upper edges\n+130 out[9] = z*(y + z - 1)*(x - z - 1);\n+131 out[10] = -z*(x - z + 1)*(y + z - 1);\n+132 out[11] = -z*((y + z + 1)*(x - z - 1) + 4*z);\n+133 out[12] = z*(x - z + 1)*(y + z + 1);\n+134\n+135 // base face\n+136 out[13] = (x - z + 1)*(y + z - 1)*((y + 1)*(x - 1) - z*(x - y - z - 1));\n+137 }\n 138\n-_\b1_\b3_\b9 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-140 : _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-141 {}\n-142 };\n-143\n-147 template\n-_\b1_\b4_\b8 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-149 : public _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-150 {\n-151 public:\n-_\b1_\b5_\b2 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-153 : _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-154 {}\n-155\n-_\b1_\b5_\b6 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-157 : _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-158 {}\n-159 };\n-160} // namespace Dune\n+139 return;\n+140 }\n+141\n+142 DUNE_THROW(NotImplemented, \"LagrangePyramidLocalBasis::evaluateFunction for\n+order \" << k);\n+143 }\n+144\n+150 void evaluateJacobian(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+151 std::vector& out) const\n+152 {\n+153 out.resize(size());\n+154\n+155 // Specialization for k==0\n+156 if (k==0)\n+157 {\n+158 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n+159 return;\n+160 }\n 161\n-162#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\n+162 if (k==1)\n+163 {\n+164 if(in[0] > in[1])\n+165 {\n+166 out[0][0] = {-1 + in[1], -1 + in[0] + in[2], -1 + in[1]};\n+167 out[1][0] = { 1 - in[1], -in[0] - in[2], -in[1]};\n+168 out[2][0] = { -in[1], 1 - in[0] - in[2], -in[1]};\n+169 out[3][0] = { in[1], in[0] + in[2], in[1]};\n+170 }\n+171 else\n+172 {\n+173 out[0][0] = {-1 + in[1] + in[2], -1 + in[0], -1 + in[0]};\n+174 out[1][0] = { 1 - in[1] - in[2], -in[0], -in[0]};\n+175 out[2][0] = { -in[1] - in[2], 1 - in[0], -in[0]};\n+176 out[3][0] = { in[1] + in[2], in[0], in[0]};\n+177 }\n+178\n+179 out[4][0] = {0, 0, 1};\n+180 return;\n+181 }\n+182\n+183 if (k==2)\n+184 {\n+185 // transform to reference element with base [-1,1]^2\n+186 const R x = 2.0*in[0] + in[2] - 1.0;\n+187 const R y = 2.0*in[1] + in[2] - 1.0;\n+188 const R z = in[2];\n+189\n+190 // transformation of the gradient leads to a multiplication\n+191 // with the Jacobian [2 0 0; 0 2 0; 1 1 1]\n+192 if (x > y)\n+193 {\n+194 // vertices\n+195 out[0][0][0] = 0.5*(y - z - 1)*(y - z)*(2*x + 2*z - 1);\n+196 out[0][0][1] = 0.5*(x + z)*(x + z - 1)*(2*y - 2*z - 1);\n+197 out[0][0][2] = 0.5*(out[0][0][0] + out[0][0][1])\n+198 + 0.25*((2*x + 2*z - 1)*(y - z - 1)*(y - z)\n+199 + (x + z)*(x + z - 1)*(-2*y + 2*z + 1));\n+200\n+201 out[1][0][0] = 2*(-0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z)\n+202 + (x + z)*(y - z)*(-y + z + 1)) - z);\n+203 out[1][0][1] = 2*(-0.25*((x + z)*((x + z + 1)*(-y + z + 1) - 4*z)\n+204 + (x + z)*(y - z)*(-(x + z + 1))) + z);\n+205 out[1][0][2] = 0.5*(out[1][0][0] + out[1][0][1])\n+206 - 0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z)\n+207 - (x + z)*((x + z + 1)*(-y + z + 1) - 4*z)\n+208 + (x + z)*(y - z)*(x - y + 2*z - 2))\n+209 - (x - y);\n+210\n+211 out[2][0][0] = 0.5*(y - z)*(y - z + 1)*(2*x + 2*z - 1);\n+212 out[2][0][1] = 0.5*(x + z)*(2*y - 2*z + 1)*(x + z - 1);\n+213 out[2][0][2] = 0.5*(out[2][0][0] + out[2][0][1])\n+214 + 0.25*((y - x - 2*z)*(y - z + 1)*(x + z - 1)\n+215 + (x + z)*(y - z)*(y - x - 2*z + 2));\n+216\n+217 out[3][0][0] = 0.5*(y - z)*(2*x + 2*z + 1)*(y - z + 1);\n+218 out[3][0][1] = 0.5*(2*y - 2*z + 1)*(x + z)*(x + z + 1);\n+219 out[3][0][2] = 0.5*(out[3][0][0] + out[3][0][1])\n+220 + 0.25*((y - x - 2*z)*(y - z + 1)*(x + z + 1)\n+221 + (y - z)*(x + z)*(y - x - 2*z));\n+222\n+223 out[4][0][0] = 0;\n+224 out[4][0][1] = 0;\n+225 out[4][0][2] = 4*z - 1;\n+226\n+227 // lower edges\n+228 out[5][0][0] = -(y - z + 1)*(y - 1)*(2*x + z - 1);\n+229 out[5][0][1] = -(x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x;\n+230 out[5][0][2] = 0.5*(out[5][0][0] + out[5][0][1])\n+231 + 0.5*(x + z - 1)*(y - 1)*x - 0.5*(y - z + 1)*(y - 1)*x;\n+232\n+233 out[6][0][0] = -(y - z + 1)*(2*x + z + 1)*(y - 1);\n+234 out[6][0][1] = -(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1)\n+235 + (y - z + 1)*((x + z + 1)*x + 2*z));\n+236 out[6][0][2] = 0.5*(out[6][0][0] + out[6][0][1])\n+237 - 0.5*(-(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1))\n+238 + (y - z + 1)*(((y - 1)*x - 1) + 2*y + 1));\n+239\n+240 out[7][0][0] = -(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1)\n+241 + (x + z - 1)*((y - z - 1)*y + 2*z));\n+242 out[7][0][1] = -(x + z - 1)*(2*y - z - 1)*(x + 1);\n+243 out[7][0][2] = 0.5*(out[7][0][0] + out[7][0][1])\n+244 - 0.5*(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1)\n+245 + (x + z - 1)*((-(x + 1)*y - 1) + 2*x + 1));\n+246\n+247 out[8][0][0] = -(y - z + 1)*(2*x + z)*y;\n+248 out[8][0][1] = -(2*y - z + 1)*(x + z - 1)*(x + 1);\n+249 out[8][0][2] = 0.5*(out[8][0][0] + out[8][0][1])\n+250 - 0.5*(-x + y - 2*z + 2)*(x + 1)*y;\n+251\n+252 // upper edges\n+253 out[9][0][0] = 2*z*(y - z - 1);\n+254 out[9][0][1] = 2*z*(x + z - 1);\n+255 out[9][0][2] = 0.5*(out[9][0][0] + out[9][0][1])\n+256 + (x + z - 1)*(y - z - 1) + z*(-x + y - 2*z);\n+257\n+258 out[10][0][0] = -2*z*(y - z - 1);\n+259 out[10][0][1] = -2*z*(x + z + 1);\n+260 out[10][0][2] = 0.5*(out[10][0][0] + out[10][0][1])\n+261 - ((x + z + 1)*(y - z - 1) + 4*z)\n+262 - z*(-x + y - 2*z + 2);\n+263\n+264 out[11][0][0] = -2*z*(y - z + 1);\n+265 out[11][0][1] = -2*z*(x + z - 1);\n+266 out[11][0][2] = 0.5*(out[11][0][0] + out[11][0][1])\n+267 - (y - z + 1)*(x + z - 1) - z*(-x + y - 2*z + 2);\n+268\n+269 out[12][0][0] = 2*z*(y - z + 1);\n+270 out[12][0][1] = 2*z*(x + z + 1);\n+271 out[12][0][2] = 0.5*(out[12][0][0] + out[12][0][1])\n+272 + (y - z + 1)*(x + z + 1) + z*(-x + y - 2*z);\n+273\n+274 // base face\n+275 out[13][0][0] = 2*((y - z + 1)*((y - 1)*(x + 1) + z*(x - y + z + 1))\n+276 + (y - z + 1)*(x + z - 1)*(y - 1 + z));\n+277 out[13][0][1] = 2*((x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1))\n+278 + (y - z + 1)*(x + z - 1)*(x + 1 - z));\n+279 out[13][0][2] = 0.5*(out[13][0][0] + out[13][0][1])\n+280 + ((-x + y - 2*z + 2)*((y - 1)*(x + 1) + z*(x - y + z + 1))\n+281 + (y - z + 1)*(x + z - 1)*(x - y + 2*z + 1));\n+282 }\n+283 else\n+284 {\n+285 // vertices\n+286 out[0][0][0] = 0.5*(y + z)*(y + z - 1)*(2*x - 2*z - 1);\n+287 out[0][0][1] = 0.5*(2*y + 2*z - 1)*(x - z - 1)*(x - z);\n+288 out[0][0][2] = 0.5*(out[0][0][0] + out[0][0][1])\n+289 + 0.25*((2*y + 2*z - 1)*(x - z - 1)*(x - z)\n+290 + (y + z)*(y + z - 1)*(-2*x + 2*z + 1));\n+291\n+292 out[1][0][0] = -0.5*(y + z)*(2*x - 2*z + 1)*(-y - z + 1);\n+293 out[1][0][1] = -0.5*(x - z)*(x - z + 1)*(-2*y - 2*z + 1);\n+294 out[1][0][2] = 0.5*(out[1][0][0] + out[1][0][1])\n+295 - 0.25*((x - y - 2*z)*(x - z + 1)*(-y - z + 1)\n+296 + (x - z)*(y + z)*(-x + y + 2*z - 2));\n+297\n+298 out[2][0][0] = 0.5*((y + z)*((x - z - 1)*(y + z + 1) + 4*z)\n+299 + (x - z)*(y + z)*(y + z + 1) + 4*z);\n+300 out[2][0][1] = 0.5*((x - z)*((x - z - 1)*(y + z + 1) + 4*z)\n+301 + (x - z)*(y + z)*(x - z - 1) - 4*z);\n+302 out[2][0][2] = 0.5*(out[2][0][0] + out[2][0][1])\n+303 + 0.25*((x - y - 2*z)*((x - z - 1)*(y + z + 1) + 4*z)\n+304 + (x - z)*(y + z)*(x - y - 2*z + 2) + 4*(x - y));\n+305\n+306 out[3][0][0] = 0.5*(y + z)*(2*x - 2*z + 1)*(y + z + 1);\n+307 out[3][0][1] = 0.5*(x - z)*(x - z + 1)*(2*y + 2*z + 1);\n+308 out[3][0][2] = 0.5*(out[3][0][0] + out[3][0][1])\n+309 + 0.25*((x - y - 2*z)*(x - z + 1)*(y + z + 1)\n+310 + (y + z)*(x - z)*(x - y - 2*z));\n+311\n+312 out[4][0][0] = 0;\n+313 out[4][0][1] = 0;\n+314 out[4][0][2] = 4*z - 1;\n+315\n+316 // lower edges\n+317 out[5][0][0] = -(y + z - 1)*(2*x - z - 1)*(y + 1);\n+318 out[5][0][1] = -(((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1)\n+319 + (y + z - 1)*((x - z - 1)*x + 2*z));\n+320 out[5][0][2] = 0.5*(out[5][0][0] + out[5][0][1])\n+321 - 0.5*((((x - z - 1)*(y + 1)*x - z) + z*(2*y + 1))\n+322 + (y + z - 1)*((-(y + 1)*x - 1) + 2*y + 1));\n+323\n+324 out[6][0][0] = -(2*x - z + 1)*(y + z - 1)*(y + 1);\n+325 out[6][0][1] = -(x - z + 1)*(2*y + z)*x;\n+326 out[6][0][2] = 0.5*(out[6][0][0] + out[6][0][1])\n+327 - 0.5*(x - y - 2*z + 2)*(y + 1)*x;\n+328\n+329 out[7][0][0] = -(2*x - z)*(y + z - 1)*y;\n+330 out[7][0][1] = -(x - z + 1)*(2*y + z - 1)*(x - 1);\n+331 out[7][0][2] = 0.5*(out[7][0][0] + out[7][0][1])\n+332 - 0.5*(x - y - 2*z + 2)*(x - 1)*y;\n+333\n+334 out[8][0][0] = -(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1)\n+335 + (x - z + 1)*((y + z + 1)*y + 2*z));\n+336 out[8][0][1] = -(x - z + 1)*(2*y + z + 1)*(x - 1);\n+337 out[8][0][2] = 0.5*(out[8][0][0] + out[8][0][1])\n+338 - 0.5*(-(((y + z + 1)*(x - 1)*y - z) + z*(2*x + 1))\n+339 + (x - z + 1)*(((x - 1)*y - 1) + 2*x + 1));\n+340\n+341 // upper edges\n+342 out[9][0][0] = 2*z*(y + z - 1);\n+343 out[9][0][1] = 2*z*(x - z - 1);\n+344 out[9][0][2] = 0.5*(out[9][0][0] + out[9][0][1])\n+345 + (y + z - 1)*(x - z - 1) + z*(x - y - 2*z);\n+346\n+347 out[10][0][0] = -2*z*(y + z - 1);\n+348 out[10][0][1] = -2*z*(x - z + 1);\n+349 out[10][0][2] = 0.5*(out[10][0][0] + out[10][0][1])\n+350 - (x - z + 1)*(y + z - 1) - z*(x - y - 2*z + 2);\n+351\n+352 out[11][0][0] = -2*z*(y + z + 1);\n+353 out[11][0][1] = -2*z*(x - z - 1);\n+354 out[11][0][2] = 0.5*(out[11][0][0] + out[11][0][1])\n+355 - ((y + z + 1)*(x - z - 1) + 4*z) - z*(x - y - 2*z + 2);\n+356\n+357 out[12][0][0] = 2*z*(y + z + 1);\n+358 out[12][0][1] = 2*z*(x - z + 1);\n+359 out[12][0][2] = 0.5*(out[12][0][0] + out[12][0][1])\n+360 + (x - z + 1)*(y + z + 1) + z*(x - y - 2*z);\n+361\n+362 // base face\n+363 out[13][0][0] = 2*((y + z - 1)*((y + 1)*(x - 1) - z*(x - y - z - 1))\n+364 + (x - z + 1)*(y + z - 1)*(y + 1 - z));\n+365 out[13][0][1] = 2*((x - z + 1)*((y + 1)*(x - 1) - z*(x - y - z - 1))\n+366 + (x - z + 1)*(y + z - 1)*(x - 1 + z));\n+367 out[13][0][2] = 0.5*(out[13][0][0] + out[13][0][1])\n+368 + (x - y - 2*z + 2)*((y + 1)*(x - 1) - z*(x - y - z - 1))\n+369 + (x - z + 1)*(y + z - 1)*(-(x - y - 2*z - 1));\n+370 }\n+371\n+372 return;\n+373 }\n+374\n+375 DUNE_THROW(NotImplemented, \"LagrangePyramidLocalBasis::evaluateJacobian for\n+order \" << k);\n+376 }\n+377\n+384 void partial(const std::array& order,\n+385 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+386 std::vector& out) const\n+387 {\n+388 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+389\n+390 out.resize(size());\n+391\n+392 if (totalOrder == 0)\n+393 {\n+394 evaluateFunction(in, out);\n+395 return;\n+396 }\n+397\n+398 if (k==0)\n+399 {\n+400 out[0] = 0;\n+401 return;\n+402 }\n+403\n+404 if (k==1)\n+405 {\n+406 if (totalOrder == 1)\n+407 {\n+408 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+409 if (in[0] > in[1])\n+410 {\n+411 switch (direction)\n+412 {\n+413 case 0:\n+414 out[0] = -1 + in[1];\n+415 out[1] = 1 - in[1];\n+416 out[2] = -in[1];\n+417 out[3] = in[1];\n+418 out[4] = 0;\n+419 break;\n+420 case 1:\n+421 out[0] = -1 + in[0] + in[2];\n+422 out[1] = -in[0] - in[2];\n+423 out[2] = 1 - in[0] - in[2];\n+424 out[3] = in[0]+in[2];\n+425 out[4] = 0;\n+426 break;\n+427 case 2:\n+428 out[0] = -1 + in[1];\n+429 out[1] = -in[1];\n+430 out[2] = -in[1];\n+431 out[3] = in[1];\n+432 out[4] = 1;\n+433 break;\n+434 default:\n+435 DUNE_THROW(RangeError, \"Component out of range.\");\n+436 }\n+437 }\n+438 else /* (in[0] <= in[1]) */\n+439 {\n+440 switch (direction)\n+441 {\n+442 case 0:\n+443 out[0] = -1 + in[1] + in[2];\n+444 out[1] = 1 - in[1] - in[2];\n+445 out[2] = -in[1] - in[2];\n+446 out[3] = in[1] + in[2];\n+447 out[4] = 0;\n+448 break;\n+449 case 1:\n+450 out[0] = -1 + in[0];\n+451 out[1] = -in[0];\n+452 out[2] = 1 - in[0];\n+453 out[3] = in[0];\n+454 out[4] = 0;\n+455 break;\n+456 case 2:\n+457 out[0] = -1 + in[0];\n+458 out[1] = -in[0];\n+459 out[2] = -in[0];\n+460 out[3] = in[0];\n+461 out[4] = 1;\n+462 break;\n+463 default:\n+464 DUNE_THROW(RangeError, \"Component out of range.\");\n+465 }\n+466 }\n+467 } else if (totalOrder == 2)\n+468 {\n+469 if ((order[0] == 1 && order[1] == 1) ||\n+470 (order[1] == 1 && order[2] == 1 && in[0] > in[1]) ||\n+471 (order[0] == 1 && order[2] == 1 && in[0] <=in[1]))\n+472 {\n+473 out = {1, -1, -1, 1, 0};\n+474 } else\n+475 {\n+476 out = {0, 0, 0, 0, 0};\n+477 }\n+478\n+479 } else\n+480 {\n+481 out = {0, 0, 0, 0, 0};\n+482 }\n+483\n+484 return;\n+485 }\n+486\n+487 if (k==2)\n+488 {\n+489 if (totalOrder == 1)\n+490 {\n+491 // transform to reference element with base [-1,1]^2\n+492 const R x = 2.0*in[0] + in[2] - 1.0;\n+493 const R y = 2.0*in[1] + in[2] - 1.0;\n+494 const R z = in[2];\n+495\n+496 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+497\n+498 // transformation of the gradient leads to a multiplication\n+499 // with the Jacobian [2 0 0; 0 2 0; 1 1 1]\n+500 if (x > y)\n+501 {\n+502 switch (direction)\n+503 {\n+504 case 0:\n+505 out[0] = 0.5*(y - z - 1)*(y - z)*(2*x + 2*z - 1);\n+506 out[1] = 2*(-0.25*((y - z)*((x + z + 1)*(-y + z + 1) - 4*z) + (x + z)*(y -\n+z)*(-y + z + 1)) - z);\n+507 out[2] = 0.5*(y - z)*(y - z + 1)*(2*x + 2*z - 1);\n+508 out[3] = 0.5*(y - z)*(2*x + 2*z + 1)*(y - z + 1);\n+509 out[4] = 0;\n+510 out[5] = -(y - z + 1)*(2*x + z - 1)*(y - 1);\n+511 out[6] = -(y - z + 1)*(2*x + z + 1)*(y - 1);\n+512 out[7] = -(((y - z - 1)*(x + 1)*y - z) + z*(2*x + 1) + (x + z - 1)*((y - z\n+- 1)*y + 2*z));\n+513 out[8] = -(y - z + 1)*(2*x + z)*y;\n+514 out[9] = 2*z*(y - z - 1);\n+515 out[10] = -2*z*(y - z - 1);\n+516 out[11] = -2*z*(y - z + 1);\n+517 out[12] = 2*z*(y - z + 1);\n+518 out[13] = 2*((y - z + 1)*((y - 1)*(x + 1) + z*(x - y + z + 1)) + (y - z +\n+1)*(x + z - 1)*(y - 1 + z));\n+519 break;\n+520 case 1:\n+521 out[0] = 0.5*(x + z)*(x + z - 1)*(2*y - 2*z - 1);\n+522 out[1] = 2*(-0.25*((x + z)*((x + z + 1)*(-y + z + 1) - 4*z) + (x + z)*(y -\n+z)*(-(x + z + 1))) + z);\n+523 out[2] = 0.5*(x + z)*(2*y - 2*z + 1)*(x + z - 1);\n+524 out[3] = 0.5*(2*y - 2*z + 1)*(x + z)*(x + z + 1);\n+525 out[4] = 0;\n+526 out[5] = -(x + z - 1)*(y - 1)*x - (y - z + 1)*(x + z - 1)*x;\n+527 out[6] = -(((x + z + 1)*(y - 1)*x - z) + z*(2*y + 1) + (y - z + 1)*((x + z\n++ 1)*x + 2*z));\n+528 out[7] = -(x + z - 1)*(2*y - z - 1)*(x + 1);\n+529 out[8] = -(2*y - z + 1)*(x + z - 1)*(x + 1);\n+530 out[9] = 2*z*(x + z - 1);\n+531 out[10] = -2*z*(x + z + 1);\n+532 out[11] = -2*z*(x + z - 1);\n+533 out[12] = 2*z*(x + z + 1);\n+534 out[13] = 2*((x + z - 1)*((y - 1)*(x + 1) + z*(x - y + z + 1)) + (y - z +\n+1)*(x + z - 1)*(x + 1 - z));\n+535 break;\n+536 case 2:\n+537 out[0] = -((y - z)*(2*x + 2*z - 1)*(z - y + 1))/2;\n+538 out[1] = ((y - z + 1)*(y - 2*x + z + 2*x*y - 2*x*z + 2*y*z - 2*z*z))/2;\n+539 out[2] = ((y - z)*(2*x + 2*z - 1)*(y - z + 1))/2;\n+540 out[3] = ((y - z)*(2*x + 2*z + 1)*(y - z + 1))/2;\n+541 out[4] = 4*z - 1;\n+542 out[5] = (-(y - z + 1)*(2*x + z - 1)*(y - 1) - (x + z - 1)*(y - 1)*x - (y -\n+z + 1)*(x + z - 1)*x + (x + z - 1)*(y - 1)*x - (y - z + 1)*(y - 1)*x)/2;\n+543 out[6] = -((y - z + 1)*(3*y - 2*x + z + 3*x*y + x*z + y*z + x*x - 1))/2;\n+544 out[7] = z - z*(2*x + 1) - ((2*z - y*(z - y + 1))*(x + z - 1))/2 - ((2*x -\n+y*(x + 1))*(x + z - 1))/2 + ((x + 1)*(x + z - 1)*(z - 2*y + 1))/2 + y*(x + 1)*\n+(z - y + 1);\n+545 out[8] = -((y - z + 1)*(y + z + 3*x*y + x*z + y*z + x*x - 1))/2;\n+546 out[9] = -(x + 3*z - 1)*(z - y + 1);\n+547 out[10] = (x + z + 1)*(z - y + 1) - 2*y*z - 6*z + 2*z*z;\n+548 out[11] = -(x + 3*z - 1)*(y - z + 1);\n+549 out[12] = (x + 3*z + 1)*(y - z + 1);\n+550 out[13] = (y - z + 1)*(2*y - 3*x + z + 2*x*y + 6*x*z - 2*y*z + 2*x*x +\n+4*z*z - 3);\n+551 break;\n+552 default:\n+553 DUNE_THROW(RangeError, \"Component out of range.\");\n+554 }\n+555 }\n+556 else // x <= y\n+557 {\n+558 switch (direction)\n+559 {\n+560 case 0:\n+561 out[0] = -((y + z)*(2*z - 2*x + 1)*(y + z - 1))/2;\n+562 out[1] = ((y + z)*(2*x - 2*z + 1)*(y + z - 1))/2;\n+563 out[2] = -((y + z + 1)*(y - 3*z - 2*x*y - 2*x*z + 2*y*z + 2*z*z))/2;\n+564 out[3] = ((y + z)*(2*x - 2*z + 1)*(y + z + 1))/2;\n+565 out[4] = 0;\n+566 out[5] = (y + 1)*(y + z - 1)*(z - 2*x + 1);\n+567 out[6] = -(y + 1)*(2*x - z + 1)*(y + z - 1);\n+568 out[7] = -y*(2*x - z)*(y + z - 1);\n+569 out[8] = z - z*(2*x + 1) - (2*z + y*(y + z + 1))*(x - z + 1) - y*(x - 1)*(y\n++ z + 1);\n+570 out[9] = 2*z*(y + z - 1);\n+571 out[10] = -2*z*(y + z - 1);\n+572 out[11] = -2*z*(y + z + 1);\n+573 out[12] = 2*z*(y + z + 1);\n+574 out[13] = 2*(y + z - 1)*(2*x - z + 2*x*y - 2*x*z + 2*z*z);\n+575 break;\n+576 case 1:\n+577 out[0] = -(x - z)*(y + z - 0.5)*(z - x + 1);\n+578 out[1] = ((x - z)*(2*y + 2*z - 1)*(x - z + 1))/2;\n+579 out[2] = -((z - x + 1)*(x + 3*z + 2*x*y + 2*x*z - 2*y*z - 2*z*z))/2;\n+580 out[3] = ((x - z)*(2*y + 2*z + 1)*(x - z + 1))/2;\n+581 out[4] = 0;\n+582 out[5] = z - z*(2*y + 1) - (2*z - x*(z - x + 1))*(y + z - 1) + x*(y + 1)*(z\n+- x + 1);\n+583 out[6] = -x*(2*y + z)*(x - z + 1);\n+584 out[7] = -(x - 1)*(x - z + 1)*(2*y + z - 1);\n+585 out[8] = -(x - 1)*(x - z + 1)*(2*y + z + 1);\n+586 out[9] = -2*z*(z - x + 1);\n+587 out[10] = -2*z*(x - z + 1);\n+588 out[11] = 2*z*(z - x + 1);\n+589 out[12] = 2*z*(x - z + 1);\n+590 out[13] = 2*(x - z + 1)*(2*x*y - z - 2*y + 2*y*z + 2*z*z);\n+591 break;\n+592 case 2:\n+593 out[0] = -((x - z)*(2*y + 2*z - 1)*(z - x + 1))/2;\n+594 out[1] = ((x - z)*(2*y + 2*z - 1)*(x - z + 1))/2;\n+595 out[2] = ((x - z + 1)*(x - 2*y + z + 2*x*y + 2*x*z - 2*y*z - 2*z*z))/2;\n+596 out[3] = ((x - z)*(2*y + 2*z + 1)*(x - z + 1))/2;\n+597 out[4] = 4*z - 1;\n+598 out[5] = z - z*(2*y + 1) - ((2*z - x*(z - x + 1))*(y + z - 1))/2 - ((2*y -\n+x*(y + 1))*(y + z - 1))/2 + ((y + 1)*(y + z - 1)*(z - 2*x + 1))/2 + x*(y + 1)*\n+(z - x + 1);\n+599 out[6] = -((x - z + 1)*(x + z + 3*x*y + x*z + y*z + y*y - 1))/2;\n+600 out[7] = -((x - z + 1)*(3*x*y - 4*y - z - x + x*z + y*z + y*y + 1))/2;\n+601 out[8] = -((x - z + 1)*(3*x - 2*y + z + 3*x*y + x*z + y*z + y*y - 1))/2;\n+602 out[9] = -(z - x + 1)*(y + 3*z - 1);\n+603 out[10] = -(x - z + 1)*(y + 3*z - 1);\n+604 out[11] = (y + z + 1)*(z - x + 1) - 2*x*z - 6*z + 2*z*z;\n+605 out[12] = (x - z + 1)*(y + 3*z + 1);\n+606 out[13] = (x - z + 1)*(2*x - 3*y + z + 2*x*y - 2*x*z + 6*y*z + 2*y*y +\n+4*z*z - 3);\n+607 break;\n+608 default:\n+609 DUNE_THROW(RangeError, \"Component out of range.\");\n+610 }\n+611 }\n+612 } else {\n+613 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+614 }\n+615\n+616 return;\n+617 }\n+618\n+619 DUNE_THROW(NotImplemented, \"LagrangePyramidLocalBasis::partial for order \"\n+<< k);\n+620 }\n+621\n+623 static constexpr unsigned int order ()\n+624 {\n+625 return k;\n+626 }\n+627 };\n+628\n+633 template\n+634 class LagrangePyramidLocalCoefficients\n+635 {\n+636 public:\n+638 LagrangePyramidLocalCoefficients ()\n+639 : localKeys_(size())\n+640 {\n+641 if (k==0)\n+642 {\n+643 localKeys_[0] = LocalKey(0,0,0);\n+644 return;\n+645 }\n+646\n+647 if (k==1)\n+648 {\n+649 for (std::size_t i=0; i localKeys_;\n+701 };\n+702\n+707 template\n+708 class LagrangePyramidLocalInterpolation\n+709 {\n+710 public:\n+711\n+719 template\n+720 void interpolate (const F& f, std::vector& out) const\n+721 {\n+722 constexpr auto k = LocalBasis::order();\n+723 using D = typename LocalBasis::Traits::DomainType;\n+724 using DF = typename LocalBasis::Traits::DomainFieldType;\n+725\n+726 out.resize(LocalBasis::size());\n+727\n+728 // Specialization for zero-order case\n+729 if (k==0)\n+730 {\n+731 auto center = ReferenceElements::general(GeometryTypes::\n+pyramid).position(0,0);\n+732 out[0] = f(center);\n+733 return;\n+734 }\n+735\n+736 // Specialization for first-order case\n+737 if (k==1)\n+738 {\n+739 for (unsigned int i=0; i::general(GeometryTypes::\n+pyramid).position(i,3);\n+742 out[i] = f(vertex);\n+743 }\n+744 return;\n+745 }\n+746\n+747 // Specialization for second-order case\n+748 if (k==2)\n+749 {\n+750 out[0] = f( D( {0.0, 0.0, 0.0} ) );\n+751 out[1] = f( D( {1.0, 0.0, 0.0} ) );\n+752 out[2] = f( D( {0.0, 1.0, 0.0} ) );\n+753 out[3] = f( D( {1.0, 1.0, 0.0} ) );\n+754 out[4] = f( D( {0.0, 0.0, 1.0} ) );\n+755 out[5] = f( D( {0.0, 0.5, 0.0} ) );\n+756 out[6] = f( D( {1.0, 0.5, 0.0} ) );\n+757 out[7] = f( D( {0.5, 0.0, 0.0} ) );\n+758 out[8] = f( D( {0.5, 1.0, 0.0} ) );\n+759 out[9] = f( D( {0.0, 0.0, 0.5} ) );\n+760 out[10] = f( D( {0.5, 0.0, 0.5} ) );\n+761 out[11] = f( D( {0.0, 0.5, 0.5} ) );\n+762 out[12] = f( D( {0.5, 0.5, 0.5} ) );\n+763 out[13] = f( D( {0.5, 0.5, 0.0} ) );\n+764\n+765 return;\n+766 }\n+767\n+768 DUNE_THROW(NotImplemented, \"LagrangePyramidLocalInterpolation not\n+implemented for order \" << k);\n+769 }\n+770\n+771 };\n+772\n+773} } // namespace Dune::Impl\n+774\n+775namespace _\bD_\bu_\bn_\be\n+776{\n+807 template\n+_\b8_\b0_\b8 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+809 {\n+810 public:\n+_\b8_\b1_\b3 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n+_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bk_\b>,\n+814 Impl::LagrangePyramidLocalCoefficients,\n+815 Impl::LagrangePyramidLocalInterpolation > >;\n+816\n+_\b8_\b1_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+820 {\n+821 return basis_;\n+822 }\n+823\n+_\b8_\b2_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+827 {\n+828 return coefficients_;\n+829 }\n+830\n+_\b8_\b3_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+834 {\n+835 return interpolation_;\n+836 }\n+837\n+_\b8_\b3_\b9 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n+840 {\n+841 return Impl::LagrangePyramidLocalBasis::size();\n+842 }\n+843\n+_\b8_\b4_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+847 {\n+848 return GeometryTypes::pyramid;\n+849 }\n+850\n+851 private:\n+852 Impl::LagrangePyramidLocalBasis basis_;\n+853 Impl::LagrangePyramidLocalCoefficients coefficients_;\n+854 Impl::LagrangePyramidLocalInterpolation > interpolation_;\n+855 };\n+856\n+857} // namespace Dune\n+858\n+859#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPYRAMID_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Zero order Raviart-Thomas shape functions on rectangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Zero order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Raviart-Thomas shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Raviart-Thomas local finite elements for cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b0_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement(int s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b0_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement(int s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement(int s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b3_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement(int s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b3_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:101\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b4_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement(int s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b4_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b0_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b0_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement(int s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:152\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasCubeLocalFiniteElement(int s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:156\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for 3d pyramids with compile-time polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:809\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+Returns the assignment of the degrees of freedom to the element subentities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:826\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size()\n+The number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:839\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+The reference element that the local finite element is defined on.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:846\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+Returns the local basis, i.e., the set of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:819\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+Returns object that evaluates degrees of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangepyramid.hh:833\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0pyramidlocalinterpolation.hh File Reference\n+dune-localfunctions: lagrangelfecache.hh File Reference\n \n \n \n \n \n \n \n@@ -65,38 +65,48 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0pyramidlocalinterpolation.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    lagrangelfecache.hh File Reference
    \n \n
    \n-
    #include <vector>
    \n+
    #include <tuple>
    \n+#include <utility>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/geometry/typeindex.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangeprism.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangepyramid.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n+#include <dune/localfunctions/lagrange/p0.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementvariantcache.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::RT0PyramidLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference hexahedron. More...
     
    \n \n \n \n+

    \n Namespaces

    namespace  Dune
     
    \n+\n+\n+\n+\n+\n

    \n+Typedefs

    template<class D , class R , std::size_t dim, std::size_t order>
    using Dune::LagrangeLocalFiniteElementCache = LocalFiniteElementVariantCache< Impl::ImplementedLagrangeFiniteElements< D, R, dim, order > >
     A cache that stores all available Pk/Qk like local finite elements for the given dimension and order.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,32 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0pyramidlocalinterpolation.hh File Reference\n-#include \n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n+lagrangelfecache.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference hexahedron.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be<\n+ Impl::ImplementedLagrangeFiniteElements< D, R, dim, order > >\n+\u00a0 A cache that stores all available Pk/Qk like local finite elements for\n+ the given dimension and order.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0pyramidlocalinterpolation.hh Source File\n+dune-localfunctions: lagrangelfecache.hh Source File\n \n \n \n \n \n \n \n@@ -70,97 +70,145 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas0pyramidlocalinterpolation.hh
    \n+
    lagrangelfecache.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    20 template<class LB>
    \n-
    \n-\n-
    22 {
    \n+
    8#include <tuple>
    \n+
    9#include <utility>
    \n+
    10
    \n+
    11#include <dune/geometry/type.hh>
    \n+
    12#include <dune/geometry/typeindex.hh>
    \n+
    13
    \n+\n+\n+\n+\n+\n+\n+
    20
    \n+
    21
    \n+
    22namespace Dune {
    \n
    23
    \n-
    24 public:
    \n+
    24
    \n
    25
    \n-
    \n-
    31 RT0PyramidLocalInterpolation (std::bitset<5> s = 0)
    \n-
    32 {
    \n-
    33 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    34
    \n-
    35 for (size_t i=0; i<5; i++)
    \n-
    36 sign[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    37
    \n-
    38 Scalar r = 1/std::sqrt(2);
    \n-
    39
    \n-
    40 n[0] = { 0.0, 0.0, -1.0};
    \n-
    41 n[1] = {-1.0, 0.0, 0.0};
    \n-
    42 n[2] = { r, 0.0, r};
    \n-
    43 n[3] = { 0.0, -1.0, 0.0};
    \n-
    44 n[4] = { 0.0, r, r};
    \n-
    45
    \n-
    46 c[0] = 1.0;
    \n-
    47 c[1] = 1/2.0;
    \n-
    48 c[2] = 1/2.0 * std::sqrt(2);
    \n-
    49 c[3] = 1/2.0;
    \n-
    50 c[4] = 1/2.0 * std::sqrt(2);
    \n-
    51
    \n-
    52 m[0] = { 0.5, 0.5, 0.0};
    \n-
    53 m[1] = { 0.0, 1/3.0, 1/3.0};
    \n-
    54 m[2] = { 2/3.0, 1/3.0, 1/3.0};
    \n-
    55 m[3] = { 1/3.0, 0.0, 1/3.0};
    \n-
    56 m[4] = { 1/3.0, 2/3.0, 1/3.0};
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    67 template<class F, class C>
    \n-
    \n-
    68 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    69 {
    \n-
    70 out.resize(5);
    \n-
    71 for(int i=0; i<5; i++)
    \n-
    72 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-
    76 // Facet orientations
    \n-
    77 std::array<typename LB::Traits::RangeFieldType, 5> sign;
    \n-
    78 // Facet area
    \n-
    79 std::array<typename LB::Traits::RangeFieldType, 5> c;
    \n-
    80
    \n-
    81 // Facet normals
    \n-
    82 std::array<typename LB::Traits::DomainType, 5> n;
    \n-
    83 // Facet midpoints
    \n-
    84 std::array<typename LB::Traits::DomainType, 5> m;
    \n+
    26namespace Impl {
    \n+
    27
    \n+
    28 // Provide implemented Lagrange local finite elements
    \n+
    29
    \n+
    30 template<class D, class R, std::size_t dim, std::size_t order>
    \n+
    31 struct ImplementedLagrangeFiniteElements : public FixedDimLocalGeometryTypeIndex<dim>
    \n+
    32 {
    \n+
    33 using FixedDimLocalGeometryTypeIndex<dim>::index;
    \n+
    34 static auto getImplementations()
    \n+
    35 {
    \n+
    36 return std::make_tuple(
    \n+
    37 std::make_pair(index(GeometryTypes::simplex(dim)), []() { return LagrangeSimplexLocalFiniteElement<D,R,dim,order>(); }),
    \n+
    38 std::make_pair(index(GeometryTypes::cube(dim)), []() { return LagrangeCubeLocalFiniteElement<D,R,dim,order>(); })
    \n+
    39 );
    \n+
    40 }
    \n+
    41 };
    \n+
    42
    \n+
    43 template<class D, class R, std::size_t dim>
    \n+
    44 struct ImplementedLagrangeFiniteElements<D,R,dim,0> : public FixedDimLocalGeometryTypeIndex<dim>
    \n+
    45 {
    \n+
    46 using FixedDimLocalGeometryTypeIndex<dim>::index;
    \n+
    47 static auto getImplementations()
    \n+
    48 {
    \n+
    49 return std::make_tuple(
    \n+
    50 std::make_pair(index(GeometryTypes::simplex(dim)), []() { return P0LocalFiniteElement<D,R,dim>(GeometryTypes::simplex(dim)); }),
    \n+
    51 std::make_pair(index(GeometryTypes::cube(dim)), []() { return P0LocalFiniteElement<D,R,dim>(GeometryTypes::cube(dim)); }),
    \n+
    52 std::make_pair(index(GeometryTypes::none(dim)), []() { return P0LocalFiniteElement<D,R,dim>(GeometryTypes::none(dim)); })
    \n+
    53 );
    \n+
    54 }
    \n+
    55 };
    \n+
    56
    \n+
    57 template<class D, class R>
    \n+
    58 struct ImplementedLagrangeFiniteElements<D,R,3,0> : public FixedDimLocalGeometryTypeIndex<3>
    \n+
    59 {
    \n+
    60 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n+
    61 static auto getImplementations()
    \n+
    62 {
    \n+
    63 return std::make_tuple(
    \n+
    64 std::make_pair(index(GeometryTypes::tetrahedron), []() { return P0LocalFiniteElement<D,R,3>(GeometryTypes::tetrahedron); }),
    \n+
    65 std::make_pair(index(GeometryTypes::hexahedron), []() { return P0LocalFiniteElement<D,R,3>(GeometryTypes::hexahedron); }),
    \n+
    66 std::make_pair(index(GeometryTypes::prism), []() { return P0LocalFiniteElement<D,R,3>(GeometryTypes::prism); }),
    \n+
    67 std::make_pair(index(GeometryTypes::pyramid), []() { return P0LocalFiniteElement<D,R,3>(GeometryTypes::pyramid); })
    \n+
    68 );
    \n+
    69 }
    \n+
    70 };
    \n+
    71
    \n+
    72 template<class D, class R>
    \n+
    73 struct ImplementedLagrangeFiniteElements<D,R,3,1> : public FixedDimLocalGeometryTypeIndex<3>
    \n+
    74 {
    \n+
    75 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n+
    76 static auto getImplementations()
    \n+
    77 {
    \n+
    78 return std::make_tuple(
    \n+
    79 std::make_pair(index(GeometryTypes::tetrahedron), []() { return LagrangeSimplexLocalFiniteElement<D,R,3,1>(); }),
    \n+
    80 std::make_pair(index(GeometryTypes::hexahedron), []() { return LagrangeCubeLocalFiniteElement<D,R,3,1>(); }),
    \n+
    81 std::make_pair(index(GeometryTypes::prism), []() { return LagrangePrismLocalFiniteElement<D,R,1>(); }),
    \n+
    82 std::make_pair(index(GeometryTypes::pyramid), []() { return LagrangePyramidLocalFiniteElement<D,R,1>(); })
    \n+
    83 );
    \n+
    84 }
    \n
    85 };
    \n-
    \n-
    86}
    \n-
    87#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n+
    86
    \n+
    87 template<class D, class R>
    \n+
    88 struct ImplementedLagrangeFiniteElements<D,R,3,2> : public FixedDimLocalGeometryTypeIndex<3>
    \n+
    89 {
    \n+
    90 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n+
    91 static auto getImplementations()
    \n+
    92 {
    \n+
    93 return std::make_tuple(
    \n+
    94 std::make_pair(index(GeometryTypes::tetrahedron), []() { return LagrangeSimplexLocalFiniteElement<D,R,3,2>(); }),
    \n+
    95 std::make_pair(index(GeometryTypes::hexahedron), []() { return LagrangeCubeLocalFiniteElement<D,R,3,2>(); }),
    \n+
    96 std::make_pair(index(GeometryTypes::prism), []() { return LagrangePrismLocalFiniteElement<D,R,2>(); }),
    \n+
    97 std::make_pair(index(GeometryTypes::pyramid), []() { return LagrangePyramidLocalFiniteElement<D,R,2>(); })
    \n+
    98 );
    \n+
    99 }
    \n+
    100 };
    \n+
    101
    \n+
    102} // namespace Impl
    \n+
    103
    \n+
    104
    \n+
    105
    \n+
    117template<class D, class R, std::size_t dim, std::size_t order>
    \n+\n+
    119
    \n+
    120
    \n+
    121
    \n+
    122} // namespace Dune
    \n+
    123
    \n+
    124
    \n+
    125
    \n+
    126
    \n+
    127#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
    \n+\n+\n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0pyramidlocalinterpolation.hh:22
    \n-
    RT0PyramidLocalInterpolation(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0pyramidlocalinterpolation.hh:31
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas0pyramidlocalinterpolation.hh:68
    \n+
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,92 +1,164 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n-raviartthomas0pyramidlocalinterpolation.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+lagrangelfecache.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH\n 7\n-8#include \n-9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-20 template\n-_\b2_\b1 class _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-22 {\n+8#include \n+9#include \n+10\n+11#include \n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+20\n+21\n+22namespace _\bD_\bu_\bn_\be {\n 23\n-24 public:\n+24\n 25\n-_\b3_\b1 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<5> s = 0)\n+26namespace Impl {\n+27\n+28 // Provide implemented Lagrange local finite elements\n+29\n+30 template\n+31 struct ImplementedLagrangeFiniteElements : public\n+FixedDimLocalGeometryTypeIndex\n 32 {\n-33 typedef typename LB::Traits::RangeFieldType Scalar;\n-34\n-35 for (size_t i=0; i<5; i++)\n-36 sign[i] = (s[i]) ? -1.0 : 1.0;\n-37\n-38 Scalar r = 1/std::sqrt(2);\n-39\n-40 n[0] = { 0.0, 0.0, -1.0};\n-41 n[1] = {-1.0, 0.0, 0.0};\n-42 n[2] = { r, 0.0, r};\n-43 n[3] = { 0.0, -1.0, 0.0};\n-44 n[4] = { 0.0, r, r};\n-45\n-46 c[0] = 1.0;\n-47 c[1] = 1/2.0;\n-48 c[2] = 1/2.0 * std::sqrt(2);\n-49 c[3] = 1/2.0;\n-50 c[4] = 1/2.0 * std::sqrt(2);\n-51\n-52 m[0] = { 0.5, 0.5, 0.0};\n-53 m[1] = { 0.0, 1/3.0, 1/3.0};\n-54 m[2] = { 2/3.0, 1/3.0, 1/3.0};\n-55 m[3] = { 1/3.0, 0.0, 1/3.0};\n-56 m[4] = { 1/3.0, 2/3.0, 1/3.0};\n-57 }\n-58\n-67 template\n-_\b6_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-69 {\n-70 out.resize(5);\n-71 for(int i=0; i<5; i++)\n-72 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];\n-73 }\n-74\n-75 private:\n-76 // Facet orientations\n-77 std::array sign;\n-78 // Facet area\n-79 std::array c;\n-80\n-81 // Facet normals\n-82 std::array n;\n-83 // Facet midpoints\n-84 std::array m;\n+33 using FixedDimLocalGeometryTypeIndex::index;\n+34 static auto getImplementations()\n+35 {\n+36 return std::make_tuple(\n+37 std::make_pair(index(GeometryTypes::simplex(dim)), []() { return\n+LagrangeSimplexLocalFiniteElement(); }),\n+38 std::make_pair(index(GeometryTypes::cube(dim)), []() { return\n+LagrangeCubeLocalFiniteElement(); })\n+39 );\n+40 }\n+41 };\n+42\n+43 template\n+44 struct ImplementedLagrangeFiniteElements : public\n+FixedDimLocalGeometryTypeIndex\n+45 {\n+46 using FixedDimLocalGeometryTypeIndex::index;\n+47 static auto getImplementations()\n+48 {\n+49 return std::make_tuple(\n+50 std::make_pair(index(GeometryTypes::simplex(dim)), []() { return\n+P0LocalFiniteElement(GeometryTypes::simplex(dim)); }),\n+51 std::make_pair(index(GeometryTypes::cube(dim)), []() { return\n+P0LocalFiniteElement(GeometryTypes::cube(dim)); }),\n+52 std::make_pair(index(GeometryTypes::none(dim)), []() { return\n+P0LocalFiniteElement(GeometryTypes::none(dim)); })\n+53 );\n+54 }\n+55 };\n+56\n+57 template\n+58 struct ImplementedLagrangeFiniteElements : public\n+FixedDimLocalGeometryTypeIndex<3>\n+59 {\n+60 using FixedDimLocalGeometryTypeIndex<3>::index;\n+61 static auto getImplementations()\n+62 {\n+63 return std::make_tuple(\n+64 std::make_pair(index(GeometryTypes::tetrahedron), []() { return\n+P0LocalFiniteElement(GeometryTypes::tetrahedron); }),\n+65 std::make_pair(index(GeometryTypes::hexahedron), []() { return\n+P0LocalFiniteElement(GeometryTypes::hexahedron); }),\n+66 std::make_pair(index(GeometryTypes::prism), []() { return\n+P0LocalFiniteElement(GeometryTypes::prism); }),\n+67 std::make_pair(index(GeometryTypes::pyramid), []() { return\n+P0LocalFiniteElement(GeometryTypes::pyramid); })\n+68 );\n+69 }\n+70 };\n+71\n+72 template\n+73 struct ImplementedLagrangeFiniteElements : public\n+FixedDimLocalGeometryTypeIndex<3>\n+74 {\n+75 using FixedDimLocalGeometryTypeIndex<3>::index;\n+76 static auto getImplementations()\n+77 {\n+78 return std::make_tuple(\n+79 std::make_pair(index(GeometryTypes::tetrahedron), []() { return\n+LagrangeSimplexLocalFiniteElement(); }),\n+80 std::make_pair(index(GeometryTypes::hexahedron), []() { return\n+LagrangeCubeLocalFiniteElement(); }),\n+81 std::make_pair(index(GeometryTypes::prism), []() { return\n+LagrangePrismLocalFiniteElement(); }),\n+82 std::make_pair(index(GeometryTypes::pyramid), []() { return\n+LagrangePyramidLocalFiniteElement(); })\n+83 );\n+84 }\n 85 };\n-86}\n-87#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH\n+86\n+87 template\n+88 struct ImplementedLagrangeFiniteElements : public\n+FixedDimLocalGeometryTypeIndex<3>\n+89 {\n+90 using FixedDimLocalGeometryTypeIndex<3>::index;\n+91 static auto getImplementations()\n+92 {\n+93 return std::make_tuple(\n+94 std::make_pair(index(GeometryTypes::tetrahedron), []() { return\n+LagrangeSimplexLocalFiniteElement(); }),\n+95 std::make_pair(index(GeometryTypes::hexahedron), []() { return\n+LagrangeCubeLocalFiniteElement(); }),\n+96 std::make_pair(index(GeometryTypes::prism), []() { return\n+LagrangePrismLocalFiniteElement(); }),\n+97 std::make_pair(index(GeometryTypes::pyramid), []() { return\n+LagrangePyramidLocalFiniteElement(); })\n+98 );\n+99 }\n+100 };\n+101\n+102} // namespace Impl\n+103\n+104\n+105\n+117template\n+_\b1_\b1_\b8using _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be =\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n+_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\be_\bd_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bo_\br_\bd_\be_\br_\b>>;\n+119\n+120\n+121\n+122} // namespace Dune\n+123\n+124\n+125\n+126\n+127#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n+_\bp_\b0_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalinterpolation.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT0PyramidLocalInterpolation(std::bitset< 5 > s=0)\n-Make set number s, where 0 <= s < 32.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalinterpolation.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalinterpolation.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+A cache storing a compile time selection of local finite element\n+implementations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:68\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0pyramidlocalbasis.hh File Reference\n+dune-localfunctions: lagrangeprism.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0pyramidlocalbasis.hh File Reference
    \n+
    lagrangeprism.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <vector>
    \n+
    #include <array>
    \n+#include <numeric>
    \n #include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/math.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT0PyramidLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference pyramid. More...
    class  Dune::LagrangePrismLocalFiniteElement< D, R, k >
     Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,29 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0pyramidlocalbasis.hh File Reference\n+lagrangeprism.hh File Reference\n+#include \n #include \n-#include \n #include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference pyramid.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bk_\b _\b>\n+\u00a0 Lagrange finite element for 3d prisms with arbitrary compile-time\n+ polynomial order. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0pyramidlocalbasis.hh Source File\n+dune-localfunctions: lagrangeprism.hh Source File\n \n \n \n \n \n \n \n@@ -70,148 +70,688 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0pyramidlocalbasis.hh
    \n+
    lagrangeprism.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \n+
    8#include <array>
    \n+
    9#include <numeric>
    \n
    10
    \n
    11#include <dune/common/fmatrix.hh>
    \n-
    12
    \n-
    13#include "../../common/localbasis.hh"
    \n+
    12#include <dune/common/fvector.hh>
    \n+
    13#include <dune/common/math.hh>
    \n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    26 template<class D, class R>
    \n-
    \n-\n-
    28 {
    \n-
    29
    \n-
    30 public:
    \n-
    31 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n-
    32 Dune::FieldMatrix<R,3,3> > Traits;
    \n-
    33
    \n-
    \n-
    39 RT0PyramidLocalBasis (std::bitset<5> s = 0)
    \n-
    40 {
    \n-
    41 for (size_t i=0; i<size(); i++)
    \n-
    42 sign[i] = s[i] ? -1.0 : 1.0;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-
    46 unsigned int size () const
    \n-
    47 {
    \n-
    48 return 5;
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    57 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    58 std::vector<typename Traits::RangeType>& out) const
    \n-
    59 {
    \n-
    60 out.resize(5);
    \n-
    61 for (std::size_t i=0; i<out.size(); i++)
    \n-
    62 out[i] = {0.0,0.0,0.0};
    \n-
    63
    \n-
    64 out[0][0] = 1.5*in[0];
    \n-
    65 out[0][1] = 1.5*in[1];
    \n-
    66 out[0][2] = -1.0;
    \n+
    15#include <dune/geometry/referenceelements.hh>
    \n+
    16
    \n+\n+\n+\n+
    20
    \n+
    21namespace Dune { namespace Impl
    \n+
    22{
    \n+
    32 template<class D, class R, unsigned int k>
    \n+
    33 class LagrangePrismLocalBasis
    \n+
    34 {
    \n+
    35 static constexpr std::size_t dim = 3;
    \n+
    36 public:
    \n+
    37 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n+
    38
    \n+
    41 static constexpr unsigned int size ()
    \n+
    42 {
    \n+
    43 return binomial(k+2,2u) * (k+1);
    \n+
    44 }
    \n+
    45
    \n+
    47 void evaluateFunction(const typename Traits::DomainType& in,
    \n+
    48 std::vector<typename Traits::RangeType>& out) const
    \n+
    49 {
    \n+
    50 out.resize(size());
    \n+
    51
    \n+
    52 // Specialization for zero-order case
    \n+
    53 if (k==0)
    \n+
    54 {
    \n+
    55 out[0] = 1;
    \n+
    56 return;
    \n+
    57 }
    \n+
    58
    \n+
    59 if (k==1)
    \n+
    60 {
    \n+
    61 out[0] = (1.0-in[0]-in[1])*(1.0-in[2]);
    \n+
    62 out[1] = in[0]*(1-in[2]);
    \n+
    63 out[2] = in[1]*(1-in[2]);
    \n+
    64 out[3] = in[2]*(1.0-in[0]-in[1]);
    \n+
    65 out[4] = in[0]*in[2];
    \n+
    66 out[5] = in[1]*in[2];
    \n
    67
    \n-
    68 out[1][0] = -2.0 + 3.0*in[0];
    \n-
    69
    \n-
    70 out[2][0] = 3.0*in[0];
    \n-
    71
    \n-
    72 out[3][1] = -2.0 + 3.0*in[1];
    \n-
    73
    \n-
    74 out[4][1] = 3.0*in[1];
    \n-
    75
    \n-
    76 for (std::size_t i=0; i<out.size(); i++)
    \n-
    77 out[i] *= sign[i];
    \n-
    78
    \n-
    79 }
    \n-
    \n-
    80
    \n-
    \n-
    87 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    88 std::vector<typename Traits::JacobianType>& out) const
    \n-
    89 {
    \n-
    90 out.resize(5);
    \n-
    91
    \n-
    92 for(int i=0; i<size(); i++)
    \n-
    93 for(int j=0; j<3; j++)
    \n-
    94 out[i][j] = {0.0, 0.0, 0.0};
    \n+
    68 return;
    \n+
    69 }
    \n+
    70
    \n+
    71 if (k==2)
    \n+
    72 {
    \n+
    73 FieldVector<R,k+1> segmentShapeFunction;
    \n+
    74 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n+
    75 segmentShapeFunction[1] = in[2] * (4 - 4*in[2]);
    \n+
    76 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n+
    77
    \n+
    78 FieldVector<R, 6> triangleShapeFunction;
    \n+
    79 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);
    \n+
    80 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);
    \n+
    81 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);
    \n+
    82 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);
    \n+
    83 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);
    \n+
    84 triangleShapeFunction[5] = 4*in[0]*in[1];
    \n+
    85
    \n+
    86 // lower triangle:
    \n+
    87 out[0] = triangleShapeFunction[0] * segmentShapeFunction[0];
    \n+
    88 out[1] = triangleShapeFunction[1] * segmentShapeFunction[0];
    \n+
    89 out[2] = triangleShapeFunction[2] * segmentShapeFunction[0];
    \n+
    90
    \n+
    91 //upper triangle
    \n+
    92 out[3] = triangleShapeFunction[0] * segmentShapeFunction[2];
    \n+
    93 out[4] = triangleShapeFunction[1] * segmentShapeFunction[2];
    \n+
    94 out[5] = triangleShapeFunction[2] * segmentShapeFunction[2];
    \n
    95
    \n-
    96 out[0][0][0] = sign[0]*(1.5);
    \n-
    97 out[0][1][1] = sign[0]*(1.5);
    \n-
    98
    \n-
    99 out[1][0][0] = sign[1]*(3.0);
    \n+
    96 // vertical edges
    \n+
    97 out[6] = triangleShapeFunction[0] * segmentShapeFunction[1];
    \n+
    98 out[7] = triangleShapeFunction[1] * segmentShapeFunction[1];
    \n+
    99 out[8] = triangleShapeFunction[2] * segmentShapeFunction[1];
    \n
    100
    \n-
    101 out[2][0][0] = sign[2]*(3.0);
    \n-
    102
    \n-
    103 out[3][1][1] = sign[3]*(3.0);
    \n-
    104
    \n-
    105 out[4][1][1] = sign[4]*(3.0);
    \n-
    106 }
    \n-
    \n-
    107
    \n-
    \n-
    109 void partial (const std::array<unsigned int, 3>& order,
    \n-
    110 const typename Traits::DomainType& in, // position
    \n-
    111 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    112 {
    \n-
    113 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    114 if (totalOrder == 0) {
    \n-
    115 evaluateFunction(in, out);
    \n-
    116 } else {
    \n-
    117 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    118 }
    \n-
    119 }
    \n-
    \n-
    120
    \n-
    \n-
    122 unsigned int order () const
    \n-
    123 {
    \n-
    124 return 1;
    \n-
    125 }
    \n-
    \n-
    126
    \n-
    127 private:
    \n-
    128 std::array<R,5> sign;
    \n-
    129 };
    \n-
    \n-
    130}
    \n-
    131#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH
    \n+
    101 // lower triangle edges
    \n+
    102 out[9] = triangleShapeFunction[3] * segmentShapeFunction[0];
    \n+
    103 out[10] = triangleShapeFunction[4] * segmentShapeFunction[0];
    \n+
    104 out[11] = triangleShapeFunction[5] * segmentShapeFunction[0];
    \n+
    105
    \n+
    106 // upper triangle edges
    \n+
    107 out[12] = triangleShapeFunction[3] * segmentShapeFunction[2];
    \n+
    108 out[13] = triangleShapeFunction[4] * segmentShapeFunction[2];
    \n+
    109 out[14] = triangleShapeFunction[5] * segmentShapeFunction[2];
    \n+
    110
    \n+
    111 // quadrilateral sides
    \n+
    112 out[15] = triangleShapeFunction[3] * segmentShapeFunction[1];
    \n+
    113 out[16] = triangleShapeFunction[4] * segmentShapeFunction[1];
    \n+
    114 out[17] = triangleShapeFunction[5] * segmentShapeFunction[1];
    \n+
    115
    \n+
    116 return;
    \n+
    117 }
    \n+
    118
    \n+
    119 DUNE_THROW(NotImplemented, "LagrangePrismLocalBasis::evaluateFunction for order " << k);
    \n+
    120 }
    \n+
    121
    \n+
    127 void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    128 std::vector<typename Traits::JacobianType>& out) const
    \n+
    129 {
    \n+
    130 out.resize(size());
    \n+
    131
    \n+
    132 // Specialization for k==0
    \n+
    133 if (k==0)
    \n+
    134 {
    \n+
    135 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n+
    136 return;
    \n+
    137 }
    \n+
    138
    \n+
    139 if (k==1)
    \n+
    140 {
    \n+
    141 out[0][0] = {in[2]-1, in[2]-1, in[0]+in[1]-1};
    \n+
    142 out[1][0] = {1-in[2], 0, -in[0]};
    \n+
    143 out[2][0] = { 0, 1-in[2], -in[1]};
    \n+
    144 out[3][0] = { -in[2], -in[2], 1-in[0]-in[1]};
    \n+
    145 out[4][0] = { in[2], 0, in[0]};
    \n+
    146 out[5][0] = { 0, in[2], in[1]};
    \n+
    147
    \n+
    148 return;
    \n+
    149 }
    \n+
    150
    \n+
    151 if (k==2)
    \n+
    152 {
    \n+
    153 // Second-order shape functions on a triangle, and the first derivatives
    \n+
    154 FieldVector<R, 6> triangleShapeFunction;
    \n+
    155 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);
    \n+
    156 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);
    \n+
    157 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);
    \n+
    158 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);
    \n+
    159 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);
    \n+
    160 triangleShapeFunction[5] = 4*in[0]*in[1];
    \n+
    161
    \n+
    162 std::array<std::array<R,2>,6> triangleShapeFunctionDer;
    \n+
    163 triangleShapeFunctionDer[0] = {-3 + 4*(in[0] + in[1]), -3 + 4*(in[0] + in[1])};
    \n+
    164 triangleShapeFunctionDer[1] = { -1 + 4*in[0], 0};
    \n+
    165 triangleShapeFunctionDer[2] = { 0, -1 + 4*in[1]};
    \n+
    166 triangleShapeFunctionDer[3] = { 4 - 8*in[0] - 4*in[1], -4*in[0]};
    \n+
    167 triangleShapeFunctionDer[4] = { -4*in[1], 4 - 4*in[0] - 8*in[1]};
    \n+
    168 triangleShapeFunctionDer[5] = { 4*in[1], 4*in[0]};
    \n+
    169
    \n+
    170 // Second-order shape functions on a line, and the first derivatives
    \n+
    171 FieldVector<R,k+1> segmentShapeFunction;
    \n+
    172 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n+
    173 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);
    \n+
    174 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n+
    175
    \n+
    176 FieldVector<R,k+1> segmentShapeFunctionDer;
    \n+
    177 segmentShapeFunctionDer[0] = -3 + 4*in[2];
    \n+
    178 segmentShapeFunctionDer[1] = 4 - 8*in[2];
    \n+
    179 segmentShapeFunctionDer[2] = -1 + 4*in[2];
    \n+
    180
    \n+
    181 // lower triangle:
    \n+
    182 out[0][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[0];
    \n+
    183 out[0][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[0];
    \n+
    184 out[0][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];
    \n+
    185
    \n+
    186 out[1][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[0];
    \n+
    187 out[1][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[0];
    \n+
    188 out[1][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];
    \n+
    189
    \n+
    190 out[2][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[0];
    \n+
    191 out[2][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[0];
    \n+
    192 out[2][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];
    \n+
    193
    \n+
    194 //upper triangle
    \n+
    195 out[3][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[2];
    \n+
    196 out[3][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[2];
    \n+
    197 out[3][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];
    \n+
    198
    \n+
    199 out[4][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[2];
    \n+
    200 out[4][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[2];
    \n+
    201 out[4][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];
    \n+
    202
    \n+
    203 out[5][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[2];
    \n+
    204 out[5][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[2];
    \n+
    205 out[5][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];
    \n+
    206
    \n+
    207 // vertical edges
    \n+
    208 out[6][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[1];
    \n+
    209 out[6][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[1];
    \n+
    210 out[6][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];
    \n+
    211
    \n+
    212 out[7][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[1];
    \n+
    213 out[7][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[1];
    \n+
    214 out[7][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];
    \n+
    215
    \n+
    216 out[8][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[1];
    \n+
    217 out[8][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[1];
    \n+
    218 out[8][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];
    \n+
    219
    \n+
    220 // lower triangle edges
    \n+
    221 out[9][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[0];
    \n+
    222 out[9][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[0];
    \n+
    223 out[9][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];
    \n+
    224
    \n+
    225 out[10][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[0];
    \n+
    226 out[10][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[0];
    \n+
    227 out[10][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];
    \n+
    228
    \n+
    229 out[11][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[0];
    \n+
    230 out[11][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[0];
    \n+
    231 out[11][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];
    \n+
    232
    \n+
    233 // upper triangle edges
    \n+
    234 out[12][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[2];
    \n+
    235 out[12][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[2];
    \n+
    236 out[12][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];
    \n+
    237
    \n+
    238 out[13][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[2];
    \n+
    239 out[13][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[2];
    \n+
    240 out[13][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];
    \n+
    241
    \n+
    242 out[14][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[2];
    \n+
    243 out[14][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[2];
    \n+
    244 out[14][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];
    \n+
    245
    \n+
    246 // quadrilateral sides
    \n+
    247 out[15][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[1];
    \n+
    248 out[15][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[1];
    \n+
    249 out[15][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];
    \n+
    250
    \n+
    251 out[16][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[1];
    \n+
    252 out[16][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[1];
    \n+
    253 out[16][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];
    \n+
    254
    \n+
    255 out[17][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[1];
    \n+
    256 out[17][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[1];
    \n+
    257 out[17][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];
    \n+
    258
    \n+
    259 return;
    \n+
    260 }
    \n+
    261
    \n+
    262 DUNE_THROW(NotImplemented, "LagrangePrismLocalBasis::evaluateJacobian for order " << k);
    \n+
    263 }
    \n+
    264
    \n+
    271 void partial(const std::array<unsigned int,dim>& order,
    \n+
    272 const typename Traits::DomainType& in,
    \n+
    273 std::vector<typename Traits::RangeType>& out) const
    \n+
    274 {
    \n+
    275 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    276
    \n+
    277 out.resize(size());
    \n+
    278
    \n+
    279 if (totalOrder == 0)
    \n+
    280 {
    \n+
    281 evaluateFunction(in, out);
    \n+
    282 return;
    \n+
    283 }
    \n+
    284
    \n+
    285 // Specialization for zero-order finite elements
    \n+
    286 if (k==0)
    \n+
    287 {
    \n+
    288 out[0] = 0;
    \n+
    289 return;
    \n+
    290 }
    \n+
    291
    \n+
    292 // Specialization for first-order finite elements
    \n+
    293 if (k==1)
    \n+
    294 {
    \n+
    295 if (totalOrder == 1)
    \n+
    296 {
    \n+
    297 auto direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    298
    \n+
    299 switch (direction) {
    \n+
    300 case 0:
    \n+
    301 out[0] = in[2]-1;
    \n+
    302 out[1] = 1-in[2];
    \n+
    303 out[2] = 0;
    \n+
    304 out[3] = -in[2];
    \n+
    305 out[4] = in[2];
    \n+
    306 out[5] = 0;
    \n+
    307 break;
    \n+
    308 case 1:
    \n+
    309 out[0] = in[2]-1;
    \n+
    310 out[1] = 0;
    \n+
    311 out[2] = 1-in[2];
    \n+
    312 out[3] = -in[2];
    \n+
    313 out[4] = 0;
    \n+
    314 out[5] = in[2];
    \n+
    315 break;
    \n+
    316 case 2:
    \n+
    317 out[0] = in[0]+in[1]-1;
    \n+
    318 out[1] = -in[0];
    \n+
    319 out[2] = -in[1];
    \n+
    320 out[3] = 1-in[0]-in[1];
    \n+
    321 out[4] = in[0];
    \n+
    322 out[5] = in[1];
    \n+
    323 break;
    \n+
    324 default:
    \n+
    325 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    326 }
    \n+
    327 } else if (totalOrder == 2) {
    \n+
    328 out.resize(size());
    \n+
    329 if (order[0] == 1 && order[2] == 1) {
    \n+
    330 out[0] = 1;
    \n+
    331 out[1] =-1;
    \n+
    332 out[2] = 0;
    \n+
    333 out[3] =-1;
    \n+
    334 out[4] = 1;
    \n+
    335 out[5] = 0;
    \n+
    336 } else if (order[1] == 1 && order[2] == 1) {
    \n+
    337 out[0] = 1;
    \n+
    338 out[1] = 0;
    \n+
    339 out[2] =-1;
    \n+
    340 out[3] =-1;
    \n+
    341 out[4] = 0;
    \n+
    342 out[5] = 1;
    \n+
    343 } else {
    \n+
    344 for (std::size_t i = 0; i < size(); ++i)
    \n+
    345 out[i] = 0;
    \n+
    346 }
    \n+
    347 } else {
    \n+
    348 out.resize(size());
    \n+
    349 std::fill(out.begin(), out.end(), 0.0);
    \n+
    350 }
    \n+
    351
    \n+
    352 return;
    \n+
    353 }
    \n+
    354
    \n+
    355 // Specialization for second-order finite elements
    \n+
    356 if (k==2)
    \n+
    357 {
    \n+
    358 if (totalOrder == 1)
    \n+
    359 {
    \n+
    360 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    361 switch (direction)
    \n+
    362 {
    \n+
    363 case 0:
    \n+
    364 {
    \n+
    365 FieldVector<R,6> triangleShapeFunctionDerX;
    \n+
    366 triangleShapeFunctionDerX[0] = -3 + 4*(in[0] + in[1]);
    \n+
    367 triangleShapeFunctionDerX[1] = -1 + 4* in[0];
    \n+
    368 triangleShapeFunctionDerX[2] = 0;
    \n+
    369 triangleShapeFunctionDerX[3] = 4 - 8* in[0] - 4*in[1];
    \n+
    370 triangleShapeFunctionDerX[4] = -4*in[1];
    \n+
    371 triangleShapeFunctionDerX[5] = 4*in[1];
    \n+
    372
    \n+
    373 FieldVector<R,k+1> segmentShapeFunction;
    \n+
    374 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n+
    375 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);
    \n+
    376 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n+
    377
    \n+
    378 out[0] = triangleShapeFunctionDerX[0] * segmentShapeFunction[0];
    \n+
    379 out[1] = triangleShapeFunctionDerX[1] * segmentShapeFunction[0];
    \n+
    380 out[2] = triangleShapeFunctionDerX[2] * segmentShapeFunction[0];
    \n+
    381 out[3] = triangleShapeFunctionDerX[0] * segmentShapeFunction[2];
    \n+
    382 out[4] = triangleShapeFunctionDerX[1] * segmentShapeFunction[2];
    \n+
    383 out[5] = triangleShapeFunctionDerX[2] * segmentShapeFunction[2];
    \n+
    384 out[6] = triangleShapeFunctionDerX[0] * segmentShapeFunction[1];
    \n+
    385 out[7] = triangleShapeFunctionDerX[1] * segmentShapeFunction[1];
    \n+
    386 out[8] = triangleShapeFunctionDerX[2] * segmentShapeFunction[1];
    \n+
    387 out[9] = triangleShapeFunctionDerX[3] * segmentShapeFunction[0];
    \n+
    388 out[10] = triangleShapeFunctionDerX[4] * segmentShapeFunction[0];
    \n+
    389 out[11] = triangleShapeFunctionDerX[5] * segmentShapeFunction[0];
    \n+
    390 out[12] = triangleShapeFunctionDerX[3] * segmentShapeFunction[2];
    \n+
    391 out[13] = triangleShapeFunctionDerX[4] * segmentShapeFunction[2];
    \n+
    392 out[14] = triangleShapeFunctionDerX[5] * segmentShapeFunction[2];
    \n+
    393 out[15] = triangleShapeFunctionDerX[3] * segmentShapeFunction[1];
    \n+
    394 out[16] = triangleShapeFunctionDerX[4] * segmentShapeFunction[1];
    \n+
    395 out[17] = triangleShapeFunctionDerX[5] * segmentShapeFunction[1];
    \n+
    396 break;
    \n+
    397 }
    \n+
    398 case 1:
    \n+
    399 {
    \n+
    400 FieldVector<R,6> triangleShapeFunctionDerY;
    \n+
    401 triangleShapeFunctionDerY[0] = -3 + 4*(in[0] + in[1]);
    \n+
    402 triangleShapeFunctionDerY[1] = 0;
    \n+
    403 triangleShapeFunctionDerY[2] = -1 + 4* in[1];
    \n+
    404 triangleShapeFunctionDerY[3] = -4* in[0];
    \n+
    405 triangleShapeFunctionDerY[4] = 4 - 4* in[0] - 8*in[1];
    \n+
    406 triangleShapeFunctionDerY[5] = 4* in[0];
    \n+
    407
    \n+
    408 FieldVector<R,k+1> segmentShapeFunction;
    \n+
    409 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n+
    410 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);
    \n+
    411 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n+
    412
    \n+
    413 out[0] = triangleShapeFunctionDerY[0] * segmentShapeFunction[0];
    \n+
    414 out[1] = triangleShapeFunctionDerY[1] * segmentShapeFunction[0];
    \n+
    415 out[2] = triangleShapeFunctionDerY[2] * segmentShapeFunction[0];
    \n+
    416 out[3] = triangleShapeFunctionDerY[0] * segmentShapeFunction[2];
    \n+
    417 out[4] = triangleShapeFunctionDerY[1] * segmentShapeFunction[2];
    \n+
    418 out[5] = triangleShapeFunctionDerY[2] * segmentShapeFunction[2];
    \n+
    419 out[6] = triangleShapeFunctionDerY[0] * segmentShapeFunction[1];
    \n+
    420 out[7] = triangleShapeFunctionDerY[1] * segmentShapeFunction[1];
    \n+
    421 out[8] = triangleShapeFunctionDerY[2] * segmentShapeFunction[1];
    \n+
    422 out[9] = triangleShapeFunctionDerY[3] * segmentShapeFunction[0];
    \n+
    423 out[10] = triangleShapeFunctionDerY[4] * segmentShapeFunction[0];
    \n+
    424 out[11] = triangleShapeFunctionDerY[5] * segmentShapeFunction[0];
    \n+
    425 out[12] = triangleShapeFunctionDerY[3] * segmentShapeFunction[2];
    \n+
    426 out[13] = triangleShapeFunctionDerY[4] * segmentShapeFunction[2];
    \n+
    427 out[14] = triangleShapeFunctionDerY[5] * segmentShapeFunction[2];
    \n+
    428 out[15] = triangleShapeFunctionDerY[3] * segmentShapeFunction[1];
    \n+
    429 out[16] = triangleShapeFunctionDerY[4] * segmentShapeFunction[1];
    \n+
    430 out[17] = triangleShapeFunctionDerY[5] * segmentShapeFunction[1];
    \n+
    431 break;
    \n+
    432 }
    \n+
    433 case 2:
    \n+
    434 {
    \n+
    435 FieldVector<R, 6> triangleShapeFunction;
    \n+
    436 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);
    \n+
    437 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);
    \n+
    438 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);
    \n+
    439 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);
    \n+
    440 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);
    \n+
    441 triangleShapeFunction[5] = 4*in[0]*in[1];
    \n+
    442
    \n+
    443 FieldVector<R,k+1> segmentShapeFunctionDer;
    \n+
    444 segmentShapeFunctionDer[0] = -3 + 4*in[2];
    \n+
    445 segmentShapeFunctionDer[1] = 4 - 8*in[2];
    \n+
    446 segmentShapeFunctionDer[2] = -1 + 4*in[2];
    \n+
    447
    \n+
    448 out[0] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];
    \n+
    449 out[1] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];
    \n+
    450 out[2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];
    \n+
    451 out[3] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];
    \n+
    452 out[4] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];
    \n+
    453 out[5] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];
    \n+
    454 out[6] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];
    \n+
    455 out[7] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];
    \n+
    456 out[8] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];
    \n+
    457 out[9] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];
    \n+
    458 out[10] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];
    \n+
    459 out[11] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];
    \n+
    460 out[12] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];
    \n+
    461 out[13] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];
    \n+
    462 out[14] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];
    \n+
    463 out[15] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];
    \n+
    464 out[16] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];
    \n+
    465 out[17] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];
    \n+
    466 break;
    \n+
    467 }
    \n+
    468 default:
    \n+
    469 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    470 }
    \n+
    471 } else {
    \n+
    472 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    473 }
    \n+
    474
    \n+
    475 return;
    \n+
    476 }
    \n+
    477
    \n+
    478 DUNE_THROW(NotImplemented, "LagrangePrismLocalBasis::partial not implemented for order " << k);
    \n+
    479 }
    \n+
    480
    \n+
    482 static constexpr unsigned int order ()
    \n+
    483 {
    \n+
    484 return k;
    \n+
    485 }
    \n+
    486 };
    \n+
    487
    \n+
    492 template<unsigned int k>
    \n+
    493 class LagrangePrismLocalCoefficients
    \n+
    494 {
    \n+
    495 public:
    \n+
    497 LagrangePrismLocalCoefficients ()
    \n+
    498 : localKeys_(size())
    \n+
    499 {
    \n+
    500 if (k==0)
    \n+
    501 {
    \n+
    502 localKeys_[0] = LocalKey(0,0,0);
    \n+
    503 return;
    \n+
    504 }
    \n+
    505
    \n+
    506 if (k==1)
    \n+
    507 {
    \n+
    508 for (std::size_t i=0; i<size(); i++)
    \n+
    509 localKeys_[i] = LocalKey(i,3,0);
    \n+
    510 return;
    \n+
    511 }
    \n+
    512
    \n+
    513 if (k==2)
    \n+
    514 {
    \n+
    515 // Vertex shape functions
    \n+
    516 localKeys_[0] = LocalKey(0,3,0);
    \n+
    517 localKeys_[1] = LocalKey(1,3,0);
    \n+
    518 localKeys_[2] = LocalKey(2,3,0);
    \n+
    519 localKeys_[3] = LocalKey(3,3,0);
    \n+
    520 localKeys_[4] = LocalKey(4,3,0);
    \n+
    521 localKeys_[5] = LocalKey(5,3,0);
    \n+
    522
    \n+
    523 // Edge shape functions
    \n+
    524 localKeys_[6] = LocalKey(0,2,0);
    \n+
    525 localKeys_[7] = LocalKey(1,2,0);
    \n+
    526 localKeys_[8] = LocalKey(2,2,0);
    \n+
    527 localKeys_[9] = LocalKey(3,2,0);
    \n+
    528 localKeys_[10] = LocalKey(4,2,0);
    \n+
    529 localKeys_[11] = LocalKey(5,2,0);
    \n+
    530 localKeys_[12] = LocalKey(6,2,0);
    \n+
    531 localKeys_[13] = LocalKey(7,2,0);
    \n+
    532 localKeys_[14] = LocalKey(8,2,0);
    \n+
    533
    \n+
    534 // Quadrilateral sides shape functions
    \n+
    535 localKeys_[15] = LocalKey(0,1,0);
    \n+
    536 localKeys_[16] = LocalKey(1,1,0);
    \n+
    537 localKeys_[17] = LocalKey(2,1,0);
    \n+
    538
    \n+
    539 return;
    \n+
    540 }
    \n+
    541
    \n+
    542 // Now: the general case
    \n+
    543 DUNE_THROW(NotImplemented, "LagrangePrismLocalCoefficients not implemented for order " << k);
    \n+
    544
    \n+
    545 }
    \n+
    546
    \n+
    548 static constexpr std::size_t size ()
    \n+
    549 {
    \n+
    550 return binomial(k+2,2u) * (k+1);
    \n+
    551 }
    \n+
    552
    \n+
    554 const LocalKey& localKey (std::size_t i) const
    \n+
    555 {
    \n+
    556 return localKeys_[i];
    \n+
    557 }
    \n+
    558
    \n+
    559 private:
    \n+
    560 std::vector<LocalKey> localKeys_;
    \n+
    561 };
    \n+
    562
    \n+
    567 template<class LocalBasis>
    \n+
    568 class LagrangePrismLocalInterpolation
    \n+
    569 {
    \n+
    570 public:
    \n+
    571
    \n+
    579 template<typename F, typename C>
    \n+
    580 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    581 {
    \n+
    582 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n+
    583 constexpr auto k = LocalBasis::order();
    \n+
    584 using D = typename LocalBasis::Traits::DomainType;
    \n+
    585 using DF = typename LocalBasis::Traits::DomainFieldType;
    \n+
    586
    \n+
    587 out.resize(LocalBasis::size());
    \n+
    588
    \n+
    589 // Specialization for zero-order case
    \n+
    590 if (k==0)
    \n+
    591 {
    \n+
    592 auto center = ReferenceElements<DF,dim>::general(GeometryTypes::prism).position(0,0);
    \n+
    593 out[0] = f(center);
    \n+
    594 return;
    \n+
    595 }
    \n+
    596
    \n+
    597 // Specialization for first-order case
    \n+
    598 if (k==1)
    \n+
    599 {
    \n+
    600 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n+
    601 {
    \n+
    602 auto vertex = ReferenceElements<DF,3>::general(GeometryTypes::prism).position(i,3);
    \n+
    603 out[i] = f(vertex);
    \n+
    604 }
    \n+
    605 return;
    \n+
    606 }
    \n+
    607
    \n+
    608 if (k==2)
    \n+
    609 {
    \n+
    610 out[0] = f( D( {0.0, 0.0, 0.0} ) );
    \n+
    611 out[1] = f( D( {1.0, 0.0, 0.0} ) );
    \n+
    612 out[2] = f( D( {0.0, 1.0, 0.0} ) );
    \n+
    613 out[3] = f( D( {0.0, 0.0, 1.0} ) );
    \n+
    614 out[4] = f( D( {1.0, 0.0, 1.0} ) );
    \n+
    615 out[5] = f( D( {0.0, 1.0, 1.0} ) );
    \n+
    616 out[6] = f( D( {0.0, 0.0, 0.5} ) );
    \n+
    617 out[7] = f( D( {1.0, 0.0, 0.5} ) );
    \n+
    618 out[8] = f( D( {0.0, 1.0, 0.5} ) );
    \n+
    619 out[9] = f( D( {0.5, 0.0, 0.0} ) );
    \n+
    620 out[10] = f( D( {0.0, 0.5, 0.0} ) );
    \n+
    621 out[11] = f( D( {0.5, 0.5, 0.0} ) );
    \n+
    622 out[12] = f( D( {0.5, 0.0, 1.0} ) );
    \n+
    623 out[13] = f( D( {0.0, 0.5, 1.0} ) );
    \n+
    624 out[14] = f( D( {0.5, 0.5, 1.0} ) );
    \n+
    625 out[15] = f( D( {0.5, 0.0, 0.5} ) );
    \n+
    626 out[16] = f( D( {0.0, 0.5, 0.5} ) );
    \n+
    627 out[17] = f( D( {0.5, 0.5, 0.5} ) );
    \n+
    628
    \n+
    629 return;
    \n+
    630 }
    \n+
    631
    \n+
    632 DUNE_THROW(NotImplemented, "LagrangePrismLocalInterpolation not implemented for order " << k);
    \n+
    633 }
    \n+
    634
    \n+
    635 };
    \n+
    636
    \n+
    637} } // namespace Dune::Impl
    \n+
    638
    \n+
    639namespace Dune
    \n+
    640{
    \n+
    647 template<class D, class R, int k>
    \n+
    \n+\n+
    649 {
    \n+
    650 public:
    \n+\n+
    654 Impl::LagrangePrismLocalCoefficients<k>,
    \n+
    655 Impl::LagrangePrismLocalInterpolation<Impl::LagrangePrismLocalBasis<D,R,k> > >;
    \n+
    656
    \n+
    \n+
    659 const typename Traits::LocalBasisType& localBasis () const
    \n+
    660 {
    \n+
    661 return basis_;
    \n+
    662 }
    \n+
    \n+
    663
    \n+
    \n+\n+
    667 {
    \n+
    668 return coefficients_;
    \n+
    669 }
    \n+
    \n+
    670
    \n+
    \n+\n+
    674 {
    \n+
    675 return interpolation_;
    \n+
    676 }
    \n+
    \n+
    677
    \n+
    \n+
    679 static constexpr std::size_t size ()
    \n+
    680 {
    \n+
    681 return binomial(k+2,2) * (k+1);
    \n+
    682 }
    \n+
    \n+
    683
    \n+
    \n+
    686 static constexpr GeometryType type ()
    \n+
    687 {
    \n+
    688 return GeometryTypes::prism;
    \n+
    689 }
    \n+
    \n+
    690
    \n+
    691 private:
    \n+
    692 Impl::LagrangePrismLocalBasis<D,R,k> basis_;
    \n+
    693 Impl::LagrangePrismLocalCoefficients<k> coefficients_;
    \n+
    694 Impl::LagrangePrismLocalInterpolation<Impl::LagrangePrismLocalBasis<D,R,k> > interpolation_;
    \n+
    695 };
    \n+
    \n+
    696
    \n+
    697} // namespace Dune
    \n+
    698
    \n+
    699#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    First order Raviart-Thomas shape functions on the reference pyramid.
    Definition raviartthomas0pyramidlocalbasis.hh:28
    \n-
    RT0PyramidLocalBasis(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0pyramidlocalbasis.hh:39
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas0pyramidlocalbasis.hh:57
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas0pyramidlocalbasis.hh:87
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas0pyramidlocalbasis.hh:32
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas0pyramidlocalbasis.hh:122
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas0pyramidlocalbasis.hh:46
    \n-
    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 raviartthomas0pyramidlocalbasis.hh:109
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:649
    \n+
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangeprism.hh:679
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangeprism.hh:673
    \n+
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangeprism.hh:686
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangeprism.hh:666
    \n+
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangeprism.hh:659
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,159 +1,712 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n-raviartthomas0pyramidlocalbasis.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+lagrangeprism.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH\n 7\n-8#include \n-9#include \n+8#include \n+9#include \n 10\n 11#include \n-12\n-13#include \"../../common/localbasis.hh\"\n+12#include \n+13#include \n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-26 template\n-_\b2_\b7 class _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-28 {\n-29\n-30 public:\n-31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n-FieldVector,\n-_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-33\n-_\b3_\b9 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<5> s = 0)\n-40 {\n-41 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n-42 sign[i] = s[i] ? -1.0 : 1.0;\n-43 }\n-44\n-_\b4_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-47 {\n-48 return 5;\n-49 }\n-50\n-_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-58 std::vector& out) const\n-59 {\n-60 out.resize(5);\n-61 for (std::size_t i=0; i\n+16\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+20\n+21namespace _\bD_\bu_\bn_\be { namespace Impl\n+22{\n+32 template\n+33 class LagrangePrismLocalBasis\n+34 {\n+35 static constexpr std::size_t dim = 3;\n+36 public:\n+37 using Traits =\n+LocalBasisTraits,R,1,FieldVector,FieldMatrix\n+>;\n+38\n+41 static constexpr unsigned int size ()\n+42 {\n+43 return binomial(k+2,2u) * (k+1);\n+44 }\n+45\n+47 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+48 std::vector& out) const\n+49 {\n+50 out.resize(size());\n+51\n+52 // Specialization for zero-order case\n+53 if (k==0)\n+54 {\n+55 out[0] = 1;\n+56 return;\n+57 }\n+58\n+59 if (k==1)\n+60 {\n+61 out[0] = (1.0-in[0]-in[1])*(1.0-in[2]);\n+62 out[1] = in[0]*(1-in[2]);\n+63 out[2] = in[1]*(1-in[2]);\n+64 out[3] = in[2]*(1.0-in[0]-in[1]);\n+65 out[4] = in[0]*in[2];\n+66 out[5] = in[1]*in[2];\n 67\n-68 out[1][0] = -2.0 + 3.0*in[0];\n-69\n-70 out[2][0] = 3.0*in[0];\n-71\n-72 out[3][1] = -2.0 + 3.0*in[1];\n-73\n-74 out[4][1] = 3.0*in[1];\n-75\n-76 for (std::size_t i=0; i& out) const\n-89 {\n-90 out.resize(5);\n-91\n-92 for(int i=0; i<_\bs_\bi_\bz_\be(); i++)\n-93 for(int j=0; j<3; j++)\n-94 out[i][j] = {0.0, 0.0, 0.0};\n+68 return;\n+69 }\n+70\n+71 if (k==2)\n+72 {\n+73 FieldVector segmentShapeFunction;\n+74 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n+75 segmentShapeFunction[1] = in[2] * (4 - 4*in[2]);\n+76 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n+77\n+78 FieldVector triangleShapeFunction;\n+79 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);\n+80 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);\n+81 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);\n+82 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);\n+83 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);\n+84 triangleShapeFunction[5] = 4*in[0]*in[1];\n+85\n+86 // lower triangle:\n+87 out[0] = triangleShapeFunction[0] * segmentShapeFunction[0];\n+88 out[1] = triangleShapeFunction[1] * segmentShapeFunction[0];\n+89 out[2] = triangleShapeFunction[2] * segmentShapeFunction[0];\n+90\n+91 //upper triangle\n+92 out[3] = triangleShapeFunction[0] * segmentShapeFunction[2];\n+93 out[4] = triangleShapeFunction[1] * segmentShapeFunction[2];\n+94 out[5] = triangleShapeFunction[2] * segmentShapeFunction[2];\n 95\n-96 out[0][0][0] = sign[0]*(1.5);\n-97 out[0][1][1] = sign[0]*(1.5);\n-98\n-99 out[1][0][0] = sign[1]*(3.0);\n+96 // vertical edges\n+97 out[6] = triangleShapeFunction[0] * segmentShapeFunction[1];\n+98 out[7] = triangleShapeFunction[1] * segmentShapeFunction[1];\n+99 out[8] = triangleShapeFunction[2] * segmentShapeFunction[1];\n 100\n-101 out[2][0][0] = sign[2]*(3.0);\n-102\n-103 out[3][1][1] = sign[3]*(3.0);\n-104\n-105 out[4][1][1] = sign[4]*(3.0);\n-106 }\n-107\n-_\b1_\b0_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-110 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-111 std::vector& out) const // return value\n-112 {\n-113 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-114 if (totalOrder == 0) {\n-115 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-116 } else {\n-117 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-118 }\n-119 }\n-120\n-_\b1_\b2_\b2 unsigned int _\bo_\br_\bd_\be_\br () const\n-123 {\n-124 return 1;\n-125 }\n-126\n-127 private:\n-128 std::array sign;\n-129 };\n-130}\n-131#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH\n+101 // lower triangle edges\n+102 out[9] = triangleShapeFunction[3] * segmentShapeFunction[0];\n+103 out[10] = triangleShapeFunction[4] * segmentShapeFunction[0];\n+104 out[11] = triangleShapeFunction[5] * segmentShapeFunction[0];\n+105\n+106 // upper triangle edges\n+107 out[12] = triangleShapeFunction[3] * segmentShapeFunction[2];\n+108 out[13] = triangleShapeFunction[4] * segmentShapeFunction[2];\n+109 out[14] = triangleShapeFunction[5] * segmentShapeFunction[2];\n+110\n+111 // quadrilateral sides\n+112 out[15] = triangleShapeFunction[3] * segmentShapeFunction[1];\n+113 out[16] = triangleShapeFunction[4] * segmentShapeFunction[1];\n+114 out[17] = triangleShapeFunction[5] * segmentShapeFunction[1];\n+115\n+116 return;\n+117 }\n+118\n+119 DUNE_THROW(NotImplemented, \"LagrangePrismLocalBasis::evaluateFunction for\n+order \" << k);\n+120 }\n+121\n+127 void evaluateJacobian(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+128 std::vector& out) const\n+129 {\n+130 out.resize(size());\n+131\n+132 // Specialization for k==0\n+133 if (k==0)\n+134 {\n+135 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n+136 return;\n+137 }\n+138\n+139 if (k==1)\n+140 {\n+141 out[0][0] = {in[2]-1, in[2]-1, in[0]+in[1]-1};\n+142 out[1][0] = {1-in[2], 0, -in[0]};\n+143 out[2][0] = { 0, 1-in[2], -in[1]};\n+144 out[3][0] = { -in[2], -in[2], 1-in[0]-in[1]};\n+145 out[4][0] = { in[2], 0, in[0]};\n+146 out[5][0] = { 0, in[2], in[1]};\n+147\n+148 return;\n+149 }\n+150\n+151 if (k==2)\n+152 {\n+153 // Second-order shape functions on a triangle, and the first derivatives\n+154 FieldVector triangleShapeFunction;\n+155 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);\n+156 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);\n+157 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);\n+158 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);\n+159 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);\n+160 triangleShapeFunction[5] = 4*in[0]*in[1];\n+161\n+162 std::array,6> triangleShapeFunctionDer;\n+163 triangleShapeFunctionDer[0] = {-3 + 4*(in[0] + in[1]), -3 + 4*(in[0] + in\n+[1])};\n+164 triangleShapeFunctionDer[1] = { -1 + 4*in[0], 0};\n+165 triangleShapeFunctionDer[2] = { 0, -1 + 4*in[1]};\n+166 triangleShapeFunctionDer[3] = { 4 - 8*in[0] - 4*in[1], -4*in[0]};\n+167 triangleShapeFunctionDer[4] = { -4*in[1], 4 - 4*in[0] - 8*in[1]};\n+168 triangleShapeFunctionDer[5] = { 4*in[1], 4*in[0]};\n+169\n+170 // Second-order shape functions on a line, and the first derivatives\n+171 FieldVector segmentShapeFunction;\n+172 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n+173 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);\n+174 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n+175\n+176 FieldVector segmentShapeFunctionDer;\n+177 segmentShapeFunctionDer[0] = -3 + 4*in[2];\n+178 segmentShapeFunctionDer[1] = 4 - 8*in[2];\n+179 segmentShapeFunctionDer[2] = -1 + 4*in[2];\n+180\n+181 // lower triangle:\n+182 out[0][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[0];\n+183 out[0][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[0];\n+184 out[0][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];\n+185\n+186 out[1][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[0];\n+187 out[1][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[0];\n+188 out[1][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];\n+189\n+190 out[2][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[0];\n+191 out[2][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[0];\n+192 out[2][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];\n+193\n+194 //upper triangle\n+195 out[3][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[2];\n+196 out[3][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[2];\n+197 out[3][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];\n+198\n+199 out[4][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[2];\n+200 out[4][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[2];\n+201 out[4][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];\n+202\n+203 out[5][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[2];\n+204 out[5][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[2];\n+205 out[5][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];\n+206\n+207 // vertical edges\n+208 out[6][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[1];\n+209 out[6][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[1];\n+210 out[6][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];\n+211\n+212 out[7][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[1];\n+213 out[7][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[1];\n+214 out[7][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];\n+215\n+216 out[8][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[1];\n+217 out[8][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[1];\n+218 out[8][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];\n+219\n+220 // lower triangle edges\n+221 out[9][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[0];\n+222 out[9][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[0];\n+223 out[9][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];\n+224\n+225 out[10][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[0];\n+226 out[10][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[0];\n+227 out[10][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];\n+228\n+229 out[11][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[0];\n+230 out[11][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[0];\n+231 out[11][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];\n+232\n+233 // upper triangle edges\n+234 out[12][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[2];\n+235 out[12][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[2];\n+236 out[12][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];\n+237\n+238 out[13][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[2];\n+239 out[13][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[2];\n+240 out[13][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];\n+241\n+242 out[14][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[2];\n+243 out[14][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[2];\n+244 out[14][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];\n+245\n+246 // quadrilateral sides\n+247 out[15][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[1];\n+248 out[15][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[1];\n+249 out[15][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];\n+250\n+251 out[16][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[1];\n+252 out[16][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[1];\n+253 out[16][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];\n+254\n+255 out[17][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[1];\n+256 out[17][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[1];\n+257 out[17][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];\n+258\n+259 return;\n+260 }\n+261\n+262 DUNE_THROW(NotImplemented, \"LagrangePrismLocalBasis::evaluateJacobian for\n+order \" << k);\n+263 }\n+264\n+271 void partial(const std::array& order,\n+272 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+273 std::vector& out) const\n+274 {\n+275 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+276\n+277 out.resize(size());\n+278\n+279 if (totalOrder == 0)\n+280 {\n+281 evaluateFunction(in, out);\n+282 return;\n+283 }\n+284\n+285 // Specialization for zero-order finite elements\n+286 if (k==0)\n+287 {\n+288 out[0] = 0;\n+289 return;\n+290 }\n+291\n+292 // Specialization for first-order finite elements\n+293 if (k==1)\n+294 {\n+295 if (totalOrder == 1)\n+296 {\n+297 auto direction = std::distance(order.begin(), std::find(order.begin(),\n+order.end(), 1));\n+298\n+299 switch (direction) {\n+300 case 0:\n+301 out[0] = in[2]-1;\n+302 out[1] = 1-in[2];\n+303 out[2] = 0;\n+304 out[3] = -in[2];\n+305 out[4] = in[2];\n+306 out[5] = 0;\n+307 break;\n+308 case 1:\n+309 out[0] = in[2]-1;\n+310 out[1] = 0;\n+311 out[2] = 1-in[2];\n+312 out[3] = -in[2];\n+313 out[4] = 0;\n+314 out[5] = in[2];\n+315 break;\n+316 case 2:\n+317 out[0] = in[0]+in[1]-1;\n+318 out[1] = -in[0];\n+319 out[2] = -in[1];\n+320 out[3] = 1-in[0]-in[1];\n+321 out[4] = in[0];\n+322 out[5] = in[1];\n+323 break;\n+324 default:\n+325 DUNE_THROW(RangeError, \"Component out of range.\");\n+326 }\n+327 } else if (totalOrder == 2) {\n+328 out.resize(size());\n+329 if (order[0] == 1 && order[2] == 1) {\n+330 out[0] = 1;\n+331 out[1] =-1;\n+332 out[2] = 0;\n+333 out[3] =-1;\n+334 out[4] = 1;\n+335 out[5] = 0;\n+336 } else if (order[1] == 1 && order[2] == 1) {\n+337 out[0] = 1;\n+338 out[1] = 0;\n+339 out[2] =-1;\n+340 out[3] =-1;\n+341 out[4] = 0;\n+342 out[5] = 1;\n+343 } else {\n+344 for (std::size_t i = 0; i < size(); ++i)\n+345 out[i] = 0;\n+346 }\n+347 } else {\n+348 out.resize(size());\n+349 std::fill(out.begin(), out.end(), 0.0);\n+350 }\n+351\n+352 return;\n+353 }\n+354\n+355 // Specialization for second-order finite elements\n+356 if (k==2)\n+357 {\n+358 if (totalOrder == 1)\n+359 {\n+360 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+361 switch (direction)\n+362 {\n+363 case 0:\n+364 {\n+365 FieldVector triangleShapeFunctionDerX;\n+366 triangleShapeFunctionDerX[0] = -3 + 4*(in[0] + in[1]);\n+367 triangleShapeFunctionDerX[1] = -1 + 4* in[0];\n+368 triangleShapeFunctionDerX[2] = 0;\n+369 triangleShapeFunctionDerX[3] = 4 - 8* in[0] - 4*in[1];\n+370 triangleShapeFunctionDerX[4] = -4*in[1];\n+371 triangleShapeFunctionDerX[5] = 4*in[1];\n+372\n+373 FieldVector segmentShapeFunction;\n+374 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n+375 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);\n+376 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n+377\n+378 out[0] = triangleShapeFunctionDerX[0] * segmentShapeFunction[0];\n+379 out[1] = triangleShapeFunctionDerX[1] * segmentShapeFunction[0];\n+380 out[2] = triangleShapeFunctionDerX[2] * segmentShapeFunction[0];\n+381 out[3] = triangleShapeFunctionDerX[0] * segmentShapeFunction[2];\n+382 out[4] = triangleShapeFunctionDerX[1] * segmentShapeFunction[2];\n+383 out[5] = triangleShapeFunctionDerX[2] * segmentShapeFunction[2];\n+384 out[6] = triangleShapeFunctionDerX[0] * segmentShapeFunction[1];\n+385 out[7] = triangleShapeFunctionDerX[1] * segmentShapeFunction[1];\n+386 out[8] = triangleShapeFunctionDerX[2] * segmentShapeFunction[1];\n+387 out[9] = triangleShapeFunctionDerX[3] * segmentShapeFunction[0];\n+388 out[10] = triangleShapeFunctionDerX[4] * segmentShapeFunction[0];\n+389 out[11] = triangleShapeFunctionDerX[5] * segmentShapeFunction[0];\n+390 out[12] = triangleShapeFunctionDerX[3] * segmentShapeFunction[2];\n+391 out[13] = triangleShapeFunctionDerX[4] * segmentShapeFunction[2];\n+392 out[14] = triangleShapeFunctionDerX[5] * segmentShapeFunction[2];\n+393 out[15] = triangleShapeFunctionDerX[3] * segmentShapeFunction[1];\n+394 out[16] = triangleShapeFunctionDerX[4] * segmentShapeFunction[1];\n+395 out[17] = triangleShapeFunctionDerX[5] * segmentShapeFunction[1];\n+396 break;\n+397 }\n+398 case 1:\n+399 {\n+400 FieldVector triangleShapeFunctionDerY;\n+401 triangleShapeFunctionDerY[0] = -3 + 4*(in[0] + in[1]);\n+402 triangleShapeFunctionDerY[1] = 0;\n+403 triangleShapeFunctionDerY[2] = -1 + 4* in[1];\n+404 triangleShapeFunctionDerY[3] = -4* in[0];\n+405 triangleShapeFunctionDerY[4] = 4 - 4* in[0] - 8*in[1];\n+406 triangleShapeFunctionDerY[5] = 4* in[0];\n+407\n+408 FieldVector segmentShapeFunction;\n+409 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n+410 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);\n+411 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n+412\n+413 out[0] = triangleShapeFunctionDerY[0] * segmentShapeFunction[0];\n+414 out[1] = triangleShapeFunctionDerY[1] * segmentShapeFunction[0];\n+415 out[2] = triangleShapeFunctionDerY[2] * segmentShapeFunction[0];\n+416 out[3] = triangleShapeFunctionDerY[0] * segmentShapeFunction[2];\n+417 out[4] = triangleShapeFunctionDerY[1] * segmentShapeFunction[2];\n+418 out[5] = triangleShapeFunctionDerY[2] * segmentShapeFunction[2];\n+419 out[6] = triangleShapeFunctionDerY[0] * segmentShapeFunction[1];\n+420 out[7] = triangleShapeFunctionDerY[1] * segmentShapeFunction[1];\n+421 out[8] = triangleShapeFunctionDerY[2] * segmentShapeFunction[1];\n+422 out[9] = triangleShapeFunctionDerY[3] * segmentShapeFunction[0];\n+423 out[10] = triangleShapeFunctionDerY[4] * segmentShapeFunction[0];\n+424 out[11] = triangleShapeFunctionDerY[5] * segmentShapeFunction[0];\n+425 out[12] = triangleShapeFunctionDerY[3] * segmentShapeFunction[2];\n+426 out[13] = triangleShapeFunctionDerY[4] * segmentShapeFunction[2];\n+427 out[14] = triangleShapeFunctionDerY[5] * segmentShapeFunction[2];\n+428 out[15] = triangleShapeFunctionDerY[3] * segmentShapeFunction[1];\n+429 out[16] = triangleShapeFunctionDerY[4] * segmentShapeFunction[1];\n+430 out[17] = triangleShapeFunctionDerY[5] * segmentShapeFunction[1];\n+431 break;\n+432 }\n+433 case 2:\n+434 {\n+435 FieldVector triangleShapeFunction;\n+436 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);\n+437 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);\n+438 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);\n+439 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);\n+440 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);\n+441 triangleShapeFunction[5] = 4*in[0]*in[1];\n+442\n+443 FieldVector segmentShapeFunctionDer;\n+444 segmentShapeFunctionDer[0] = -3 + 4*in[2];\n+445 segmentShapeFunctionDer[1] = 4 - 8*in[2];\n+446 segmentShapeFunctionDer[2] = -1 + 4*in[2];\n+447\n+448 out[0] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];\n+449 out[1] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];\n+450 out[2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];\n+451 out[3] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];\n+452 out[4] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];\n+453 out[5] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];\n+454 out[6] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];\n+455 out[7] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];\n+456 out[8] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];\n+457 out[9] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];\n+458 out[10] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];\n+459 out[11] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];\n+460 out[12] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];\n+461 out[13] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];\n+462 out[14] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];\n+463 out[15] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];\n+464 out[16] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];\n+465 out[17] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];\n+466 break;\n+467 }\n+468 default:\n+469 DUNE_THROW(RangeError, \"Component out of range.\");\n+470 }\n+471 } else {\n+472 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+473 }\n+474\n+475 return;\n+476 }\n+477\n+478 DUNE_THROW(NotImplemented, \"LagrangePrismLocalBasis::partial not\n+implemented for order \" << k);\n+479 }\n+480\n+482 static constexpr unsigned int order ()\n+483 {\n+484 return k;\n+485 }\n+486 };\n+487\n+492 template\n+493 class LagrangePrismLocalCoefficients\n+494 {\n+495 public:\n+497 LagrangePrismLocalCoefficients ()\n+498 : localKeys_(size())\n+499 {\n+500 if (k==0)\n+501 {\n+502 localKeys_[0] = LocalKey(0,0,0);\n+503 return;\n+504 }\n+505\n+506 if (k==1)\n+507 {\n+508 for (std::size_t i=0; i localKeys_;\n+561 };\n+562\n+567 template\n+568 class LagrangePrismLocalInterpolation\n+569 {\n+570 public:\n+571\n+579 template\n+580 void interpolate (const F& f, std::vector& out) const\n+581 {\n+582 constexpr auto dim = LocalBasis::Traits::dimDomain;\n+583 constexpr auto k = LocalBasis::order();\n+584 using D = typename LocalBasis::Traits::DomainType;\n+585 using DF = typename LocalBasis::Traits::DomainFieldType;\n+586\n+587 out.resize(LocalBasis::size());\n+588\n+589 // Specialization for zero-order case\n+590 if (k==0)\n+591 {\n+592 auto center = ReferenceElements::general(GeometryTypes::\n+prism).position(0,0);\n+593 out[0] = f(center);\n+594 return;\n+595 }\n+596\n+597 // Specialization for first-order case\n+598 if (k==1)\n+599 {\n+600 for (unsigned int i=0; i::general(GeometryTypes::\n+prism).position(i,3);\n+603 out[i] = f(vertex);\n+604 }\n+605 return;\n+606 }\n+607\n+608 if (k==2)\n+609 {\n+610 out[0] = f( D( {0.0, 0.0, 0.0} ) );\n+611 out[1] = f( D( {1.0, 0.0, 0.0} ) );\n+612 out[2] = f( D( {0.0, 1.0, 0.0} ) );\n+613 out[3] = f( D( {0.0, 0.0, 1.0} ) );\n+614 out[4] = f( D( {1.0, 0.0, 1.0} ) );\n+615 out[5] = f( D( {0.0, 1.0, 1.0} ) );\n+616 out[6] = f( D( {0.0, 0.0, 0.5} ) );\n+617 out[7] = f( D( {1.0, 0.0, 0.5} ) );\n+618 out[8] = f( D( {0.0, 1.0, 0.5} ) );\n+619 out[9] = f( D( {0.5, 0.0, 0.0} ) );\n+620 out[10] = f( D( {0.0, 0.5, 0.0} ) );\n+621 out[11] = f( D( {0.5, 0.5, 0.0} ) );\n+622 out[12] = f( D( {0.5, 0.0, 1.0} ) );\n+623 out[13] = f( D( {0.0, 0.5, 1.0} ) );\n+624 out[14] = f( D( {0.5, 0.5, 1.0} ) );\n+625 out[15] = f( D( {0.5, 0.0, 0.5} ) );\n+626 out[16] = f( D( {0.0, 0.5, 0.5} ) );\n+627 out[17] = f( D( {0.5, 0.5, 0.5} ) );\n+628\n+629 return;\n+630 }\n+631\n+632 DUNE_THROW(NotImplemented, \"LagrangePrismLocalInterpolation not implemented\n+for order \" << k);\n+633 }\n+634\n+635 };\n+636\n+637} } // namespace Dune::Impl\n+638\n+639namespace _\bD_\bu_\bn_\be\n+640{\n+647 template\n+_\b6_\b4_\b8 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+649 {\n+650 public:\n+_\b6_\b5_\b3 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n+_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bk_\b>,\n+654 Impl::LagrangePrismLocalCoefficients,\n+655 Impl::LagrangePrismLocalInterpolation\n+> >;\n+656\n+_\b6_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+660 {\n+661 return basis_;\n+662 }\n+663\n+_\b6_\b6_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+667 {\n+668 return coefficients_;\n+669 }\n+670\n+_\b6_\b7_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+674 {\n+675 return interpolation_;\n+676 }\n+677\n+_\b6_\b7_\b9 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n+680 {\n+681 return binomial(k+2,2) * (k+1);\n+682 }\n+683\n+_\b6_\b8_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+687 {\n+688 return GeometryTypes::prism;\n+689 }\n+690\n+691 private:\n+692 Impl::LagrangePrismLocalBasis basis_;\n+693 Impl::LagrangePrismLocalCoefficients coefficients_;\n+694 Impl::LagrangePrismLocalInterpolation\n+> interpolation_;\n+695 };\n+696\n+697} // namespace Dune\n+698\n+699#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference pyramid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT0PyramidLocalBasis(std::bitset< 5 > s=0)\n-Make set number s, where 0 <= s < 32.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n-3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for 3d prisms with arbitrary compile-time polynomial\n+order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:649\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size()\n+The number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:679\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+Returns object that evaluates degrees of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:673\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+The reference element that the local finite element is defined on.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:686\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+Returns the assignment of the degrees of freedom to the element subentities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:666\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+Returns the local basis, i.e., the set of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:659\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0pyramidlocalcoefficients.hh File Reference\n+dune-localfunctions: lagrangesimplex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0pyramidlocalcoefficients.hh File Reference
    \n+
    lagrangesimplex.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \n+
    #include <array>
    \n+#include <numeric>
    \n+#include <dune/common/deprecated.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/math.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT0PyramidLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on pyramids. More...
    class  Dune::LagrangeSimplexLocalFiniteElement< D, R, d, k >
     Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,30 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0pyramidlocalcoefficients.hh File Reference\n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+lagrangesimplex.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Raviart-Thomas-1 elements on pyramids. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b,_\b _\bk_\b _\b>\n+\u00a0 Lagrange finite element for simplices with arbitrary compile-time\n+ dimension and polynomial order. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0pyramidlocalcoefficients.hh Source File\n+dune-localfunctions: lagrangesimplex.hh Source File\n \n \n \n \n \n \n \n@@ -70,75 +70,876 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0pyramidlocalcoefficients.hh
    \n+
    lagrangesimplex.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGESIMPLEX_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGESIMPLEX_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n+
    8#include <array>
    \n+
    9#include <numeric>
    \n
    10
    \n-
    11#include "../../common/localkey.hh"
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n+
    11#include <dune/common/deprecated.hh>
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13#include <dune/common/fvector.hh>
    \n+
    14#include <dune/common/math.hh>
    \n
    15
    \n-
    \n-\n-
    24 {
    \n-
    25
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for(std::size_t i=0; i< size(); i++)
    \n-
    31 li[i] = LocalKey(i,1,0);
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    \n-
    35 std::size_t size () const
    \n-
    36 {
    \n-
    37 return 5;
    \n-
    38 }
    \n-
    \n+
    16#include <dune/geometry/referenceelements.hh>
    \n+
    17
    \n+\n+\n+\n+
    21
    \n+
    22namespace Dune { namespace Impl
    \n+
    23{
    \n+
    34 template<class D, class R, unsigned int dim, unsigned int k>
    \n+
    35 class LagrangeSimplexLocalBasis
    \n+
    36 {
    \n+
    37 public:
    \n+
    38 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n
    39
    \n-
    \n-
    41 const LocalKey& localKey (std::size_t i) const
    \n-
    42 {
    \n-
    43 return li[i];
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    46 private:
    \n-
    47 std::vector<LocalKey> li;
    \n-
    48 };
    \n-
    \n-
    49}
    \n-
    50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH
    \n+
    44 static constexpr unsigned int size ()
    \n+
    45 {
    \n+
    46 return binomial(k+dim,dim);
    \n+
    47 }
    \n+
    48
    \n+
    50 void evaluateFunction(const typename Traits::DomainType& x,
    \n+
    51 std::vector<typename Traits::RangeType>& out) const
    \n+
    52 {
    \n+
    53 out.resize(size());
    \n+
    54
    \n+
    55 // Specialization for zero-order case
    \n+
    56 if (k==0)
    \n+
    57 {
    \n+
    58 out[0] = 1;
    \n+
    59 return;
    \n+
    60 }
    \n+
    61
    \n+
    62 // Specialization for first-order case
    \n+
    63 if (k==1)
    \n+
    64 {
    \n+
    65 out[0] = 1.0;
    \n+
    66 for (size_t i=0; i<dim; i++)
    \n+
    67 {
    \n+
    68 out[0] -= x[i];
    \n+
    69 out[i+1] = x[i];
    \n+
    70 }
    \n+
    71 return;
    \n+
    72 }
    \n+
    73
    \n+
    74 assert(k>=2);
    \n+
    75
    \n+
    76 auto lagrangeNode = [](unsigned int i) { return ((D)i)/k; };
    \n+
    77
    \n+
    78 if (dim==1)
    \n+
    79 {
    \n+
    80 for (unsigned int i=0; i<size(); i++)
    \n+
    81 {
    \n+
    82 out[i] = 1.0;
    \n+
    83 for (unsigned int alpha=0; alpha<i; alpha++)
    \n+
    84 out[i] *= (x[0]-lagrangeNode(alpha))/(lagrangeNode(i)-lagrangeNode(alpha));
    \n+
    85 for (unsigned int gamma=i+1; gamma<=k; gamma++)
    \n+
    86 out[i] *= (x[0]-lagrangeNode(gamma))/(lagrangeNode(i)-lagrangeNode(gamma));
    \n+
    87 }
    \n+
    88 return;
    \n+
    89 }
    \n+
    90
    \n+
    91 if (dim==2)
    \n+
    92 {
    \n+
    93 int n=0;
    \n+
    94 for (unsigned int j=0; j<=k; j++)
    \n+
    95 for (unsigned int i=0; i<=k-j; i++)
    \n+
    96 {
    \n+
    97 out[n] = 1.0;
    \n+
    98 for (unsigned int alpha=0; alpha<i; alpha++)
    \n+
    99 out[n] *= (x[0]-lagrangeNode(alpha))/(lagrangeNode(i)-lagrangeNode(alpha));
    \n+
    100 for (unsigned int beta=0; beta<j; beta++)
    \n+
    101 out[n] *= (x[1]-lagrangeNode(beta))/(lagrangeNode(j)-lagrangeNode(beta));
    \n+
    102 for (unsigned int gamma=i+j+1; gamma<=k; gamma++)
    \n+
    103 out[n] *= (lagrangeNode(gamma)-x[0]-x[1])/(lagrangeNode(gamma)-lagrangeNode(i)-lagrangeNode(j));
    \n+
    104 n++;
    \n+
    105 }
    \n+
    106
    \n+
    107 return;
    \n+
    108 }
    \n+
    109
    \n+
    110 if (dim!=3)
    \n+
    111 DUNE_THROW(NotImplemented, "LagrangeSimplexLocalBasis for k>=2 only implemented for dim==1 or dim==3");
    \n+
    112
    \n+
    113 typename Traits::DomainType kx = x;
    \n+
    114 kx *= k;
    \n+
    115 unsigned int n = 0;
    \n+
    116 unsigned int i[4];
    \n+
    117 R factor[4];
    \n+
    118 for (i[2] = 0; i[2] <= k; ++i[2])
    \n+
    119 {
    \n+
    120 factor[2] = 1.0;
    \n+
    121 for (unsigned int j = 0; j < i[2]; ++j)
    \n+
    122 factor[2] *= (kx[2]-j) / (i[2]-j);
    \n+
    123 for (i[1] = 0; i[1] <= k - i[2]; ++i[1])
    \n+
    124 {
    \n+
    125 factor[1] = 1.0;
    \n+
    126 for (unsigned int j = 0; j < i[1]; ++j)
    \n+
    127 factor[1] *= (kx[1]-j) / (i[1]-j);
    \n+
    128 for (i[0] = 0; i[0] <= k - i[1] - i[2]; ++i[0])
    \n+
    129 {
    \n+
    130 factor[0] = 1.0;
    \n+
    131 for (unsigned int j = 0; j < i[0]; ++j)
    \n+
    132 factor[0] *= (kx[0]-j) / (i[0]-j);
    \n+
    133 i[3] = k - i[0] - i[1] - i[2];
    \n+
    134 D kx3 = k - kx[0] - kx[1] - kx[2];
    \n+
    135 factor[3] = 1.0;
    \n+
    136 for (unsigned int j = 0; j < i[3]; ++j)
    \n+
    137 factor[3] *= (kx3-j) / (i[3]-j);
    \n+
    138 out[n++] = factor[0] * factor[1] * factor[2] * factor[3];
    \n+
    139 }
    \n+
    140 }
    \n+
    141 }
    \n+
    142 }
    \n+
    143
    \n+
    149 void evaluateJacobian(const typename Traits::DomainType& x,
    \n+
    150 std::vector<typename Traits::JacobianType>& out) const
    \n+
    151 {
    \n+
    152 out.resize(size());
    \n+
    153
    \n+
    154 // Specialization for k==0
    \n+
    155 if (k==0)
    \n+
    156 {
    \n+
    157 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n+
    158 return;
    \n+
    159 }
    \n+
    160
    \n+
    161 // Specialization for k==1
    \n+
    162 if (k==1)
    \n+
    163 {
    \n+
    164 std::fill(out[0][0].begin(), out[0][0].end(), -1);
    \n+
    165
    \n+
    166 for (unsigned int i=0; i<dim; i++)
    \n+
    167 for (unsigned int j=0; j<dim; j++)
    \n+
    168 out[i+1][0][j] = (i==j);
    \n+
    169
    \n+
    170 return;
    \n+
    171 }
    \n+
    172
    \n+
    173 auto lagrangeNode = [](unsigned int i) { return ((D)i)/k; };
    \n+
    174
    \n+
    175 // Specialization for dim==1
    \n+
    176 if (dim==1)
    \n+
    177 {
    \n+
    178 for (unsigned int i=0; i<=k; i++)
    \n+
    179 {
    \n+
    180 // x_0 derivative
    \n+
    181 out[i][0][0] = 0.0;
    \n+
    182 R factor=1.0;
    \n+
    183 for (unsigned int a=0; a<i; a++)
    \n+
    184 {
    \n+
    185 R product=factor;
    \n+
    186 for (unsigned int alpha=0; alpha<i; alpha++)
    \n+
    187 product *= (alpha==a) ? 1.0/(lagrangeNode(i)-lagrangeNode(alpha))
    \n+
    188 : (x[0]-lagrangeNode(alpha))/(lagrangeNode(i)-lagrangeNode(alpha));
    \n+
    189 for (unsigned int gamma=i+1; gamma<=k; gamma++)
    \n+
    190 product *= (lagrangeNode(gamma)-x[0])/(lagrangeNode(gamma)-lagrangeNode(i));
    \n+
    191 out[i][0][0] += product;
    \n+
    192 }
    \n+
    193 for (unsigned int c=i+1; c<=k; c++)
    \n+
    194 {
    \n+
    195 R product=factor;
    \n+
    196 for (unsigned int alpha=0; alpha<i; alpha++)
    \n+
    197 product *= (x[0]-lagrangeNode(alpha))/(lagrangeNode(i)-lagrangeNode(alpha));
    \n+
    198 for (unsigned int gamma=i+1; gamma<=k; gamma++)
    \n+
    199 product *= (gamma==c) ? -1.0/(lagrangeNode(gamma)-lagrangeNode(i))
    \n+
    200 : (lagrangeNode(gamma)-x[0])/(lagrangeNode(gamma)-lagrangeNode(i));
    \n+
    201 out[i][0][0] += product;
    \n+
    202 }
    \n+
    203 }
    \n+
    204 return;
    \n+
    205 }
    \n+
    206
    \n+
    207 if (dim==2)
    \n+
    208 {
    \n+
    209 int n=0;
    \n+
    210 for (unsigned int j=0; j<=k; j++)
    \n+
    211 for (unsigned int i=0; i<=k-j; i++)
    \n+
    212 {
    \n+
    213 // x_0 derivative
    \n+
    214 out[n][0][0] = 0.0;
    \n+
    215 R factor=1.0;
    \n+
    216 for (unsigned int beta=0; beta<j; beta++)
    \n+
    217 factor *= (x[1]-lagrangeNode(beta))/(lagrangeNode(j)-lagrangeNode(beta));
    \n+
    218 for (unsigned int a=0; a<i; a++)
    \n+
    219 {
    \n+
    220 R product=factor;
    \n+
    221 for (unsigned int alpha=0; alpha<i; alpha++)
    \n+
    222 if (alpha==a)
    \n+
    223 product *= D(1)/(lagrangeNode(i)-lagrangeNode(alpha));
    \n+
    224 else
    \n+
    225 product *= (x[0]-lagrangeNode(alpha))/(lagrangeNode(i)-lagrangeNode(alpha));
    \n+
    226 for (unsigned int gamma=i+j+1; gamma<=k; gamma++)
    \n+
    227 product *= (lagrangeNode(gamma)-x[0]-x[1])/(lagrangeNode(gamma)-lagrangeNode(i)-lagrangeNode(j));
    \n+
    228 out[n][0][0] += product;
    \n+
    229 }
    \n+
    230 for (unsigned int c=i+j+1; c<=k; c++)
    \n+
    231 {
    \n+
    232 R product=factor;
    \n+
    233 for (unsigned int alpha=0; alpha<i; alpha++)
    \n+
    234 product *= (x[0]-lagrangeNode(alpha))/(lagrangeNode(i)-lagrangeNode(alpha));
    \n+
    235 for (unsigned int gamma=i+j+1; gamma<=k; gamma++)
    \n+
    236 if (gamma==c)
    \n+
    237 product *= -D(1)/(lagrangeNode(gamma)-lagrangeNode(i)-lagrangeNode(j));
    \n+
    238 else
    \n+
    239 product *= (lagrangeNode(gamma)-x[0]-x[1])/(lagrangeNode(gamma)-lagrangeNode(i)-lagrangeNode(j));
    \n+
    240 out[n][0][0] += product;
    \n+
    241 }
    \n+
    242
    \n+
    243 // x_1 derivative
    \n+
    244 out[n][0][1] = 0.0;
    \n+
    245 factor = 1.0;
    \n+
    246 for (unsigned int alpha=0; alpha<i; alpha++)
    \n+
    247 factor *= (x[0]-lagrangeNode(alpha))/(lagrangeNode(i)-lagrangeNode(alpha));
    \n+
    248 for (unsigned int b=0; b<j; b++)
    \n+
    249 {
    \n+
    250 R product=factor;
    \n+
    251 for (unsigned int beta=0; beta<j; beta++)
    \n+
    252 if (beta==b)
    \n+
    253 product *= D(1)/(lagrangeNode(j)-lagrangeNode(beta));
    \n+
    254 else
    \n+
    255 product *= (x[1]-lagrangeNode(beta))/(lagrangeNode(j)-lagrangeNode(beta));
    \n+
    256 for (unsigned int gamma=i+j+1; gamma<=k; gamma++)
    \n+
    257 product *= (lagrangeNode(gamma)-x[0]-x[1])/(lagrangeNode(gamma)-lagrangeNode(i)-lagrangeNode(j));
    \n+
    258 out[n][0][1] += product;
    \n+
    259 }
    \n+
    260 for (unsigned int c=i+j+1; c<=k; c++)
    \n+
    261 {
    \n+
    262 R product=factor;
    \n+
    263 for (unsigned int beta=0; beta<j; beta++)
    \n+
    264 product *= (x[1]-lagrangeNode(beta))/(lagrangeNode(j)-lagrangeNode(beta));
    \n+
    265 for (unsigned int gamma=i+j+1; gamma<=k; gamma++)
    \n+
    266 if (gamma==c)
    \n+
    267 product *= -D(1)/(lagrangeNode(gamma)-lagrangeNode(i)-lagrangeNode(j));
    \n+
    268 else
    \n+
    269 product *= (lagrangeNode(gamma)-x[0]-x[1])/(lagrangeNode(gamma)-lagrangeNode(i)-lagrangeNode(j));
    \n+
    270 out[n][0][1] += product;
    \n+
    271 }
    \n+
    272
    \n+
    273 n++;
    \n+
    274 }
    \n+
    275
    \n+
    276 return;
    \n+
    277 }
    \n+
    278
    \n+
    279 if (dim!=3)
    \n+
    280 DUNE_THROW(NotImplemented, "LagrangeSimplexLocalBasis only implemented for dim==3!");
    \n+
    281
    \n+
    282 // Specialization for arbitrary order and dim==3
    \n+
    283 typename Traits::DomainType kx = x;
    \n+
    284 kx *= k;
    \n+
    285 unsigned int n = 0;
    \n+
    286 unsigned int i[4];
    \n+
    287 R factor[4];
    \n+
    288 for (i[2] = 0; i[2] <= k; ++i[2])
    \n+
    289 {
    \n+
    290 factor[2] = 1.0;
    \n+
    291 for (unsigned int j = 0; j < i[2]; ++j)
    \n+
    292 factor[2] *= (kx[2]-j) / (i[2]-j);
    \n+
    293 for (i[1] = 0; i[1] <= k - i[2]; ++i[1])
    \n+
    294 {
    \n+
    295 factor[1] = 1.0;
    \n+
    296 for (unsigned int j = 0; j < i[1]; ++j)
    \n+
    297 factor[1] *= (kx[1]-j) / (i[1]-j);
    \n+
    298 for (i[0] = 0; i[0] <= k - i[1] - i[2]; ++i[0])
    \n+
    299 {
    \n+
    300 factor[0] = 1.0;
    \n+
    301 for (unsigned int j = 0; j < i[0]; ++j)
    \n+
    302 factor[0] *= (kx[0]-j) / (i[0]-j);
    \n+
    303 i[3] = k - i[0] - i[1] - i[2];
    \n+
    304 D kx3 = k - kx[0] - kx[1] - kx[2];
    \n+
    305 R sum3 = 0.0;
    \n+
    306 factor[3] = 1.0;
    \n+
    307 for (unsigned int j = 0; j < i[3]; ++j)
    \n+
    308 factor[3] /= i[3] - j;
    \n+
    309 R prod_all = factor[0] * factor[1] * factor[2] * factor[3];
    \n+
    310 for (unsigned int j = 0; j < i[3]; ++j)
    \n+
    311 {
    \n+
    312 R prod = prod_all;
    \n+
    313 for (unsigned int l = 0; l < i[3]; ++l)
    \n+
    314 if (j == l)
    \n+
    315 prod *= -R(k);
    \n+
    316 else
    \n+
    317 prod *= kx3 - l;
    \n+
    318 sum3 += prod;
    \n+
    319 }
    \n+
    320 for (unsigned int j = 0; j < i[3]; ++j)
    \n+
    321 factor[3] *= kx3 - j;
    \n+
    322 for (unsigned int m = 0; m < 3; ++m)
    \n+
    323 {
    \n+
    324 out[n][0][m] = sum3;
    \n+
    325 for (unsigned int j = 0; j < i[m]; ++j)
    \n+
    326 {
    \n+
    327 R prod = factor[3];
    \n+
    328 for (unsigned int p = 0; p < 3; ++p)
    \n+
    329 {
    \n+
    330 if (m == p)
    \n+
    331 for (unsigned int l = 0; l < i[p]; ++l)
    \n+
    332 prod *= (j==l) ? R(k) / (i[p]-l) : R(kx[p]-l) / (i[p]-l);
    \n+
    333 else
    \n+
    334 prod *= factor[p];
    \n+
    335 }
    \n+
    336 out[n][0][m] += prod;
    \n+
    337 }
    \n+
    338 }
    \n+
    339 n++;
    \n+
    340 }
    \n+
    341 }
    \n+
    342 }
    \n+
    343 }
    \n+
    344
    \n+
    351 void partial(const std::array<unsigned int,dim>& order,
    \n+
    352 const typename Traits::DomainType& in,
    \n+
    353 std::vector<typename Traits::RangeType>& out) const
    \n+
    354 {
    \n+
    355 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    356
    \n+
    357 out.resize(size());
    \n+
    358
    \n+
    359 if (totalOrder == 0) {
    \n+
    360 evaluateFunction(in, out);
    \n+
    361 return;
    \n+
    362 }
    \n+
    363
    \n+
    364 if (k==0)
    \n+
    365 {
    \n+
    366 out[0] = 0;
    \n+
    367 return;
    \n+
    368 }
    \n+
    369
    \n+
    370 if (k==1)
    \n+
    371 {
    \n+
    372 if (totalOrder==1)
    \n+
    373 {
    \n+
    374 auto direction = std::find(order.begin(), order.end(), 1);
    \n+
    375
    \n+
    376 out[0] = -1;
    \n+
    377 for (unsigned int i=0; i<dim; i++)
    \n+
    378 out[i+1] = (i==(direction-order.begin()));
    \n+
    379 }
    \n+
    380 else // all higher order derivatives are zero
    \n+
    381 std::fill(out.begin(), out.end(), 0);
    \n+
    382 return;
    \n+
    383 }
    \n+
    384
    \n+
    385 if (dim==2)
    \n+
    386 {
    \n+
    387 auto lagrangeNode = [](unsigned int i) { return ((D)i)/k; };
    \n+
    388
    \n+
    389 // Helper method: Return a single Lagrangian factor of l_ij evaluated at x
    \n+
    390 auto lagrangianFactor = [&lagrangeNode]
    \n+
    391 (const int no, const int i, const int j, const typename Traits::DomainType& x)
    \n+
    392 -> typename Traits::RangeType
    \n+
    393 {
    \n+
    394 if ( no < i)
    \n+
    395 return (x[0]-lagrangeNode(no))/(lagrangeNode(i)-lagrangeNode(no));
    \n+
    396 if (no < i+j)
    \n+
    397 return (x[1]-lagrangeNode(no-i))/(lagrangeNode(j)-lagrangeNode(no-i));
    \n+
    398 return (lagrangeNode(no+1)-x[0]-x[1])/(lagrangeNode(no+1)-lagrangeNode(i)-lagrangeNode(j));
    \n+
    399 };
    \n+
    400
    \n+
    401 // Helper method: Return the derivative of a single Lagrangian factor of l_ij evaluated at x
    \n+
    402 // direction: Derive in x-direction if this is 0, otherwise derive in y direction
    \n+
    403 auto lagrangianFactorDerivative = [&lagrangeNode]
    \n+
    404 (const int direction, const int no, const int i, const int j, const typename Traits::DomainType&)
    \n+
    405 -> typename Traits::RangeType
    \n+
    406 {
    \n+
    407 using T = typename Traits::RangeType;
    \n+
    408 if ( no < i)
    \n+
    409 return (direction == 0) ? T(1.0/(lagrangeNode(i)-lagrangeNode(no))) : T(0);
    \n+
    410
    \n+
    411 if (no < i+j)
    \n+
    412 return (direction == 0) ? T(0) : T(1.0/(lagrangeNode(j)-lagrangeNode(no-i)));
    \n+
    413
    \n+
    414 return -1.0/(lagrangeNode(no+1)-lagrangeNode(i)-lagrangeNode(j));
    \n+
    415 };
    \n+
    416
    \n+
    417 if (totalOrder==1)
    \n+
    418 {
    \n+
    419 int direction = std::find(order.begin(), order.end(), 1)-order.begin();
    \n+
    420
    \n+
    421 int n=0;
    \n+
    422 for (unsigned int j=0; j<=k; j++)
    \n+
    423 {
    \n+
    424 for (unsigned int i=0; i<=k-j; i++, n++)
    \n+
    425 {
    \n+
    426 out[n] = 0.0;
    \n+
    427 for (unsigned int no1=0; no1 < k; no1++)
    \n+
    428 {
    \n+
    429 R factor = lagrangianFactorDerivative(direction, no1, i, j, in);
    \n+
    430 for (unsigned int no2=0; no2 < k; no2++)
    \n+
    431 if (no1 != no2)
    \n+
    432 factor *= lagrangianFactor(no2, i, j, in);
    \n+
    433
    \n+
    434 out[n] += factor;
    \n+
    435 }
    \n+
    436 }
    \n+
    437 }
    \n+
    438 return;
    \n+
    439 }
    \n+
    440
    \n+
    441 if (totalOrder==2)
    \n+
    442 {
    \n+
    443 std::array<int,2> directions;
    \n+
    444 unsigned int counter = 0;
    \n+
    445 auto nonconstOrder = order; // need a copy that I can modify
    \n+
    446 for (int i=0; i<2; i++)
    \n+
    447 {
    \n+
    448 while (nonconstOrder[i])
    \n+
    449 {
    \n+
    450 directions[counter++] = i;
    \n+
    451 nonconstOrder[i]--;
    \n+
    452 }
    \n+
    453 }
    \n+
    454
    \n+
    455 //f = prod_{i} f_i -> dxa dxb f = sum_{i} {dxa f_i sum_{k \\neq i} dxb f_k prod_{l \\neq k,i} f_l
    \n+
    456 int n=0;
    \n+
    457 for (unsigned int j=0; j<=k; j++)
    \n+
    458 {
    \n+
    459 for (unsigned int i=0; i<=k-j; i++, n++)
    \n+
    460 {
    \n+
    461 R res = 0.0;
    \n+
    462
    \n+
    463 for (unsigned int no1=0; no1 < k; no1++)
    \n+
    464 {
    \n+
    465 R factor1 = lagrangianFactorDerivative(directions[0], no1, i, j, in);
    \n+
    466 for (unsigned int no2=0; no2 < k; no2++)
    \n+
    467 {
    \n+
    468 if (no1 == no2)
    \n+
    469 continue;
    \n+
    470 R factor2 = factor1*lagrangianFactorDerivative(directions[1], no2, i, j, in);
    \n+
    471 for (unsigned int no3=0; no3 < k; no3++)
    \n+
    472 {
    \n+
    473 if (no3 == no1 || no3 == no2)
    \n+
    474 continue;
    \n+
    475 factor2 *= lagrangianFactor(no3, i, j, in);
    \n+
    476 }
    \n+
    477 res += factor2;
    \n+
    478 }
    \n+
    479 }
    \n+
    480 out[n] = res;
    \n+
    481 }
    \n+
    482 }
    \n+
    483
    \n+
    484 return;
    \n+
    485 } // totalOrder==2
    \n+
    486
    \n+
    487 } // dim==2
    \n+
    488
    \n+
    489 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    490 }
    \n+
    491
    \n+
    493 static constexpr unsigned int order ()
    \n+
    494 {
    \n+
    495 return k;
    \n+
    496 }
    \n+
    497 };
    \n+
    498
    \n+
    504 template<unsigned int dim, unsigned int k>
    \n+
    505 class LagrangeSimplexLocalCoefficients
    \n+
    506 {
    \n+
    507 public:
    \n+
    509 LagrangeSimplexLocalCoefficients ()
    \n+
    510 : localKeys_(size())
    \n+
    511 {
    \n+
    512 if (k==0)
    \n+
    513 {
    \n+
    514 localKeys_[0] = LocalKey(0,0,0);
    \n+
    515 return;
    \n+
    516 }
    \n+
    517
    \n+
    518 if (k==1)
    \n+
    519 {
    \n+
    520 for (std::size_t i=0; i<size(); i++)
    \n+
    521 localKeys_[i] = LocalKey(i,dim,0);
    \n+
    522 return;
    \n+
    523 }
    \n+
    524
    \n+
    525 if (dim==1)
    \n+
    526 {
    \n+
    527 // Order is at least 2 here
    \n+
    528 localKeys_[0] = LocalKey(0,1,0); // vertex dof
    \n+
    529 for (unsigned int i=1; i<k; i++)
    \n+
    530 localKeys_[i] = LocalKey(0,0,i-1); // element dofs
    \n+
    531 localKeys_.back() = LocalKey(1,1,0); // vertex dof
    \n+
    532 return;
    \n+
    533 }
    \n+
    534
    \n+
    535 if (dim==2)
    \n+
    536 {
    \n+
    537 int n=0;
    \n+
    538 int c=0;
    \n+
    539 for (unsigned int j=0; j<=k; j++)
    \n+
    540 for (unsigned int i=0; i<=k-j; i++)
    \n+
    541 {
    \n+
    542 if (i==0 && j==0)
    \n+
    543 {
    \n+
    544 localKeys_[n++] = LocalKey(0,2,0);
    \n+
    545 continue;
    \n+
    546 }
    \n+
    547 if (i==k && j==0)
    \n+
    548 {
    \n+
    549 localKeys_[n++] = LocalKey(1,2,0);
    \n+
    550 continue;
    \n+
    551 }
    \n+
    552 if (i==0 && j==k)
    \n+
    553 {
    \n+
    554 localKeys_[n++] = LocalKey(2,2,0);
    \n+
    555 continue;
    \n+
    556 }
    \n+
    557 if (j==0)
    \n+
    558 {
    \n+
    559 localKeys_[n++] = LocalKey(0,1,i-1);
    \n+
    560 continue;
    \n+
    561 }
    \n+
    562 if (i==0)
    \n+
    563 {
    \n+
    564 localKeys_[n++] = LocalKey(1,1,j-1);
    \n+
    565 continue;
    \n+
    566 }
    \n+
    567 if (i+j==k)
    \n+
    568 {
    \n+
    569 localKeys_[n++] = LocalKey(2,1,j-1);
    \n+
    570 continue;
    \n+
    571 }
    \n+
    572 localKeys_[n++] = LocalKey(0,0,c++);
    \n+
    573 }
    \n+
    574 return;
    \n+
    575 }
    \n+
    576
    \n+
    577 if (dim==3)
    \n+
    578 {
    \n+
    579 std::array<unsigned int, dim+1> vertexMap;
    \n+
    580 for (unsigned int i=0; i<=dim; i++)
    \n+
    581 vertexMap[i] = i;
    \n+
    582 generateLocalKeys(vertexMap);
    \n+
    583 return;
    \n+
    584 }
    \n+
    585 DUNE_THROW(NotImplemented, "LagrangeSimplexLocalCoefficients only implemented for k<=1 or dim<=3!");
    \n+
    586 }
    \n+
    587
    \n+
    594 LagrangeSimplexLocalCoefficients (const std::array<unsigned int, dim+1> vertexMap)
    \n+
    595 : localKeys_(size())
    \n+
    596 {
    \n+
    597 if (dim!=2 && dim!=3)
    \n+
    598 DUNE_THROW(NotImplemented, "LagrangeSimplexLocalCoefficients only implemented for dim==2 and dim==3!");
    \n+
    599
    \n+
    600 generateLocalKeys(vertexMap);
    \n+
    601 }
    \n+
    602
    \n+
    603
    \n+
    604 template<class VertexMap>
    \n+
    605 LagrangeSimplexLocalCoefficients(const VertexMap &vertexmap)
    \n+
    606 : localKeys_(size())
    \n+
    607 {
    \n+
    608 if (dim!=2 && dim!=3)
    \n+
    609 DUNE_THROW(NotImplemented, "LagrangeSimplexLocalCoefficients only implemented for dim==2 and dim==3!");
    \n+
    610
    \n+
    611 std::array<unsigned int, dim+1> vertexmap_array;
    \n+
    612 std::copy(vertexmap, vertexmap + dim + 1, vertexmap_array.begin());
    \n+
    613 generateLocalKeys(vertexmap_array);
    \n+
    614 }
    \n+
    615
    \n+
    617 static constexpr std::size_t size ()
    \n+
    618 {
    \n+
    619 return binomial(k+dim,dim);
    \n+
    620 }
    \n+
    621
    \n+
    623 const LocalKey& localKey (std::size_t i) const
    \n+
    624 {
    \n+
    625 return localKeys_[i];
    \n+
    626 }
    \n+
    627
    \n+
    628 private:
    \n+
    629 std::vector<LocalKey> localKeys_;
    \n+
    630
    \n+
    631 void generateLocalKeys(const std::array<unsigned int, dim+1> vertexMap)
    \n+
    632 {
    \n+
    633 if (k==0)
    \n+
    634 {
    \n+
    635 localKeys_[0] = LocalKey(0,0,0);
    \n+
    636 return;
    \n+
    637 }
    \n+
    638
    \n+
    639 if (dim==2)
    \n+
    640 {
    \n+
    641 // Create default assignment
    \n+
    642 int n=0;
    \n+
    643 int c=0;
    \n+
    644 for (unsigned int j=0; j<=k; j++)
    \n+
    645 for (unsigned int i=0; i<=k-j; i++)
    \n+
    646 {
    \n+
    647 if (i==0 && j==0)
    \n+
    648 {
    \n+
    649 localKeys_[n++] = LocalKey(0,2,0);
    \n+
    650 continue;
    \n+
    651 }
    \n+
    652 if (i==k && j==0)
    \n+
    653 {
    \n+
    654 localKeys_[n++] = LocalKey(1,2,0);
    \n+
    655 continue;
    \n+
    656 }
    \n+
    657 if (i==0 && j==k)
    \n+
    658 {
    \n+
    659 localKeys_[n++] = LocalKey(2,2,0);
    \n+
    660 continue;
    \n+
    661 }
    \n+
    662 if (j==0)
    \n+
    663 {
    \n+
    664 localKeys_[n++] = LocalKey(0,1,i-1);
    \n+
    665 continue;
    \n+
    666 }
    \n+
    667 if (i==0)
    \n+
    668 {
    \n+
    669 localKeys_[n++] = LocalKey(1,1,j-1);
    \n+
    670 continue;
    \n+
    671 }
    \n+
    672 if (i+j==k)
    \n+
    673 {
    \n+
    674 localKeys_[n++] = LocalKey(2,1,j-1);
    \n+
    675 continue;
    \n+
    676 }
    \n+
    677 localKeys_[n++] = LocalKey(0,0,c++);
    \n+
    678 }
    \n+
    679
    \n+
    680 // Flip edge orientations, if requested
    \n+
    681 bool flip[3];
    \n+
    682 flip[0] = vertexMap[0] > vertexMap[1];
    \n+
    683 flip[1] = vertexMap[0] > vertexMap[2];
    \n+
    684 flip[2] = vertexMap[1] > vertexMap[2];
    \n+
    685 for (std::size_t i=0; i<size(); i++)
    \n+
    686 if (localKeys_[i].codim()==1 && flip[localKeys_[i].subEntity()])
    \n+
    687 localKeys_[i].index(k-2-localKeys_[i].index());
    \n+
    688
    \n+
    689 return;
    \n+
    690 }
    \n+
    691
    \n+
    692 if (dim!=3)
    \n+
    693 DUNE_THROW(NotImplemented, "LagrangeSimplexLocalCoefficients only implemented for dim==3!");
    \n+
    694
    \n+
    695 unsigned int subindex[16];
    \n+
    696 unsigned int codim_count[4] = {0};
    \n+
    697 for (unsigned int m = 1; m < 16; ++m)
    \n+
    698 {
    \n+
    699 unsigned int codim = !(m&1) + !(m&2) + !(m&4) + !(m&8);
    \n+
    700 subindex[m] = codim_count[codim]++;
    \n+
    701 }
    \n+
    702
    \n+
    703 int a1 = (3*k + 12)*k + 11;
    \n+
    704 int a2 = -3*k - 6;
    \n+
    705 unsigned int dof_count[16] = {0};
    \n+
    706 unsigned int i[4];
    \n+
    707 for (i[3] = 0; i[3] <= k; ++i[3])
    \n+
    708 for (i[2] = 0; i[2] <= k - i[3]; ++i[2])
    \n+
    709 for (i[1] = 0; i[1] <= k - i[2] - i[3]; ++i[1])
    \n+
    710 {
    \n+
    711 i[0] = k - i[1] - i[2] - i[3];
    \n+
    712 unsigned int j[4];
    \n+
    713 unsigned int entity = 0;
    \n+
    714 unsigned int codim = 0;
    \n+
    715 for (unsigned int m = 0; m < 4; ++m)
    \n+
    716 {
    \n+
    717 j[m] = i[vertexMap[m]];
    \n+
    718 entity += !!j[m] << m;
    \n+
    719 codim += !j[m];
    \n+
    720 }
    \n+
    721 int local_index = j[3]*(a1 + (a2 + j[3])*j[3])/6
    \n+
    722 + j[2]*(2*(k - j[3]) + 3 - j[2])/2 + j[1];
    \n+
    723 localKeys_[local_index] = LocalKey(subindex[entity], codim, dof_count[entity]++);
    \n+
    724 }
    \n+
    725 }
    \n+
    726 };
    \n+
    727
    \n+
    732 template<class LocalBasis>
    \n+
    733 class LagrangeSimplexLocalInterpolation
    \n+
    734 {
    \n+
    735 static const int kdiv = (LocalBasis::order() == 0 ? 1 : LocalBasis::order());
    \n+
    736 public:
    \n+
    737
    \n+
    745 template<typename F, typename C>
    \n+
    746 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    747 {
    \n+
    748 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n+
    749 constexpr auto k = LocalBasis::order();
    \n+
    750 using D = typename LocalBasis::Traits::DomainFieldType;
    \n+
    751
    \n+
    752 typename LocalBasis::Traits::DomainType x;
    \n+
    753
    \n+
    754 out.resize(LocalBasis::size());
    \n+
    755
    \n+
    756 // Specialization for zero-order case
    \n+
    757 if (k==0)
    \n+
    758 {
    \n+
    759 auto center = ReferenceElements<D,dim>::simplex().position(0,0);
    \n+
    760 out[0] = f(center);
    \n+
    761 return;
    \n+
    762 }
    \n+
    763
    \n+
    764 // Specialization for first-order case
    \n+
    765 if (k==1)
    \n+
    766 {
    \n+
    767 // vertex 0
    \n+
    768 std::fill(x.begin(), x.end(), 0);
    \n+
    769 out[0] = f(x);
    \n+
    770
    \n+
    771 // remaining vertices
    \n+
    772 for (int i=0; i<dim; i++)
    \n+
    773 {
    \n+
    774 for (int j=0; j<dim; j++)
    \n+
    775 x[j] = (i==j);
    \n+
    776
    \n+
    777 out[i+1] = f(x);
    \n+
    778 }
    \n+
    779 return;
    \n+
    780 }
    \n+
    781
    \n+
    782 if (dim==1)
    \n+
    783 {
    \n+
    784 for (unsigned int i=0; i<k+1; i++)
    \n+
    785 {
    \n+
    786 x[0] = ((D)i)/k;
    \n+
    787 out[i] = f(x);
    \n+
    788 }
    \n+
    789 return;
    \n+
    790 }
    \n+
    791
    \n+
    792 if (dim==2)
    \n+
    793 {
    \n+
    794 int n=0;
    \n+
    795 for (unsigned int j=0; j<=k; j++)
    \n+
    796 for (unsigned int i=0; i<=k-j; i++)
    \n+
    797 {
    \n+
    798 x = { ((D)i)/k, ((D)j)/k };
    \n+
    799 out[n] = f(x);
    \n+
    800 n++;
    \n+
    801 }
    \n+
    802 return;
    \n+
    803 }
    \n+
    804
    \n+
    805 if (dim!=3)
    \n+
    806 DUNE_THROW(NotImplemented, "LagrangeSimplexLocalInterpolation only implemented for dim<=3!");
    \n+
    807
    \n+
    808 int n=0;
    \n+
    809 for (int i2 = 0; i2 <= (int)k; i2++)
    \n+
    810 for (int i1 = 0; i1 <= (int)k-i2; i1++)
    \n+
    811 for (int i0 = 0; i0 <= (int)k-i1-i2; i0++)
    \n+
    812 {
    \n+
    813 x[0] = ((D)i0)/((D)kdiv);
    \n+
    814 x[1] = ((D)i1)/((D)kdiv);
    \n+
    815 x[2] = ((D)i2)/((D)kdiv);
    \n+
    816 out[n] = f(x);
    \n+
    817 n++;
    \n+
    818 }
    \n+
    819 }
    \n+
    820
    \n+
    821 };
    \n+
    822
    \n+
    823} } // namespace Dune::Impl
    \n+
    824
    \n+
    825namespace Dune
    \n+
    826{
    \n+
    834 template<class D, class R, int d, int k>
    \n+
    \n+\n+
    836 {
    \n+
    837 public:
    \n+\n+
    841 Impl::LagrangeSimplexLocalCoefficients<d,k>,
    \n+
    842 Impl::LagrangeSimplexLocalInterpolation<Impl::LagrangeSimplexLocalBasis<D,R,d,k> > >;
    \n+
    843
    \n+\n+
    846
    \n+
    851 template<typename VertexMap>
    \n+
    \n+
    852 LagrangeSimplexLocalFiniteElement(const VertexMap& vertexmap)
    \n+
    853 : coefficients_(vertexmap)
    \n+
    854 {}
    \n+
    \n+
    855
    \n+
    \n+
    858 const typename Traits::LocalBasisType& localBasis () const
    \n+
    859 {
    \n+
    860 return basis_;
    \n+
    861 }
    \n+
    \n+
    862
    \n+
    \n+\n+
    866 {
    \n+
    867 return coefficients_;
    \n+
    868 }
    \n+
    \n+
    869
    \n+
    \n+\n+
    873 {
    \n+
    874 return interpolation_;
    \n+
    875 }
    \n+
    \n+
    876
    \n+
    \n+
    878 static constexpr std::size_t size ()
    \n+
    879 {
    \n+
    880 return Impl::LagrangeSimplexLocalBasis<D,R,d,k>::size();
    \n+
    881 }
    \n+
    \n+
    882
    \n+
    \n+
    885 static constexpr GeometryType type ()
    \n+
    886 {
    \n+
    887 return GeometryTypes::simplex(d);
    \n+
    888 }
    \n+
    \n+
    889
    \n+
    890 private:
    \n+
    891 Impl::LagrangeSimplexLocalBasis<D,R,d,k> basis_;
    \n+
    892 Impl::LagrangeSimplexLocalCoefficients<d,k> coefficients_;
    \n+
    893 Impl::LagrangeSimplexLocalInterpolation<Impl::LagrangeSimplexLocalBasis<D,R,d,k> > interpolation_;
    \n+
    894 };
    \n+
    \n+
    895
    \n+
    896} // namespace Dune
    \n+
    897
    \n+
    898#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGESIMPLEX_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for Raviart-Thomas-1 elements on pyramids.
    Definition raviartthomas0pyramidlocalcoefficients.hh:24
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0pyramidlocalcoefficients.hh:41
    \n-
    RT0PyramidLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0pyramidlocalcoefficients.hh:28
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0pyramidlocalcoefficients.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    R RangeType
    range type
    Definition common/localbasis.hh:52
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:836
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangesimplex.hh:872
    \n+
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangesimplex.hh:858
    \n+
    LagrangeSimplexLocalFiniteElement()
    Definition lagrangesimplex.hh:845
    \n+
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangesimplex.hh:878
    \n+
    LagrangeSimplexLocalFiniteElement(const VertexMap &vertexmap)
    Definition lagrangesimplex.hh:852
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangesimplex.hh:865
    \n+
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangesimplex.hh:885
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,73 +1,922 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n-raviartthomas0pyramidlocalcoefficients.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+lagrangesimplex.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGESIMPLEX_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGESIMPLEX_HH\n 7\n-8#include \n-9#include \n+8#include \n+9#include \n 10\n-11#include \"../../common/localkey.hh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n+11#include \n+12#include \n+13#include \n+14#include \n 15\n-_\b2_\b3 class _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n-25\n-26 public:\n-_\b2_\b8 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(_\bs_\bi_\bz_\be())\n-29 {\n-30 for(std::size_t i=0; i< _\bs_\bi_\bz_\be(); i++)\n-31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-32 }\n-33\n-_\b3_\b5 std::size_t _\bs_\bi_\bz_\be () const\n+16#include \n+17\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+21\n+22namespace _\bD_\bu_\bn_\be { namespace Impl\n+23{\n+34 template\n+35 class LagrangeSimplexLocalBasis\n 36 {\n-37 return 5;\n-38 }\n+37 public:\n+38 using Traits =\n+LocalBasisTraits,R,1,FieldVector,FieldMatrix\n+>;\n 39\n-_\b4_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-42 {\n-43 return li[i];\n-44 }\n-45\n-46 private:\n-47 std::vector li;\n-48 };\n-49}\n-50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH\n+44 static constexpr unsigned int size ()\n+45 {\n+46 return binomial(k+dim,dim);\n+47 }\n+48\n+50 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n+51 std::vector& out) const\n+52 {\n+53 out.resize(size());\n+54\n+55 // Specialization for zero-order case\n+56 if (k==0)\n+57 {\n+58 out[0] = 1;\n+59 return;\n+60 }\n+61\n+62 // Specialization for first-order case\n+63 if (k==1)\n+64 {\n+65 out[0] = 1.0;\n+66 for (size_t i=0; i=2);\n+75\n+76 auto lagrangeNode = [](unsigned int i) { return ((D)i)/k; };\n+77\n+78 if (dim==1)\n+79 {\n+80 for (unsigned int i=0; i=2 only\n+implemented for dim==1 or dim==3\");\n+112\n+113 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be kx = x;\n+114 kx *= k;\n+115 unsigned int n = 0;\n+116 unsigned int i[4];\n+117 R factor[4];\n+118 for (i[2] = 0; i[2] <= k; ++i[2])\n+119 {\n+120 factor[2] = 1.0;\n+121 for (unsigned int j = 0; j < i[2]; ++j)\n+122 factor[2] *= (kx[2]-j) / (i[2]-j);\n+123 for (i[1] = 0; i[1] <= k - i[2]; ++i[1])\n+124 {\n+125 factor[1] = 1.0;\n+126 for (unsigned int j = 0; j < i[1]; ++j)\n+127 factor[1] *= (kx[1]-j) / (i[1]-j);\n+128 for (i[0] = 0; i[0] <= k - i[1] - i[2]; ++i[0])\n+129 {\n+130 factor[0] = 1.0;\n+131 for (unsigned int j = 0; j < i[0]; ++j)\n+132 factor[0] *= (kx[0]-j) / (i[0]-j);\n+133 i[3] = k - i[0] - i[1] - i[2];\n+134 D kx3 = k - kx[0] - kx[1] - kx[2];\n+135 factor[3] = 1.0;\n+136 for (unsigned int j = 0; j < i[3]; ++j)\n+137 factor[3] *= (kx3-j) / (i[3]-j);\n+138 out[n++] = factor[0] * factor[1] * factor[2] * factor[3];\n+139 }\n+140 }\n+141 }\n+142 }\n+143\n+149 void evaluateJacobian(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n+150 std::vector& out) const\n+151 {\n+152 out.resize(size());\n+153\n+154 // Specialization for k==0\n+155 if (k==0)\n+156 {\n+157 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n+158 return;\n+159 }\n+160\n+161 // Specialization for k==1\n+162 if (k==1)\n+163 {\n+164 std::fill(out[0][0].begin(), out[0][0].end(), -1);\n+165\n+166 for (unsigned int i=0; i& order,\n+352 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+353 std::vector& out) const\n+354 {\n+355 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+356\n+357 out.resize(size());\n+358\n+359 if (totalOrder == 0) {\n+360 evaluateFunction(in, out);\n+361 return;\n+362 }\n+363\n+364 if (k==0)\n+365 {\n+366 out[0] = 0;\n+367 return;\n+368 }\n+369\n+370 if (k==1)\n+371 {\n+372 if (totalOrder==1)\n+373 {\n+374 auto direction = std::find(order.begin(), order.end(), 1);\n+375\n+376 out[0] = -1;\n+377 for (unsigned int i=0; i typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n+393 {\n+394 if ( no < i)\n+395 return (x[0]-lagrangeNode(no))/(lagrangeNode(i)-lagrangeNode(no));\n+396 if (no < i+j)\n+397 return (x[1]-lagrangeNode(no-i))/(lagrangeNode(j)-lagrangeNode(no-i));\n+398 return (lagrangeNode(no+1)-x[0]-x[1])/(lagrangeNode(no+1)-lagrangeNode(i)-\n+lagrangeNode(j));\n+399 };\n+400\n+401 // Helper method: Return the derivative of a single Lagrangian factor of\n+l_ij evaluated at x\n+402 // direction: Derive in x-direction if this is 0, otherwise derive in y\n+direction\n+403 auto lagrangianFactorDerivative = [&lagrangeNode]\n+404 (const int direction, const int no, const int i, const int j, const\n+typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be&)\n+405 -> typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n+406 {\n+407 using T = typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be;\n+408 if ( no < i)\n+409 return (direction == 0) ? T(1.0/(lagrangeNode(i)-lagrangeNode(no))) : T(0);\n+410\n+411 if (no < i+j)\n+412 return (direction == 0) ? T(0) : T(1.0/(lagrangeNode(j)-lagrangeNode(no-\n+i)));\n+413\n+414 return -1.0/(lagrangeNode(no+1)-lagrangeNode(i)-lagrangeNode(j));\n+415 };\n+416\n+417 if (totalOrder==1)\n+418 {\n+419 int direction = std::find(order.begin(), order.end(), 1)-order.begin();\n+420\n+421 int n=0;\n+422 for (unsigned int j=0; j<=k; j++)\n+423 {\n+424 for (unsigned int i=0; i<=k-j; i++, n++)\n+425 {\n+426 out[n] = 0.0;\n+427 for (unsigned int no1=0; no1 < k; no1++)\n+428 {\n+429 R factor = lagrangianFactorDerivative(direction, no1, i, j, in);\n+430 for (unsigned int no2=0; no2 < k; no2++)\n+431 if (no1 != no2)\n+432 factor *= lagrangianFactor(no2, i, j, in);\n+433\n+434 out[n] += factor;\n+435 }\n+436 }\n+437 }\n+438 return;\n+439 }\n+440\n+441 if (totalOrder==2)\n+442 {\n+443 std::array directions;\n+444 unsigned int counter = 0;\n+445 auto nonconstOrder = order; // need a copy that I can modify\n+446 for (int i=0; i<2; i++)\n+447 {\n+448 while (nonconstOrder[i])\n+449 {\n+450 directions[counter++] = i;\n+451 nonconstOrder[i]--;\n+452 }\n+453 }\n+454\n+455 //f = prod_{i} f_i -> dxa dxb f = sum_{i} {dxa f_i sum_{k \\neq i} dxb f_k\n+prod_{l \\neq k,i} f_l\n+456 int n=0;\n+457 for (unsigned int j=0; j<=k; j++)\n+458 {\n+459 for (unsigned int i=0; i<=k-j; i++, n++)\n+460 {\n+461 R res = 0.0;\n+462\n+463 for (unsigned int no1=0; no1 < k; no1++)\n+464 {\n+465 R factor1 = lagrangianFactorDerivative(directions[0], no1, i, j, in);\n+466 for (unsigned int no2=0; no2 < k; no2++)\n+467 {\n+468 if (no1 == no2)\n+469 continue;\n+470 R factor2 = factor1*lagrangianFactorDerivative(directions[1], no2, i, j,\n+in);\n+471 for (unsigned int no3=0; no3 < k; no3++)\n+472 {\n+473 if (no3 == no1 || no3 == no2)\n+474 continue;\n+475 factor2 *= lagrangianFactor(no3, i, j, in);\n+476 }\n+477 res += factor2;\n+478 }\n+479 }\n+480 out[n] = res;\n+481 }\n+482 }\n+483\n+484 return;\n+485 } // totalOrder==2\n+486\n+487 } // dim==2\n+488\n+489 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+490 }\n+491\n+493 static constexpr unsigned int order ()\n+494 {\n+495 return k;\n+496 }\n+497 };\n+498\n+504 template\n+505 class LagrangeSimplexLocalCoefficients\n+506 {\n+507 public:\n+509 LagrangeSimplexLocalCoefficients ()\n+510 : localKeys_(size())\n+511 {\n+512 if (k==0)\n+513 {\n+514 localKeys_[0] = LocalKey(0,0,0);\n+515 return;\n+516 }\n+517\n+518 if (k==1)\n+519 {\n+520 for (std::size_t i=0; i vertexMap;\n+580 for (unsigned int i=0; i<=dim; i++)\n+581 vertexMap[i] = i;\n+582 generateLocalKeys(vertexMap);\n+583 return;\n+584 }\n+585 DUNE_THROW(NotImplemented, \"LagrangeSimplexLocalCoefficients only\n+implemented for k<=1 or dim<=3!\");\n+586 }\n+587\n+594 LagrangeSimplexLocalCoefficients (const std::array\n+vertexMap)\n+595 : localKeys_(size())\n+596 {\n+597 if (dim!=2 && dim!=3)\n+598 DUNE_THROW(NotImplemented, \"LagrangeSimplexLocalCoefficients only\n+implemented for dim==2 and dim==3!\");\n+599\n+600 generateLocalKeys(vertexMap);\n+601 }\n+602\n+603\n+604 template\n+605 LagrangeSimplexLocalCoefficients(const VertexMap &vertexmap)\n+606 : localKeys_(size())\n+607 {\n+608 if (dim!=2 && dim!=3)\n+609 DUNE_THROW(NotImplemented, \"LagrangeSimplexLocalCoefficients only\n+implemented for dim==2 and dim==3!\");\n+610\n+611 std::array vertexmap_array;\n+612 std::copy(vertexmap, vertexmap + dim + 1, vertexmap_array.begin());\n+613 generateLocalKeys(vertexmap_array);\n+614 }\n+615\n+617 static constexpr std::size_t size ()\n+618 {\n+619 return binomial(k+dim,dim);\n+620 }\n+621\n+623 const LocalKey& localKey (std::size_t i) const\n+624 {\n+625 return localKeys_[i];\n+626 }\n+627\n+628 private:\n+629 std::vector localKeys_;\n+630\n+631 void generateLocalKeys(const std::array vertexMap)\n+632 {\n+633 if (k==0)\n+634 {\n+635 localKeys_[0] = LocalKey(0,0,0);\n+636 return;\n+637 }\n+638\n+639 if (dim==2)\n+640 {\n+641 // Create default assignment\n+642 int n=0;\n+643 int c=0;\n+644 for (unsigned int j=0; j<=k; j++)\n+645 for (unsigned int i=0; i<=k-j; i++)\n+646 {\n+647 if (i==0 && j==0)\n+648 {\n+649 localKeys_[n++] = LocalKey(0,2,0);\n+650 continue;\n+651 }\n+652 if (i==k && j==0)\n+653 {\n+654 localKeys_[n++] = LocalKey(1,2,0);\n+655 continue;\n+656 }\n+657 if (i==0 && j==k)\n+658 {\n+659 localKeys_[n++] = LocalKey(2,2,0);\n+660 continue;\n+661 }\n+662 if (j==0)\n+663 {\n+664 localKeys_[n++] = LocalKey(0,1,i-1);\n+665 continue;\n+666 }\n+667 if (i==0)\n+668 {\n+669 localKeys_[n++] = LocalKey(1,1,j-1);\n+670 continue;\n+671 }\n+672 if (i+j==k)\n+673 {\n+674 localKeys_[n++] = LocalKey(2,1,j-1);\n+675 continue;\n+676 }\n+677 localKeys_[n++] = LocalKey(0,0,c++);\n+678 }\n+679\n+680 // Flip edge orientations, if requested\n+681 bool flip[3];\n+682 flip[0] = vertexMap[0] > vertexMap[1];\n+683 flip[1] = vertexMap[0] > vertexMap[2];\n+684 flip[2] = vertexMap[1] > vertexMap[2];\n+685 for (std::size_t i=0; i\n+733 class LagrangeSimplexLocalInterpolation\n+734 {\n+735 static const int kdiv = (LocalBasis::order() == 0 ? 1 : LocalBasis::order\n+());\n+736 public:\n+737\n+745 template\n+746 void interpolate (const F& f, std::vector& out) const\n+747 {\n+748 constexpr auto dim = LocalBasis::Traits::dimDomain;\n+749 constexpr auto k = LocalBasis::order();\n+750 using D = typename LocalBasis::Traits::DomainFieldType;\n+751\n+752 typename LocalBasis::Traits::DomainType x;\n+753\n+754 out.resize(LocalBasis::size());\n+755\n+756 // Specialization for zero-order case\n+757 if (k==0)\n+758 {\n+759 auto center = ReferenceElements::simplex().position(0,0);\n+760 out[0] = f(center);\n+761 return;\n+762 }\n+763\n+764 // Specialization for first-order case\n+765 if (k==1)\n+766 {\n+767 // vertex 0\n+768 std::fill(x.begin(), x.end(), 0);\n+769 out[0] = f(x);\n+770\n+771 // remaining vertices\n+772 for (int i=0; i\n+_\b8_\b3_\b5 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+836 {\n+837 public:\n+_\b8_\b4_\b0 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n+_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bk_\b>,\n+841 Impl::LagrangeSimplexLocalCoefficients,\n+842 Impl::LagrangeSimplexLocalInterpolation > >;\n+843\n+_\b8_\b4_\b5 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt() {}\n+846\n+851 template\n+_\b8_\b5_\b2 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const VertexMap& vertexmap)\n+853 : coefficients_(vertexmap)\n+854 {}\n+855\n+_\b8_\b5_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+859 {\n+860 return basis_;\n+861 }\n+862\n+_\b8_\b6_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+866 {\n+867 return coefficients_;\n+868 }\n+869\n+_\b8_\b7_\b2 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+873 {\n+874 return interpolation_;\n+875 }\n+876\n+_\b8_\b7_\b8 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n+879 {\n+880 return Impl::LagrangeSimplexLocalBasis::size();\n+881 }\n+882\n+_\b8_\b8_\b5 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+886 {\n+887 return GeometryTypes::simplex(d);\n+888 }\n+889\n+890 private:\n+891 Impl::LagrangeSimplexLocalBasis basis_;\n+892 Impl::LagrangeSimplexLocalCoefficients coefficients_;\n+893 Impl::LagrangeSimplexLocalInterpolation > interpolation_;\n+894 };\n+895\n+896} // namespace Dune\n+897\n+898#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGESIMPLEX_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on pyramids.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT0PyramidLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n+R RangeType\n+range type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for simplices with arbitrary compile-time dimension and\n+polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:836\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+Returns object that evaluates degrees of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:872\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+Returns the local basis, i.e., the set of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:858\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+LagrangeSimplexLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:845\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size()\n+The number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:878\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+LagrangeSimplexLocalFiniteElement(const VertexMap &vertexmap)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:852\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+Returns the assignment of the degrees of freedom to the element subentities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:865\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+The reference element that the local finite element is defined on.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangesimplex.hh:885\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0cube2d.hh File Reference\n+dune-localfunctions: lagrangecoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0cube2d.hh File Reference
    \n+
    lagrangecoefficients.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include "raviartthomas0cube2d/raviartthomas0cube2dall.hh"
    \n+
    #include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::RT0Cube2DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on rectangles. More...
    struct  Dune::LagrangeCoefficientsFactory< LP, dim, F >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0cube2d.hh File Reference\n+lagrangecoefficients.hh File Reference\n+#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\ba_\bl_\bl_\b._\bh_\bh\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 _\bZ_\be_\br_\bo order Raviart-Thomas shape functions on rectangles. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0cube2d.hh Source File\n+dune-localfunctions: lagrangecoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,119 +70,81 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0cube2d.hh
    \n+
    lagrangecoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LAGRANGECOEFFICIENTS_HH
    \n+
    6#define DUNE_LAGRANGECOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <vector>
    \n
    9
    \n-\n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    23 template<class D, class R>
    \n-
    \n-\n-
    25 {
    \n-
    26 public:
    \n-\n-\n-\n-\n-
    31
    \n-\n-
    34
    \n-
    \n-\n-
    36 basis(s),
    \n-
    37 interpolation(s)
    \n-
    38 {}
    \n-
    \n-
    39
    \n-
    \n-
    40 const typename Traits::LocalBasisType& localBasis () const
    \n-
    41 {
    \n-
    42 return basis;
    \n-
    43 }
    \n+
    10#include <dune/common/fvector.hh>
    \n+
    11
    \n+
    12#include <dune/geometry/type.hh>
    \n+
    13
    \n+\n+\n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    20 template< template <class,unsigned int> class LP,
    \n+
    21 unsigned int dim, class F>
    \n+
    \n+\n+
    23 {
    \n+
    24 static const unsigned int dimension = dim;
    \n+
    25 const typedef LP<F,dim> Object;
    \n+
    26 typedef std::size_t Key;
    \n+
    27
    \n+
    28 template< GeometryType::Id geometryId >
    \n+
    \n+
    29 static Object *create ( const Key &order )
    \n+
    30 {
    \n+
    31 if (order == 0 || !Object::template supports<geometryId>(order))
    \n+
    32 return 0;
    \n+
    33 typedef typename std::remove_const<Object>::type LagrangeCoefficients;
    \n+
    34 LagrangeCoefficients *object = new LagrangeCoefficients(order);
    \n+
    35 if ( !object->template build<geometryId>() )
    \n+
    36 {
    \n+
    37 delete object;
    \n+
    38 object = nullptr;
    \n+
    39 }
    \n+
    40 return object;
    \n+
    41 }
    \n+
    \n+
    42 static void release( Object *object ) { delete object; }
    \n+
    43 };
    \n
    \n
    44
    \n-
    \n-\n-
    46 {
    \n-
    47 return coefficients;
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    \n-\n-
    51 {
    \n-
    52 return interpolation;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    \n-
    56 unsigned int size () const
    \n-
    57 {
    \n-
    58 return basis.size();
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-
    61 static constexpr GeometryType type ()
    \n-
    62 {
    \n-
    63 return GeometryTypes::quadrilateral;
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    66 private:
    \n-\n-
    68 RT0Cube2DLocalCoefficients coefficients;
    \n-\n-
    70 };
    \n-
    \n-
    71}
    \n-
    72#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH
    \n-\n-\n+
    45}
    \n+
    46
    \n+
    47#endif // DUNE_LAGRANGECOEFFICIENTS_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Zero order Raviart-Thomas shape functions on rectangles.
    Definition raviartthomas0cube2d.hh:25
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas0cube2d.hh:45
    \n-
    RT0Cube2DLocalFiniteElement()
    Definition raviartthomas0cube2d.hh:32
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas0cube2d.hh:50
    \n-
    LocalFiniteElementTraits< RT0Cube2DLocalBasis< D, R >, RT0Cube2DLocalCoefficients, RT0Cube2DLocalInterpolation< RT0Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas0cube2d.hh:30
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas0cube2d.hh:56
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas0cube2d.hh:40
    \n-
    RT0Cube2DLocalFiniteElement(int s)
    Definition raviartthomas0cube2d.hh:35
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas0cube2d.hh:61
    \n-
    Definition raviartthomas0cube2dall.hh:30
    \n-
    Definition raviartthomas0cube2dall.hh:135
    \n-
    Definition raviartthomas0cube2dall.hh:187
    \n+
    Definition lagrangecoefficients.hh:23
    \n+
    static const unsigned int dimension
    Definition lagrangecoefficients.hh:24
    \n+
    static void release(Object *object)
    Definition lagrangecoefficients.hh:42
    \n+
    const typedef LP< F, dim > Object
    Definition lagrangecoefficients.hh:25
    \n+
    static Object * create(const Key &order)
    Definition lagrangecoefficients.hh:29
    \n+
    std::size_t Key
    Definition lagrangecoefficients.hh:26
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,127 +1,80 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas0cube2d.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+lagrangecoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LAGRANGECOEFFICIENTS_HH\n+6#define DUNE_LAGRANGECOEFFICIENTS_HH\n 7\n-8#include \n+8#include \n 9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\ba_\bl_\bl_\b._\bh_\bh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-23 template\n-_\b2_\b4 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-25 {\n-26 public:\n-27 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-28 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-29 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b0 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-31\n-_\b3_\b2 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-33 {}\n-34\n-_\b3_\b5 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-36 basis(s),\n-37 interpolation(s)\n-38 {}\n-39\n-_\b4_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-41 {\n-42 return basis;\n-43 }\n+10#include \n+11\n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+20 template< template class LP,\n+21 unsigned int dim, class F>\n+_\b2_\b2 struct _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+23 {\n+_\b2_\b4 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+_\b2_\b5 const typedef LP _\bO_\bb_\bj_\be_\bc_\bt;\n+_\b2_\b6 typedef std::size_t _\bK_\be_\by;\n+27\n+28 template< GeometryType::Id geometryId >\n+_\b2_\b9 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &order )\n+30 {\n+31 if (order == 0 || !Object::template supports(order))\n+32 return 0;\n+33 typedef typename std::remove_const::type LagrangeCoefficients;\n+34 LagrangeCoefficients *object = new LagrangeCoefficients(order);\n+35 if ( !object->template build() )\n+36 {\n+37 delete object;\n+38 object = nullptr;\n+39 }\n+40 return object;\n+41 }\n+_\b4_\b2 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+43 };\n 44\n-_\b4_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-46 {\n-47 return coefficients;\n-48 }\n-49\n-_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-51 {\n-52 return interpolation;\n-53 }\n-54\n-_\b5_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-57 {\n-58 return basis.size();\n-59 }\n-60\n-_\b6_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-62 {\n-63 return GeometryTypes::quadrilateral;\n-64 }\n-65\n-66 private:\n-67 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-68 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-69 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-70 };\n-71}\n-72#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\ba_\bl_\bl_\b._\bh_\bh\n+45}\n+46\n+47#endif // DUNE_LAGRANGECOEFFICIENTS_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Zero order Raviart-Thomas shape functions on rectangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT0Cube2DLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT0Cube2DLocalBasis< D, R >,\n-RT0Cube2DLocalCoefficients, RT0Cube2DLocalInterpolation< RT0Cube2DLocalBasis<\n-D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT0Cube2DLocalFiniteElement(int s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const typedef LP< F, dim > Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+std::size_t Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:26\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas3cube2dlocalbasis.hh File Reference\n+dune-localfunctions: equidistantpoints.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,52 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas3cube2dlocalbasis.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    equidistantpoints.hh File Reference
    \n \n
    \n-
    #include <bitset>
    \n-#include <numeric>
    \n+
    #include <cstddef>
    \n+#include <algorithm>
    \n #include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/lagrange/emptypoints.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::RT3Cube2DLocalBasis< D, R >
     Second order Raviart-Thomas shape functions on the reference quadrilateral. More...
    class  Dune::EquidistantPointSet< F, dim >
     
    \n \n \n \n+

    \n Namespaces

    namespace  Dune
     
    \n+\n+\n+\n+\n+\n+\n

    \n+Functions

    std::size_t Dune::numLagrangePoints (const GeometryType &gt, std::size_t order)
     
    template<class ct , unsigned int cdim>
    static unsigned int Dune::equidistantLagrangePoints (const GeometryType &gt, unsigned int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim > *points)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,34 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas3cube2dlocalbasis.hh File Reference\n-#include \n-#include \n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+equidistantpoints.hh File Reference\n+#include \n+#include \n #include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\be_\bm_\bp_\bt_\by_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 Second order Raviart-Thomas shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+ std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs (const GeometryType >, std::\n+ size_t order)\n+\u00a0\n+template\n+static unsigned int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs (const GeometryType >,\n+ unsigned int codim, std::size_t order, unsigned int\n+ *count, _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt< ct, cdim > *points)\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas3cube2dlocalbasis.hh Source File\n+dune-localfunctions: equidistantpoints.hh Source File\n \n \n \n \n \n \n \n@@ -70,659 +70,259 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas3cube2dlocalbasis.hh
    \n+
    equidistantpoints.hh
    \n
    \n
    \n-Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n-
    2// vi: set et ts=4 sw=2 sts=2:
    \n-
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n-
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n+Go to the documentation of this file.
    1// SPDX-FileCopyrightText: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n+
    2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n+
    3#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH
    \n+
    4#define DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH
    \n+
    5
    \n+
    6#include <cstddef>
    \n
    7
    \n-
    8#include <bitset>
    \n-
    9#include <numeric>
    \n-
    10#include <vector>
    \n-
    11
    \n-
    12#include <dune/common/fmatrix.hh>
    \n+
    8#include <algorithm>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/geometry/referenceelements.hh>
    \n+
    12#include <dune/geometry/type.hh>
    \n
    13
    \n-
    14#include "../../common/localbasis.hh"
    \n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    27 template<class D, class R>
    \n-
    \n-\n-
    29 {
    \n-
    30
    \n-
    31 public:
    \n-
    32 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    33 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    34
    \n-
    \n-
    40 RT3Cube2DLocalBasis (std::bitset<4> s = 0)
    \n-
    41 {
    \n-
    42 sign0 = (s[0]) ? -1.0 : 1.0;
    \n-
    43 sign1 = (s[1]) ? -1.0 : 1.0;
    \n-
    44 sign2 = (s[2]) ? -1.0 : 1.0;
    \n-
    45 sign3 = (s[3]) ? -1.0 : 1.0;
    \n-
    46 }
    \n-
    \n+\n+\n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    20 // numLagrangePoints
    \n+
    21 // -----------------
    \n+
    22
    \n+
    \n+
    23 inline std::size_t numLagrangePoints ( const GeometryType& gt, std::size_t order )
    \n+
    24 {
    \n+
    25 const int dim = gt.dim();
    \n+
    26 if( dim > 0 )
    \n+
    27 {
    \n+
    28 const GeometryType baseGeometryType = Impl::getBase( gt );
    \n+
    29 if( gt.isConical() )
    \n+
    30 {
    \n+
    31 std::size_t size = 0;
    \n+
    32 for( unsigned int o = 0; o <= order; ++o )
    \n+
    33 size += numLagrangePoints( baseGeometryType, o );
    \n+
    34 return size;
    \n+
    35 }
    \n+
    36 else
    \n+
    37 return numLagrangePoints( baseGeometryType, order ) * (order+1);
    \n+
    38 }
    \n+
    39 else
    \n+
    40 return 1;
    \n+
    41 }
    \n+
    \n+
    42
    \n+
    43
    \n+
    44
    \n+
    45 // equidistantLagrangePoints
    \n+
    46 // -------------------------
    \n
    47
    \n+
    48 template< class ct, unsigned int cdim >
    \n
    \n-
    49 unsigned int size () const
    \n-
    50 {
    \n-
    51 return 40;
    \n-
    52 }
    \n-
    \n+
    49 inline static unsigned int equidistantLagrangePoints ( const GeometryType& gt, unsigned int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim > *points )
    \n+
    50 {
    \n+
    51 const unsigned int dim = gt.dim();
    \n+
    52 assert( (0 <= codim) && (codim <= dim) && (dim <= cdim) );
    \n
    53
    \n-
    \n-
    60 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    61 std::vector<typename Traits::RangeType>& out) const
    \n-
    62 {
    \n-
    63 out.resize(40);
    \n-
    64 auto const& x = in[0], y = in[1];
    \n-
    65
    \n-
    66 const auto tmp1 = - x*(x*(x*(35*x - 80) + 60) - 16) - 1;
    \n-
    67 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;
    \n-
    68 const auto tmp3 = 2*y - 1;
    \n-
    69 const auto tmp4 = y*(6*y - 6) + 1;
    \n-
    70 const auto tmp5 = y*(y*(20*y - 30) + 12) - 1;
    \n-
    71 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);
    \n-
    72 const auto tmp7 = - y*(y*(y*(35*y - 80) + 60) - 16) - 1;
    \n-
    73 const auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;
    \n-
    74 const auto tmp9 = 2*x - 1;
    \n-
    75 const auto tmp10 = x*(6*x - 6) + 1;
    \n-
    76 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;
    \n-
    77 const auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);
    \n-
    78 const auto tmp13 = -x*(x*(x*(7*x - 14) + 9) - 2);
    \n-
    79 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);
    \n-
    80 const auto tmp15 = x*(x*(2*x - 3) + 1);
    \n-
    81 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);
    \n-
    82 const auto tmp17 = -y*(y*(y*(7*y - 14) + 9) - 2);
    \n-
    83 const auto tmp18 = y*(y*(2*y - 3) + 1);
    \n-
    84 const auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);
    \n-
    85 const auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);
    \n+
    54 if( dim > 0 )
    \n+
    55 {
    \n+
    56 const GeometryType baseGeometryType = Impl::getBase( gt );
    \n+
    57 const unsigned int numBaseN = (codim < dim ? Geo::Impl::size( baseGeometryType.id(), baseGeometryType.dim(), codim ) : 0);
    \n+
    58 const unsigned int numBaseM = (codim > 0 ? Geo::Impl::size( baseGeometryType.id(), baseGeometryType.dim(), codim-1 ) : 0);
    \n+
    59
    \n+
    60 if( gt.isPrismatic() )
    \n+
    61 {
    \n+
    62 unsigned int size = 0;
    \n+
    63 if( codim < dim )
    \n+
    64 {
    \n+
    65 for( unsigned int i = 1; i < order; ++i )
    \n+
    66 {
    \n+
    67 const unsigned int n = equidistantLagrangePoints( baseGeometryType, codim, order, count, points );
    \n+
    68 for( unsigned int j = 0; j < n; ++j )
    \n+
    69 {
    \n+
    70 LocalKey &key = points->localKey_;
    \n+
    71 key = LocalKey( key.subEntity(), codim, key.index() );
    \n+
    72 points->point_[ dim-1 ] = ct( i ) / ct( order );
    \n+
    73 ++points;
    \n+
    74 }
    \n+
    75 size += n;
    \n+
    76 }
    \n+
    77 }
    \n+
    78
    \n+
    79 if( codim > 0 )
    \n+
    80 {
    \n+
    81 const unsigned int n = equidistantLagrangePoints( baseGeometryType, codim-1, order, count+numBaseN, points );
    \n+
    82 for( unsigned int j = 0; j < n; ++j )
    \n+
    83 {
    \n+
    84 LocalKey &key = points[ j ].localKey_;
    \n+
    85 key = LocalKey( key.subEntity() + numBaseN, codim, key.index() );
    \n
    86
    \n-
    87 out[0][0]=sign0*tmp1;
    \n-
    88 out[0][1]=0;
    \n-
    89 out[1][0]=(-3.0*tmp2*tmp3);
    \n-
    90 out[1][1]=0;
    \n-
    91 out[2][0]=sign0*(-5.0*tmp2*tmp4);
    \n-
    92 out[2][1]=0;
    \n-
    93 out[3][0]=(-7.0*tmp2*tmp5);
    \n-
    94 out[3][1]=0;
    \n-
    95
    \n-
    96 out[4][0]=sign1*tmp6;
    \n-
    97 out[4][1]=0;
    \n-
    98 out[5][0]=(-3.0*tmp6*tmp3);
    \n-
    99 out[5][1]=0;
    \n-
    100 out[6][0]=sign1*(5.0*tmp6*tmp4);
    \n-
    101 out[6][1]=0;
    \n-
    102 out[7][0]=(-7.0*tmp6*tmp5);
    \n-
    103 out[7][1]=0;
    \n-
    104
    \n-
    105 out[8][0]=0;
    \n-
    106 out[8][1]=sign2*tmp7;
    \n-
    107 out[9][0]=0;
    \n-
    108 out[9][1]=3.0*tmp9*tmp8;
    \n-
    109 out[10][0]=0;
    \n-
    110 out[10][1]=sign2*(-5.0*tmp10*tmp8);
    \n-
    111 out[11][0]=0;
    \n-
    112 out[11][1]=7.0*tmp11*tmp8;
    \n-
    113
    \n-
    114 out[12][0]=0;
    \n-
    115 out[12][1]=sign3*tmp12;
    \n-
    116 out[13][0]=0;
    \n-
    117 out[13][1]=3.0*tmp9*tmp12;
    \n-
    118 out[14][0]=0;
    \n-
    119 out[14][1]=sign3*5.0*tmp10*tmp12;
    \n-
    120 out[15][0]=0;
    \n-
    121 out[15][1]=7.0*tmp11*tmp12;
    \n-
    122
    \n-
    123 out[16][0]=10.0*tmp13;
    \n-
    124 out[16][1]=0;
    \n-
    125 out[17][0]=-30.0*tmp14*tmp3;
    \n-
    126 out[17][1]=0;
    \n-
    127 out[18][0]=-50.0*tmp14*tmp4;
    \n-
    128 out[18][1]=0;
    \n-
    129 out[19][0]=-70.0*tmp14*tmp5;
    \n-
    130 out[19][1]=0;
    \n-
    131 out[20][0]=-30.0*tmp15;
    \n-
    132 out[20][1]=0;
    \n-
    133 out[21][0]=-90.0*tmp15*tmp3;
    \n-
    134 out[21][1]=0;
    \n-
    135 out[22][0]=-150.0*tmp15*tmp4;
    \n-
    136 out[22][1]=0;
    \n-
    137 out[23][0]=-210.0*tmp15*tmp5;
    \n-
    138 out[23][1]=0;
    \n-
    139 out[24][0]=-70.0*tmp16;
    \n-
    140 out[24][1]=0;
    \n-
    141 out[25][0]=-210.0*tmp16*tmp3;
    \n-
    142 out[25][1]=0;
    \n-
    143 out[26][0]=-350.0*tmp16*tmp4;
    \n-
    144 out[26][1]=0;
    \n-
    145 out[27][0]=-490.0*tmp16*tmp5;
    \n-
    146 out[27][1]=0;
    \n-
    147 out[28][0]=0;
    \n-
    148 out[28][1]=10.0*tmp17;
    \n-
    149 out[29][0]=0;
    \n-
    150 out[29][1]=-30.0*tmp18;
    \n-
    151 out[30][0]=0;
    \n-
    152 out[30][1]=-70.0*tmp19;
    \n-
    153 out[31][0]=0;
    \n-
    154 out[31][1]=-30.0*tmp9*tmp20;
    \n-
    155 out[32][0]=0;
    \n-
    156 out[32][1]=-90.0*tmp9*tmp18;
    \n-
    157 out[33][0]=0;
    \n-
    158 out[33][1]=-210.0*tmp9*tmp19;
    \n-
    159 out[34][0]=0;
    \n-
    160 out[34][1]=-50.0*tmp10*tmp20;
    \n-
    161 out[35][0]=0;
    \n-
    162 out[35][1]=-150.0*tmp10*tmp18;
    \n-
    163 out[36][0]=0;
    \n-
    164 out[36][1]=-350.0*tmp10*tmp19;
    \n-
    165 out[37][0]=0;
    \n-
    166 out[37][1]=-70.0*tmp11*tmp20;
    \n-
    167 out[38][0]=0;
    \n-
    168 out[38][1]=-210.0*tmp11*tmp18;
    \n-
    169 out[39][0]=0;
    \n-
    170 out[39][1]=-490.0*tmp11*tmp19;
    \n-
    171 }
    \n-
    \n-
    172
    \n-
    \n-
    179 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    180 std::vector<typename Traits::JacobianType>& out) const
    \n-
    181 {
    \n-
    182 out.resize(40);
    \n-
    183 auto const& x = in[0], y = in[1];
    \n-
    184
    \n-
    185 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;
    \n-
    186 const auto tmp3 = 2*y - 1;
    \n-
    187 const auto tmp4 = y*(6*y - 6) + 1;
    \n-
    188 const auto tmp5 = y*(y*(20*y - 30) + 12) - 1;
    \n-
    189 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);
    \n-
    190 const auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;
    \n-
    191 const auto tmp9 = 2*x - 1;
    \n-
    192 const auto tmp10 = x*(6*x - 6) + 1;
    \n-
    193 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;
    \n-
    194 const auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);
    \n-
    195 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);
    \n-
    196 const auto tmp15 = x*(x*(2*x - 3) + 1);
    \n-
    197 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);
    \n-
    198 const auto tmp18 = y*(y*(2*y - 3) + 1);
    \n-
    199 const auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);
    \n-
    200 const auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);
    \n-
    201 // temporaries tmp1, tmp7, tmp13, tmp17 are not used in jacobian
    \n-
    202
    \n-
    203 const auto dxtmp1 = 16 - x*(x*(140*x - 240) + 120);
    \n-
    204 const auto dxtmp2 = x*(x*(140*x - 240) + 120) - 16;
    \n-
    205 const auto dytmp3 = 2;
    \n-
    206 const auto dytmp4 = 12*y - 6;
    \n-
    207 const auto dytmp5 = y*(60*y - 60) + 12;
    \n-
    208 const auto dxtmp6 = x*(x*(140*x - 180) + 60) - 4;
    \n-
    209 const auto dytmp7 = 16 - y*(y*(140*y - 240) + 120);
    \n-
    210 const auto dytmp8 = y*(y*(140*y - 240) + 120) - 16;
    \n-
    211 const auto dxtmp9 = 2;
    \n-
    212 const auto dxtmp10 = 12*x - 6;
    \n-
    213 const auto dxtmp11 = x*(60*x - 60) + 12;
    \n-
    214 const auto dytmp12 = y*(y*(140*y - 180) + 60) - 4;
    \n-
    215 const auto dxtmp13 = 2 - x*(x*(28*x - 42) + 18);
    \n-
    216 const auto dxtmp14 = x*(x*(28*x - 42) + 18) - 2;
    \n-
    217 const auto dxtmp15 = x*(6*x - 6) + 1;
    \n-
    218 const auto dxtmp16 = x*(x*(20*x - 30) + 12) - 1;
    \n-
    219 const auto dytmp17 = 2 - y*(y*(28*y - 42) + 18);
    \n-
    220 const auto dytmp18 = y*(6*y - 6) + 1;
    \n-
    221 const auto dytmp19 = y*(y*(20*y - 30) + 12) - 1;
    \n-
    222 const auto dytmp20 = y*(y*(28*y - 42) + 18) - 2;
    \n-
    223
    \n-
    224
    \n-
    225 // x-component
    \n-
    226 out[0][0][0]=sign0*dxtmp1;
    \n-
    227 out[0][1][0]=0;
    \n-
    228 out[1][0][0]=(-3.0*dxtmp2*tmp3);
    \n-
    229 out[1][1][0]=0;
    \n-
    230 out[2][0][0]=sign0*(-5.0*dxtmp2*tmp4);
    \n-
    231 out[2][1][0]=0;
    \n-
    232 out[3][0][0]=(-7.0*dxtmp2*tmp5);
    \n-
    233 out[3][1][0]=0;
    \n-
    234
    \n-
    235 out[4][0][0]=sign1*dxtmp6;
    \n-
    236 out[4][1][0]=0;
    \n-
    237 out[5][0][0]=(-3.0*dxtmp6*tmp3);
    \n-
    238 out[5][1][0]=0;
    \n-
    239 out[6][0][0]=sign1*(5.0*dxtmp6*tmp4);
    \n-
    240 out[6][1][0]=0;
    \n-
    241 out[7][0][0]=(-7.0*dxtmp6*tmp5);
    \n-
    242 out[7][1][0]=0;
    \n-
    243
    \n-
    244 out[8][0][0]=0;
    \n-
    245 out[8][1][0]=0;
    \n-
    246 out[9][0][0]=0;
    \n-
    247 out[9][1][0]=3.0*dxtmp9*tmp8;
    \n-
    248 out[10][0][0]=0;
    \n-
    249 out[10][1][0]=sign2*(-5.0*dxtmp10*tmp8);
    \n-
    250 out[11][0][0]=0;
    \n-
    251 out[11][1][0]=7.0*dxtmp11*tmp8;
    \n-
    252
    \n-
    253 out[12][0][0]=0;
    \n-
    254 out[12][1][0]=0;
    \n-
    255 out[13][0][0]=0;
    \n-
    256 out[13][1][0]=3.0*dxtmp9*tmp12;
    \n-
    257 out[14][0][0]=0;
    \n-
    258 out[14][1][0]=sign3*5.0*dxtmp10*tmp12;
    \n-
    259 out[15][0][0]=0;
    \n-
    260 out[15][1][0]=7.0*dxtmp11*tmp12;
    \n-
    261
    \n-
    262 out[16][0][0]=10.0*dxtmp13;
    \n-
    263 out[16][1][0]=0;
    \n-
    264 out[17][0][0]=-30.0*dxtmp14*tmp3;
    \n-
    265 out[17][1][0]=0;
    \n-
    266 out[18][0][0]=-50.0*dxtmp14*tmp4;
    \n-
    267 out[18][1][0]=0;
    \n-
    268 out[19][0][0]=-70.0*dxtmp14*tmp5;
    \n-
    269 out[19][1][0]=0;
    \n-
    270 out[20][0][0]=-30.0*dxtmp15;
    \n-
    271 out[20][1][0]=0;
    \n-
    272 out[21][0][0]=-90.0*dxtmp15*tmp3;
    \n-
    273 out[21][1][0]=0;
    \n-
    274 out[22][0][0]=-150.0*dxtmp15*tmp4;
    \n-
    275 out[22][1][0]=0;
    \n-
    276 out[23][0][0]=-210.0*dxtmp15*tmp5;
    \n-
    277 out[23][1][0]=0;
    \n-
    278 out[24][0][0]=-70.0*dxtmp16;
    \n-
    279 out[24][1][0]=0;
    \n-
    280 out[25][0][0]=-210.0*dxtmp16*tmp3;
    \n-
    281 out[25][1][0]=0;
    \n-
    282 out[26][0][0]=-350.0*dxtmp16*tmp4;
    \n-
    283 out[26][1][0]=0;
    \n-
    284 out[27][0][0]=-490.0*dxtmp16*tmp5;
    \n-
    285 out[27][1][0]=0;
    \n-
    286 out[28][0][0]=0;
    \n-
    287 out[28][1][0]=0;
    \n-
    288 out[29][0][0]=0;
    \n-
    289 out[29][1][0]=0;
    \n-
    290 out[30][0][0]=0;
    \n-
    291 out[30][1][0]=0;
    \n-
    292 out[31][0][0]=0;
    \n-
    293 out[31][1][0]=-30.0*dxtmp9*tmp20;
    \n-
    294 out[32][0][0]=0;
    \n-
    295 out[32][1][0]=-90.0*dxtmp9*tmp18;
    \n-
    296 out[33][0][0]=0;
    \n-
    297 out[33][1][0]=-210.0*dxtmp9*tmp19;
    \n-
    298 out[34][0][0]=0;
    \n-
    299 out[34][1][0]=-50.0*dxtmp10*tmp20;
    \n-
    300 out[35][0][0]=0;
    \n-
    301 out[35][1][0]=-150.0*dxtmp10*tmp18;
    \n-
    302 out[36][0][0]=0;
    \n-
    303 out[36][1][0]=-350.0*dxtmp10*tmp19;
    \n-
    304 out[37][0][0]=0;
    \n-
    305 out[37][1][0]=-70.0*dxtmp11*tmp20;
    \n-
    306 out[38][0][0]=0;
    \n-
    307 out[38][1][0]=-210.0*dxtmp11*tmp18;
    \n-
    308 out[39][0][0]=0;
    \n-
    309 out[39][1][0]=-490.0*dxtmp11*tmp19;
    \n-
    310
    \n-
    311
    \n-
    312 // y-component
    \n-
    313 out[0][0][1]=0;
    \n-
    314 out[0][1][1]=0;
    \n-
    315 out[1][0][1]=(-3.0*tmp2*dytmp3);
    \n-
    316 out[1][1][1]=0;
    \n-
    317 out[2][0][1]=sign0*(-5.0*tmp2*dytmp4);
    \n-
    318 out[2][1][1]=0;
    \n-
    319 out[3][0][1]=(-7.0*tmp2*dytmp5);
    \n-
    320 out[3][1][1]=0;
    \n-
    321
    \n-
    322 out[4][0][1]=0;
    \n-
    323 out[4][1][1]=0;
    \n-
    324 out[5][0][1]=(-3.0*tmp6*dytmp3);
    \n-
    325 out[5][1][1]=0;
    \n-
    326 out[6][0][1]=sign1*(5.0*tmp6*dytmp4);
    \n-
    327 out[6][1][1]=0;
    \n-
    328 out[7][0][1]=(-7.0*tmp6*dytmp5);
    \n-
    329 out[7][1][1]=0;
    \n-
    330
    \n-
    331 out[8][0][1]=0;
    \n-
    332 out[8][1][1]=sign2*dytmp7;
    \n-
    333 out[9][0][1]=0;
    \n-
    334 out[9][1][1]=3.0*tmp9*dytmp8;
    \n-
    335 out[10][0][1]=0;
    \n-
    336 out[10][1][1]=sign2*(-5.0*tmp10*dytmp8);
    \n-
    337 out[11][0][1]=0;
    \n-
    338 out[11][1][1]=7.0*tmp11*dytmp8;
    \n-
    339
    \n-
    340 out[12][0][1]=0;
    \n-
    341 out[12][1][1]=sign3*dytmp12;
    \n-
    342 out[13][0][1]=0;
    \n-
    343 out[13][1][1]=3.0*tmp9*dytmp12;
    \n-
    344 out[14][0][1]=0;
    \n-
    345 out[14][1][1]=sign3*5.0*tmp10*dytmp12;
    \n-
    346 out[15][0][1]=0;
    \n-
    347 out[15][1][1]=7.0*tmp11*dytmp12;
    \n-
    348
    \n-
    349 out[16][0][1]=0;
    \n-
    350 out[16][1][1]=0;
    \n-
    351 out[17][0][1]=-30.0*tmp14*dytmp3;
    \n-
    352 out[17][1][1]=0;
    \n-
    353 out[18][0][1]=-50.0*tmp14*dytmp4;
    \n-
    354 out[18][1][1]=0;
    \n-
    355 out[19][0][1]=-70.0*tmp14*dytmp5;
    \n-
    356 out[19][1][1]=0;
    \n-
    357 out[20][0][1]=0;
    \n-
    358 out[20][1][1]=0;
    \n-
    359 out[21][0][1]=-90.0*tmp15*dytmp3;
    \n-
    360 out[21][1][1]=0;
    \n-
    361 out[22][0][1]=-150.0*tmp15*dytmp4;
    \n-
    362 out[22][1][1]=0;
    \n-
    363 out[23][0][1]=-210.0*tmp15*dytmp5;
    \n-
    364 out[23][1][1]=0;
    \n-
    365 out[24][0][1]=0;
    \n-
    366 out[24][1][1]=0;
    \n-
    367 out[25][0][1]=-210.0*tmp16*dytmp3;
    \n-
    368 out[25][1][1]=0;
    \n-
    369 out[26][0][1]=-350.0*tmp16*dytmp4;
    \n-
    370 out[26][1][1]=0;
    \n-
    371 out[27][0][1]=-490.0*tmp16*dytmp5;
    \n-
    372 out[27][1][1]=0;
    \n-
    373 out[28][0][1]=0;
    \n-
    374 out[28][1][1]=10.0*dytmp17;
    \n-
    375 out[29][0][1]=0;
    \n-
    376 out[29][1][1]=-30.0*dytmp18;
    \n-
    377 out[30][0][1]=0;
    \n-
    378 out[30][1][1]=-70.0*dytmp19;
    \n-
    379 out[31][0][1]=0;
    \n-
    380 out[31][1][1]=-30.0*tmp9*dytmp20;
    \n-
    381 out[32][0][1]=0;
    \n-
    382 out[32][1][1]=-90.0*tmp9*dytmp18;
    \n-
    383 out[33][0][1]=0;
    \n-
    384 out[33][1][1]=-210.0*tmp9*dytmp19;
    \n-
    385 out[34][0][1]=0;
    \n-
    386 out[34][1][1]=-50.0*tmp10*dytmp20;
    \n-
    387 out[35][0][1]=0;
    \n-
    388 out[35][1][1]=-150.0*tmp10*dytmp18;
    \n-
    389 out[36][0][1]=0;
    \n-
    390 out[36][1][1]=-350.0*tmp10*dytmp19;
    \n-
    391 out[37][0][1]=0;
    \n-
    392 out[37][1][1]=-70.0*tmp11*dytmp20;
    \n-
    393 out[38][0][1]=0;
    \n-
    394 out[38][1][1]=-210.0*tmp11*dytmp18;
    \n-
    395 out[39][0][1]=0;
    \n-
    396 out[39][1][1]=-490.0*tmp11*dytmp19;
    \n-
    397
    \n-
    398 }
    \n-
    \n-
    399
    \n-
    \n-
    401 void partial (const std::array<unsigned int, 2>& order,
    \n-
    402 const typename Traits::DomainType& in, // position
    \n-
    403 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    404 {
    \n-
    405 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    406 if (totalOrder == 0) {
    \n-
    407 evaluateFunction(in, out);
    \n-
    408 } else if (totalOrder == 1) {
    \n-
    409 out.resize(size());
    \n-
    410 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    411 auto const& x = in[0], y = in[1];
    \n-
    412
    \n-
    413 if (direction == 0) {
    \n-
    414 auto tmp3 = 2*y - 1;
    \n-
    415 auto tmp4 = y*(6*y - 6) + 1;
    \n-
    416 auto tmp5 = y*(y*(20*y - 30) + 12) - 1;
    \n-
    417 auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;
    \n-
    418 auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);
    \n-
    419 auto tmp18 = y*(y*(2*y - 3) + 1);
    \n-
    420 auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);
    \n-
    421 auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);
    \n-
    422
    \n-
    423 auto dxtmp1 = 16 - x*(x*(140*x - 240) + 120);
    \n-
    424 auto dxtmp2 = x*(x*(140*x - 240) + 120) - 16;
    \n-
    425 auto dxtmp6 = x*(x*(140*x - 180) + 60) - 4;
    \n-
    426 auto dxtmp9 = 2;
    \n-
    427 auto dxtmp10 = 12*x - 6;
    \n-
    428 auto dxtmp11 = x*(60*x - 60) + 12;
    \n-
    429 auto dxtmp13 = 2 - x*(x*(28*x - 42) + 18);
    \n-
    430 auto dxtmp14 = x*(x*(28*x - 42) + 18) - 2;
    \n-
    431 auto dxtmp15 = x*(6*x - 6) + 1;
    \n-
    432 auto dxtmp16 = x*(x*(20*x - 30) + 12) - 1;
    \n-
    433
    \n-
    434 out[0][0]=sign0*dxtmp1;
    \n-
    435 out[0][1]=0;
    \n-
    436 out[1][0]=(-3.0*dxtmp2*tmp3);
    \n-
    437 out[1][1]=0;
    \n-
    438 out[2][0]=sign0*(-5.0*dxtmp2*tmp4);
    \n-
    439 out[2][1]=0;
    \n-
    440 out[3][0]=(-7.0*dxtmp2*tmp5);
    \n-
    441 out[3][1]=0;
    \n-
    442
    \n-
    443 out[4][0]=sign1*dxtmp6;
    \n-
    444 out[4][1]=0;
    \n-
    445 out[5][0]=(-3.0*dxtmp6*tmp3);
    \n-
    446 out[5][1]=0;
    \n-
    447 out[6][0]=sign1*(5.0*dxtmp6*tmp4);
    \n-
    448 out[6][1]=0;
    \n-
    449 out[7][0]=(-7.0*dxtmp6*tmp5);
    \n-
    450 out[7][1]=0;
    \n-
    451
    \n-
    452 out[8][0]=0;
    \n-
    453 out[8][1]=0;
    \n-
    454 out[9][0]=0;
    \n-
    455 out[9][1]=3.0*dxtmp9*tmp8;
    \n-
    456 out[10][0]=0;
    \n-
    457 out[10][1]=sign2*(-5.0*dxtmp10*tmp8);
    \n-
    458 out[11][0]=0;
    \n-
    459 out[11][1]=7.0*dxtmp11*tmp8;
    \n-
    460
    \n-
    461 out[12][0]=0;
    \n-
    462 out[12][1]=0;
    \n-
    463 out[13][0]=0;
    \n-
    464 out[13][1]=3.0*dxtmp9*tmp12;
    \n-
    465 out[14][0]=0;
    \n-
    466 out[14][1]=sign3*5.0*dxtmp10*tmp12;
    \n-
    467 out[15][0]=0;
    \n-
    468 out[15][1]=7.0*dxtmp11*tmp12;
    \n-
    469
    \n-
    470 out[16][0]=10.0*dxtmp13;
    \n-
    471 out[16][1]=0;
    \n-
    472 out[17][0]=-30.0*dxtmp14*tmp3;
    \n-
    473 out[17][1]=0;
    \n-
    474 out[18][0]=-50.0*dxtmp14*tmp4;
    \n-
    475 out[18][1]=0;
    \n-
    476 out[19][0]=-70.0*dxtmp14*tmp5;
    \n-
    477 out[19][1]=0;
    \n-
    478 out[20][0]=-30.0*dxtmp15;
    \n-
    479 out[20][1]=0;
    \n-
    480 out[21][0]=-90.0*dxtmp15*tmp3;
    \n-
    481 out[21][1]=0;
    \n-
    482 out[22][0]=-150.0*dxtmp15*tmp4;
    \n-
    483 out[22][1]=0;
    \n-
    484 out[23][0]=-210.0*dxtmp15*tmp5;
    \n-
    485 out[23][1]=0;
    \n-
    486 out[24][0]=-70.0*dxtmp16;
    \n-
    487 out[24][1]=0;
    \n-
    488 out[25][0]=-210.0*dxtmp16*tmp3;
    \n-
    489 out[25][1]=0;
    \n-
    490 out[26][0]=-350.0*dxtmp16*tmp4;
    \n-
    491 out[26][1]=0;
    \n-
    492 out[27][0]=-490.0*dxtmp16*tmp5;
    \n-
    493 out[27][1]=0;
    \n-
    494 out[28][0]=0;
    \n-
    495 out[28][1]=0;
    \n-
    496 out[29][0]=0;
    \n-
    497 out[29][1]=0;
    \n-
    498 out[30][0]=0;
    \n-
    499 out[30][1]=0;
    \n-
    500 out[31][0]=0;
    \n-
    501 out[31][1]=-30.0*dxtmp9*tmp20;
    \n-
    502 out[32][0]=0;
    \n-
    503 out[32][1]=-90.0*dxtmp9*tmp18;
    \n-
    504 out[33][0]=0;
    \n-
    505 out[33][1]=-210.0*dxtmp9*tmp19;
    \n-
    506 out[34][0]=0;
    \n-
    507 out[34][1]=-50.0*dxtmp10*tmp20;
    \n-
    508 out[35][0]=0;
    \n-
    509 out[35][1]=-150.0*dxtmp10*tmp18;
    \n-
    510 out[36][0]=0;
    \n-
    511 out[36][1]=-350.0*dxtmp10*tmp19;
    \n-
    512 out[37][0]=0;
    \n-
    513 out[37][1]=-70.0*dxtmp11*tmp20;
    \n-
    514 out[38][0]=0;
    \n-
    515 out[38][1]=-210.0*dxtmp11*tmp18;
    \n-
    516 out[39][0]=0;
    \n-
    517 out[39][1]=-490.0*dxtmp11*tmp19;
    \n-
    518 } else if (direction == 1) {
    \n-
    519 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;
    \n-
    520 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);
    \n-
    521 const auto tmp9 = 2*x - 1;
    \n-
    522 const auto tmp10 = x*(6*x - 6) + 1;
    \n-
    523 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;
    \n-
    524 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);
    \n-
    525 const auto tmp15 = x*(x*(2*x - 3) + 1);
    \n-
    526 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);
    \n-
    527
    \n-
    528 const auto dytmp3 = 2;
    \n-
    529 const auto dytmp4 = 12*y - 6;
    \n-
    530 const auto dytmp5 = y*(60*y - 60) + 12;
    \n-
    531 const auto dytmp7 = 16 - y*(y*(140*y - 240) + 120);
    \n-
    532 const auto dytmp8 = y*(y*(140*y - 240) + 120) - 16;
    \n-
    533 const auto dytmp12 = y*(y*(140*y - 180) + 60) - 4;
    \n-
    534 const auto dytmp17 = 2 - y*(y*(28*y - 42) + 18);
    \n-
    535 const auto dytmp18 = y*(6*y - 6) + 1;
    \n-
    536 const auto dytmp19 = y*(y*(20*y - 30) + 12) - 1;
    \n-
    537 const auto dytmp20 = y*(y*(28*y - 42) + 18) - 2;
    \n-
    538
    \n-
    539 out[0][0]=0;
    \n-
    540 out[0][1]=0;
    \n-
    541 out[1][0]=(-3.0*tmp2*dytmp3);
    \n-
    542 out[1][1]=0;
    \n-
    543 out[2][0]=sign0*(-5.0*tmp2*dytmp4);
    \n-
    544 out[2][1]=0;
    \n-
    545 out[3][0]=(-7.0*tmp2*dytmp5);
    \n-
    546 out[3][1]=0;
    \n-
    547
    \n-
    548 out[4][0]=0;
    \n-
    549 out[4][1]=0;
    \n-
    550 out[5][0]=(-3.0*tmp6*dytmp3);
    \n-
    551 out[5][1]=0;
    \n-
    552 out[6][0]=sign1*(5.0*tmp6*dytmp4);
    \n-
    553 out[6][1]=0;
    \n-
    554 out[7][0]=(-7.0*tmp6*dytmp5);
    \n-
    555 out[7][1]=0;
    \n-
    556
    \n-
    557 out[8][0]=0;
    \n-
    558 out[8][1]=sign2*dytmp7;
    \n-
    559 out[9][0]=0;
    \n-
    560 out[9][1]=3.0*tmp9*dytmp8;
    \n-
    561 out[10][0]=0;
    \n-
    562 out[10][1]=sign2*(-5.0*tmp10*dytmp8);
    \n-
    563 out[11][0]=0;
    \n-
    564 out[11][1]=7.0*tmp11*dytmp8;
    \n-
    565
    \n-
    566 out[12][0]=0;
    \n-
    567 out[12][1]=sign3*dytmp12;
    \n-
    568 out[13][0]=0;
    \n-
    569 out[13][1]=3.0*tmp9*dytmp12;
    \n-
    570 out[14][0]=0;
    \n-
    571 out[14][1]=sign3*5.0*tmp10*dytmp12;
    \n-
    572 out[15][0]=0;
    \n-
    573 out[15][1]=7.0*tmp11*dytmp12;
    \n-
    574
    \n-
    575 out[16][0]=0;
    \n-
    576 out[16][1]=0;
    \n-
    577 out[17][0]=-30.0*tmp14*dytmp3;
    \n-
    578 out[17][1]=0;
    \n-
    579 out[18][0]=-50.0*tmp14*dytmp4;
    \n-
    580 out[18][1]=0;
    \n-
    581 out[19][0]=-70.0*tmp14*dytmp5;
    \n-
    582 out[19][1]=0;
    \n-
    583 out[20][0]=0;
    \n-
    584 out[20][1]=0;
    \n-
    585 out[21][0]=-90.0*tmp15*dytmp3;
    \n-
    586 out[21][1]=0;
    \n-
    587 out[22][0]=-150.0*tmp15*dytmp4;
    \n-
    588 out[22][1]=0;
    \n-
    589 out[23][0]=-210.0*tmp15*dytmp5;
    \n-
    590 out[23][1]=0;
    \n-
    591 out[24][0]=0;
    \n-
    592 out[24][1]=0;
    \n-
    593 out[25][0]=-210.0*tmp16*dytmp3;
    \n-
    594 out[25][1]=0;
    \n-
    595 out[26][0]=-350.0*tmp16*dytmp4;
    \n-
    596 out[26][1]=0;
    \n-
    597 out[27][0]=-490.0*tmp16*dytmp5;
    \n-
    598 out[27][1]=0;
    \n-
    599 out[28][0]=0;
    \n-
    600 out[28][1]=10.0*dytmp17;
    \n-
    601 out[29][0]=0;
    \n-
    602 out[29][1]=-30.0*dytmp18;
    \n-
    603 out[30][0]=0;
    \n-
    604 out[30][1]=-70.0*dytmp19;
    \n-
    605 out[31][0]=0;
    \n-
    606 out[31][1]=-30.0*tmp9*dytmp20;
    \n-
    607 out[32][0]=0;
    \n-
    608 out[32][1]=-90.0*tmp9*dytmp18;
    \n-
    609 out[33][0]=0;
    \n-
    610 out[33][1]=-210.0*tmp9*dytmp19;
    \n-
    611 out[34][0]=0;
    \n-
    612 out[34][1]=-50.0*tmp10*dytmp20;
    \n-
    613 out[35][0]=0;
    \n-
    614 out[35][1]=-150.0*tmp10*dytmp18;
    \n-
    615 out[36][0]=0;
    \n-
    616 out[36][1]=-350.0*tmp10*dytmp19;
    \n-
    617 out[37][0]=0;
    \n-
    618 out[37][1]=-70.0*tmp11*dytmp20;
    \n-
    619 out[38][0]=0;
    \n-
    620 out[38][1]=-210.0*tmp11*dytmp18;
    \n-
    621 out[39][0]=0;
    \n-
    622 out[39][1]=-490.0*tmp11*dytmp19;
    \n-
    623 } else {
    \n-
    624 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    625 }
    \n-
    626 } else {
    \n-
    627 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    628 }
    \n-
    629 }
    \n-
    \n-
    630
    \n-
    \n-
    632 unsigned int order () const
    \n-
    633 {
    \n-
    634 return 7;
    \n-
    635 }
    \n-
    \n-
    636
    \n-
    637 private:
    \n-
    638 R sign0, sign1, sign2, sign3;
    \n-
    639 };
    \n-
    \n-
    640}
    \n-
    641
    \n-
    642#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n+
    87 points[ j + n ].point_ = points[ j ].point_;
    \n+
    88 points[ j + n ].point_[ dim-1 ] = ct( 1 );
    \n+
    89 points[ j + n ].localKey_ = LocalKey( key.subEntity() + numBaseM, codim, key.index() );
    \n+
    90 ++count[ key.subEntity() + numBaseM ];
    \n+
    91 }
    \n+
    92 size += 2*n;
    \n+
    93 }
    \n+
    94
    \n+
    95 return size;
    \n+
    96 }
    \n+
    97 else
    \n+
    98 {
    \n+
    99 unsigned int size = (codim > 0 ? equidistantLagrangePoints( baseGeometryType, codim-1, order, count, points ) : 0);
    \n+
    100 LagrangePoint< ct, cdim > *const end = points + size;
    \n+
    101 for( ; points != end; ++points )
    \n+
    102 points->localKey_ = LocalKey( points->localKey_.subEntity(), codim, points->localKey_.index() );
    \n+
    103
    \n+
    104 if( codim < dim )
    \n+
    105 {
    \n+
    106 for( unsigned int i = order-1; i > 0; --i )
    \n+
    107 {
    \n+
    108 const unsigned int n = equidistantLagrangePoints( baseGeometryType, codim, i, count+numBaseM, points );
    \n+
    109 LagrangePoint< ct, cdim > *const end = points + n;
    \n+
    110 for( ; points != end; ++points )
    \n+
    111 {
    \n+
    112 points->localKey_ = LocalKey( points->localKey_.subEntity()+numBaseM, codim, points->localKey_.index() );
    \n+
    113 for( unsigned int j = 0; j < dim-1; ++j )
    \n+
    114 points->point_[ j ] *= ct( i ) / ct( order );
    \n+
    115 points->point_[ dim-1 ] = ct( order - i ) / ct( order );
    \n+
    116 }
    \n+
    117 size += n;
    \n+
    118 }
    \n+
    119 }
    \n+
    120 else
    \n+
    121 {
    \n+
    122 points->localKey_ = LocalKey( numBaseM, dim, count[ numBaseM ]++ );
    \n+
    123 points->point_ = 0;
    \n+
    124 points->point_[ dim-1 ] = ct( 1 );
    \n+
    125 ++size;
    \n+
    126 }
    \n+
    127
    \n+
    128 return size;
    \n+
    129 }
    \n+
    130 }
    \n+
    131 else
    \n+
    132 {
    \n+
    133 points->localKey_ = LocalKey( 0, 0, count[ 0 ]++ );
    \n+
    134 points->point_ = 0;
    \n+
    135 return 1;
    \n+
    136 }
    \n+
    137 }
    \n+
    \n+
    138
    \n+
    139
    \n+
    140
    \n+
    141 // EquidistantPointSet
    \n+
    142 // -------------------
    \n+
    143
    \n+
    144 template< class F, unsigned int dim >
    \n+
    \n+\n+
    146 : public EmptyPointSet< F, dim >
    \n+
    147 {
    \n+\n+
    149
    \n+
    150 public:
    \n+
    151 static const unsigned int dimension = dim;
    \n+
    152
    \n+
    153 using Base::order;
    \n+
    154
    \n+
    155 EquidistantPointSet ( std::size_t order ) : Base( order ) {}
    \n+
    156
    \n+
    \n+
    157 void build ( GeometryType gt )
    \n+
    158 {
    \n+
    159 assert( gt.dim() == dimension );
    \n+
    160 points_.resize( numLagrangePoints( gt, order() ) );
    \n+
    161
    \n+
    162 typename Base::LagrangePoint *p = points_.data();
    \n+
    163 std::vector< unsigned int > count;
    \n+
    164 for( unsigned int mydim = 0; mydim <= dimension; ++mydim )
    \n+
    165 {
    \n+
    166 count.resize( Geo::Impl::size( gt.id(), dimension, dimension-mydim ) );
    \n+
    167 std::fill( count.begin(), count.end(), 0u );
    \n+
    168 p += equidistantLagrangePoints( gt, dimension-mydim, order(), count.data(), p );
    \n+
    169 }
    \n+
    170 const auto &refElement = referenceElement<F,dimension>(gt);
    \n+
    171 F weight = refElement.volume()/F(double(points_.size()));
    \n+
    172 for (auto &p : points_)
    \n+
    173 p.weight_ = weight;
    \n+
    174 }
    \n+
    \n+
    175
    \n+
    176 template< GeometryType::Id geometryId >
    \n+
    \n+
    177 bool build ()
    \n+
    178 {
    \n+
    179 build( GeometryType( geometryId ) );
    \n+
    180 return true;
    \n+
    181 }
    \n+
    \n+
    182
    \n+
    \n+
    183 bool buildCube ()
    \n+
    184 {
    \n+
    185 return build< GeometryTypes::cube(dim) > ();
    \n+
    186 }
    \n+
    \n+
    187
    \n+
    188 static bool supports ( GeometryType, std::size_t /*order*/ ) { return true; }
    \n+
    189 template< GeometryType::Id geometryId>
    \n+
    \n+
    190 static bool supports ( std::size_t order ) {
    \n+
    191 return supports( GeometryType( geometryId ), order );
    \n+
    192 }
    \n+
    \n+
    193
    \n+
    194 private:
    \n+
    195 using Base::points_;
    \n+
    196 };
    \n+
    \n+
    197
    \n+
    198} // namespace Dune
    \n+
    199
    \n+
    200#endif // #ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalbasis.hh:29
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas3cube2dlocalbasis.hh:49
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas3cube2dlocalbasis.hh:179
    \n-
    RT3Cube2DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas3cube2dlocalbasis.hh:40
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas3cube2dlocalbasis.hh:60
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas3cube2dlocalbasis.hh:632
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas3cube2dlocalbasis.hh:33
    \n-
    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 raviartthomas3cube2dlocalbasis.hh:401
    \n+
    std::size_t numLagrangePoints(const GeometryType &gt, std::size_t order)
    Definition equidistantpoints.hh:23
    \n+
    static unsigned int equidistantLagrangePoints(const GeometryType &gt, unsigned int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim > *points)
    Definition equidistantpoints.hh:49
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    constexpr unsigned int index() const noexcept
    Return offset within subentity.
    Definition localkey.hh:70
    \n+
    constexpr unsigned int subEntity() const noexcept
    Return number of associated subentity.
    Definition localkey.hh:56
    \n+
    Definition emptypoints.hh:18
    \n+
    Field weight_
    Definition emptypoints.hh:48
    \n+
    Vector point_
    Definition emptypoints.hh:46
    \n+
    LocalKey localKey_
    Definition emptypoints.hh:47
    \n+
    Definition emptypoints.hh:56
    \n+
    std::size_t order() const
    Definition emptypoints.hh:95
    \n+
    std::vector< LagrangePoint > points_
    Definition emptypoints.hh:107
    \n+
    Definition equidistantpoints.hh:147
    \n+
    std::size_t order() const
    Definition emptypoints.hh:95
    \n+
    bool build()
    Definition equidistantpoints.hh:177
    \n+
    static bool supports(std::size_t order)
    Definition equidistantpoints.hh:190
    \n+
    static const unsigned int dimension
    Definition equidistantpoints.hh:151
    \n+
    static bool supports(GeometryType, std::size_t)
    Definition equidistantpoints.hh:188
    \n+
    void build(GeometryType gt)
    Definition equidistantpoints.hh:157
    \n+
    bool buildCube()
    Definition equidistantpoints.hh:183
    \n+
    EquidistantPointSet(std::size_t order)
    Definition equidistantpoints.hh:155
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,671 +1,294 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas3cube2dlocalbasis.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+equidistantpoints.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-2// vi: set et ts=4 sw=2 sts=2:\n-3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n+1// SPDX-FileCopyrightText: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n-4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH\n+2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n+3#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH\n+4#define DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH\n+5\n+6#include \n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include \n+8#include \n+9#include \n+10\n+11#include \n+12#include \n 13\n-14#include \"../../common/localbasis.hh\"\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-27 template\n-_\b2_\b8 class _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-29 {\n-30\n-31 public:\n-32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n-FieldVector,\n-_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b4_\b0 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n-41 {\n-42 sign0 = (s[0]) ? -1.0 : 1.0;\n-43 sign1 = (s[1]) ? -1.0 : 1.0;\n-44 sign2 = (s[2]) ? -1.0 : 1.0;\n-45 sign3 = (s[3]) ? -1.0 : 1.0;\n-46 }\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\be_\bm_\bp_\bt_\by_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+20 // numLagrangePoints\n+21 // -----------------\n+22\n+_\b2_\b3 inline std::size_t _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs ( const GeometryType& gt, std::size_t\n+order )\n+24 {\n+25 const int dim = gt.dim();\n+26 if( dim > 0 )\n+27 {\n+28 const GeometryType baseGeometryType = Impl::getBase( gt );\n+29 if( gt.isConical() )\n+30 {\n+31 std::size_t size = 0;\n+32 for( unsigned int o = 0; o <= order; ++o )\n+33 size += _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, o );\n+34 return size;\n+35 }\n+36 else\n+37 return _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, order ) * (order+1);\n+38 }\n+39 else\n+40 return 1;\n+41 }\n+42\n+43\n+44\n+45 // equidistantLagrangePoints\n+46 // -------------------------\n 47\n-_\b4_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+48 template< class ct, unsigned int cdim >\n+_\b4_\b9 inline static unsigned int _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs ( const GeometryType&\n+gt, unsigned int codim, std::size_t order, unsigned int *count, _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<\n+_\bc_\bt_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> *points )\n 50 {\n-51 return 40;\n-52 }\n+51 const unsigned int dim = gt.dim();\n+52 assert( (0 <= codim) && (codim <= dim) && (dim <= cdim) );\n 53\n-_\b6_\b0 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-61 std::vector& out) const\n-62 {\n-63 out.resize(40);\n-64 auto const& x = in[0], y = in[1];\n-65\n-66 const auto tmp1 = - x*(x*(x*(35*x - 80) + 60) - 16) - 1;\n-67 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;\n-68 const auto tmp3 = 2*y - 1;\n-69 const auto tmp4 = y*(6*y - 6) + 1;\n-70 const auto tmp5 = y*(y*(20*y - 30) + 12) - 1;\n-71 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);\n-72 const auto tmp7 = - y*(y*(y*(35*y - 80) + 60) - 16) - 1;\n-73 const auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;\n-74 const auto tmp9 = 2*x - 1;\n-75 const auto tmp10 = x*(6*x - 6) + 1;\n-76 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;\n-77 const auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);\n-78 const auto tmp13 = -x*(x*(x*(7*x - 14) + 9) - 2);\n-79 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);\n-80 const auto tmp15 = x*(x*(2*x - 3) + 1);\n-81 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);\n-82 const auto tmp17 = -y*(y*(y*(7*y - 14) + 9) - 2);\n-83 const auto tmp18 = y*(y*(2*y - 3) + 1);\n-84 const auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);\n-85 const auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);\n+54 if( dim > 0 )\n+55 {\n+56 const GeometryType baseGeometryType = Impl::getBase( gt );\n+57 const unsigned int numBaseN = (codim < dim ? Geo::Impl::size\n+( baseGeometryType.id(), baseGeometryType.dim(), codim ) : 0);\n+58 const unsigned int numBaseM = (codim > 0 ? Geo::Impl::size\n+( baseGeometryType.id(), baseGeometryType.dim(), codim-1 ) : 0);\n+59\n+60 if( gt.isPrismatic() )\n+61 {\n+62 unsigned int size = 0;\n+63 if( codim < dim )\n+64 {\n+65 for( unsigned int i = 1; i < order; ++i )\n+66 {\n+67 const unsigned int n = _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, codim,\n+order, count, points );\n+68 for( unsigned int j = 0; j < n; ++j )\n+69 {\n+70 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &key = points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_;\n+71 key = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( key._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by(), codim, key._\bi_\bn_\bd_\be_\bx() );\n+72 points->_\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( i ) / ct( order );\n+73 ++points;\n+74 }\n+75 size += n;\n+76 }\n+77 }\n+78\n+79 if( codim > 0 )\n+80 {\n+81 const unsigned int n = _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, codim-1,\n+order, count+numBaseN, points );\n+82 for( unsigned int j = 0; j < n; ++j )\n+83 {\n+84 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &key = points[ j ]._\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_;\n+85 key = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( key._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by() + numBaseN, codim, key._\bi_\bn_\bd_\be_\bx() );\n 86\n-87 out[0][0]=sign0*tmp1;\n-88 out[0][1]=0;\n-89 out[1][0]=(-3.0*tmp2*tmp3);\n-90 out[1][1]=0;\n-91 out[2][0]=sign0*(-5.0*tmp2*tmp4);\n-92 out[2][1]=0;\n-93 out[3][0]=(-7.0*tmp2*tmp5);\n-94 out[3][1]=0;\n-95\n-96 out[4][0]=sign1*tmp6;\n-97 out[4][1]=0;\n-98 out[5][0]=(-3.0*tmp6*tmp3);\n-99 out[5][1]=0;\n-100 out[6][0]=sign1*(5.0*tmp6*tmp4);\n-101 out[6][1]=0;\n-102 out[7][0]=(-7.0*tmp6*tmp5);\n-103 out[7][1]=0;\n-104\n-105 out[8][0]=0;\n-106 out[8][1]=sign2*tmp7;\n-107 out[9][0]=0;\n-108 out[9][1]=3.0*tmp9*tmp8;\n-109 out[10][0]=0;\n-110 out[10][1]=sign2*(-5.0*tmp10*tmp8);\n-111 out[11][0]=0;\n-112 out[11][1]=7.0*tmp11*tmp8;\n-113\n-114 out[12][0]=0;\n-115 out[12][1]=sign3*tmp12;\n-116 out[13][0]=0;\n-117 out[13][1]=3.0*tmp9*tmp12;\n-118 out[14][0]=0;\n-119 out[14][1]=sign3*5.0*tmp10*tmp12;\n-120 out[15][0]=0;\n-121 out[15][1]=7.0*tmp11*tmp12;\n-122\n-123 out[16][0]=10.0*tmp13;\n-124 out[16][1]=0;\n-125 out[17][0]=-30.0*tmp14*tmp3;\n-126 out[17][1]=0;\n-127 out[18][0]=-50.0*tmp14*tmp4;\n-128 out[18][1]=0;\n-129 out[19][0]=-70.0*tmp14*tmp5;\n-130 out[19][1]=0;\n-131 out[20][0]=-30.0*tmp15;\n-132 out[20][1]=0;\n-133 out[21][0]=-90.0*tmp15*tmp3;\n-134 out[21][1]=0;\n-135 out[22][0]=-150.0*tmp15*tmp4;\n-136 out[22][1]=0;\n-137 out[23][0]=-210.0*tmp15*tmp5;\n-138 out[23][1]=0;\n-139 out[24][0]=-70.0*tmp16;\n-140 out[24][1]=0;\n-141 out[25][0]=-210.0*tmp16*tmp3;\n-142 out[25][1]=0;\n-143 out[26][0]=-350.0*tmp16*tmp4;\n-144 out[26][1]=0;\n-145 out[27][0]=-490.0*tmp16*tmp5;\n-146 out[27][1]=0;\n-147 out[28][0]=0;\n-148 out[28][1]=10.0*tmp17;\n-149 out[29][0]=0;\n-150 out[29][1]=-30.0*tmp18;\n-151 out[30][0]=0;\n-152 out[30][1]=-70.0*tmp19;\n-153 out[31][0]=0;\n-154 out[31][1]=-30.0*tmp9*tmp20;\n-155 out[32][0]=0;\n-156 out[32][1]=-90.0*tmp9*tmp18;\n-157 out[33][0]=0;\n-158 out[33][1]=-210.0*tmp9*tmp19;\n-159 out[34][0]=0;\n-160 out[34][1]=-50.0*tmp10*tmp20;\n-161 out[35][0]=0;\n-162 out[35][1]=-150.0*tmp10*tmp18;\n-163 out[36][0]=0;\n-164 out[36][1]=-350.0*tmp10*tmp19;\n-165 out[37][0]=0;\n-166 out[37][1]=-70.0*tmp11*tmp20;\n-167 out[38][0]=0;\n-168 out[38][1]=-210.0*tmp11*tmp18;\n-169 out[39][0]=0;\n-170 out[39][1]=-490.0*tmp11*tmp19;\n-171 }\n-172\n-_\b1_\b7_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-180 std::vector& out) const\n-181 {\n-182 out.resize(40);\n-183 auto const& x = in[0], y = in[1];\n-184\n-185 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;\n-186 const auto tmp3 = 2*y - 1;\n-187 const auto tmp4 = y*(6*y - 6) + 1;\n-188 const auto tmp5 = y*(y*(20*y - 30) + 12) - 1;\n-189 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);\n-190 const auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;\n-191 const auto tmp9 = 2*x - 1;\n-192 const auto tmp10 = x*(6*x - 6) + 1;\n-193 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;\n-194 const auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);\n-195 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);\n-196 const auto tmp15 = x*(x*(2*x - 3) + 1);\n-197 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);\n-198 const auto tmp18 = y*(y*(2*y - 3) + 1);\n-199 const auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);\n-200 const auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);\n-201 // temporaries tmp1, tmp7, tmp13, tmp17 are not used in jacobian\n-202\n-203 const auto dxtmp1 = 16 - x*(x*(140*x - 240) + 120);\n-204 const auto dxtmp2 = x*(x*(140*x - 240) + 120) - 16;\n-205 const auto dytmp3 = 2;\n-206 const auto dytmp4 = 12*y - 6;\n-207 const auto dytmp5 = y*(60*y - 60) + 12;\n-208 const auto dxtmp6 = x*(x*(140*x - 180) + 60) - 4;\n-209 const auto dytmp7 = 16 - y*(y*(140*y - 240) + 120);\n-210 const auto dytmp8 = y*(y*(140*y - 240) + 120) - 16;\n-211 const auto dxtmp9 = 2;\n-212 const auto dxtmp10 = 12*x - 6;\n-213 const auto dxtmp11 = x*(60*x - 60) + 12;\n-214 const auto dytmp12 = y*(y*(140*y - 180) + 60) - 4;\n-215 const auto dxtmp13 = 2 - x*(x*(28*x - 42) + 18);\n-216 const auto dxtmp14 = x*(x*(28*x - 42) + 18) - 2;\n-217 const auto dxtmp15 = x*(6*x - 6) + 1;\n-218 const auto dxtmp16 = x*(x*(20*x - 30) + 12) - 1;\n-219 const auto dytmp17 = 2 - y*(y*(28*y - 42) + 18);\n-220 const auto dytmp18 = y*(6*y - 6) + 1;\n-221 const auto dytmp19 = y*(y*(20*y - 30) + 12) - 1;\n-222 const auto dytmp20 = y*(y*(28*y - 42) + 18) - 2;\n-223\n-224\n-225 // x-component\n-226 out[0][0][0]=sign0*dxtmp1;\n-227 out[0][1][0]=0;\n-228 out[1][0][0]=(-3.0*dxtmp2*tmp3);\n-229 out[1][1][0]=0;\n-230 out[2][0][0]=sign0*(-5.0*dxtmp2*tmp4);\n-231 out[2][1][0]=0;\n-232 out[3][0][0]=(-7.0*dxtmp2*tmp5);\n-233 out[3][1][0]=0;\n-234\n-235 out[4][0][0]=sign1*dxtmp6;\n-236 out[4][1][0]=0;\n-237 out[5][0][0]=(-3.0*dxtmp6*tmp3);\n-238 out[5][1][0]=0;\n-239 out[6][0][0]=sign1*(5.0*dxtmp6*tmp4);\n-240 out[6][1][0]=0;\n-241 out[7][0][0]=(-7.0*dxtmp6*tmp5);\n-242 out[7][1][0]=0;\n-243\n-244 out[8][0][0]=0;\n-245 out[8][1][0]=0;\n-246 out[9][0][0]=0;\n-247 out[9][1][0]=3.0*dxtmp9*tmp8;\n-248 out[10][0][0]=0;\n-249 out[10][1][0]=sign2*(-5.0*dxtmp10*tmp8);\n-250 out[11][0][0]=0;\n-251 out[11][1][0]=7.0*dxtmp11*tmp8;\n-252\n-253 out[12][0][0]=0;\n-254 out[12][1][0]=0;\n-255 out[13][0][0]=0;\n-256 out[13][1][0]=3.0*dxtmp9*tmp12;\n-257 out[14][0][0]=0;\n-258 out[14][1][0]=sign3*5.0*dxtmp10*tmp12;\n-259 out[15][0][0]=0;\n-260 out[15][1][0]=7.0*dxtmp11*tmp12;\n-261\n-262 out[16][0][0]=10.0*dxtmp13;\n-263 out[16][1][0]=0;\n-264 out[17][0][0]=-30.0*dxtmp14*tmp3;\n-265 out[17][1][0]=0;\n-266 out[18][0][0]=-50.0*dxtmp14*tmp4;\n-267 out[18][1][0]=0;\n-268 out[19][0][0]=-70.0*dxtmp14*tmp5;\n-269 out[19][1][0]=0;\n-270 out[20][0][0]=-30.0*dxtmp15;\n-271 out[20][1][0]=0;\n-272 out[21][0][0]=-90.0*dxtmp15*tmp3;\n-273 out[21][1][0]=0;\n-274 out[22][0][0]=-150.0*dxtmp15*tmp4;\n-275 out[22][1][0]=0;\n-276 out[23][0][0]=-210.0*dxtmp15*tmp5;\n-277 out[23][1][0]=0;\n-278 out[24][0][0]=-70.0*dxtmp16;\n-279 out[24][1][0]=0;\n-280 out[25][0][0]=-210.0*dxtmp16*tmp3;\n-281 out[25][1][0]=0;\n-282 out[26][0][0]=-350.0*dxtmp16*tmp4;\n-283 out[26][1][0]=0;\n-284 out[27][0][0]=-490.0*dxtmp16*tmp5;\n-285 out[27][1][0]=0;\n-286 out[28][0][0]=0;\n-287 out[28][1][0]=0;\n-288 out[29][0][0]=0;\n-289 out[29][1][0]=0;\n-290 out[30][0][0]=0;\n-291 out[30][1][0]=0;\n-292 out[31][0][0]=0;\n-293 out[31][1][0]=-30.0*dxtmp9*tmp20;\n-294 out[32][0][0]=0;\n-295 out[32][1][0]=-90.0*dxtmp9*tmp18;\n-296 out[33][0][0]=0;\n-297 out[33][1][0]=-210.0*dxtmp9*tmp19;\n-298 out[34][0][0]=0;\n-299 out[34][1][0]=-50.0*dxtmp10*tmp20;\n-300 out[35][0][0]=0;\n-301 out[35][1][0]=-150.0*dxtmp10*tmp18;\n-302 out[36][0][0]=0;\n-303 out[36][1][0]=-350.0*dxtmp10*tmp19;\n-304 out[37][0][0]=0;\n-305 out[37][1][0]=-70.0*dxtmp11*tmp20;\n-306 out[38][0][0]=0;\n-307 out[38][1][0]=-210.0*dxtmp11*tmp18;\n-308 out[39][0][0]=0;\n-309 out[39][1][0]=-490.0*dxtmp11*tmp19;\n-310\n-311\n-312 // y-component\n-313 out[0][0][1]=0;\n-314 out[0][1][1]=0;\n-315 out[1][0][1]=(-3.0*tmp2*dytmp3);\n-316 out[1][1][1]=0;\n-317 out[2][0][1]=sign0*(-5.0*tmp2*dytmp4);\n-318 out[2][1][1]=0;\n-319 out[3][0][1]=(-7.0*tmp2*dytmp5);\n-320 out[3][1][1]=0;\n-321\n-322 out[4][0][1]=0;\n-323 out[4][1][1]=0;\n-324 out[5][0][1]=(-3.0*tmp6*dytmp3);\n-325 out[5][1][1]=0;\n-326 out[6][0][1]=sign1*(5.0*tmp6*dytmp4);\n-327 out[6][1][1]=0;\n-328 out[7][0][1]=(-7.0*tmp6*dytmp5);\n-329 out[7][1][1]=0;\n-330\n-331 out[8][0][1]=0;\n-332 out[8][1][1]=sign2*dytmp7;\n-333 out[9][0][1]=0;\n-334 out[9][1][1]=3.0*tmp9*dytmp8;\n-335 out[10][0][1]=0;\n-336 out[10][1][1]=sign2*(-5.0*tmp10*dytmp8);\n-337 out[11][0][1]=0;\n-338 out[11][1][1]=7.0*tmp11*dytmp8;\n-339\n-340 out[12][0][1]=0;\n-341 out[12][1][1]=sign3*dytmp12;\n-342 out[13][0][1]=0;\n-343 out[13][1][1]=3.0*tmp9*dytmp12;\n-344 out[14][0][1]=0;\n-345 out[14][1][1]=sign3*5.0*tmp10*dytmp12;\n-346 out[15][0][1]=0;\n-347 out[15][1][1]=7.0*tmp11*dytmp12;\n-348\n-349 out[16][0][1]=0;\n-350 out[16][1][1]=0;\n-351 out[17][0][1]=-30.0*tmp14*dytmp3;\n-352 out[17][1][1]=0;\n-353 out[18][0][1]=-50.0*tmp14*dytmp4;\n-354 out[18][1][1]=0;\n-355 out[19][0][1]=-70.0*tmp14*dytmp5;\n-356 out[19][1][1]=0;\n-357 out[20][0][1]=0;\n-358 out[20][1][1]=0;\n-359 out[21][0][1]=-90.0*tmp15*dytmp3;\n-360 out[21][1][1]=0;\n-361 out[22][0][1]=-150.0*tmp15*dytmp4;\n-362 out[22][1][1]=0;\n-363 out[23][0][1]=-210.0*tmp15*dytmp5;\n-364 out[23][1][1]=0;\n-365 out[24][0][1]=0;\n-366 out[24][1][1]=0;\n-367 out[25][0][1]=-210.0*tmp16*dytmp3;\n-368 out[25][1][1]=0;\n-369 out[26][0][1]=-350.0*tmp16*dytmp4;\n-370 out[26][1][1]=0;\n-371 out[27][0][1]=-490.0*tmp16*dytmp5;\n-372 out[27][1][1]=0;\n-373 out[28][0][1]=0;\n-374 out[28][1][1]=10.0*dytmp17;\n-375 out[29][0][1]=0;\n-376 out[29][1][1]=-30.0*dytmp18;\n-377 out[30][0][1]=0;\n-378 out[30][1][1]=-70.0*dytmp19;\n-379 out[31][0][1]=0;\n-380 out[31][1][1]=-30.0*tmp9*dytmp20;\n-381 out[32][0][1]=0;\n-382 out[32][1][1]=-90.0*tmp9*dytmp18;\n-383 out[33][0][1]=0;\n-384 out[33][1][1]=-210.0*tmp9*dytmp19;\n-385 out[34][0][1]=0;\n-386 out[34][1][1]=-50.0*tmp10*dytmp20;\n-387 out[35][0][1]=0;\n-388 out[35][1][1]=-150.0*tmp10*dytmp18;\n-389 out[36][0][1]=0;\n-390 out[36][1][1]=-350.0*tmp10*dytmp19;\n-391 out[37][0][1]=0;\n-392 out[37][1][1]=-70.0*tmp11*dytmp20;\n-393 out[38][0][1]=0;\n-394 out[38][1][1]=-210.0*tmp11*dytmp18;\n-395 out[39][0][1]=0;\n-396 out[39][1][1]=-490.0*tmp11*dytmp19;\n-397\n-398 }\n-399\n-_\b4_\b0_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-402 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-403 std::vector& out) const // return value\n-404 {\n-405 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-406 if (totalOrder == 0) {\n-407 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-408 } else if (totalOrder == 1) {\n-409 out.resize(_\bs_\bi_\bz_\be());\n-410 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-411 auto const& x = in[0], y = in[1];\n-412\n-413 if (direction == 0) {\n-414 auto tmp3 = 2*y - 1;\n-415 auto tmp4 = y*(6*y - 6) + 1;\n-416 auto tmp5 = y*(y*(20*y - 30) + 12) - 1;\n-417 auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;\n-418 auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);\n-419 auto tmp18 = y*(y*(2*y - 3) + 1);\n-420 auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);\n-421 auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);\n-422\n-423 auto dxtmp1 = 16 - x*(x*(140*x - 240) + 120);\n-424 auto dxtmp2 = x*(x*(140*x - 240) + 120) - 16;\n-425 auto dxtmp6 = x*(x*(140*x - 180) + 60) - 4;\n-426 auto dxtmp9 = 2;\n-427 auto dxtmp10 = 12*x - 6;\n-428 auto dxtmp11 = x*(60*x - 60) + 12;\n-429 auto dxtmp13 = 2 - x*(x*(28*x - 42) + 18);\n-430 auto dxtmp14 = x*(x*(28*x - 42) + 18) - 2;\n-431 auto dxtmp15 = x*(6*x - 6) + 1;\n-432 auto dxtmp16 = x*(x*(20*x - 30) + 12) - 1;\n-433\n-434 out[0][0]=sign0*dxtmp1;\n-435 out[0][1]=0;\n-436 out[1][0]=(-3.0*dxtmp2*tmp3);\n-437 out[1][1]=0;\n-438 out[2][0]=sign0*(-5.0*dxtmp2*tmp4);\n-439 out[2][1]=0;\n-440 out[3][0]=(-7.0*dxtmp2*tmp5);\n-441 out[3][1]=0;\n-442\n-443 out[4][0]=sign1*dxtmp6;\n-444 out[4][1]=0;\n-445 out[5][0]=(-3.0*dxtmp6*tmp3);\n-446 out[5][1]=0;\n-447 out[6][0]=sign1*(5.0*dxtmp6*tmp4);\n-448 out[6][1]=0;\n-449 out[7][0]=(-7.0*dxtmp6*tmp5);\n-450 out[7][1]=0;\n-451\n-452 out[8][0]=0;\n-453 out[8][1]=0;\n-454 out[9][0]=0;\n-455 out[9][1]=3.0*dxtmp9*tmp8;\n-456 out[10][0]=0;\n-457 out[10][1]=sign2*(-5.0*dxtmp10*tmp8);\n-458 out[11][0]=0;\n-459 out[11][1]=7.0*dxtmp11*tmp8;\n-460\n-461 out[12][0]=0;\n-462 out[12][1]=0;\n-463 out[13][0]=0;\n-464 out[13][1]=3.0*dxtmp9*tmp12;\n-465 out[14][0]=0;\n-466 out[14][1]=sign3*5.0*dxtmp10*tmp12;\n-467 out[15][0]=0;\n-468 out[15][1]=7.0*dxtmp11*tmp12;\n-469\n-470 out[16][0]=10.0*dxtmp13;\n-471 out[16][1]=0;\n-472 out[17][0]=-30.0*dxtmp14*tmp3;\n-473 out[17][1]=0;\n-474 out[18][0]=-50.0*dxtmp14*tmp4;\n-475 out[18][1]=0;\n-476 out[19][0]=-70.0*dxtmp14*tmp5;\n-477 out[19][1]=0;\n-478 out[20][0]=-30.0*dxtmp15;\n-479 out[20][1]=0;\n-480 out[21][0]=-90.0*dxtmp15*tmp3;\n-481 out[21][1]=0;\n-482 out[22][0]=-150.0*dxtmp15*tmp4;\n-483 out[22][1]=0;\n-484 out[23][0]=-210.0*dxtmp15*tmp5;\n-485 out[23][1]=0;\n-486 out[24][0]=-70.0*dxtmp16;\n-487 out[24][1]=0;\n-488 out[25][0]=-210.0*dxtmp16*tmp3;\n-489 out[25][1]=0;\n-490 out[26][0]=-350.0*dxtmp16*tmp4;\n-491 out[26][1]=0;\n-492 out[27][0]=-490.0*dxtmp16*tmp5;\n-493 out[27][1]=0;\n-494 out[28][0]=0;\n-495 out[28][1]=0;\n-496 out[29][0]=0;\n-497 out[29][1]=0;\n-498 out[30][0]=0;\n-499 out[30][1]=0;\n-500 out[31][0]=0;\n-501 out[31][1]=-30.0*dxtmp9*tmp20;\n-502 out[32][0]=0;\n-503 out[32][1]=-90.0*dxtmp9*tmp18;\n-504 out[33][0]=0;\n-505 out[33][1]=-210.0*dxtmp9*tmp19;\n-506 out[34][0]=0;\n-507 out[34][1]=-50.0*dxtmp10*tmp20;\n-508 out[35][0]=0;\n-509 out[35][1]=-150.0*dxtmp10*tmp18;\n-510 out[36][0]=0;\n-511 out[36][1]=-350.0*dxtmp10*tmp19;\n-512 out[37][0]=0;\n-513 out[37][1]=-70.0*dxtmp11*tmp20;\n-514 out[38][0]=0;\n-515 out[38][1]=-210.0*dxtmp11*tmp18;\n-516 out[39][0]=0;\n-517 out[39][1]=-490.0*dxtmp11*tmp19;\n-518 } else if (direction == 1) {\n-519 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;\n-520 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);\n-521 const auto tmp9 = 2*x - 1;\n-522 const auto tmp10 = x*(6*x - 6) + 1;\n-523 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;\n-524 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);\n-525 const auto tmp15 = x*(x*(2*x - 3) + 1);\n-526 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);\n-527\n-528 const auto dytmp3 = 2;\n-529 const auto dytmp4 = 12*y - 6;\n-530 const auto dytmp5 = y*(60*y - 60) + 12;\n-531 const auto dytmp7 = 16 - y*(y*(140*y - 240) + 120);\n-532 const auto dytmp8 = y*(y*(140*y - 240) + 120) - 16;\n-533 const auto dytmp12 = y*(y*(140*y - 180) + 60) - 4;\n-534 const auto dytmp17 = 2 - y*(y*(28*y - 42) + 18);\n-535 const auto dytmp18 = y*(6*y - 6) + 1;\n-536 const auto dytmp19 = y*(y*(20*y - 30) + 12) - 1;\n-537 const auto dytmp20 = y*(y*(28*y - 42) + 18) - 2;\n-538\n-539 out[0][0]=0;\n-540 out[0][1]=0;\n-541 out[1][0]=(-3.0*tmp2*dytmp3);\n-542 out[1][1]=0;\n-543 out[2][0]=sign0*(-5.0*tmp2*dytmp4);\n-544 out[2][1]=0;\n-545 out[3][0]=(-7.0*tmp2*dytmp5);\n-546 out[3][1]=0;\n-547\n-548 out[4][0]=0;\n-549 out[4][1]=0;\n-550 out[5][0]=(-3.0*tmp6*dytmp3);\n-551 out[5][1]=0;\n-552 out[6][0]=sign1*(5.0*tmp6*dytmp4);\n-553 out[6][1]=0;\n-554 out[7][0]=(-7.0*tmp6*dytmp5);\n-555 out[7][1]=0;\n-556\n-557 out[8][0]=0;\n-558 out[8][1]=sign2*dytmp7;\n-559 out[9][0]=0;\n-560 out[9][1]=3.0*tmp9*dytmp8;\n-561 out[10][0]=0;\n-562 out[10][1]=sign2*(-5.0*tmp10*dytmp8);\n-563 out[11][0]=0;\n-564 out[11][1]=7.0*tmp11*dytmp8;\n-565\n-566 out[12][0]=0;\n-567 out[12][1]=sign3*dytmp12;\n-568 out[13][0]=0;\n-569 out[13][1]=3.0*tmp9*dytmp12;\n-570 out[14][0]=0;\n-571 out[14][1]=sign3*5.0*tmp10*dytmp12;\n-572 out[15][0]=0;\n-573 out[15][1]=7.0*tmp11*dytmp12;\n-574\n-575 out[16][0]=0;\n-576 out[16][1]=0;\n-577 out[17][0]=-30.0*tmp14*dytmp3;\n-578 out[17][1]=0;\n-579 out[18][0]=-50.0*tmp14*dytmp4;\n-580 out[18][1]=0;\n-581 out[19][0]=-70.0*tmp14*dytmp5;\n-582 out[19][1]=0;\n-583 out[20][0]=0;\n-584 out[20][1]=0;\n-585 out[21][0]=-90.0*tmp15*dytmp3;\n-586 out[21][1]=0;\n-587 out[22][0]=-150.0*tmp15*dytmp4;\n-588 out[22][1]=0;\n-589 out[23][0]=-210.0*tmp15*dytmp5;\n-590 out[23][1]=0;\n-591 out[24][0]=0;\n-592 out[24][1]=0;\n-593 out[25][0]=-210.0*tmp16*dytmp3;\n-594 out[25][1]=0;\n-595 out[26][0]=-350.0*tmp16*dytmp4;\n-596 out[26][1]=0;\n-597 out[27][0]=-490.0*tmp16*dytmp5;\n-598 out[27][1]=0;\n-599 out[28][0]=0;\n-600 out[28][1]=10.0*dytmp17;\n-601 out[29][0]=0;\n-602 out[29][1]=-30.0*dytmp18;\n-603 out[30][0]=0;\n-604 out[30][1]=-70.0*dytmp19;\n-605 out[31][0]=0;\n-606 out[31][1]=-30.0*tmp9*dytmp20;\n-607 out[32][0]=0;\n-608 out[32][1]=-90.0*tmp9*dytmp18;\n-609 out[33][0]=0;\n-610 out[33][1]=-210.0*tmp9*dytmp19;\n-611 out[34][0]=0;\n-612 out[34][1]=-50.0*tmp10*dytmp20;\n-613 out[35][0]=0;\n-614 out[35][1]=-150.0*tmp10*dytmp18;\n-615 out[36][0]=0;\n-616 out[36][1]=-350.0*tmp10*dytmp19;\n-617 out[37][0]=0;\n-618 out[37][1]=-70.0*tmp11*dytmp20;\n-619 out[38][0]=0;\n-620 out[38][1]=-210.0*tmp11*dytmp18;\n-621 out[39][0]=0;\n-622 out[39][1]=-490.0*tmp11*dytmp19;\n-623 } else {\n-624 DUNE_THROW(RangeError, \"Component out of range.\");\n-625 }\n-626 } else {\n-627 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-628 }\n-629 }\n-630\n-_\b6_\b3_\b2 unsigned int _\bo_\br_\bd_\be_\br () const\n-633 {\n-634 return 7;\n-635 }\n-636\n-637 private:\n-638 R sign0, sign1, sign2, sign3;\n-639 };\n-640}\n-641\n-642#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH\n+87 points[ j + n ]._\bp_\bo_\bi_\bn_\bt_\b_ = points[ j ]._\bp_\bo_\bi_\bn_\bt_\b_;\n+88 points[ j + n ]._\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( 1 );\n+89 points[ j + n ]._\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( key._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by() + numBaseM, codim,\n+key._\bi_\bn_\bd_\be_\bx() );\n+90 ++count[ key._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by() + numBaseM ];\n+91 }\n+92 size += 2*n;\n+93 }\n+94\n+95 return size;\n+96 }\n+97 else\n+98 {\n+99 unsigned int size = (codim > 0 ? _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n+( baseGeometryType, codim-1, order, count, points ) : 0);\n+100 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<_\b _\bc_\bt_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> *const end = points + size;\n+101 for( ; points != end; ++points )\n+102 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by(), codim, points-\n+>_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_._\bi_\bn_\bd_\be_\bx() );\n+103\n+104 if( codim < dim )\n+105 {\n+106 for( unsigned int i = order-1; i > 0; --i )\n+107 {\n+108 const unsigned int n = _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, codim,\n+i, count+numBaseM, points );\n+109 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<_\b _\bc_\bt_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> *const end = points + n;\n+110 for( ; points != end; ++points )\n+111 {\n+112 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by()+numBaseM,\n+codim, points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_._\bi_\bn_\bd_\be_\bx() );\n+113 for( unsigned int j = 0; j < dim-1; ++j )\n+114 points->_\bp_\bo_\bi_\bn_\bt_\b_[ j ] *= ct( i ) / ct( order );\n+115 points->_\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( order - i ) / ct( order );\n+116 }\n+117 size += n;\n+118 }\n+119 }\n+120 else\n+121 {\n+122 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( numBaseM, dim, count[ numBaseM ]++ );\n+123 points->_\bp_\bo_\bi_\bn_\bt_\b_ = 0;\n+124 points->_\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( 1 );\n+125 ++size;\n+126 }\n+127\n+128 return size;\n+129 }\n+130 }\n+131 else\n+132 {\n+133 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( 0, 0, count[ 0 ]++ );\n+134 points->_\bp_\bo_\bi_\bn_\bt_\b_ = 0;\n+135 return 1;\n+136 }\n+137 }\n+138\n+139\n+140\n+141 // EquidistantPointSet\n+142 // -------------------\n+143\n+144 template< class F, unsigned int dim >\n+_\b1_\b4_\b5 class _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n+146 : public _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt< F, dim >\n+147 {\n+148 typedef _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b> _\bB_\ba_\bs_\be;\n+149\n+150 public:\n+_\b1_\b5_\b1 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+152\n+153 using _\bB_\ba_\bs_\be_\b:_\b:_\bo_\br_\bd_\be_\br;\n+154\n+_\b1_\b5_\b5 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt ( std::size_t _\bo_\br_\bd_\be_\br ) : _\bB_\ba_\bs_\be( _\bo_\br_\bd_\be_\br ) {}\n+156\n+_\b1_\b5_\b7 void _\bb_\bu_\bi_\bl_\bd ( GeometryType gt )\n+158 {\n+159 assert( gt.dim() == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n+160 points_.resize( _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( gt, _\bo_\br_\bd_\be_\br() ) );\n+161\n+162 typename _\bB_\ba_\bs_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt *p = points_.data();\n+163 std::vector< unsigned int > count;\n+164 for( unsigned int mydim = 0; mydim <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++mydim )\n+165 {\n+166 count.resize( Geo::Impl::size( gt.id(), _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-mydim ) );\n+167 std::fill( count.begin(), count.end(), 0u );\n+168 p += _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( gt, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-mydim, _\bo_\br_\bd_\be_\br(), count.data(),\n+p );\n+169 }\n+170 const auto &refElement = referenceElement(gt);\n+171 F weight = refElement.volume()/F(double(points_.size()));\n+172 for (auto &p : points_)\n+173 p._\bw_\be_\bi_\bg_\bh_\bt_\b_ = weight;\n+174 }\n+175\n+176 template< GeometryType::Id geometryId >\n+_\b1_\b7_\b7 bool _\bb_\bu_\bi_\bl_\bd ()\n+178 {\n+179 _\bb_\bu_\bi_\bl_\bd( GeometryType( geometryId ) );\n+180 return true;\n+181 }\n+182\n+_\b1_\b8_\b3 bool _\bb_\bu_\bi_\bl_\bd_\bC_\bu_\bb_\be ()\n+184 {\n+185 return build< GeometryTypes::cube(dim) > ();\n+186 }\n+187\n+_\b1_\b8_\b8 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( GeometryType, std::size_t /*order*/ ) { return true;\n+}\n+189 template< GeometryType::Id geometryId>\n+_\b1_\b9_\b0 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( std::size_t _\bo_\br_\bd_\be_\br ) {\n+191 return _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs( GeometryType( geometryId ), _\bo_\br_\bd_\be_\br );\n+192 }\n+193\n+194 private:\n+195 using _\bB_\ba_\bs_\be_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\bs_\b_;\n+196 };\n+197\n+198} // namespace Dune\n+199\n+200#endif // #ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH\n+_\be_\bm_\bp_\bt_\by_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Second order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:179\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT3Cube2DLocalBasis(std::bitset< 4 > s=0)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:632\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:401\n+_\bD_\bu_\bn_\be_\b:_\b:_\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n+std::size_t numLagrangePoints(const GeometryType >, std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n+static unsigned int equidistantLagrangePoints(const GeometryType >, unsigned\n+int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim >\n+*points)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+constexpr unsigned int index() const noexcept\n+Return offset within subentity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n+constexpr unsigned int subEntity() const noexcept\n+Return number of associated subentity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bw_\be_\bi_\bg_\bh_\bt_\b_\n+Field weight_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\b_\n+Vector point_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_\n+LocalKey localKey_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\bs_\b_\n+std::vector< LagrangePoint > points_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n+bool build()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n+static bool supports(std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:190\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n+static bool supports(GeometryType, std::size_t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:188\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n+void build(GeometryType gt)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:157\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bb_\bu_\bi_\bl_\bd_\bC_\bu_\bb_\be\n+bool buildCube()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:183\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n+EquidistantPointSet(std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:155\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas3cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: q1.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas3cube2dlocalcoefficients.hh File Reference
    \n+
    q1.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT3Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-3 elements on quadrilaterals. More...
    class  Dune::Q1FiniteElementFactory< Geometry, RF >
     Factory for global-valued Q1 elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas3cube2dlocalcoefficients.hh File Reference\n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+q1.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Raviart-Thomas-3 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n+\u00a0 Factory for global-valued Q1 elements. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas3cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: q1.hh Source File\n \n \n \n \n \n \n \n@@ -70,85 +70,75 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas3cube2dlocalcoefficients.hh
    \n+
    q1.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH
    \n-
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n+
    5
    \n+
    6#ifndef DUNE_Q1_LOCALFINITEELEMENT_HH
    \n+
    7#define DUNE_Q1_LOCALFINITEELEMENT_HH
    \n+
    8
    \n+
    9#include <dune/geometry/type.hh>
    \n
    10
    \n-
    11#include "../../common/localkey.hh"
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    \n-\n-
    23 {
    \n-
    24
    \n-
    25 public:
    \n-
    \n-\n-
    28 {
    \n-
    29 for (std::size_t i = 0; i < 4; i++)
    \n-
    30 {
    \n-
    31 li[4*i] = LocalKey(i,1,0);
    \n-
    32 li[4*i + 1] = LocalKey(i,1,1);
    \n-
    33 li[4*i + 2] = LocalKey(i,1,2);
    \n-
    34 li[4*i + 3] = LocalKey(i,1,3);
    \n-
    35 }
    \n-
    36
    \n-
    37 for (std::size_t i=0; i<24; i++)
    \n-
    38 {
    \n-
    39 li[16 + i] = LocalKey(0,0,i);
    \n-
    40 }
    \n-
    41 }
    \n-
    \n-
    42
    \n-
    \n-
    44 std::size_t size () const
    \n-
    45 {
    \n-
    46 return 40;
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    \n-
    50 const LocalKey& localKey (std::size_t i) const
    \n-
    51 {
    \n-
    52 return li[i];
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    55 private:
    \n-
    56 std::vector<LocalKey> li;
    \n-
    57 };
    \n-
    \n-
    58}
    \n-
    59
    \n-
    60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+\n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17
    \n+
    19
    \n+
    24 template<class Geometry, class RF>
    \n+
    \n+\n+\n+
    27 LagrangeCubeLocalFiniteElement<
    \n+
    28 typename Geometry::ctype, RF, Geometry::mydimension, 1
    \n+
    29 >,
    \n+
    30 Geometry
    \n+
    31 >
    \n+
    32 {
    \n+\n+
    34 typename Geometry::ctype, RF, Geometry::mydimension, 1
    \n+
    35 > LFE;
    \n+\n+
    37
    \n+
    38 static const LFE lfe;
    \n+
    39
    \n+
    40 public:
    \n+\n+
    43 };
    \n+
    \n+
    44
    \n+
    45 template<class Geometry, class RF>
    \n+
    46 const typename Q1FiniteElementFactory<Geometry, RF>::LFE
    \n+
    47 Q1FiniteElementFactory<Geometry, RF>::lfe;
    \n+
    48}
    \n+
    49
    \n+
    50#endif
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for Raviart-Thomas-3 elements on quadrilaterals.
    Definition raviartthomas3cube2dlocalcoefficients.hh:23
    \n-
    RT3Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas3cube2dlocalcoefficients.hh:27
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas3cube2dlocalcoefficients.hh:44
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas3cube2dlocalcoefficients.hh:50
    \n+
    Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.
    Definition localtoglobaladaptors.hh:244
    \n+
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:709
    \n+
    Factory for global-valued Q1 elements.
    Definition q1.hh:32
    \n+
    Q1FiniteElementFactory()
    default constructor
    Definition q1.hh:42
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,83 +1,75 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas3cube2dlocalcoefficients.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+q1.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH\n-7\n-8#include \n-9#include \n+5\n+6#ifndef DUNE_Q1_LOCALFINITEELEMENT_HH\n+7#define DUNE_Q1_LOCALFINITEELEMENT_HH\n+8\n+9#include \n 10\n-11#include \"../../common/localkey.hh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-_\b2_\b2 class _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-23 {\n-24\n-25 public:\n-_\b2_\b7 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(40)\n-28 {\n-29 for (std::size_t i = 0; i < 4; i++)\n-30 {\n-31 li[4*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-32 li[4*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-33 li[4*i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n-34 li[4*i + 3] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,3);\n-35 }\n-36\n-37 for (std::size_t i=0; i<24; i++)\n-38 {\n-39 li[16 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n-40 }\n-41 }\n-42\n-_\b4_\b4 std::size_t _\bs_\bi_\bz_\be () const\n-45 {\n-46 return 40;\n-47 }\n-48\n-_\b5_\b0 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-51 {\n-52 return li[i];\n-53 }\n-54\n-55 private:\n-56 std::vector li;\n-57 };\n-58}\n-59\n-60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17\n+19\n+24 template\n+_\b2_\b5 class _\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by :\n+26 public _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by<\n+27 LagrangeCubeLocalFiniteElement<\n+28 typename Geometry::ctype, RF, Geometry::mydimension, 1\n+29 >,\n+30 Geometry\n+31 >\n+32 {\n+33 typedef _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt<\n+34 typename Geometry::ctype, RF, Geometry::mydimension, 1\n+35 > _\bL_\bF_\bE;\n+36 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bL_\bF_\bE_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bB_\ba_\bs_\be;\n+37\n+38 static const _\bL_\bF_\bE lfe;\n+39\n+40 public:\n+_\b4_\b2 _\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by() : _\bB_\ba_\bs_\be(lfe) {}\n+43 };\n+44\n+45 template\n+46 const typename Q1FiniteElementFactory::LFE\n+47 Q1FiniteElementFactory::lfe;\n+48}\n+49\n+50#endif\n+_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-3 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT3Cube2DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for ScalarLocalToGlobalFiniteElementAdaptor objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:244\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Lagrange finite element for cubes with arbitrary compile-time dimension and\n+polynomial order.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:709\n+_\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for global-valued Q1 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn q1.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Q1FiniteElementFactory()\n+default constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn q1.hh:42\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas3cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: refined.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,30 @@\n \n \n \n \n \n \n \n
    \n- \n-
    raviartthomas3cube2dlocalinterpolation.hh File Reference
    \n+
    refined.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+\n+

    Convenience header that includes all available LocalFiniteElements based on uniform element refinement. \n+More...

    \n+\n

    Go to the source code of this file.

    \n-\n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::RT3Cube2DLocalInterpolation< LB >
     Second order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    \n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

    Convenience header that includes all available LocalFiniteElements based on uniform element refinement.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,17 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas3cube2dlocalinterpolation.hh File Reference\n-#include \n-#include \n+refined.hh File Reference\n+Convenience header that includes all available LocalFiniteElements based on\n+uniform element refinement. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 Second order Raviart-Thomas shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Convenience header that includes all available LocalFiniteElements based on\n+uniform element refinement.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas3cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: refined.hh Source File\n \n \n \n \n \n \n \n@@ -70,163 +70,29 @@\n \n \n \n \n \n \n \n
    \n-
    raviartthomas3cube2dlocalinterpolation.hh
    \n+
    refined.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n-
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    23 template<class LB>
    \n-
    \n-\n-
    25 {
    \n-
    26
    \n-
    27 public:
    \n-
    28
    \n-
    \n-
    34 RT3Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n-
    35 {
    \n-
    36 for (size_t i=0; i<4; i++)
    \n-
    37 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    38
    \n-
    39 n_[0] = {-1.0, 0.0};
    \n-
    40 n_[1] = { 1.0, 0.0};
    \n-
    41 n_[2] = { 0.0, -1.0};
    \n-
    42 n_[3] = { 0.0, 1.0};
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    53 template<typename F, typename C>
    \n-
    \n-
    54 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    55 {
    \n-
    56 // f gives v*outer normal at a point on the edge!
    \n-
    57 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    58 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    59
    \n-
    60 out.resize(40);
    \n-
    61 fill(out.begin(), out.end(), 0.0);
    \n-
    62
    \n-
    63 const int qOrder = 9;
    \n-
    64 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    65
    \n-
    66 for (auto&& qp : rule1)
    \n-
    67 {
    \n-
    68 Scalar qPos = qp.position();
    \n-
    69 typename LB::Traits::DomainType localPos;
    \n-
    70
    \n-
    71 localPos = {0.0, qPos};
    \n-
    72 auto y = f(localPos);
    \n-
    73 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n-
    74 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    75 out[2] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[0];
    \n-
    76 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos + 12.0*qPos - 1.0)*qp.weight();
    \n-
    77
    \n-
    78 localPos = {1.0, qPos};
    \n-
    79 y = f(localPos);
    \n-
    80 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n-
    81 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    82 out[6] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[1];
    \n-
    83 out[7] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos - 12.0*qPos + 1.0)*qp.weight();
    \n-
    84
    \n-
    85 localPos = {qPos, 0.0};
    \n-
    86 y = f(localPos);
    \n-
    87 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n-
    88 out[9] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    89 out[10] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[2];
    \n-
    90 out[11] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos - 12.0*qPos + 1.0)*qp.weight();
    \n-
    91
    \n-
    92 localPos = {qPos, 1.0};
    \n-
    93 y = f(localPos);
    \n-
    94 out[12] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n-
    95 out[13] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    96 out[14] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[3];
    \n-
    97 out[15] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos + 12.0*qPos - 1.0)*qp.weight();
    \n-
    98 }
    \n-
    99
    \n-
    100 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    101
    \n-
    102 for (auto&& qp : rule2)
    \n-
    103 {
    \n-
    104 auto qPos = qp.position();
    \n-
    105
    \n-
    106 auto y = f(qPos);
    \n-
    107 double l0_x=1.0;
    \n-
    108 double l1_x=2.0*qPos[0]-1.0;
    \n-
    109 double l2_x=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;
    \n-
    110 double l3_x=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0] - 1.0;
    \n-
    111 double l0_y=1.0;
    \n-
    112 double l1_y=2.0*qPos[1]-1.0;
    \n-
    113 double l2_y=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;
    \n-
    114 double l3_y=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1] - 1.0;
    \n-
    115
    \n-
    116 out[16] += y[0]*l0_x*l0_y*qp.weight();
    \n-
    117 out[17] += y[0]*l0_x*l1_y*qp.weight();
    \n-
    118 out[18] += y[0]*l0_x*l2_y*qp.weight();
    \n-
    119 out[19] += y[0]*l0_x*l3_y*qp.weight();
    \n-
    120 out[20] += y[0]*l1_x*l0_y*qp.weight();
    \n-
    121 out[21] += y[0]*l1_x*l1_y*qp.weight();
    \n-
    122 out[22] += y[0]*l1_x*l2_y*qp.weight();
    \n-
    123 out[23] += y[0]*l1_x*l3_y*qp.weight();
    \n-
    124 out[24] += y[0]*l2_x*l0_y*qp.weight();
    \n-
    125 out[25] += y[0]*l2_x*l1_y*qp.weight();
    \n-
    126 out[26] += y[0]*l2_x*l2_y*qp.weight();
    \n-
    127 out[27] += y[0]*l2_x*l3_y*qp.weight();
    \n-
    128
    \n-
    129 out[28] += y[1]*l0_x*l0_y*qp.weight();
    \n-
    130 out[29] += y[1]*l0_x*l1_y*qp.weight();
    \n-
    131 out[30] += y[1]*l0_x*l2_y*qp.weight();
    \n-
    132 out[31] += y[1]*l1_x*l0_y*qp.weight();
    \n-
    133 out[32] += y[1]*l1_x*l1_y*qp.weight();
    \n-
    134 out[33] += y[1]*l1_x*l2_y*qp.weight();
    \n-
    135 out[34] += y[1]*l2_x*l0_y*qp.weight();
    \n-
    136 out[35] += y[1]*l2_x*l1_y*qp.weight();
    \n-
    137 out[36] += y[1]*l2_x*l2_y*qp.weight();
    \n-
    138 out[37] += y[1]*l3_x*l0_y*qp.weight();
    \n-
    139 out[38] += y[1]*l3_x*l1_y*qp.weight();
    \n-
    140 out[39] += y[1]*l3_x*l2_y*qp.weight();
    \n-
    141 }
    \n-
    142 }
    \n-
    \n-
    143
    \n-
    144 private:
    \n-
    145 // Edge orientations
    \n-
    146 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n-
    147
    \n-
    148 // Edge normals
    \n-
    149 std::array<typename LB::Traits::DomainType, 4> n_;
    \n-
    150 };
    \n-
    \n-
    151}
    \n-
    152
    \n-
    153#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n-
    Definition bdfmcube.hh:18
    \n-
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalinterpolation.hh:25
    \n-
    RT3Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas3cube2dlocalinterpolation.hh:34
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas3cube2dlocalinterpolation.hh:54
    \n+\n+\n+
    Piecewise P0 finite element.
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,170 +1,20 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas3cube2dlocalinterpolation.hh\n+refined.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n-7\n-8#include \n-9\n-10#include \n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-23 template\n-_\b2_\b4 class _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-25 {\n-26\n-27 public:\n-28\n-_\b3_\b4 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<4> s = 0)\n-35 {\n-36 for (size_t i=0; i<4; i++)\n-37 sign_[i] = (s[i]) ? -1.0 : 1.0;\n-38\n-39 n_[0] = {-1.0, 0.0};\n-40 n_[1] = { 1.0, 0.0};\n-41 n_[2] = { 0.0, -1.0};\n-42 n_[3] = { 0.0, 1.0};\n-43 }\n-44\n-53 template\n-_\b5_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-55 {\n-56 // f gives v*outer normal at a point on the edge!\n-57 typedef typename LB::Traits::RangeFieldType Scalar;\n-58 typedef typename LB::Traits::DomainFieldType Vector;\n-59\n-60 out.resize(40);\n-61 fill(out.begin(), out.end(), 0.0);\n-62\n-63 const int qOrder = 9;\n-64 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n-qOrder);\n-65\n-66 for (auto&& qp : rule1)\n-67 {\n-68 Scalar qPos = qp.position();\n-69 typename LB::Traits::DomainType localPos;\n-70\n-71 localPos = {0.0, qPos};\n-72 auto y = f(localPos);\n-73 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n-74 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n-75 out[2] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(6.0*qPos*qPos - 6.0*qPos +\n-1.0)*qp.weight()*sign_[0];\n-76 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(20.0*qPos*qPos*qPos -\n-30.0*qPos*qPos + 12.0*qPos - 1.0)*qp.weight();\n-77\n-78 localPos = {1.0, qPos};\n-79 y = f(localPos);\n-80 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n-81 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n-82 out[6] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(6.0*qPos*qPos - 6.0*qPos +\n-1.0)*qp.weight()*sign_[1];\n-83 out[7] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(-20.0*qPos*qPos*qPos +\n-30.0*qPos*qPos - 12.0*qPos + 1.0)*qp.weight();\n-84\n-85 localPos = {qPos, 0.0};\n-86 y = f(localPos);\n-87 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n-88 out[9] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n-89 out[10] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(6.0*qPos*qPos - 6.0*qPos +\n-1.0)*qp.weight()*sign_[2];\n-90 out[11] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(-20.0*qPos*qPos*qPos +\n-30.0*qPos*qPos - 12.0*qPos + 1.0)*qp.weight();\n-91\n-92 localPos = {qPos, 1.0};\n-93 y = f(localPos);\n-94 out[12] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n-95 out[13] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n-96 out[14] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(6.0*qPos*qPos - 6.0*qPos +\n-1.0)*qp.weight()*sign_[3];\n-97 out[15] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(20.0*qPos*qPos*qPos -\n-30.0*qPos*qPos + 12.0*qPos - 1.0)*qp.weight();\n-98 }\n-99\n-100 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n-qOrder);\n-101\n-102 for (auto&& qp : rule2)\n-103 {\n-104 auto qPos = qp.position();\n-105\n-106 auto y = f(qPos);\n-107 double l0_x=1.0;\n-108 double l1_x=2.0*qPos[0]-1.0;\n-109 double l2_x=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;\n-110 double l3_x=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos\n-[0] - 1.0;\n-111 double l0_y=1.0;\n-112 double l1_y=2.0*qPos[1]-1.0;\n-113 double l2_y=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;\n-114 double l3_y=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos\n-[1] - 1.0;\n-115\n-116 out[16] += y[0]*l0_x*l0_y*qp.weight();\n-117 out[17] += y[0]*l0_x*l1_y*qp.weight();\n-118 out[18] += y[0]*l0_x*l2_y*qp.weight();\n-119 out[19] += y[0]*l0_x*l3_y*qp.weight();\n-120 out[20] += y[0]*l1_x*l0_y*qp.weight();\n-121 out[21] += y[0]*l1_x*l1_y*qp.weight();\n-122 out[22] += y[0]*l1_x*l2_y*qp.weight();\n-123 out[23] += y[0]*l1_x*l3_y*qp.weight();\n-124 out[24] += y[0]*l2_x*l0_y*qp.weight();\n-125 out[25] += y[0]*l2_x*l1_y*qp.weight();\n-126 out[26] += y[0]*l2_x*l2_y*qp.weight();\n-127 out[27] += y[0]*l2_x*l3_y*qp.weight();\n-128\n-129 out[28] += y[1]*l0_x*l0_y*qp.weight();\n-130 out[29] += y[1]*l0_x*l1_y*qp.weight();\n-131 out[30] += y[1]*l0_x*l2_y*qp.weight();\n-132 out[31] += y[1]*l1_x*l0_y*qp.weight();\n-133 out[32] += y[1]*l1_x*l1_y*qp.weight();\n-134 out[33] += y[1]*l1_x*l2_y*qp.weight();\n-135 out[34] += y[1]*l2_x*l0_y*qp.weight();\n-136 out[35] += y[1]*l2_x*l1_y*qp.weight();\n-137 out[36] += y[1]*l2_x*l2_y*qp.weight();\n-138 out[37] += y[1]*l3_x*l0_y*qp.weight();\n-139 out[38] += y[1]*l3_x*l1_y*qp.weight();\n-140 out[39] += y[1]*l3_x*l2_y*qp.weight();\n-141 }\n-142 }\n-143\n-144 private:\n-145 // Edge orientations\n-146 std::array sign_;\n-147\n-148 // Edge normals\n-149 std::array n_;\n-150 };\n-151}\n-152\n-153#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Second order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT3Cube2DLocalInterpolation(std::bitset< 4 > s=0)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:54\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b._\bh_\bh>\n+_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b._\bh_\bh\n+Piecewise P0 finite element.\n+_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube2dlocalbasis.hh File Reference\n+dune-localfunctions: brezzidouglasmarinisimplex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas1cube2dlocalbasis.hh File Reference
    \n+
    brezzidouglasmarinisimplex.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT1Cube2DLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference quadrilateral. 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...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas1cube2dlocalbasis.hh File Reference\n-#include \n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+brezzidouglasmarinisimplex.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>\n+\u00a0 Brezzi-Douglas-Marini local finite elements for simplices with\n+ dimension 2 and order 1. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>\n+\u00a0 Brezzi-Douglas-Marini local finite elements for simplices with\n+ dimension 2 and order 2. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube2dlocalbasis.hh Source File\n+dune-localfunctions: brezzidouglasmarinisimplex.hh Source File\n \n \n \n \n \n \n \n@@ -70,200 +70,88 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube2dlocalbasis.hh
    \n+
    brezzidouglasmarinisimplex.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \n+\n+\n
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12
    \n-
    13#include "../../common/localbasis.hh"
    \n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    26 template<class D, class R>
    \n-
    \n-\n-
    28 {
    \n-
    29
    \n-
    30 public:
    \n-
    31 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    32 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    33
    \n-
    \n-
    39 RT1Cube2DLocalBasis (std::bitset<4> s = 0)
    \n-
    40 {
    \n-
    41 for (size_t i=0; i<4; i++)
    \n-
    42 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-
    46 unsigned int size () const
    \n-
    47 {
    \n-
    48 return 12;
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    57 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    58 std::vector<typename Traits::RangeType>& out) const
    \n-
    59 {
    \n-
    60 out.resize(12);
    \n-
    61
    \n-
    62 out[0][0] = sign_[0]*(-1.0 + 4.0*in[0]-3*in[0]*in[0]);
    \n-
    63 out[0][1] = 0.0;
    \n-
    64 out[1][0] = 3.0 - 12.0*in[0] - 6.0*in[1] + 24.0*in[0]*in[1]+9*in[0]*in[0] - 18.0*in[0]*in[0]*in[1];
    \n-
    65 out[1][1] = 0.0;
    \n-
    66 out[2][0] = sign_[1]*(-2.0*in[0] + 3.0*in[0]*in[0]);
    \n-
    67 out[2][1] = 0.0;
    \n-
    68 out[3][0] = -6.0*in[0] + 12.0*in[0]*in[1] + 9.0*in[0]*in[0] - 18.0*in[0]*in[0]*in[1];
    \n-
    69 out[3][1] = 0.0;
    \n-
    70 out[4][0] = 0.0;
    \n-
    71 out[4][1] = sign_[2]*(-1.0 + 4.0*in[1] - 3.0*in[1]*in[1]);
    \n-
    72 out[5][0] = 0.0;
    \n-
    73 out[5][1] = -3.0 + 6.0*in[0] + 12.0*in[1] - 24.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in[1]*in[1];
    \n-
    74 out[6][0] = 0.0;
    \n-
    75 out[6][1] = sign_[3]*(-2.0*in[1] + 3.0*in[1]*in[1]);
    \n-
    76 out[7][0] = 0.0;
    \n-
    77 out[7][1] = 6.0*in[1] - 12.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in[1]*in[1];
    \n-
    78 out[8][0] = 24.0*in[0] - 36.0*in[0]*in[1] - 24.0*in[0]*in[0] + 36.0*in[0]*in[0]*in[1];
    \n-
    79 out[8][1] = 0.0;
    \n-
    80 out[9][0] = 0.0;
    \n-
    81 out[9][1] = 24.0*in[1] - 36.0*in[0]*in[1] - 24.0*in[1]*in[1] + 36.0*in[0]*in[1]*in[1];
    \n-
    82 out[10][0] = -36.0*in[0] + 72.0*in[0]*in[1] + 36.0*in[0]*in[0] - 72.0*in[0]*in[0]*in[1];
    \n-
    83 out[10][1] = 0.0;
    \n-
    84 out[11][0] = 0.0;
    \n-
    85 out[11][1] = -36.0*in[1] + 72.0*in[0]*in[1] + 36*in[1]*in[1] - 72.0*in[0]*in[1]*in[1];
    \n-
    86 }
    \n-
    \n-
    87
    \n-
    \n-
    94 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    95 std::vector<typename Traits::JacobianType>& out) const
    \n-
    96 {
    \n-
    97 out.resize(12);
    \n-
    98
    \n-
    99 out[0][0][0] = sign_[0]*(4.0 - 6.0*in[0]);
    \n-
    100 out[0][0][1] = 0.0;
    \n-
    101 out[0][1][0] = 0.0;
    \n-
    102 out[0][1][1] = 0.0;
    \n-
    103
    \n-
    104 out[1][0][0] = -12.0 + 24.0*in[1] + 18.0*in[0] - 36.0*in[0]*in[1];
    \n-
    105 out[1][0][1] = -6 + 24.0*in[0] - 18.0*in[0]*in[0];
    \n-
    106 out[1][1][0] = 0.0;
    \n-
    107 out[1][1][1] = 0.0;
    \n-
    108
    \n-
    109 out[2][0][0] = sign_[1]*(-2.0 + 6.0*in[0]);
    \n-
    110 out[2][0][1] = 0.0;
    \n-
    111 out[2][1][0] = 0.0;
    \n-
    112 out[2][1][1] = 0.0;
    \n-
    113
    \n-
    114 out[3][0][0] = -6.0 + 12.0*in[1] + 18.0*in[0] - 36.0*in[0]*in[1];
    \n-
    115 out[3][0][1] = 12.0*in[0] - 18.0*in[0]*in[0];
    \n-
    116 out[3][1][0] = 0.0;
    \n-
    117 out[3][1][1] = 0.0;
    \n-
    118
    \n-
    119 out[4][0][0] = 0.0;
    \n-
    120 out[4][0][1] = 0.0;
    \n-
    121 out[4][1][0] = 0.0;
    \n-
    122 out[4][1][1] = sign_[2]*(4.0 - 6.0*in[1]);
    \n-
    123
    \n-
    124 out[5][0][0] = 0.0;
    \n-
    125 out[5][0][1] = 0.0;
    \n-
    126 out[5][1][0] = 6.0 - 24.0*in[1] + 18.0*in[1]*in[1];
    \n-
    127 out[5][1][1] = 12.0 - 24.0*in[0] - 18.0*in[1] + 36.0*in[0]*in[1];
    \n-
    128
    \n-
    129 out[6][0][0] = 0.0;
    \n-
    130 out[6][0][1] = 0.0;
    \n-
    131 out[6][1][0] = 0.0;
    \n-
    132 out[6][1][1] = sign_[3]*(-2.0 + 6.0*in[1]);
    \n-
    133
    \n-
    134 out[7][0][0] = 0.0;
    \n-
    135 out[7][0][1] = 0.0;
    \n-
    136 out[7][1][0] = -12.0*in[1] + 18.0*in[1]*in[1];
    \n-
    137 out[7][1][1] = 6.0 - 12.0*in[0] - 18.0*in[1] + 36.0*in[1]*in[0];
    \n-
    138
    \n-
    139 out[8][0][0] = 24.0 - 36.0*in[1] - 48.0*in[0] + 72.0*in[0]*in[1];
    \n-
    140 out[8][0][1] = -36.0*in[0] + 36.0*in[0]*in[0];
    \n-
    141 out[8][1][0] = 0.0;
    \n-
    142 out[8][1][1] = 0.0;
    \n-
    143
    \n-
    144 out[9][0][0] = 0.0;
    \n-
    145 out[9][0][1] = 0.0;
    \n-
    146 out[9][1][0] = -36.0*in[1] + 36.0*in[1]*in[1];
    \n-
    147 out[9][1][1] = 24.0 - 36.0*in[0] - 48.0*in[1] + 72.0*in[0]*in[1];
    \n-
    148
    \n-
    149 out[10][0][0] = -36.0 + 72.0*in[1] + 72.0*in[0] - 144.0*in[0]*in[1];
    \n-
    150 out[10][0][1] = 72.0*in[0] - 72.0*in[0]*in[0];
    \n-
    151 out[10][1][0] = 0.0;
    \n-
    152 out[10][1][1] = 0.0;
    \n-
    153
    \n-
    154 out[11][0][0] = 0.0;
    \n-
    155 out[11][0][1] = 0.0;
    \n-
    156 out[11][1][0] = 72.0*in[1] - 72.0*in[1]*in[1];
    \n-
    157 out[11][1][1] = -36.0 + 72.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1];
    \n-
    158 }
    \n-
    \n-
    159
    \n-
    \n-
    161 void partial (const std::array<unsigned int, 2>& order,
    \n-
    162 const typename Traits::DomainType& in, // position
    \n-
    163 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    164 {
    \n-
    165 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    166 if (totalOrder == 0) {
    \n-
    167 evaluateFunction(in, out);
    \n-
    168 } else {
    \n-
    169 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    170 }
    \n-
    171 }
    \n-
    \n-
    172
    \n-
    \n-
    174 unsigned int order () const
    \n-
    175 {
    \n-
    176 return 3;
    \n-
    177 }
    \n-
    \n-
    178
    \n-
    179 private:
    \n-
    180 std::array<R,4> sign_;
    \n-
    181 };
    \n-
    \n-
    182}
    \n-
    183#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    22 template<class D, class R, unsigned int dim, unsigned int order>
    \n+\n+
    24
    \n+
    28 template<class D, class R>
    \n+\n+
    46
    \n+
    50 template<class D, class R>
    \n+\n+
    68
    \n+
    69} // namespace Dune
    \n+
    70
    \n+
    71#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalbasis.hh:28
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas1cube2dlocalbasis.hh:94
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas1cube2dlocalbasis.hh:32
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas1cube2dlocalbasis.hh:174
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas1cube2dlocalbasis.hh:57
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas1cube2dlocalbasis.hh:46
    \n-
    RT1Cube2DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas1cube2dlocalbasis.hh:39
    \n-
    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 raviartthomas1cube2dlocalbasis.hh:161
    \n+
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini1simplex2d.hh:28
    \n+
    Second order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2d.hh:27
    \n+
    Brezzi-Douglas-Marini local finite element for simplices.
    Definition brezzidouglasmarinisimplex.hh:23
    \n+
    BrezziDouglasMariniSimplexLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinisimplex.hh:42
    \n+
    BrezziDouglasMariniSimplexLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinisimplex.hh:34
    \n+
    BrezziDouglasMariniSimplexLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinisimplex.hh:64
    \n+
    BrezziDouglasMariniSimplexLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinisimplex.hh:56
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,219 +1,93 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas1cube2dlocalbasis.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+brezzidouglasmarinisimplex.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH\n 7\n-8#include \n-9#include \n+8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh>\n 10\n-11#include \n-12\n-13#include \"../../common/localbasis.hh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-26 template\n-_\b2_\b7 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-28 {\n-29\n-30 public:\n-31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n-FieldVector,\n-_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-33\n-_\b3_\b9 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n-40 {\n-41 for (size_t i=0; i<4; i++)\n-42 sign_[i] = (s[i]) ? -1.0 : 1.0;\n-43 }\n-44\n-_\b4_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-47 {\n-48 return 12;\n-49 }\n-50\n-_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-58 std::vector& out) const\n-59 {\n-60 out.resize(12);\n-61\n-62 out[0][0] = sign_[0]*(-1.0 + 4.0*in[0]-3*in[0]*in[0]);\n-63 out[0][1] = 0.0;\n-64 out[1][0] = 3.0 - 12.0*in[0] - 6.0*in[1] + 24.0*in[0]*in[1]+9*in[0]*in[0] -\n-18.0*in[0]*in[0]*in[1];\n-65 out[1][1] = 0.0;\n-66 out[2][0] = sign_[1]*(-2.0*in[0] + 3.0*in[0]*in[0]);\n-67 out[2][1] = 0.0;\n-68 out[3][0] = -6.0*in[0] + 12.0*in[0]*in[1] + 9.0*in[0]*in[0] - 18.0*in[0]*in\n-[0]*in[1];\n-69 out[3][1] = 0.0;\n-70 out[4][0] = 0.0;\n-71 out[4][1] = sign_[2]*(-1.0 + 4.0*in[1] - 3.0*in[1]*in[1]);\n-72 out[5][0] = 0.0;\n-73 out[5][1] = -3.0 + 6.0*in[0] + 12.0*in[1] - 24.0*in[0]*in[1] - 9.0*in[1]*in\n-[1] + 18.0*in[0]*in[1]*in[1];\n-74 out[6][0] = 0.0;\n-75 out[6][1] = sign_[3]*(-2.0*in[1] + 3.0*in[1]*in[1]);\n-76 out[7][0] = 0.0;\n-77 out[7][1] = 6.0*in[1] - 12.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in\n-[1]*in[1];\n-78 out[8][0] = 24.0*in[0] - 36.0*in[0]*in[1] - 24.0*in[0]*in[0] + 36.0*in[0]*in\n-[0]*in[1];\n-79 out[8][1] = 0.0;\n-80 out[9][0] = 0.0;\n-81 out[9][1] = 24.0*in[1] - 36.0*in[0]*in[1] - 24.0*in[1]*in[1] + 36.0*in[0]*in\n-[1]*in[1];\n-82 out[10][0] = -36.0*in[0] + 72.0*in[0]*in[1] + 36.0*in[0]*in[0] - 72.0*in\n-[0]*in[0]*in[1];\n-83 out[10][1] = 0.0;\n-84 out[11][0] = 0.0;\n-85 out[11][1] = -36.0*in[1] + 72.0*in[0]*in[1] + 36*in[1]*in[1] - 72.0*in[0]*in\n-[1]*in[1];\n-86 }\n-87\n-_\b9_\b4 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-95 std::vector& out) const\n-96 {\n-97 out.resize(12);\n-98\n-99 out[0][0][0] = sign_[0]*(4.0 - 6.0*in[0]);\n-100 out[0][0][1] = 0.0;\n-101 out[0][1][0] = 0.0;\n-102 out[0][1][1] = 0.0;\n-103\n-104 out[1][0][0] = -12.0 + 24.0*in[1] + 18.0*in[0] - 36.0*in[0]*in[1];\n-105 out[1][0][1] = -6 + 24.0*in[0] - 18.0*in[0]*in[0];\n-106 out[1][1][0] = 0.0;\n-107 out[1][1][1] = 0.0;\n-108\n-109 out[2][0][0] = sign_[1]*(-2.0 + 6.0*in[0]);\n-110 out[2][0][1] = 0.0;\n-111 out[2][1][0] = 0.0;\n-112 out[2][1][1] = 0.0;\n-113\n-114 out[3][0][0] = -6.0 + 12.0*in[1] + 18.0*in[0] - 36.0*in[0]*in[1];\n-115 out[3][0][1] = 12.0*in[0] - 18.0*in[0]*in[0];\n-116 out[3][1][0] = 0.0;\n-117 out[3][1][1] = 0.0;\n-118\n-119 out[4][0][0] = 0.0;\n-120 out[4][0][1] = 0.0;\n-121 out[4][1][0] = 0.0;\n-122 out[4][1][1] = sign_[2]*(4.0 - 6.0*in[1]);\n-123\n-124 out[5][0][0] = 0.0;\n-125 out[5][0][1] = 0.0;\n-126 out[5][1][0] = 6.0 - 24.0*in[1] + 18.0*in[1]*in[1];\n-127 out[5][1][1] = 12.0 - 24.0*in[0] - 18.0*in[1] + 36.0*in[0]*in[1];\n-128\n-129 out[6][0][0] = 0.0;\n-130 out[6][0][1] = 0.0;\n-131 out[6][1][0] = 0.0;\n-132 out[6][1][1] = sign_[3]*(-2.0 + 6.0*in[1]);\n-133\n-134 out[7][0][0] = 0.0;\n-135 out[7][0][1] = 0.0;\n-136 out[7][1][0] = -12.0*in[1] + 18.0*in[1]*in[1];\n-137 out[7][1][1] = 6.0 - 12.0*in[0] - 18.0*in[1] + 36.0*in[1]*in[0];\n-138\n-139 out[8][0][0] = 24.0 - 36.0*in[1] - 48.0*in[0] + 72.0*in[0]*in[1];\n-140 out[8][0][1] = -36.0*in[0] + 36.0*in[0]*in[0];\n-141 out[8][1][0] = 0.0;\n-142 out[8][1][1] = 0.0;\n-143\n-144 out[9][0][0] = 0.0;\n-145 out[9][0][1] = 0.0;\n-146 out[9][1][0] = -36.0*in[1] + 36.0*in[1]*in[1];\n-147 out[9][1][1] = 24.0 - 36.0*in[0] - 48.0*in[1] + 72.0*in[0]*in[1];\n-148\n-149 out[10][0][0] = -36.0 + 72.0*in[1] + 72.0*in[0] - 144.0*in[0]*in[1];\n-150 out[10][0][1] = 72.0*in[0] - 72.0*in[0]*in[0];\n-151 out[10][1][0] = 0.0;\n-152 out[10][1][1] = 0.0;\n-153\n-154 out[11][0][0] = 0.0;\n-155 out[11][0][1] = 0.0;\n-156 out[11][1][0] = 72.0*in[1] - 72.0*in[1]*in[1];\n-157 out[11][1][1] = -36.0 + 72.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1];\n-158 }\n-159\n-_\b1_\b6_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-162 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-163 std::vector& out) const // return value\n-164 {\n-165 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-166 if (totalOrder == 0) {\n-167 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-168 } else {\n-169 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-170 }\n-171 }\n-172\n-_\b1_\b7_\b4 unsigned int _\bo_\br_\bd_\be_\br () const\n-175 {\n-176 return 3;\n-177 }\n-178\n-179 private:\n-180 std::array sign_;\n-181 };\n-182}\n-183#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+22 template\n+_\b2_\b3 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+24\n+28 template\n+_\b2_\b9 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+30 : public _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+31 {\n+32 public:\n+_\b3_\b4 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+35 {}\n+36\n+_\b4_\b2 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+43 : _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+44 {}\n+45 };\n+46\n+50 template\n+_\b5_\b1 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+52 : public _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+53 {\n+54 public:\n+_\b5_\b6 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+57 {}\n+58\n+_\b6_\b4 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+65 : _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+66 {}\n+67 };\n+68\n+69} // namespace Dune\n+70\n+71#endif // #ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:174\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT1Cube2DLocalBasis(std::bitset< 4 > s=0)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:161\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Brezzi-Douglas-Marini shape functions on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Brezzi-Douglas-Marini shape functions on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Brezzi-Douglas-Marini local finite element for simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniSimplexLocalFiniteElement(int s)\n+Constructor with a set of edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniSimplexLocalFiniteElement()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniSimplexLocalFiniteElement(int s)\n+Constructor with a set of edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniSimplexLocalFiniteElement()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:56\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas1cube2dlocalcoefficients.hh File Reference
    \n+
    brezzidouglasmarini2simplex2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n+
    #include <array>
    \n+#include <bitset>
    \n+#include <numeric>
    \n #include <vector>
    \n-#include "../../common/localkey.hh"
    \n+#include <dune/common/fmatrix.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT1Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on quadrilaterals. More...
    class  Dune::BDM2Simplex2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas1cube2dlocalcoefficients.hh File Reference\n-#include \n+brezzidouglasmarini2simplex2dlocalbasis.hh File Reference\n+#include \n+#include \n+#include \n #include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Raviart-Thomas-1 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,83 +70,334 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube2dlocalcoefficients.hh
    \n+
    brezzidouglasmarini2simplex2dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include "../../common/localkey.hh"
    \n+
    8#include <array>
    \n+
    9#include <bitset>
    \n+
    10#include <numeric>
    \n+
    11#include <vector>
    \n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    \n-\n-
    24 {
    \n-
    25
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for (std::size_t i=0; i < 4; i++)
    \n-
    31 {
    \n-
    32 li[2*i] = LocalKey(i,1,0);
    \n-
    33 li[2*i + 1] = LocalKey(i,1,1);
    \n-
    34 }
    \n-
    35
    \n-
    36 li[8] = LocalKey(0,0,0);
    \n-
    37 li[9] = LocalKey(0,0,1);
    \n-
    38 li[10] = LocalKey(0,0,2);
    \n-
    39 li[11] = LocalKey(0,0,3);
    \n-
    40 }
    \n-
    \n-
    41
    \n-
    \n-
    43 std::size_t size () const
    \n-
    44 {
    \n-
    45 return 12;
    \n-
    46 }
    \n+
    13#include <dune/common/fmatrix.hh>
    \n+
    14
    \n+
    15#include "../../common/localbasis.hh"
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    28 template<class D, class R>
    \n+
    \n+\n+
    30 {
    \n+
    31
    \n+
    32 public:
    \n+\n+
    34 R,2,Dune::FieldVector<R,2>,
    \n+
    35 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    36
    \n+
    \n+\n+
    39 {
    \n+
    40 for (size_t i=0; i<3; i++)
    \n+
    41 sign_[i] = 1.0;
    \n+
    42 }
    \n
    \n-
    47
    \n+
    43
    \n
    \n-
    49 const LocalKey& localKey (std::size_t i) const
    \n-
    50 {
    \n-
    51 return li[i];
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    54 private:
    \n-
    55 std::vector<LocalKey> li;
    \n-
    56 };
    \n+
    49 BDM2Simplex2DLocalBasis(std::bitset<3> s)
    \n+
    50 {
    \n+
    51 for (size_t i=0; i<3; i++)
    \n+
    52 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+
    56 unsigned int size() const
    \n+
    57 {
    \n+
    58 return 12;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    67 inline void evaluateFunction(const typename Traits::DomainType& in,
    \n+
    68 std::vector<typename Traits::RangeType>& out) const
    \n+
    69 {
    \n+
    70 out.resize(size());
    \n+
    71
    \n+
    72 out[0][0] = sign_[0]*(-2*in[0]*in[1] + in[0]*in[0]);
    \n+
    73 out[0][1] = sign_[0]*(-1 + 6*in[1] -2*in[0]*in[1] - 5*in[1]*in[1]);
    \n+
    74
    \n+
    75 out[1][0] = 1.5*in[0] + 3*in[0]*in[1] - 4.5*in[0]*in[0];
    \n+
    76 out[1][1] = -3 + 6*in[0] + 10.5*in[1] - 15*in[0]*in[1] - 7.5*in[1]*in[1];
    \n+
    77
    \n+
    78 out[2][0] = sign_[0]*(-7.5*in[0] + 5*in[0]*in[1] + 12.5*in[0]*in[0]);
    \n+
    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]);
    \n+
    80
    \n+
    81
    \n+
    82
    \n+
    83 out[3][0] = sign_[1]*(-1 + 6*in[0] - 2*in[0]*in[1] - 5*in[0]*in[0]);
    \n+
    84 out[3][1] = sign_[1]*(-2*in[0]*in[1] + in[1]*in[1]);
    \n+
    85
    \n+
    86 out[4][0] = 3 - 10.5*in[0] - 6*in[1] + 15*in[0]*in[1] + 7.5*in[0]*in[0];
    \n+
    87 out[4][1] = -1.5*in[1] - 3*in[0]*in[1] + 4.5*in[1]*in[1];
    \n+
    88
    \n+
    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]);
    \n+
    90 out[5][1] = sign_[1]*(-7.5*in[1] + 5*in[0]*in[1] + 12.5*in[1]*in[1]);
    \n+
    91
    \n+
    92
    \n+
    93
    \n+
    94 out[6][0] = sign_[2]*(-3*in[0] + 4*in[0]*in[1] + 4*in[0]*in[0]);
    \n+
    95 out[6][1] = sign_[2]*(-3*in[1] + 4*in[0]*in[1] + 4*in[1]*in[1]);
    \n+
    96
    \n+
    97 out[7][0] = -3*in[0] + 6*in[0]*in[0];
    \n+
    98 out[7][1] = 3*in[1] - 6*in[1]*in[1];
    \n+
    99
    \n+
    100 out[8][0] = sign_[2]*(-10*in[0]*in[1] + 5*in[0]*in[0]);
    \n+
    101 out[8][1] = sign_[2]*(-10*in[0]*in[1] + 5*in[1]*in[1]);
    \n+
    102
    \n+
    103
    \n+
    104
    \n+
    105 out[9][0] = 18*in[0] - 12*in[0]*in[1] - 18*in[0]*in[0];
    \n+
    106 out[9][1] = 6*in[1] - 12*in[0]*in[1] - 6*in[1]*in[1];
    \n+
    107
    \n+
    108 out[10][0] = 6*in[0] - 12*in[0]*in[1] - 6*in[0]*in[0];
    \n+
    109 out[10][1] = 18*in[1] - 12*in[0]*in[1] - 18*in[1]*in[1];
    \n+
    110
    \n+
    111 out[11][0] = 90*in[0] - 180*in[0]*in[1] - 90*in[0]*in[0];
    \n+
    112 out[11][1] = -90*in[1] + 180*in[0]*in[1] + 90*in[1]*in[1];
    \n+
    113 }
    \n+
    \n+
    114
    \n+
    \n+
    121 inline void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    122 std::vector<typename Traits::JacobianType>& out) const
    \n+
    123 {
    \n+
    124 out.resize(size());
    \n+
    125
    \n+
    126 out[0][0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
    \n+
    127 out[0][0][1] = sign_[0]*(-2*in[0]);
    \n+
    128
    \n+
    129 out[0][1][0] = sign_[0]*(-2*in[1]);
    \n+
    130 out[0][1][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
    \n+
    131
    \n+
    132
    \n+
    133 out[1][0][0] = 1.5 + 3*in[1] - 9*in[0];
    \n+
    134 out[1][0][1] = 3*in[0];
    \n+
    135
    \n+
    136 out[1][1][0] = 6 - 15*in[1];
    \n+
    137 out[1][1][1] = 10.5 - 15*in[0] - 15*in[1];
    \n+
    138
    \n+
    139
    \n+
    140 out[2][0][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
    \n+
    141 out[2][0][1] = sign_[0]*(5*in[0]);
    \n+
    142
    \n+
    143 out[2][1][0] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
    \n+
    144 out[2][1][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
    \n+
    145
    \n+
    146
    \n+
    147
    \n+
    148 out[3][0][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
    \n+
    149 out[3][0][1] = sign_[1]*(-2*in[0]);
    \n+
    150
    \n+
    151 out[3][1][0] = sign_[1]*(-2*in[1]);
    \n+
    152 out[3][1][1] = sign_[1]*(-2*in[0] + 2*in[1]);
    \n+
    153
    \n+
    154
    \n+
    155 out[4][0][0] = -10.5 + 15*in[1] + 15*in[0];
    \n+
    156 out[4][0][1] = -6 + 15*in[0];
    \n+
    157
    \n+
    158 out[4][1][0] = -3*in[1];
    \n+
    159 out[4][1][1] = -1.5 - 3*in[0] + 9*in[1];
    \n+
    160
    \n+
    161
    \n+
    162 out[5][0][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
    \n+
    163 out[5][0][1] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
    \n+
    164
    \n+
    165 out[5][1][0] = sign_[1]*(5*in[1]);
    \n+
    166 out[5][1][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
    \n+
    167
    \n+
    168
    \n+
    169
    \n+
    170 out[6][0][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
    \n+
    171 out[6][0][1] = sign_[2]*(4*in[0]);
    \n+
    172
    \n+
    173 out[6][1][0] = sign_[2]*(4*in[1]);
    \n+
    174 out[6][1][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
    \n+
    175
    \n+
    176
    \n+
    177 out[7][0][0] = -3 + 12*in[0];
    \n+
    178 out[7][0][1] = 0;
    \n+
    179
    \n+
    180 out[7][1][0] = 0;
    \n+
    181 out[7][1][1] = 3 - 12*in[1];
    \n+
    182
    \n+
    183
    \n+
    184 out[8][0][0] = sign_[2]*(-10*in[1] + 10*in[0]);
    \n+
    185 out[8][0][1] = sign_[2]*(-10*in[0]);
    \n+
    186
    \n+
    187 out[8][1][0] = sign_[2]*(-10*in[1]);
    \n+
    188 out[8][1][1] = sign_[2]*(-10*in[0] + 10*in[1]);
    \n+
    189
    \n+
    190
    \n+
    191 out[9][0][0] = 18 - 12*in[1] - 36*in[0];
    \n+
    192 out[9][0][1] = -12*in[0];
    \n+
    193
    \n+
    194 out[9][1][0] = -12*in[1];
    \n+
    195 out[9][1][1] = 6 - 12*in[0] - 12*in[1];
    \n+
    196
    \n+
    197 out[10][0][0] = 6 - 12*in[1] - 12*in[0];
    \n+
    198 out[10][0][1] = -12*in[0];
    \n+
    199
    \n+
    200 out[10][1][0] = -12*in[1];
    \n+
    201 out[10][1][1] = 18 - 12*in[0] - 36*in[1];
    \n+
    202
    \n+
    203 out[11][0][0] = 90 - 180*in[1] - 180*in[0];
    \n+
    204 out[11][0][1] = -180*in[0];
    \n+
    205
    \n+
    206 out[11][1][0] = 180*in[1];
    \n+
    207 out[11][1][1] = -90 + 180*in[0] + 180*in[1];
    \n+
    208 }
    \n+
    \n+
    209
    \n+
    \n+
    211 void partial (const std::array<unsigned int, 2>& order,
    \n+
    212 const typename Traits::DomainType& in, // position
    \n+
    213 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    214 {
    \n+
    215 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    216 if (totalOrder == 0) {
    \n+
    217 evaluateFunction(in, out);
    \n+
    218 } else if (totalOrder == 1) {
    \n+
    219 out.resize(size());
    \n+
    220 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    221
    \n+
    222 switch (direction) {
    \n+
    223 case 0:
    \n+
    224 out[0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
    \n+
    225 out[0][1] = sign_[0]*(-2*in[1]);
    \n+
    226
    \n+
    227 out[1][0] = 1.5 + 3*in[1] - 9*in[0];
    \n+
    228 out[1][1] = 6 - 15*in[1];
    \n+
    229
    \n+
    230 out[2][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
    \n+
    231 out[2][1] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
    \n+
    232
    \n+
    233 out[3][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
    \n+
    234 out[3][1] = sign_[1]*(-2*in[1]);
    \n+
    235
    \n+
    236 out[4][0] = -10.5 + 15*in[1] + 15*in[0];
    \n+
    237 out[4][1] = -3*in[1];
    \n+
    238
    \n+
    239 out[5][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
    \n+
    240 out[5][1] = sign_[1]*(5*in[1]);
    \n+
    241
    \n+
    242 out[6][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
    \n+
    243 out[6][1] = sign_[2]*(4*in[1]);
    \n+
    244
    \n+
    245 out[7][0] = -3 + 12*in[0];
    \n+
    246 out[7][1] = 0;
    \n+
    247
    \n+
    248 out[8][0] = sign_[2]*(-10*in[1] + 10*in[0]);
    \n+
    249 out[8][1] = sign_[2]*(-10*in[1]);
    \n+
    250
    \n+
    251 out[9][0] = 18 - 12*in[1] - 36*in[0];
    \n+
    252 out[9][1] = -12*in[1];
    \n+
    253
    \n+
    254 out[10][0] = 6 - 12*in[1] - 12*in[0];
    \n+
    255 out[10][1] = -12*in[1];
    \n+
    256
    \n+
    257 out[11][0] = 90 - 180*in[1] - 180*in[0];
    \n+
    258 out[11][1] = 180*in[1];
    \n+
    259 break;
    \n+
    260 case 1:
    \n+
    261 out[0][0] = sign_[0]*(-2*in[0]);
    \n+
    262 out[0][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
    \n+
    263
    \n+
    264 out[1][0] = 3*in[0];
    \n+
    265 out[1][1] = 10.5 - 15*in[0] - 15*in[1];
    \n+
    266
    \n+
    267 out[2][0] = sign_[0]*(5*in[0]);
    \n+
    268 out[2][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
    \n+
    269
    \n+
    270 out[3][0] = sign_[1]*(-2*in[0]);
    \n+
    271 out[3][1] = sign_[1]*(-2*in[0] + 2*in[1]);
    \n+
    272
    \n+
    273 out[4][0] = -6 + 15*in[0];
    \n+
    274 out[4][1] = -1.5 - 3*in[0] + 9*in[1];
    \n+
    275
    \n+
    276 out[5][0] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
    \n+
    277 out[5][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
    \n+
    278
    \n+
    279 out[6][0] = sign_[2]*(4*in[0]);
    \n+
    280 out[6][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
    \n+
    281
    \n+
    282 out[7][0] = 0;
    \n+
    283 out[7][1] = 3 - 12*in[1];
    \n+
    284
    \n+
    285 out[8][0] = sign_[2]*(-10*in[0]);
    \n+
    286 out[8][1] = sign_[2]*(-10*in[0] + 10*in[1]);
    \n+
    287
    \n+
    288 out[9][0] = -12*in[0];
    \n+
    289 out[9][1] = 6 - 12*in[0] - 12*in[1];
    \n+
    290
    \n+
    291 out[10][0] = -12*in[0];
    \n+
    292 out[10][1] = 18 - 12*in[0] - 36*in[1];
    \n+
    293
    \n+
    294 out[11][0] = -180*in[0];
    \n+
    295 out[11][1] = -90 + 180*in[0] + 180*in[1];
    \n+
    296 break;
    \n+
    297 default:
    \n+
    298 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    299 }
    \n+
    300 } else {
    \n+
    301 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    302 }
    \n+
    303 }
    \n+
    \n+
    304
    \n+
    \n+
    306 unsigned int order() const
    \n+
    307 {
    \n+
    308 return 2; // TODO: check whether this is not order 3
    \n+
    309 }
    \n+
    \n+
    310
    \n+
    311 private:
    \n+
    312 std::array<R,3> sign_;
    \n+
    313 };
    \n
    \n-
    57}
    \n-
    58#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    314} // end namespace Dune
    \n+
    315#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for Raviart-Thomas-1 elements on quadrilaterals.
    Definition raviartthomas1cube2dlocalcoefficients.hh:24
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas1cube2dlocalcoefficients.hh:49
    \n-
    RT1Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas1cube2dlocalcoefficients.hh:28
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas1cube2dlocalcoefficients.hh:43
    \n+
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:30
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:121
    \n+
    BDM2Simplex2DLocalBasis(std::bitset< 3 > s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:49
    \n+
    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
    \n+
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:56
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:35
    \n+
    BDM2Simplex2DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:38
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:67
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:306
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,81 +1,348 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas1cube2dlocalcoefficients.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+brezzidouglasmarini2simplex2dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \"../../common/localkey.hh\"\n+8#include \n+9#include \n+10#include \n+11#include \n 12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-_\b2_\b3 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n-25\n-26 public:\n-_\b2_\b8 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(12)\n-29 {\n-30 for (std::size_t i=0; i < 4; i++)\n-31 {\n-32 li[2*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-33 li[2*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-34 }\n-35\n-36 li[8] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0);\n-37 li[9] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,1);\n-38 li[10] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,2);\n-39 li[11] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,3);\n-40 }\n-41\n-_\b4_\b3 std::size_t _\bs_\bi_\bz_\be () const\n-44 {\n-45 return 12;\n-46 }\n-47\n-_\b4_\b9 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+13#include \n+14\n+15#include \"../../common/localbasis.hh\"\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+28 template\n+_\b2_\b9 class _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+30 {\n+31\n+32 public:\n+33 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,\n+34 R,2,Dune::FieldVector,\n+_\b3_\b5 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+36\n+_\b3_\b8 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n+39 {\n+40 for (size_t i=0; i<3; i++)\n+41 sign_[i] = 1.0;\n+42 }\n+43\n+_\b4_\b9 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs(std::bitset<3> s)\n 50 {\n-51 return li[i];\n-52 }\n-53\n-54 private:\n-55 std::vector li;\n-56 };\n-57}\n-58#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH\n+51 for (size_t i=0; i<3; i++)\n+52 sign_[i] = s[i] ? -1.0 : 1.0;\n+53 }\n+54\n+_\b5_\b6 unsigned int _\bs_\bi_\bz_\be() const\n+57 {\n+58 return 12;\n+59 }\n+60\n+_\b6_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+68 std::vector& out) const\n+69 {\n+70 out.resize(_\bs_\bi_\bz_\be());\n+71\n+72 out[0][0] = sign_[0]*(-2*in[0]*in[1] + in[0]*in[0]);\n+73 out[0][1] = sign_[0]*(-1 + 6*in[1] -2*in[0]*in[1] - 5*in[1]*in[1]);\n+74\n+75 out[1][0] = 1.5*in[0] + 3*in[0]*in[1] - 4.5*in[0]*in[0];\n+76 out[1][1] = -3 + 6*in[0] + 10.5*in[1] - 15*in[0]*in[1] - 7.5*in[1]*in[1];\n+77\n+78 out[2][0] = sign_[0]*(-7.5*in[0] + 5*in[0]*in[1] + 12.5*in[0]*in[0]);\n+79 out[2][1] = sign_[0]*(-5 + 30*in[0] + 7.5*in[1] - 25*in[0]*in[1] - 30*in\n+[0]*in[0] - 2.5*in[1]*in[1]);\n+80\n+81\n+82\n+83 out[3][0] = sign_[1]*(-1 + 6*in[0] - 2*in[0]*in[1] - 5*in[0]*in[0]);\n+84 out[3][1] = sign_[1]*(-2*in[0]*in[1] + in[1]*in[1]);\n+85\n+86 out[4][0] = 3 - 10.5*in[0] - 6*in[1] + 15*in[0]*in[1] + 7.5*in[0]*in[0];\n+87 out[4][1] = -1.5*in[1] - 3*in[0]*in[1] + 4.5*in[1]*in[1];\n+88\n+89 out[5][0] = sign_[1]*(-5 + 7.5*in[0] + 30*in[1] - 25*in[0]*in[1] - 2.5*in\n+[0]*in[0] - 30*in[1]*in[1]);\n+90 out[5][1] = sign_[1]*(-7.5*in[1] + 5*in[0]*in[1] + 12.5*in[1]*in[1]);\n+91\n+92\n+93\n+94 out[6][0] = sign_[2]*(-3*in[0] + 4*in[0]*in[1] + 4*in[0]*in[0]);\n+95 out[6][1] = sign_[2]*(-3*in[1] + 4*in[0]*in[1] + 4*in[1]*in[1]);\n+96\n+97 out[7][0] = -3*in[0] + 6*in[0]*in[0];\n+98 out[7][1] = 3*in[1] - 6*in[1]*in[1];\n+99\n+100 out[8][0] = sign_[2]*(-10*in[0]*in[1] + 5*in[0]*in[0]);\n+101 out[8][1] = sign_[2]*(-10*in[0]*in[1] + 5*in[1]*in[1]);\n+102\n+103\n+104\n+105 out[9][0] = 18*in[0] - 12*in[0]*in[1] - 18*in[0]*in[0];\n+106 out[9][1] = 6*in[1] - 12*in[0]*in[1] - 6*in[1]*in[1];\n+107\n+108 out[10][0] = 6*in[0] - 12*in[0]*in[1] - 6*in[0]*in[0];\n+109 out[10][1] = 18*in[1] - 12*in[0]*in[1] - 18*in[1]*in[1];\n+110\n+111 out[11][0] = 90*in[0] - 180*in[0]*in[1] - 90*in[0]*in[0];\n+112 out[11][1] = -90*in[1] + 180*in[0]*in[1] + 90*in[1]*in[1];\n+113 }\n+114\n+_\b1_\b2_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+122 std::vector& out) const\n+123 {\n+124 out.resize(_\bs_\bi_\bz_\be());\n+125\n+126 out[0][0][0] = sign_[0]*(-2*in[1] + 2*in[0]);\n+127 out[0][0][1] = sign_[0]*(-2*in[0]);\n+128\n+129 out[0][1][0] = sign_[0]*(-2*in[1]);\n+130 out[0][1][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);\n+131\n+132\n+133 out[1][0][0] = 1.5 + 3*in[1] - 9*in[0];\n+134 out[1][0][1] = 3*in[0];\n+135\n+136 out[1][1][0] = 6 - 15*in[1];\n+137 out[1][1][1] = 10.5 - 15*in[0] - 15*in[1];\n+138\n+139\n+140 out[2][0][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);\n+141 out[2][0][1] = sign_[0]*(5*in[0]);\n+142\n+143 out[2][1][0] = sign_[0]*(30 - 25*in[1] - 60*in[0]);\n+144 out[2][1][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);\n+145\n+146\n+147\n+148 out[3][0][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);\n+149 out[3][0][1] = sign_[1]*(-2*in[0]);\n+150\n+151 out[3][1][0] = sign_[1]*(-2*in[1]);\n+152 out[3][1][1] = sign_[1]*(-2*in[0] + 2*in[1]);\n+153\n+154\n+155 out[4][0][0] = -10.5 + 15*in[1] + 15*in[0];\n+156 out[4][0][1] = -6 + 15*in[0];\n+157\n+158 out[4][1][0] = -3*in[1];\n+159 out[4][1][1] = -1.5 - 3*in[0] + 9*in[1];\n+160\n+161\n+162 out[5][0][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);\n+163 out[5][0][1] = sign_[1]*(30 - 25*in[0] - 60*in[1]);\n+164\n+165 out[5][1][0] = sign_[1]*(5*in[1]);\n+166 out[5][1][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);\n+167\n+168\n+169\n+170 out[6][0][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);\n+171 out[6][0][1] = sign_[2]*(4*in[0]);\n+172\n+173 out[6][1][0] = sign_[2]*(4*in[1]);\n+174 out[6][1][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);\n+175\n+176\n+177 out[7][0][0] = -3 + 12*in[0];\n+178 out[7][0][1] = 0;\n+179\n+180 out[7][1][0] = 0;\n+181 out[7][1][1] = 3 - 12*in[1];\n+182\n+183\n+184 out[8][0][0] = sign_[2]*(-10*in[1] + 10*in[0]);\n+185 out[8][0][1] = sign_[2]*(-10*in[0]);\n+186\n+187 out[8][1][0] = sign_[2]*(-10*in[1]);\n+188 out[8][1][1] = sign_[2]*(-10*in[0] + 10*in[1]);\n+189\n+190\n+191 out[9][0][0] = 18 - 12*in[1] - 36*in[0];\n+192 out[9][0][1] = -12*in[0];\n+193\n+194 out[9][1][0] = -12*in[1];\n+195 out[9][1][1] = 6 - 12*in[0] - 12*in[1];\n+196\n+197 out[10][0][0] = 6 - 12*in[1] - 12*in[0];\n+198 out[10][0][1] = -12*in[0];\n+199\n+200 out[10][1][0] = -12*in[1];\n+201 out[10][1][1] = 18 - 12*in[0] - 36*in[1];\n+202\n+203 out[11][0][0] = 90 - 180*in[1] - 180*in[0];\n+204 out[11][0][1] = -180*in[0];\n+205\n+206 out[11][1][0] = 180*in[1];\n+207 out[11][1][1] = -90 + 180*in[0] + 180*in[1];\n+208 }\n+209\n+_\b2_\b1_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+212 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+213 std::vector& out) const // return value\n+214 {\n+215 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+216 if (totalOrder == 0) {\n+217 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+218 } else if (totalOrder == 1) {\n+219 out.resize(_\bs_\bi_\bz_\be());\n+220 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n+221\n+222 switch (direction) {\n+223 case 0:\n+224 out[0][0] = sign_[0]*(-2*in[1] + 2*in[0]);\n+225 out[0][1] = sign_[0]*(-2*in[1]);\n+226\n+227 out[1][0] = 1.5 + 3*in[1] - 9*in[0];\n+228 out[1][1] = 6 - 15*in[1];\n+229\n+230 out[2][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);\n+231 out[2][1] = sign_[0]*(30 - 25*in[1] - 60*in[0]);\n+232\n+233 out[3][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);\n+234 out[3][1] = sign_[1]*(-2*in[1]);\n+235\n+236 out[4][0] = -10.5 + 15*in[1] + 15*in[0];\n+237 out[4][1] = -3*in[1];\n+238\n+239 out[5][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);\n+240 out[5][1] = sign_[1]*(5*in[1]);\n+241\n+242 out[6][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);\n+243 out[6][1] = sign_[2]*(4*in[1]);\n+244\n+245 out[7][0] = -3 + 12*in[0];\n+246 out[7][1] = 0;\n+247\n+248 out[8][0] = sign_[2]*(-10*in[1] + 10*in[0]);\n+249 out[8][1] = sign_[2]*(-10*in[1]);\n+250\n+251 out[9][0] = 18 - 12*in[1] - 36*in[0];\n+252 out[9][1] = -12*in[1];\n+253\n+254 out[10][0] = 6 - 12*in[1] - 12*in[0];\n+255 out[10][1] = -12*in[1];\n+256\n+257 out[11][0] = 90 - 180*in[1] - 180*in[0];\n+258 out[11][1] = 180*in[1];\n+259 break;\n+260 case 1:\n+261 out[0][0] = sign_[0]*(-2*in[0]);\n+262 out[0][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);\n+263\n+264 out[1][0] = 3*in[0];\n+265 out[1][1] = 10.5 - 15*in[0] - 15*in[1];\n+266\n+267 out[2][0] = sign_[0]*(5*in[0]);\n+268 out[2][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);\n+269\n+270 out[3][0] = sign_[1]*(-2*in[0]);\n+271 out[3][1] = sign_[1]*(-2*in[0] + 2*in[1]);\n+272\n+273 out[4][0] = -6 + 15*in[0];\n+274 out[4][1] = -1.5 - 3*in[0] + 9*in[1];\n+275\n+276 out[5][0] = sign_[1]*(30 - 25*in[0] - 60*in[1]);\n+277 out[5][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);\n+278\n+279 out[6][0] = sign_[2]*(4*in[0]);\n+280 out[6][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);\n+281\n+282 out[7][0] = 0;\n+283 out[7][1] = 3 - 12*in[1];\n+284\n+285 out[8][0] = sign_[2]*(-10*in[0]);\n+286 out[8][1] = sign_[2]*(-10*in[0] + 10*in[1]);\n+287\n+288 out[9][0] = -12*in[0];\n+289 out[9][1] = 6 - 12*in[0] - 12*in[1];\n+290\n+291 out[10][0] = -12*in[0];\n+292 out[10][1] = 18 - 12*in[0] - 36*in[1];\n+293\n+294 out[11][0] = -180*in[0];\n+295 out[11][1] = -90 + 180*in[0] + 180*in[1];\n+296 break;\n+297 default:\n+298 DUNE_THROW(RangeError, \"Component out of range.\");\n+299 }\n+300 } else {\n+301 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+302 }\n+303 }\n+304\n+_\b3_\b0_\b6 unsigned int _\bo_\br_\bd_\be_\br() const\n+307 {\n+308 return 2; // TODO: check whether this is not order 3\n+309 }\n+310\n+311 private:\n+312 std::array sign_;\n+313 };\n+314} // end namespace Dune\n+315#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT1Cube2DLocalCoefficients()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM2Simplex2DLocalBasis(std::bitset< 3 > s)\n+Make set number s, where 0 <= s < 8.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:211\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM2Simplex2DLocalBasis()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:43\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:306\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,33 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas1cube2dlocalinterpolation.hh File Reference
    \n+
    brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference
    \n
    \n
    \n
    #include <vector>
    \n #include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT1Cube2DLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference quadrilateral. More...
    class  Dune::BDM2Simplex2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on triangles. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas1cube2dlocalinterpolation.hh File Reference\n+brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference\n #include \n #include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,155 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas1cube2dlocalinterpolation.hh
    \n+
    brezzidouglasmarini2simplex2dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n
    7
    \n
    8#include <vector>
    \n
    9
    \n
    10#include <dune/geometry/quadraturerules.hh>
    \n
    11
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    24 template<class LB>
    \n-
    \n-\n-
    26 {
    \n-
    27
    \n-
    28 public:
    \n-
    \n-
    34 RT1Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n-
    35 {
    \n-
    36 for (size_t i=0; i<4; i++)
    \n-
    37 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    38
    \n-
    39 n_[0] = {-1.0, 0.0};
    \n-
    40 n_[1] = { 1.0, 0.0};
    \n-
    41 n_[2] = { 0.0, -1.0};
    \n-
    42 n_[3] = { 0.0, 1.0};
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    53 template<class F, class C>
    \n-
    \n-
    54 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    55 {
    \n-
    56 // f gives v*outer normal at a point on the edge!
    \n-
    57 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    58 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    59
    \n-
    60 out.resize(12);
    \n-
    61 fill(out.begin(), out.end(), 0.0);
    \n-
    62
    \n-
    63 const int qOrder = 3;
    \n-
    64 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    65
    \n-
    66 for (auto&& qp : rule1)
    \n-
    67 {
    \n-
    68 Scalar qPos = qp.position();
    \n-
    69 typename LB::Traits::DomainType localPos = {0.0, qPos};
    \n-
    70
    \n-
    71 auto y = f(localPos);
    \n-
    72 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n-
    73 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    74
    \n-
    75 localPos = {1.0, qPos};
    \n-
    76 y = f(localPos);
    \n-
    77 out[2] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n-
    78 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    79
    \n-
    80 localPos = {qPos, 0.0};
    \n-
    81 y = f(localPos);
    \n-
    82 out[4] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n-
    83 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    84
    \n-
    85 localPos = {qPos, 1.0};
    \n-
    86 y = f(localPos);
    \n-
    87 out[6] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n-
    88 out[7] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    89 }
    \n-
    90
    \n-
    91 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    23 template<class LB>
    \n+
    \n+\n+
    25 {
    \n+
    26
    \n+
    27 public:
    \n+
    \n+\n+
    30 {
    \n+
    31 sign0 = sign1 = sign2 = 1.0;
    \n+
    32 }
    \n+
    \n+
    33
    \n+
    \n+\n+
    40 {
    \n+
    41 sign0 = sign1 = sign2 = 1.0;
    \n+
    42 if (s & 1)
    \n+
    43 {
    \n+
    44 sign0 = -1.0;
    \n+
    45 }
    \n+
    46 if (s & 2)
    \n+
    47 {
    \n+
    48 sign1 = -1.0;
    \n+
    49 }
    \n+
    50 if (s & 4)
    \n+
    51 {
    \n+
    52 sign2 = -1.0;
    \n+
    53 }
    \n+
    54
    \n+
    55 m0[0] = 0.5;
    \n+
    56 m0[1] = 0.0;
    \n+
    57 m1[0] = 0.0;
    \n+
    58 m1[1] = 0.5;
    \n+
    59 m2[0] = 0.5;
    \n+
    60 m2[1] = 0.5;
    \n+
    61 n0[0] = 0.0;
    \n+
    62 n0[1] = -1.0;
    \n+
    63 n1[0] = -1.0;
    \n+
    64 n1[1] = 0.0;
    \n+
    65 n2[0] = 1.0/sqrt(2.0);
    \n+
    66 n2[1] = 1.0/sqrt(2.0);
    \n+
    67 c0 = 0.5*n0[0] - 1.0*n0[1];
    \n+
    68 c1 = -1.0*n1[0] + 0.5*n1[1];
    \n+
    69 c2 = 0.5*n2[0] + 0.5*n2[1];
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    80 template<typename F, typename C>
    \n+
    \n+
    81 void interpolate(const F& f, std::vector<C>& out) const
    \n+
    82 {
    \n+
    83 // f gives v*outer normal at a point on the edge!
    \n+
    84 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    85 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    86
    \n+
    87 out.resize(12);
    \n+
    88 fill(out.begin(), out.end(), 0.0);
    \n+
    89
    \n+
    90 const int qOrder = 4;
    \n+
    91 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
    \n
    92
    \n-
    93 for (auto&& qp : rule2)
    \n+
    93 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n
    94 {
    \n-
    95 auto qPos = qp.position();
    \n+
    95 Scalar qPos = it->position();
    \n
    96
    \n-
    97 auto y = f(qPos);
    \n-
    98 out[8] += y[0]*qp.weight();
    \n-
    99 out[9] += y[1]*qp.weight();
    \n-
    100 out[10] += y[0]*qPos[1]*qp.weight();
    \n-
    101 out[11] += y[1]*qPos[0]*qp.weight();
    \n-
    102 }
    \n-
    103 }
    \n-
    \n-
    104
    \n-
    105 private:
    \n-
    106 // Edge orientations
    \n-
    107 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n-
    108
    \n-
    109 // Edge normals
    \n-
    110 std::array<typename LB::Traits::DomainType, 4> n_;
    \n-
    111 };
    \n+
    97 typename LB::Traits::DomainType localPos;
    \n+
    98
    \n+
    99 localPos[0] = qPos;
    \n+
    100 localPos[1] = 0.0;
    \n+
    101 auto y = f(localPos);
    \n+
    102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
    \n+
    103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;
    \n+
    104 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0/c0;
    \n+
    105
    \n+
    106 localPos[0] = 0.0;
    \n+
    107 localPos[1] = qPos;
    \n+
    108 y = f(localPos);
    \n+
    109 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;
    \n+
    110 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;
    \n+
    111 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1/c1;
    \n+
    112
    \n+
    113 localPos[0] = 1.0 - qPos;
    \n+
    114 localPos[1] = qPos;
    \n+
    115 y = f(localPos);
    \n+
    116 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
    \n+
    117 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;
    \n+
    118 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2/c2;
    \n+
    119 }
    \n+
    120
    \n+
    121 // a volume part is needed here for dofs: 9 10 11
    \n+
    122 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::simplex(2), qOrder);
    \n+
    123
    \n+
    124 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
    \n+
    125 {
    \n+
    126 typename LB::Traits::DomainType localPos = it->position();
    \n+
    127 auto y = f(localPos);
    \n+
    128
    \n+
    129 out[9] += y[0]*it->weight();
    \n+
    130 out[10] += y[1]*it->weight();
    \n+
    131 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos[0]*localPos[0])
    \n+
    132 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos[1]))*it->weight();
    \n+
    133 }
    \n+
    134 }
    \n+
    \n+
    135
    \n+
    136 private:
    \n+
    137 typename LB::Traits::RangeFieldType sign0, sign1, sign2;
    \n+
    138 typename LB::Traits::DomainType m0, m1, m2;
    \n+
    139 typename LB::Traits::DomainType n0, n1, n2;
    \n+
    140 typename LB::Traits::RangeFieldType c0, c1, c2;
    \n+
    141 };
    \n
    \n-
    112}
    \n-
    113#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    142} // end namespace Dune
    \n+
    143#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalinterpolation.hh:26
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas1cube2dlocalinterpolation.hh:54
    \n-
    RT1Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas1cube2dlocalinterpolation.hh:34
    \n+
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:25
    \n+
    BDM2Simplex2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:29
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:81
    \n+
    BDM2Simplex2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:39
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,120 +1,163 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas1cube2dlocalinterpolation.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+brezzidouglasmarini2simplex2dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH\n 7\n 8#include \n 9\n 10#include \n 11\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-24 template\n-_\b2_\b5 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-26 {\n-27\n-28 public:\n-_\b3_\b4 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<4> s = 0)\n-35 {\n-36 for (size_t i=0; i<4; i++)\n-37 sign_[i] = (s[i]) ? -1.0 : 1.0;\n-38\n-39 n_[0] = {-1.0, 0.0};\n-40 n_[1] = { 1.0, 0.0};\n-41 n_[2] = { 0.0, -1.0};\n-42 n_[3] = { 0.0, 1.0};\n-43 }\n-44\n-53 template\n-_\b5_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-55 {\n-56 // f gives v*outer normal at a point on the edge!\n-57 typedef typename LB::Traits::RangeFieldType Scalar;\n-58 typedef typename LB::Traits::DomainFieldType Vector;\n-59\n-60 out.resize(12);\n-61 fill(out.begin(), out.end(), 0.0);\n-62\n-63 const int qOrder = 3;\n-64 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n-qOrder);\n-65\n-66 for (auto&& qp : rule1)\n-67 {\n-68 Scalar qPos = qp.position();\n-69 typename LB::Traits::DomainType localPos = {0.0, qPos};\n-70\n-71 auto y = f(localPos);\n-72 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n-73 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n-74\n-75 localPos = {1.0, qPos};\n-76 y = f(localPos);\n-77 out[2] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n-78 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n-79\n-80 localPos = {qPos, 0.0};\n-81 y = f(localPos);\n-82 out[4] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n-83 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n-84\n-85 localPos = {qPos, 1.0};\n-86 y = f(localPos);\n-87 out[6] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n-88 out[7] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n-89 }\n-90\n-91 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n-qOrder);\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+23 template\n+_\b2_\b4 class _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+25 {\n+26\n+27 public:\n+_\b2_\b9 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n+30 {\n+31 sign0 = sign1 = sign2 = 1.0;\n+32 }\n+33\n+_\b3_\b9 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(unsigned int s)\n+40 {\n+41 sign0 = sign1 = sign2 = 1.0;\n+42 if (s & 1)\n+43 {\n+44 sign0 = -1.0;\n+45 }\n+46 if (s & 2)\n+47 {\n+48 sign1 = -1.0;\n+49 }\n+50 if (s & 4)\n+51 {\n+52 sign2 = -1.0;\n+53 }\n+54\n+55 m0[0] = 0.5;\n+56 m0[1] = 0.0;\n+57 m1[0] = 0.0;\n+58 m1[1] = 0.5;\n+59 m2[0] = 0.5;\n+60 m2[1] = 0.5;\n+61 n0[0] = 0.0;\n+62 n0[1] = -1.0;\n+63 n1[0] = -1.0;\n+64 n1[1] = 0.0;\n+65 n2[0] = 1.0/sqrt(2.0);\n+66 n2[1] = 1.0/sqrt(2.0);\n+67 c0 = 0.5*n0[0] - 1.0*n0[1];\n+68 c1 = -1.0*n1[0] + 0.5*n1[1];\n+69 c2 = 0.5*n2[0] + 0.5*n2[1];\n+70 }\n+71\n+80 template\n+_\b8_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const\n+82 {\n+83 // f gives v*outer normal at a point on the edge!\n+84 typedef typename LB::Traits::RangeFieldType Scalar;\n+85 typedef typename LB::Traits::DomainFieldType Vector;\n+86\n+87 out.resize(12);\n+88 fill(out.begin(), out.end(), 0.0);\n+89\n+90 const int qOrder = 4;\n+91 const Dune::QuadratureRule& rule = Dune::\n+QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder);\n 92\n-93 for (auto&& qp : rule2)\n+93 for (typename Dune::QuadratureRule::const_iterator it=rule.begin\n+(); it!=rule.end(); ++it)\n 94 {\n-95 auto qPos = qp.position();\n+95 Scalar qPos = it->position();\n 96\n-97 auto y = f(qPos);\n-98 out[8] += y[0]*qp.weight();\n-99 out[9] += y[1]*qp.weight();\n-100 out[10] += y[0]*qPos[1]*qp.weight();\n-101 out[11] += y[1]*qPos[0]*qp.weight();\n-102 }\n-103 }\n-104\n-105 private:\n-106 // Edge orientations\n-107 std::array sign_;\n-108\n-109 // Edge normals\n-110 std::array n_;\n-111 };\n-112}\n-113#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH\n+97 typename LB::Traits::DomainType localPos;\n+98\n+99 localPos[0] = qPos;\n+100 localPos[1] = 0.0;\n+101 auto y = f(localPos);\n+102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;\n+103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;\n+104 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign0/c0;\n+105\n+106 localPos[0] = 0.0;\n+107 localPos[1] = qPos;\n+108 y = f(localPos);\n+109 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;\n+110 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;\n+111 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign1/c1;\n+112\n+113 localPos[0] = 1.0 - qPos;\n+114 localPos[1] = qPos;\n+115 y = f(localPos);\n+116 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;\n+117 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;\n+118 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign2/c2;\n+119 }\n+120\n+121 // a volume part is needed here for dofs: 9 10 11\n+122 const QuadratureRule& rule2 = QuadratureRules::rule\n+(GeometryTypes::simplex(2), qOrder);\n+123\n+124 for (typename QuadratureRule::const_iterator it=rule2.begin();\n+it!=rule2.end(); ++it)\n+125 {\n+126 typename LB::Traits::DomainType localPos = it->position();\n+127 auto y = f(localPos);\n+128\n+129 out[9] += y[0]*it->weight();\n+130 out[10] += y[1]*it->weight();\n+131 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos\n+[0]*localPos[0])\n+132 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos\n+[1]))*it->weight();\n+133 }\n+134 }\n+135\n+136 private:\n+137 typename LB::Traits::RangeFieldType sign0, sign1, sign2;\n+138 typename LB::Traits::DomainType m0, m1, m2;\n+139 typename LB::Traits::DomainType n0, n1, n2;\n+140 typename LB::Traits::RangeFieldType c0, c1, c2;\n+141 };\n+142} // end namespace Dune\n+143#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalinterpolation.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM2Simplex2DLocalInterpolation()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n void interpolate(const F &f, std::vector< C > &out) const\n Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalinterpolation.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT1Cube2DLocalInterpolation(std::bitset< 4 > s=0)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalinterpolation.hh:34\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM2Simplex2DLocalInterpolation(unsigned int s)\n+Make set number s, where 0 <= s < 8.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:39\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas12dlocalcoefficients.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,34 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas12dlocalcoefficients.hh File Reference
    \n+
    brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n #include <vector>
    \n-#include "../../common/localkey.hh"
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT12DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on the reference triangle. More...
    class  Dune::BDM2Simplex2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-2 elements on triangles. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas12dlocalcoefficients.hh File Reference\n+brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference\n #include \n #include \n #include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Raviart-Thomas-1 elements on the reference triangle.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Brezzi-Douglas-Marini-2 elements on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas12dlocalcoefficients.hh Source File\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,82 +70,84 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas12dlocalcoefficients.hh
    \n+
    brezzidouglasmarini2simplex2dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n
    8#include <cstddef>
    \n
    9#include <vector>
    \n
    10
    \n
    11#include "../../common/localkey.hh"
    \n
    12
    \n
    13namespace Dune
    \n
    14{
    \n
    15
    \n-
    \n-\n-
    23 {
    \n-
    24
    \n-
    25 public:
    \n-
    \n-\n-
    28 {
    \n-
    29 for (std::size_t i = 0; i < 3; i++)
    \n-
    30 {
    \n-
    31 li[i] = LocalKey(i,1,0);
    \n-
    32 li[3 + i] = LocalKey(i,1,1);
    \n-
    33 }
    \n-
    34
    \n-
    35 // last two DOF are associated with the cell (codim = 0)
    \n-
    36 li[6] = LocalKey(0,0,0);
    \n-
    37 li[7] = LocalKey(0,0,1);
    \n-
    38 }
    \n-
    \n-
    39
    \n-
    \n-
    41 std::size_t size () const
    \n-
    42 {
    \n-
    43 return 8;
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    \n-
    47 const LocalKey& localKey (std::size_t i) const
    \n-
    48 {
    \n-
    49 return li[i];
    \n-
    50 }
    \n-
    \n-
    51
    \n-
    52 private:
    \n-
    53 std::vector<LocalKey> li;
    \n-
    54 };
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for (std::size_t i = 0; i < 3; ++i)
    \n+
    31 {
    \n+
    32 li[3 * i] = LocalKey(i,1,0);
    \n+
    33 li[3 * i + 1] = LocalKey(i,1,1);
    \n+
    34 li[3 * i + 2] = LocalKey(i,1,2);
    \n+
    35 }
    \n+
    36
    \n+
    37 // last DOFs are associated with the cell (codim=0)
    \n+
    38 li[9] = LocalKey(0,0,0);
    \n+
    39 li[10] = LocalKey(0,0,1);
    \n+
    40 li[11] = LocalKey(0,0,2);
    \n+
    41 }
    \n+
    \n+
    42
    \n+
    \n+
    44 std::size_t size() const
    \n+
    45 {
    \n+
    46 return 12;
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    \n+
    50 const LocalKey& localKey(std::size_t i) const
    \n+
    51 {
    \n+
    52 return li[i];
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    55 private:
    \n+
    56 std::vector<LocalKey> li;
    \n+
    57 };
    \n
    \n-
    55}
    \n-
    56#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH
    \n+
    58} // end namespace Dune
    \n+
    59#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n+
    Layout map for Brezzi-Douglas-Marini-2 elements on triangles.
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:24
    \n+
    BDM2Simplex2DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:28
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:50
    \n+
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:44
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for Raviart-Thomas-1 elements on the reference triangle.
    Definition raviartthomas12dlocalcoefficients.hh:23
    \n-
    RT12DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas12dlocalcoefficients.hh:27
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas12dlocalcoefficients.hh:47
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas12dlocalcoefficients.hh:41
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,80 +1,85 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n-raviartthomas12dlocalcoefficients.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+brezzidouglasmarini2simplex2dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n 7\n 8#include \n 9#include \n 10\n 11#include \"../../common/localkey.hh\"\n 12\n 13namespace _\bD_\bu_\bn_\be\n 14{\n 15\n-_\b2_\b2 class _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-23 {\n-24\n-25 public:\n-_\b2_\b7 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(8)\n-28 {\n-29 for (std::size_t i = 0; i < 3; i++)\n-30 {\n-31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-32 li[3 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-33 }\n-34\n-35 // last two DOF are associated with the cell (codim = 0)\n-36 li[6] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0);\n-37 li[7] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,1);\n-38 }\n-39\n-_\b4_\b1 std::size_t _\bs_\bi_\bz_\be () const\n-42 {\n-43 return 8;\n-44 }\n-45\n-_\b4_\b7 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-48 {\n-49 return li[i];\n-50 }\n-51\n-52 private:\n-53 std::vector li;\n-54 };\n-55}\n-56#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH\n+_\b2_\b3 class _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+24 {\n+25\n+26 public:\n+_\b2_\b8 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(12)\n+29 {\n+30 for (std::size_t i = 0; i < 3; ++i)\n+31 {\n+32 li[3 * i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+33 li[3 * i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+34 li[3 * i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n+35 }\n+36\n+37 // last DOFs are associated with the cell (codim=0)\n+38 li[9] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0);\n+39 li[10] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,1);\n+40 li[11] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,2);\n+41 }\n+42\n+_\b4_\b4 std::size_t _\bs_\bi_\bz_\be() const\n+45 {\n+46 return 12;\n+47 }\n+48\n+_\b5_\b0 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const\n+51 {\n+52 return li[i];\n+53 }\n+54\n+55 private:\n+56 std::vector li;\n+57 };\n+58} // end namespace Dune\n+59#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT12DLocalCoefficients()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-2 elements on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+BDM2Simplex2DLocalCoefficients()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n const LocalKey & localKey(std::size_t i) const\n get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n std::size_t size() const\n number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:41\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas12dlocalinterpolation.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1simplex2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,36 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas12dlocalinterpolation.hh File Reference
    \n+
    brezzidouglasmarini1simplex2d.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT12DLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference quadrilateral. More...
    class  Dune::BDM1Simplex2DLocalFiniteElement< D, R >
     First order Brezzi-Douglas-Marini shape functions on triangles. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas12dlocalinterpolation.hh File Reference\n-#include \n-#include \n+brezzidouglasmarini1simplex2d.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas12dlocalinterpolation.hh Source File\n+dune-localfunctions: brezzidouglasmarini1simplex2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas12dlocalinterpolation.hh
    \n+
    brezzidouglasmarini1simplex2d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n
    14
    \n-
    23 template<class LB>
    \n-
    \n-\n-
    25 {
    \n-
    26
    \n-
    27 public:
    \n-
    28
    \n-
    \n-
    34 RT12DLocalInterpolation (std::bitset<3> s = 0)
    \n-
    35 {
    \n-
    36 using std::sqrt;
    \n-
    37 for (size_t i=0; i<3; i++)
    \n-
    38 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    39
    \n-
    40 n_[0] = { 0.0, -1.0};
    \n-
    41 n_[1] = {-1.0, 0.0};
    \n-
    42 n_[2] = { 1.0/sqrt(2.0), 1.0/sqrt(2.0)};
    \n-
    43
    \n-
    44 c_ = { 0.5*n_[0][0] - 1.0*n_[0][1],
    \n-
    45 -1.0*n_[1][0] + 0.5*n_[1][1],
    \n-
    46 0.5*n_[2][0] + 0.5*n_[2][1]};
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    57 template<typename F, typename C>
    \n-
    \n-
    58 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    59 {
    \n-
    60 // f gives v*outer normal at a point on the edge!
    \n-
    61 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    62 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    63
    \n-
    64 out.resize(8);
    \n-
    65 fill(out.begin(), out.end(), 0.0);
    \n-
    66
    \n-
    67 const int qOrder1 = 4;
    \n-
    68 const auto& rule1 = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder1);
    \n-
    69
    \n-
    70 for (auto&& qp : rule1)
    \n-
    71 {
    \n-
    72 Scalar qPos = qp.position();
    \n-
    73 typename LB::Traits::DomainType localPos;
    \n-
    74
    \n-
    75 localPos = {qPos, 0.0};
    \n-
    76 auto y = f(localPos);
    \n-
    77 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0]/c_[0];
    \n-
    78 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight()/c_[0];
    \n-
    79
    \n-
    80 localPos = {0.0, qPos};
    \n-
    81 y = f(localPos);
    \n-
    82 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1]/c_[1];
    \n-
    83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight()/c_[1];
    \n-
    84
    \n-
    85 localPos = {1.0 - qPos, qPos};
    \n-
    86 y = f(localPos);
    \n-
    87 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2]/c_[2];
    \n-
    88 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(2.0*qPos - 1.0)*qp.weight()/c_[2];
    \n-
    89 }
    \n-
    90
    \n-
    91 const int qOrder2 = 8;
    \n-
    92 const auto& rule2 = Dune::QuadratureRules<Vector,2>::rule(Dune::GeometryTypes::simplex(2), qOrder2);
    \n-
    93
    \n-
    94 for (auto&& qp : rule2)
    \n-
    95 {
    \n-
    96 auto qPos = qp.position();
    \n-
    97
    \n-
    98 auto y = f(qPos);
    \n-
    99 out[6] += y[0]*qp.weight();
    \n-
    100 out[7] += y[1]*qp.weight();
    \n-
    101 }
    \n-
    102 }
    \n-
    \n-
    103
    \n-
    104 private:
    \n-
    105 // Edge orientations
    \n-
    106 std::array<typename LB::Traits::RangeFieldType, 3> sign_;
    \n-
    107
    \n-
    108 // Edge normals
    \n-
    109 std::array<typename LB::Traits::DomainType, 3> n_;
    \n-
    110
    \n-
    111 std::array<typename LB::Traits::RangeFieldType, 3> c_;
    \n-
    112 };
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17
    \n+
    26 template<class D, class R>
    \n+
    \n+\n+
    28 {
    \n+
    29
    \n+
    30 public:
    \n+\n+\n+\n+\n+
    35
    \n+\n-
    113}
    \n-
    114#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH
    \n+
    39
    \n+
    \n+\n+
    46 basis(s),
    \n+
    47 interpolation(s)
    \n+
    48 {}
    \n+
    \n+
    49
    \n+
    \n+
    50 const typename Traits::LocalBasisType& localBasis () const
    \n+
    51 {
    \n+
    52 return basis;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+\n+
    56 {
    \n+
    57 return coefficients;
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+\n+
    61 {
    \n+
    62 return interpolation;
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    \n+
    66 unsigned int size () const
    \n+
    67 {
    \n+
    68 return basis.size();
    \n+
    69 }
    \n+
    \n+
    70
    \n+
    \n+
    71 static constexpr GeometryType type ()
    \n+
    72 {
    \n+
    73 return GeometryTypes::triangle;
    \n+
    74 }
    \n+
    \n+
    75
    \n+
    76 private:
    \n+\n+\n+\n+
    80 };
    \n+
    \n+
    81}
    \n+
    82#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas12dlocalinterpolation.hh:25
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas12dlocalinterpolation.hh:58
    \n-
    RT12DLocalInterpolation(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas12dlocalinterpolation.hh:34
    \n+
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini1simplex2d.hh:28
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini1simplex2d.hh:50
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini1simplex2d.hh:55
    \n+
    static constexpr GeometryType type()
    Definition brezzidouglasmarini1simplex2d.hh:71
    \n+
    BDM1Simplex2DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2d.hh:37
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini1simplex2d.hh:60
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini1simplex2d.hh:66
    \n+
    BDM1Simplex2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini1simplex2d.hh:45
    \n+
    LocalFiniteElementTraits< BDM1Simplex2DLocalBasis< D, R >, BDM1Simplex2DLocalCoefficients, BDM1Simplex2DLocalInterpolation< BDM1Simplex2DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini1simplex2d.hh:34
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:30
    \n+
    Layout map for Brezzi-Douglas-Marini-1 elements on triangles.
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:24
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:24
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,124 +1,144 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n-raviartthomas12dlocalinterpolation.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+brezzidouglasmarini1simplex2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n 14\n-23 template\n-_\b2_\b4 class _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-25 {\n-26\n-27 public:\n-28\n-_\b3_\b4 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<3> s = 0)\n-35 {\n-36 using std::sqrt;\n-37 for (size_t i=0; i<3; i++)\n-38 sign_[i] = (s[i]) ? -1.0 : 1.0;\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17\n+26 template\n+_\b2_\b7 class _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+28 {\n+29\n+30 public:\n+31 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+32 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+33 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b4 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+35\n+_\b3_\b7 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+38 {}\n 39\n-40 n_[0] = { 0.0, -1.0};\n-41 n_[1] = {-1.0, 0.0};\n-42 n_[2] = { 1.0/sqrt(2.0), 1.0/sqrt(2.0)};\n-43\n-44 c_ = { 0.5*n_[0][0] - 1.0*n_[0][1],\n-45 -1.0*n_[1][0] + 0.5*n_[1][1],\n-46 0.5*n_[2][0] + 0.5*n_[2][1]};\n-47 }\n-48\n-57 template\n-_\b5_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-59 {\n-60 // f gives v*outer normal at a point on the edge!\n-61 typedef typename LB::Traits::RangeFieldType Scalar;\n-62 typedef typename LB::Traits::DomainFieldType Vector;\n-63\n-64 out.resize(8);\n-65 fill(out.begin(), out.end(), 0.0);\n-66\n-67 const int qOrder1 = 4;\n-68 const auto& rule1 = Dune::QuadratureRules::rule(Dune::\n-GeometryTypes::simplex(1), qOrder1);\n-69\n-70 for (auto&& qp : rule1)\n-71 {\n-72 Scalar qPos = qp.position();\n-73 typename LB::Traits::DomainType localPos;\n-74\n-75 localPos = {qPos, 0.0};\n-76 auto y = f(localPos);\n-77 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0]/c_[0];\n-78 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight()/c_\n-[0];\n-79\n-80 localPos = {0.0, qPos};\n-81 y = f(localPos);\n-82 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1]/c_[1];\n-83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight()/c_\n-[1];\n-84\n-85 localPos = {1.0 - qPos, qPos};\n-86 y = f(localPos);\n-87 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2]/c_[2];\n-88 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(2.0*qPos - 1.0)*qp.weight()/c_\n-[2];\n-89 }\n-90\n-91 const int qOrder2 = 8;\n-92 const auto& rule2 = Dune::QuadratureRules::rule(Dune::\n-GeometryTypes::simplex(2), qOrder2);\n-93\n-94 for (auto&& qp : rule2)\n-95 {\n-96 auto qPos = qp.position();\n-97\n-98 auto y = f(qPos);\n-99 out[6] += y[0]*qp.weight();\n-100 out[7] += y[1]*qp.weight();\n-101 }\n-102 }\n-103\n-104 private:\n-105 // Edge orientations\n-106 std::array sign_;\n-107\n-108 // Edge normals\n-109 std::array n_;\n-110\n-111 std::array c_;\n-112 };\n-113}\n-114#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH\n+_\b4_\b5 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+46 basis(s),\n+47 interpolation(s)\n+48 {}\n+49\n+_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+51 {\n+52 return basis;\n+53 }\n+54\n+_\b5_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+56 {\n+57 return coefficients;\n+58 }\n+59\n+_\b6_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+61 {\n+62 return interpolation;\n+63 }\n+64\n+_\b6_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+67 {\n+68 return basis.size();\n+69 }\n+70\n+_\b7_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+72 {\n+73 return GeometryTypes::triangle;\n+74 }\n+75\n+76 private:\n+77 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+78 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+79 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> >\n+interpolation;\n+80 };\n+81}\n+82#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalinterpolation.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalinterpolation.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT12DLocalInterpolation(std::bitset< 3 > s=0)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Brezzi-Douglas-Marini shape functions on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM1Simplex2DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM1Simplex2DLocalFiniteElement(int s)\n Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalinterpolation.hh:34\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< BDM1Simplex2DLocalBasis< D, R >,\n+BDM1Simplex2DLocalCoefficients, BDM1Simplex2DLocalInterpolation<\n+BDM1Simplex2DLocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-1 elements on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas12dlocalbasis.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,36 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas12dlocalbasis.hh File Reference
    \n+
    brezzidouglasmarini1cube2d.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT12DLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference triangle. More...
    class  Dune::BDM1Cube2DLocalFiniteElement< D, R >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas12dlocalbasis.hh File Reference\n-#include \n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+brezzidouglasmarini1cube2d.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference triangle.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas12dlocalbasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,215 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas12dlocalbasis.hh
    \n+
    brezzidouglasmarini1cube2d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12
    \n-
    13#include "../../common/localbasis.hh"
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n
    14
    \n
    15namespace Dune
    \n
    16{
    \n-
    26 template<class D, class R>
    \n-
    \n-\n-
    28 {
    \n-
    29
    \n-
    30 public:
    \n-
    31 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    32 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    33
    \n-
    \n-
    39 RT12DLocalBasis (std::bitset<3> s = 0)
    \n-
    40 {
    \n-
    41 for (size_t i=0; i<3; i++)
    \n-
    42 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-
    46 unsigned int size () const
    \n-
    47 {
    \n-
    48 return 8;
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    57 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    58 std::vector<typename Traits::RangeType>& out) const
    \n-
    59 {
    \n-
    60 out.resize(8);
    \n-
    61 out[0][0] = sign_[0]*(in[0] - 4.0*in[0]*in[1]);
    \n-
    62 out[0][1] = sign_[0]*(-1.0 + 5.0*in[1] - 4.0*in[1]*in[1]);
    \n-
    63 out[1][0] = sign_[1]*(-1.0 + 5.0*in[0] - 4.0*in[0]*in[0]);
    \n-
    64 out[1][1] = sign_[1]*(in[1] - 4.0*in[0]*in[1]);
    \n-
    65 out[2][0] = sign_[2]*(-3.0*in[0] + 4.0*in[0]*in[0] + 4.0*in[1]*in[0]);
    \n-
    66 out[2][1] = sign_[2]*(-3.0*in[1] + 4.0*in[0]*in[1] + 4.0*in[1]*in[1]);
    \n-
    67 out[3][0] = -5.0*in[0] + 8.0*in[0]*in[0] + 4.0*in[1]*in[0];
    \n-
    68 out[3][1] = 3.0 - 6.0*in[0] - 7.0*in[1] + 8.0*in[0]*in[1] + 4.0*in[1]*in[1];
    \n-
    69 out[4][0] = -3.0 + 7.0*in[0] + 6.0*in[1] - 4.0*in[0]*in[0] - 8.0*in[1]*in[0];
    \n-
    70 out[4][1] = 5.0*in[1] - 4.0*in[0]*in[1] - 8.0*in[1]*in[1];
    \n-
    71 out[5][0] = in[0] - 4.0*in[0]*in[0] + 4.0*in[1]*in[0];
    \n-
    72 out[5][1] = -1.0*in[1] - 4.0*in[0]*in[1] + 4.0*in[1]*in[1];
    \n-
    73 out[6][0] = 16.0*in[0] - 16.0*in[0]*in[0] - 8.0*in[1]*in[0];
    \n-
    74 out[6][1] = 8.0*in[1] - 16.0*in[0]*in[1] - 8.0*in[1]*in[1];
    \n-
    75 out[7][0] = 8.0*in[0] - 8.0*in[0]*in[0] - 16.0*in[1]*in[0];
    \n-
    76 out[7][1] = 16.0*in[1] - 8.0*in[0]*in[1] - 16.0*in[1]*in[1];
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    85 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    86 std::vector<typename Traits::JacobianType>& out) const
    \n-
    87 {
    \n-
    88 out.resize(8);
    \n-
    89
    \n-
    90 out[0][0][0] = sign_[0]*(1.0 - 4.0*in[1]);
    \n-
    91 out[0][0][1] = sign_[0]*(-4.0*in[0]);
    \n-
    92 out[0][1][0] = 0.0;
    \n-
    93 out[0][1][1] = sign_[0]*(5.0 - 8.0*in[1]);
    \n-
    94
    \n-
    95 out[1][0][0] = sign_[1]*(5.0 - 8.0*in[0]);
    \n-
    96 out[1][0][1] = 0.0;
    \n-
    97 out[1][1][0] = sign_[1]*(-4.0*in[1]);
    \n-
    98 out[1][1][1] = sign_[1]*(1.0 - 4.0*in[0]);
    \n-
    99
    \n-
    100 out[2][0][0] = sign_[2]*(-3.0 + 8.0*in[0] + 4.0*in[1]);
    \n-
    101 out[2][0][1] = sign_[2]*(4.0*in[0]);
    \n-
    102 out[2][1][0] = sign_[2]*(4.0*in[1]);
    \n-
    103 out[2][1][1] = sign_[2]*(-3.0 + 4.0*in[0] + 8.0*in[1]);
    \n-
    104
    \n-
    105 out[3][0][0] = -5.0 + 16.0*in[0] + 4.0*in[1];
    \n-
    106 out[3][0][1] = 4.0*in[0];
    \n-
    107 out[3][1][0] = -6.0 + 8.0*in[1];
    \n-
    108 out[3][1][1] = -7.0 + 8.0*in[0] + 8.0*in[1];
    \n-
    109
    \n-
    110 out[4][0][0] = 7.0 - 8.0*in[0] - 8.0*in[1];
    \n-
    111 out[4][0][1] = 6.0 - 8.0*in[0];
    \n-
    112 out[4][1][0] = -4.0*in[1];
    \n-
    113 out[4][1][1] = 5.0 - 4.0*in[0] - 16.0*in[1];
    \n-
    114
    \n-
    115 out[5][0][0] = 1.0 - 8.0*in[0] + 4*in[1];
    \n-
    116 out[5][0][1] = 4.0*in[0];
    \n-
    117 out[5][1][0] = -4.0*in[1];
    \n-
    118 out[5][1][1] = -1.0 - 4.0*in[0] + 8.0*in[1];
    \n-
    119
    \n-
    120 out[6][0][0] = 16.0 - 32.0*in[0] - 8.0*in[1];
    \n-
    121 out[6][0][1] = -8.0*in[0];
    \n-
    122 out[6][1][0] = -16.0*in[1];
    \n-
    123 out[6][1][1] = 8.0 - 16.0*in[0] - 16.0*in[1];
    \n-
    124
    \n-
    125 out[7][0][0] = 8.0 - 16.0*in[0] - 16.0*in[1];
    \n-
    126 out[7][0][1] = -16.0*in[0];
    \n-
    127 out[7][1][0] = -8.0*in[1];
    \n-
    128 out[7][1][1] = 16.0 - 8.0*in[0] - 32.0*in[1];
    \n-
    129 }
    \n-
    \n-
    130
    \n-
    \n-
    132 void partial (const std::array<unsigned int, 2>& order,
    \n-
    133 const typename Traits::DomainType& in, // position
    \n-
    134 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    135 {
    \n-
    136 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    137 if (totalOrder == 0) {
    \n-
    138 evaluateFunction(in, out);
    \n-
    139 } else if (totalOrder == 1) {
    \n-
    140 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    141 out.resize(size());
    \n-
    142
    \n-
    143 switch (direction) {
    \n-
    144 case 0:
    \n-
    145 out[0][0] = sign_[0]*(1.0 - 4.0*in[1]);
    \n-
    146 out[0][1] = 0.0;
    \n-
    147 out[1][0] = sign_[1]*(5.0 - 8.0*in[0]);
    \n-
    148 out[1][1] = sign_[1]*(-4.0*in[1]);
    \n-
    149 out[2][0] = sign_[2]*(-3.0 + 8.0*in[0] + 4.0*in[1]);
    \n-
    150 out[2][1] = sign_[2]*(4.0*in[1]);
    \n-
    151 out[3][0] = -5.0 + 16.0*in[0] + 4.0*in[1];
    \n-
    152 out[3][1] = -6.0 + 8.0*in[1];
    \n-
    153 out[4][0] = 7.0 - 8.0*in[0] - 8.0*in[1];
    \n-
    154 out[4][1] = -4.0*in[1];
    \n-
    155 out[5][0] = 1.0 - 8.0*in[0] + 4*in[1];
    \n-
    156 out[5][1] = -4.0*in[1];
    \n-
    157 out[6][0] = 16.0 - 32.0*in[0] - 8.0*in[1];
    \n-
    158 out[6][1] = -16.0*in[1];
    \n-
    159 out[7][0] = 8.0 - 16.0*in[0] - 16.0*in[1];
    \n-
    160 out[7][1] = -8.0*in[1];
    \n-
    161 break;
    \n-
    162 case 1:
    \n-
    163 out[2][1] = sign_[2]*(-3.0 + 4.0*in[0] + 8.0*in[1]);
    \n-
    164 out[2][0] = sign_[2]*(4.0*in[0]);
    \n-
    165 out[1][1] = sign_[1]*(1.0 - 4.0*in[0]);
    \n-
    166 out[1][0] = 0.0;
    \n-
    167 out[0][0] = sign_[0]*(-4.0*in[0]);
    \n-
    168 out[0][1] = sign_[0]*(5.0 - 8.0*in[1]);
    \n-
    169 out[3][0] = 4.0*in[0];
    \n-
    170 out[3][1] = -7.0 + 8.0*in[0] + 8.0*in[1];
    \n-
    171 out[4][0] = 6.0 - 8.0*in[0];
    \n-
    172 out[4][1] = 5.0 - 4.0*in[0] - 16.0*in[1];
    \n-
    173 out[5][0] = 4.0*in[0];
    \n-
    174 out[5][1] = -1.0 - 4.0*in[0] + 8.0*in[1];
    \n-
    175 out[6][0] = -8.0*in[0];
    \n-
    176 out[6][1] = 8.0 - 16.0*in[0] - 16.0*in[1];
    \n-
    177 out[7][0] = -16.0*in[0];
    \n-
    178 out[7][1] = 16.0 - 8.0*in[0] - 32.0*in[1];
    \n-
    179 break;
    \n-
    180 default:
    \n-
    181 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    182 }
    \n-
    183 } else {
    \n-
    184 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    185 }
    \n-
    186 }
    \n-
    \n-
    187
    \n-
    \n-
    189 unsigned int order () const
    \n-
    190 {
    \n-
    191 return 2;
    \n-
    192 }
    \n-
    \n-
    193
    \n-
    194 private:
    \n-
    195 std::array<R,3> sign_;
    \n-
    196 };
    \n-
    \n-
    197}
    \n-
    198#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28
    \n+
    29 public:
    \n+\n+\n+\n+\n+
    34
    \n+\n+
    38
    \n+
    \n+\n+
    45 basis(s),
    \n+
    46 interpolation(s)
    \n+
    47 {}
    \n+
    \n+
    48
    \n+
    \n+
    49 const typename Traits::LocalBasisType& localBasis () const
    \n+
    50 {
    \n+
    51 return basis;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    55 {
    \n+
    56 return coefficients;
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+\n+
    60 {
    \n+
    61 return interpolation;
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    \n+
    65 unsigned int size () const
    \n+
    66 {
    \n+
    67 return basis.size();
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    \n+
    70 static constexpr GeometryType type ()
    \n+
    71 {
    \n+
    72 return GeometryTypes::quadrilateral;
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75 private:
    \n+\n+
    77 BDM1Cube2DLocalCoefficients coefficients;
    \n+\n+
    79 };
    \n+
    \n+
    80}
    \n+
    81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    First order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas12dlocalbasis.hh:28
    \n-
    RT12DLocalBasis(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas12dlocalbasis.hh:39
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas12dlocalbasis.hh:46
    \n-
    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 raviartthomas12dlocalbasis.hh:132
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas12dlocalbasis.hh:85
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas12dlocalbasis.hh:189
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas12dlocalbasis.hh:32
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas12dlocalbasis.hh:57
    \n+
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini1cube2d.hh:27
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini1cube2d.hh:49
    \n+
    LocalFiniteElementTraits< BDM1Cube2DLocalBasis< D, R >, BDM1Cube2DLocalCoefficients, BDM1Cube2DLocalInterpolation< BDM1Cube2DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini1cube2d.hh:33
    \n+
    static constexpr GeometryType type()
    Definition brezzidouglasmarini1cube2d.hh:70
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini1cube2d.hh:54
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini1cube2d.hh:65
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini1cube2d.hh:59
    \n+
    BDM1Cube2DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini1cube2d.hh:36
    \n+
    BDM1Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini1cube2d.hh:44
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:30
    \n+
    Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:24
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:25
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,228 +1,141 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n-raviartthomas12dlocalbasis.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+brezzidouglasmarini1cube2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12\n-13#include \"../../common/localbasis.hh\"\n+8#include \n+9\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n 14\n 15namespace _\bD_\bu_\bn_\be\n 16{\n-26 template\n-_\b2_\b7 class _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-28 {\n-29\n-30 public:\n-31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n-FieldVector,\n-_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-33\n-_\b3_\b9 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<3> s = 0)\n-40 {\n-41 for (size_t i=0; i<3; i++)\n-42 sign_[i] = (s[i]) ? -1.0 : 1.0;\n-43 }\n-44\n-_\b4_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-47 {\n-48 return 8;\n-49 }\n-50\n-_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-58 std::vector& out) const\n-59 {\n-60 out.resize(8);\n-61 out[0][0] = sign_[0]*(in[0] - 4.0*in[0]*in[1]);\n-62 out[0][1] = sign_[0]*(-1.0 + 5.0*in[1] - 4.0*in[1]*in[1]);\n-63 out[1][0] = sign_[1]*(-1.0 + 5.0*in[0] - 4.0*in[0]*in[0]);\n-64 out[1][1] = sign_[1]*(in[1] - 4.0*in[0]*in[1]);\n-65 out[2][0] = sign_[2]*(-3.0*in[0] + 4.0*in[0]*in[0] + 4.0*in[1]*in[0]);\n-66 out[2][1] = sign_[2]*(-3.0*in[1] + 4.0*in[0]*in[1] + 4.0*in[1]*in[1]);\n-67 out[3][0] = -5.0*in[0] + 8.0*in[0]*in[0] + 4.0*in[1]*in[0];\n-68 out[3][1] = 3.0 - 6.0*in[0] - 7.0*in[1] + 8.0*in[0]*in[1] + 4.0*in[1]*in[1];\n-69 out[4][0] = -3.0 + 7.0*in[0] + 6.0*in[1] - 4.0*in[0]*in[0] - 8.0*in[1]*in\n-[0];\n-70 out[4][1] = 5.0*in[1] - 4.0*in[0]*in[1] - 8.0*in[1]*in[1];\n-71 out[5][0] = in[0] - 4.0*in[0]*in[0] + 4.0*in[1]*in[0];\n-72 out[5][1] = -1.0*in[1] - 4.0*in[0]*in[1] + 4.0*in[1]*in[1];\n-73 out[6][0] = 16.0*in[0] - 16.0*in[0]*in[0] - 8.0*in[1]*in[0];\n-74 out[6][1] = 8.0*in[1] - 16.0*in[0]*in[1] - 8.0*in[1]*in[1];\n-75 out[7][0] = 8.0*in[0] - 8.0*in[0]*in[0] - 16.0*in[1]*in[0];\n-76 out[7][1] = 16.0*in[1] - 8.0*in[0]*in[1] - 16.0*in[1]*in[1];\n-77 }\n-78\n-_\b8_\b5 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-86 std::vector& out) const\n-87 {\n-88 out.resize(8);\n-89\n-90 out[0][0][0] = sign_[0]*(1.0 - 4.0*in[1]);\n-91 out[0][0][1] = sign_[0]*(-4.0*in[0]);\n-92 out[0][1][0] = 0.0;\n-93 out[0][1][1] = sign_[0]*(5.0 - 8.0*in[1]);\n-94\n-95 out[1][0][0] = sign_[1]*(5.0 - 8.0*in[0]);\n-96 out[1][0][1] = 0.0;\n-97 out[1][1][0] = sign_[1]*(-4.0*in[1]);\n-98 out[1][1][1] = sign_[1]*(1.0 - 4.0*in[0]);\n-99\n-100 out[2][0][0] = sign_[2]*(-3.0 + 8.0*in[0] + 4.0*in[1]);\n-101 out[2][0][1] = sign_[2]*(4.0*in[0]);\n-102 out[2][1][0] = sign_[2]*(4.0*in[1]);\n-103 out[2][1][1] = sign_[2]*(-3.0 + 4.0*in[0] + 8.0*in[1]);\n-104\n-105 out[3][0][0] = -5.0 + 16.0*in[0] + 4.0*in[1];\n-106 out[3][0][1] = 4.0*in[0];\n-107 out[3][1][0] = -6.0 + 8.0*in[1];\n-108 out[3][1][1] = -7.0 + 8.0*in[0] + 8.0*in[1];\n-109\n-110 out[4][0][0] = 7.0 - 8.0*in[0] - 8.0*in[1];\n-111 out[4][0][1] = 6.0 - 8.0*in[0];\n-112 out[4][1][0] = -4.0*in[1];\n-113 out[4][1][1] = 5.0 - 4.0*in[0] - 16.0*in[1];\n-114\n-115 out[5][0][0] = 1.0 - 8.0*in[0] + 4*in[1];\n-116 out[5][0][1] = 4.0*in[0];\n-117 out[5][1][0] = -4.0*in[1];\n-118 out[5][1][1] = -1.0 - 4.0*in[0] + 8.0*in[1];\n-119\n-120 out[6][0][0] = 16.0 - 32.0*in[0] - 8.0*in[1];\n-121 out[6][0][1] = -8.0*in[0];\n-122 out[6][1][0] = -16.0*in[1];\n-123 out[6][1][1] = 8.0 - 16.0*in[0] - 16.0*in[1];\n-124\n-125 out[7][0][0] = 8.0 - 16.0*in[0] - 16.0*in[1];\n-126 out[7][0][1] = -16.0*in[0];\n-127 out[7][1][0] = -8.0*in[1];\n-128 out[7][1][1] = 16.0 - 8.0*in[0] - 32.0*in[1];\n-129 }\n-130\n-_\b1_\b3_\b2 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-133 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-134 std::vector& out) const // return value\n-135 {\n-136 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-137 if (totalOrder == 0) {\n-138 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-139 } else if (totalOrder == 1) {\n-140 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-141 out.resize(_\bs_\bi_\bz_\be());\n-142\n-143 switch (direction) {\n-144 case 0:\n-145 out[0][0] = sign_[0]*(1.0 - 4.0*in[1]);\n-146 out[0][1] = 0.0;\n-147 out[1][0] = sign_[1]*(5.0 - 8.0*in[0]);\n-148 out[1][1] = sign_[1]*(-4.0*in[1]);\n-149 out[2][0] = sign_[2]*(-3.0 + 8.0*in[0] + 4.0*in[1]);\n-150 out[2][1] = sign_[2]*(4.0*in[1]);\n-151 out[3][0] = -5.0 + 16.0*in[0] + 4.0*in[1];\n-152 out[3][1] = -6.0 + 8.0*in[1];\n-153 out[4][0] = 7.0 - 8.0*in[0] - 8.0*in[1];\n-154 out[4][1] = -4.0*in[1];\n-155 out[5][0] = 1.0 - 8.0*in[0] + 4*in[1];\n-156 out[5][1] = -4.0*in[1];\n-157 out[6][0] = 16.0 - 32.0*in[0] - 8.0*in[1];\n-158 out[6][1] = -16.0*in[1];\n-159 out[7][0] = 8.0 - 16.0*in[0] - 16.0*in[1];\n-160 out[7][1] = -8.0*in[1];\n-161 break;\n-162 case 1:\n-163 out[2][1] = sign_[2]*(-3.0 + 4.0*in[0] + 8.0*in[1]);\n-164 out[2][0] = sign_[2]*(4.0*in[0]);\n-165 out[1][1] = sign_[1]*(1.0 - 4.0*in[0]);\n-166 out[1][0] = 0.0;\n-167 out[0][0] = sign_[0]*(-4.0*in[0]);\n-168 out[0][1] = sign_[0]*(5.0 - 8.0*in[1]);\n-169 out[3][0] = 4.0*in[0];\n-170 out[3][1] = -7.0 + 8.0*in[0] + 8.0*in[1];\n-171 out[4][0] = 6.0 - 8.0*in[0];\n-172 out[4][1] = 5.0 - 4.0*in[0] - 16.0*in[1];\n-173 out[5][0] = 4.0*in[0];\n-174 out[5][1] = -1.0 - 4.0*in[0] + 8.0*in[1];\n-175 out[6][0] = -8.0*in[0];\n-176 out[6][1] = 8.0 - 16.0*in[0] - 16.0*in[1];\n-177 out[7][0] = -16.0*in[0];\n-178 out[7][1] = 16.0 - 8.0*in[0] - 32.0*in[1];\n-179 break;\n-180 default:\n-181 DUNE_THROW(RangeError, \"Component out of range.\");\n-182 }\n-183 } else {\n-184 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-185 }\n-186 }\n-187\n-_\b1_\b8_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-190 {\n-191 return 2;\n-192 }\n-193\n-194 private:\n-195 std::array sign_;\n-196 };\n-197}\n-198#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH\n+25 template\n+_\b2_\b6 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 {\n+28\n+29 public:\n+30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+31 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+32 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b6 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+37 {}\n+38\n+_\b4_\b4 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+45 basis(s),\n+46 interpolation(s)\n+47 {}\n+48\n+_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+50 {\n+51 return basis;\n+52 }\n+53\n+_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+55 {\n+56 return coefficients;\n+57 }\n+58\n+_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+60 {\n+61 return interpolation;\n+62 }\n+63\n+_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+66 {\n+67 return basis.size();\n+68 }\n+69\n+_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+71 {\n+72 return GeometryTypes::quadrilateral;\n+73 }\n+74\n+75 private:\n+76 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+77 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+78 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+79 };\n+80}\n+81#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT12DLocalBasis(std::bitset< 3 > s=0)\n-Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< BDM1Cube2DLocalBasis< D, R >,\n+BDM1Cube2DLocalCoefficients, BDM1Cube2DLocalInterpolation<\n+BDM1Cube2DLocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:132\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:85\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:189\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:57\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM1Cube2DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM1Cube2DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on the reference\n+quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on the reference\n+quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas2cube2d.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas2cube2d.hh File Reference
    \n+
    brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "raviartthomas2cube2d/raviartthomas2cube2dlocalbasis.hh"
    \n-#include "raviartthomas2cube2d/raviartthomas2cube2dlocalcoefficients.hh"
    \n-#include "raviartthomas2cube2d/raviartthomas2cube2dlocalinterpolation.hh"
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT2Cube2DLocalFiniteElement< D, R >
     Second order Raviart-Thomas shape functions on cubes. More...
    class  Dune::BDM2Cube2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas2cube2d.hh File Reference\n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference\n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 Second order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas2cube2d.hh Source File\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,81 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas2cube2d.hh
    \n+
    brezzidouglasmarini2cube2dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n-
    28
    \n-
    29 public:
    \n-\n-\n-\n-\n-
    34
    \n-\n-
    38
    \n-
    \n-\n-
    45 basis(s),
    \n-
    46 interpolation(s)
    \n-
    47 {}
    \n-
    \n-
    48
    \n-
    \n-
    49 const typename Traits::LocalBasisType& localBasis () const
    \n-
    50 {
    \n-
    51 return basis;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-\n-
    55 {
    \n-
    56 return coefficients;
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-\n-
    60 {
    \n-
    61 return interpolation;
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    \n-
    65 unsigned int size () const
    \n-
    66 {
    \n-
    67 return basis.size();
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    \n-
    70 static constexpr GeometryType type ()
    \n-
    71 {
    \n-
    72 return GeometryTypes::quadrilateral;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-\n-
    77 RT2Cube2DLocalCoefficients coefficients;
    \n-\n-
    79 };
    \n-
    \n-
    80}
    \n-
    81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include "../../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for (std::size_t i = 0; i < 4; ++i)
    \n+
    31 {
    \n+
    32 li[3 * i] = LocalKey(i,1,0);
    \n+
    33 li[3 * i + 1] = LocalKey(i,1,1);
    \n+
    34 li[3 * i + 2] = LocalKey(i,1,2);
    \n+
    35 }
    \n+
    36 li[12] = LocalKey(0,0,0);
    \n+
    37 li[13] = LocalKey(0,0,1);
    \n+
    38 }
    \n+
    \n+
    39
    \n+
    \n+
    41 std::size_t size() const
    \n+
    42 {
    \n+
    43 return 14;
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    \n+
    47 const LocalKey& localKey(std::size_t i) const
    \n+
    48 {
    \n+
    49 return li[i];
    \n+
    50 }
    \n+
    \n+
    51
    \n+
    52 private:
    \n+
    53 std::vector<LocalKey> li;
    \n+
    54 };
    \n+
    \n+
    55} // end namespace Dune
    \n+
    56#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas2cube2d.hh:27
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas2cube2d.hh:49
    \n-
    LocalFiniteElementTraits< RT2Cube2DLocalBasis< D, R >, RT2Cube2DLocalCoefficients, RT2Cube2DLocalInterpolation< RT2Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas2cube2d.hh:33
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas2cube2d.hh:54
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas2cube2d.hh:65
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas2cube2d.hh:70
    \n-
    RT2Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas2cube2d.hh:44
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas2cube2d.hh:59
    \n-
    RT2Cube2DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas2cube2d.hh:36
    \n-
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas2cube2dlocalbasis.hh:28
    \n-
    Layout map for Raviart-Thomas-2 elements on quadrilaterals.
    Definition raviartthomas2cube2dlocalcoefficients.hh:23
    \n-
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas2cube2dlocalinterpolation.hh:25
    \n+
    Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:24
    \n+
    BDM2Cube2DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:28
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:47
    \n+
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:41
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,136 +1,80 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas2cube2d.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+brezzidouglasmarini2cube2dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-25 template\n-_\b2_\b6 class _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 {\n-28\n-29 public:\n-30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-31 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-32 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b3_\b6 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-37 {}\n-38\n-_\b4_\b4 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-45 basis(s),\n-46 interpolation(s)\n-47 {}\n-48\n-_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-50 {\n-51 return basis;\n-52 }\n-53\n-_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-55 {\n-56 return coefficients;\n-57 }\n-58\n-_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-60 {\n-61 return interpolation;\n-62 }\n-63\n-_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-66 {\n-67 return basis.size();\n-68 }\n-69\n-_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-71 {\n-72 return GeometryTypes::quadrilateral;\n-73 }\n-74\n-75 private:\n-76 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-77 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-78 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-79 };\n-80}\n-81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+8#include \n+9#include \n+10\n+11#include \"../../common/localkey.hh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+_\b2_\b3 class _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+24 {\n+25\n+26 public:\n+_\b2_\b8 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(14)\n+29 {\n+30 for (std::size_t i = 0; i < 4; ++i)\n+31 {\n+32 li[3 * i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+33 li[3 * i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+34 li[3 * i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n+35 }\n+36 li[12] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0);\n+37 li[13] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,1);\n+38 }\n+39\n+_\b4_\b1 std::size_t _\bs_\bi_\bz_\be() const\n+42 {\n+43 return 14;\n+44 }\n+45\n+_\b4_\b7 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const\n+48 {\n+49 return li[i];\n+50 }\n+51\n+52 private:\n+53 std::vector li;\n+54 };\n+55} // end namespace Dune\n+56#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT2Cube2DLocalBasis< D, R >,\n-RT2Cube2DLocalCoefficients, RT2Cube2DLocalInterpolation< RT2Cube2DLocalBasis<\n-D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT2Cube2DLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT2Cube2DLocalFiniteElement()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+BDM2Cube2DLocalCoefficients()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Second order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-2 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Second order Raviart-Thomas shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalinterpolation.hh:25\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0cube3d.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0cube3d.hh File Reference
    \n+
    brezzidouglasmarini2cube2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include "raviartthomas0cube3d/raviartthomas0cube3dall.hh"
    \n+
    #include <array>
    \n+#include <bitset>
    \n+#include <numeric>
    \n+#include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT0Cube3DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on cubes. More...
    class  Dune::BDM2Cube2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0cube3d.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\ba_\bl_\bl_\b._\bh_\bh\"\n+brezzidouglasmarini2cube2dlocalbasis.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 _\bZ_\be_\br_\bo order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0cube3d.hh Source File\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,119 +70,320 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0cube3d.hh
    \n+
    brezzidouglasmarini2cube2dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-\n+
    8#include <array>
    \n+
    9#include <bitset>
    \n+
    10#include <numeric>
    \n+
    11#include <vector>
    \n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    23 template<class D, class R>
    \n-
    \n-\n-
    25 {
    \n-
    26 public:
    \n-\n-\n-\n-\n+
    13#include <dune/common/fmatrix.hh>
    \n+
    14
    \n+
    15#include "../../common/localbasis.hh"
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    28 template<class D, class R>
    \n+
    \n+\n+
    30 {
    \n
    31
    \n-\n-
    34
    \n-
    \n-\n-
    36 basis(s),
    \n-
    37 interpolation(s)
    \n-
    38 {}
    \n-
    \n-
    39
    \n-
    \n-
    40 const typename Traits::LocalBasisType& localBasis () const
    \n-
    41 {
    \n-
    42 return basis;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-\n-
    46 {
    \n-
    47 return coefficients;
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    \n-\n-
    51 {
    \n-
    52 return interpolation;
    \n+
    32 public:
    \n+\n+
    34 R,2,Dune::FieldVector<R,2>,
    \n+
    35 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    36
    \n+
    \n+\n+
    39 {
    \n+
    40 for (size_t i=0; i<4; i++)
    \n+
    41 sign_[i] = 1.0;
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    \n+
    49 BDM2Cube2DLocalBasis(std::bitset<4> s)
    \n+
    50 {
    \n+
    51 for (size_t i=0; i<4; i++)
    \n+
    52 sign_[i] = s[i] ? -1.0 : 1.0;
    \n
    53 }
    \n
    \n
    54
    \n
    \n-
    56 unsigned int size () const
    \n+
    56 unsigned int size() const
    \n
    57 {
    \n-
    58 return basis.size();
    \n+
    58 return 14;
    \n
    59 }
    \n
    \n
    60
    \n-
    \n-
    61 static constexpr GeometryType type ()
    \n-
    62 {
    \n-
    63 return GeometryTypes::hexahedron;
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    66 private:
    \n-\n-
    68 RT0Cube3DLocalCoefficients coefficients;
    \n-\n-
    70 };
    \n-
    \n-
    71}
    \n-
    72#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH
    \n-\n-\n+
    \n+
    67 inline void evaluateFunction(const typename Traits::DomainType& in,
    \n+
    68 std::vector<typename Traits::RangeType>& out) const
    \n+
    69 {
    \n+
    70 out.resize(size());
    \n+
    71
    \n+
    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]);
    \n+
    73 out[0][1] = sign_[0]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in[1]);
    \n+
    74 out[1][0] = 3.0 - 3.0*in[0]-6.0*in[1] + 6.0*in[0]*in[1];
    \n+
    75 out[1][1] = 0.0;
    \n+
    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]);
    \n+
    77 out[2][1] = sign_[0]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in[1]);
    \n+
    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]);
    \n+
    79 out[3][1] = sign_[1]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in[1]);
    \n+
    80 out[4][0] = 3.0*in[0] - 6.0*in[0]*in[1];
    \n+
    81 out[4][1] = 0.0;
    \n+
    82 out[5][0] = sign_[1]*(+3.75*in[0] - 22.5*in[0]*in[1] + 22.5*in[0]*in[1]*in[1]);
    \n+
    83 out[5][1] = sign_[1]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in[1]);
    \n+
    84 out[6][0] = sign_[2]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in[0]);
    \n+
    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]);
    \n+
    86 out[7][0] = 0.0;
    \n+
    87 out[7][1] = -3.0 + 6.0*in[0] + 3.0*in[1] - 6.0*in[0]*in[1];
    \n+
    88 out[8][0] = sign_[2]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in[0]);
    \n+
    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]);
    \n+
    90 out[9][0] = sign_[3]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in[0]);
    \n+
    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]);
    \n+
    92 out[10][0] = 0.0;
    \n+
    93 out[10][1] = -3.0*in[1] + 6.0*in[0]*in[1];
    \n+
    94 out[11][0] = sign_[3]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in[0]);
    \n+
    95 out[11][1] = sign_[3]*(3.75*in[1] - 22.5*in[0]*in[1] + 22.5*in[0]*in[0]*in[1]);
    \n+
    96 out[12][0] = 6.0*in[0] - 6.0*in[0]*in[0];
    \n+
    97 out[12][1] = 0.0;
    \n+
    98 out[13][0] = 0.0;
    \n+
    99 out[13][1] = 6.0*in[1] - 6.0*in[1]*in[1];
    \n+
    100 }
    \n+
    \n+
    101
    \n+
    \n+
    108 inline void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    109 std::vector<typename Traits::JacobianType>& out) const
    \n+
    110 {
    \n+
    111 out.resize(size());
    \n+
    112
    \n+
    113 out[0][0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);
    \n+
    114 out[0][0][1] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);
    \n+
    115 out[0][1][0] = 0.0;
    \n+
    116 out[0][1][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
    \n+
    117
    \n+
    118 out[1][0][0] = -3.0 + 6.0*in[1];
    \n+
    119 out[1][0][1] = -6.0 + 6.0*in[0];
    \n+
    120 out[1][1][0] = 0.0;
    \n+
    121 out[1][1][1] = 0.0;
    \n+
    122
    \n+
    123 out[2][0][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
    \n+
    124 out[2][0][1] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);
    \n+
    125 out[2][1][0] = 0.0;
    \n+
    126 out[2][1][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
    \n+
    127
    \n+
    128 out[3][0][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);
    \n+
    129 out[3][0][1] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);
    \n+
    130 out[3][1][0] = 0.0;
    \n+
    131 out[3][1][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
    \n+
    132
    \n+
    133 out[4][0][0] = 3.0 - 6.0*in[1];
    \n+
    134 out[4][0][1] = -6.0*in[0];
    \n+
    135 out[4][1][0] = 0.0;
    \n+
    136 out[4][1][1] = 0.0;
    \n+
    137
    \n+
    138 out[5][0][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
    \n+
    139 out[5][0][1] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);
    \n+
    140 out[5][1][0] = 0.0;
    \n+
    141 out[5][1][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
    \n+
    142
    \n+
    143 out[6][0][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
    \n+
    144 out[6][0][1] = 0.0;
    \n+
    145 out[6][1][0] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);
    \n+
    146 out[6][1][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);
    \n+
    147
    \n+
    148 out[7][0][0] = 0.0;
    \n+
    149 out[7][0][1] = 0.0;
    \n+
    150 out[7][1][0] = 6.0 - 6.0*in[1];
    \n+
    151 out[7][1][1] = 3.0 - 6.0*in[0];
    \n+
    152
    \n+
    153 out[8][0][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
    \n+
    154 out[8][0][1] = 0.0;
    \n+
    155 out[8][1][0] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);
    \n+
    156 out[8][1][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
    \n+
    157
    \n+
    158 out[9][0][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
    \n+
    159 out[9][0][1] = 0.0;
    \n+
    160 out[9][1][0] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);
    \n+
    161 out[9][1][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);
    \n+
    162
    \n+
    163 out[10][0][0] = 0.0;
    \n+
    164 out[10][0][1] = 0.0;
    \n+
    165 out[10][1][0] = 6.0*in[1];
    \n+
    166 out[10][1][1] = -3.0 + 6.0*in[0];
    \n+
    167
    \n+
    168 out[11][0][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
    \n+
    169 out[11][0][1] = 0.0;
    \n+
    170 out[11][1][0] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);
    \n+
    171 out[11][1][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
    \n+
    172
    \n+
    173 out[12][0][0] = 6.0 - 12.0*in[0];
    \n+
    174 out[12][0][1] = 0.0;
    \n+
    175 out[12][1][0] = 0.0;
    \n+
    176 out[12][1][1] = 0.0;
    \n+
    177
    \n+
    178 out[13][0][0] = 0.0;
    \n+
    179 out[13][0][1] = 0.0;
    \n+
    180 out[13][1][0] = 0.0;
    \n+
    181 out[13][1][1] = 6.0 - 12.0*in[1];
    \n+
    182 }
    \n+
    \n+
    183
    \n+
    \n+
    185 void partial (const std::array<unsigned int, 2>& order,
    \n+
    186 const typename Traits::DomainType& in, // position
    \n+
    187 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    188 {
    \n+
    189 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    190 if (totalOrder == 0) {
    \n+
    191 evaluateFunction(in, out);
    \n+
    192 } else if (totalOrder == 1) {
    \n+
    193 out.resize(size());
    \n+
    194 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    195
    \n+
    196 switch (direction) {
    \n+
    197 case 0:
    \n+
    198 out[0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);
    \n+
    199 out[0][1] = 0.0;
    \n+
    200
    \n+
    201 out[1][0] = -3.0 + 6.0*in[1];
    \n+
    202 out[1][1] = 0.0;
    \n+
    203
    \n+
    204 out[2][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
    \n+
    205 out[2][1] = 0.0;
    \n+
    206
    \n+
    207 out[3][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);
    \n+
    208 out[3][1] = 0.0;
    \n+
    209
    \n+
    210 out[4][0] = 3.0 - 6.0*in[1];
    \n+
    211 out[4][1] = 0.0;
    \n+
    212
    \n+
    213 out[5][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
    \n+
    214 out[5][1] = 0.0;
    \n+
    215
    \n+
    216 out[6][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
    \n+
    217 out[6][1] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);
    \n+
    218
    \n+
    219 out[7][0] = 0.0;
    \n+
    220 out[7][1] = 6.0 - 6.0*in[1];
    \n+
    221
    \n+
    222 out[8][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
    \n+
    223 out[8][1] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);
    \n+
    224
    \n+
    225 out[9][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
    \n+
    226 out[9][1] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);
    \n+
    227
    \n+
    228 out[10][0] = 0.0;
    \n+
    229 out[10][1] = 6.0*in[1];
    \n+
    230
    \n+
    231 out[11][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
    \n+
    232 out[11][1] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);
    \n+
    233
    \n+
    234 out[12][0] = 6.0 - 12.0*in[0];
    \n+
    235 out[12][1] = 0.0;
    \n+
    236
    \n+
    237 out[13][0] = 0.0;
    \n+
    238 out[13][1] = 0.0;
    \n+
    239 break;
    \n+
    240 case 1:
    \n+
    241 out[0][0] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);
    \n+
    242 out[0][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
    \n+
    243
    \n+
    244 out[1][0] = -6.0 + 6.0*in[0];
    \n+
    245 out[1][1] = 0.0;
    \n+
    246
    \n+
    247 out[2][0] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);
    \n+
    248 out[2][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
    \n+
    249
    \n+
    250 out[3][0] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);
    \n+
    251 out[3][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
    \n+
    252
    \n+
    253 out[4][0] = -6.0*in[0];
    \n+
    254 out[4][1] = 0.0;
    \n+
    255
    \n+
    256 out[5][0] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);
    \n+
    257 out[5][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
    \n+
    258
    \n+
    259 out[6][0] = 0.0;
    \n+
    260 out[6][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);
    \n+
    261
    \n+
    262 out[7][0] = 0.0;
    \n+
    263 out[7][1] = 3.0 - 6.0*in[0];
    \n+
    264
    \n+
    265 out[8][0] = 0.0;
    \n+
    266 out[8][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
    \n+
    267
    \n+
    268 out[9][0] = 0.0;
    \n+
    269 out[9][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);
    \n+
    270
    \n+
    271 out[10][0] = 0.0;
    \n+
    272 out[10][1] = -3.0 + 6.0*in[0];
    \n+
    273
    \n+
    274 out[11][0] = 0.0;
    \n+
    275 out[11][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
    \n+
    276
    \n+
    277 out[12][0] = 0.0;
    \n+
    278 out[12][1] = 0.0;
    \n+
    279
    \n+
    280 out[13][0] = 0.0;
    \n+
    281 out[13][1] = 6.0 - 12.0*in[1];
    \n+
    282 break;
    \n+
    283 default:
    \n+
    284 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    285 }
    \n+
    286 } else {
    \n+
    287 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    288 }
    \n+
    289 }
    \n+
    \n+
    290
    \n+
    \n+
    292 unsigned int order() const
    \n+
    293 {
    \n+
    294 return 3;
    \n+
    295 }
    \n+
    \n+
    296
    \n+
    297 private:
    \n+
    298 std::array<R,4> sign_;
    \n+
    299 };
    \n+
    \n+
    300} // end namespace Dune
    \n+
    301#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Zero order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas0cube3d.hh:25
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas0cube3d.hh:61
    \n-
    RT0Cube3DLocalFiniteElement(int s)
    Definition raviartthomas0cube3d.hh:35
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas0cube3d.hh:56
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas0cube3d.hh:40
    \n-
    RT0Cube3DLocalFiniteElement()
    Definition raviartthomas0cube3d.hh:32
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas0cube3d.hh:50
    \n-
    LocalFiniteElementTraits< RT0Cube3DLocalBasis< D, R >, RT0Cube3DLocalCoefficients, RT0Cube3DLocalInterpolation< RT0Cube3DLocalBasis< D, R > > > Traits
    Definition raviartthomas0cube3d.hh:30
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas0cube3d.hh:45
    \n-
    Definition raviartthomas0cube3dall.hh:30
    \n-
    Definition raviartthomas0cube3dall.hh:158
    \n-
    Definition raviartthomas0cube3dall.hh:216
    \n+
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:30
    \n+
    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
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:292
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:67
    \n+
    BDM2Cube2DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:38
    \n+
    BDM2Cube2DLocalBasis(std::bitset< 4 > s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:49
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:35
    \n+
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:56
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:108
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,127 +1,350 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas0cube3d.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+brezzidouglasmarini2cube2dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\ba_\bl_\bl_\b._\bh_\bh\"\n+8#include \n+9#include \n+10#include \n+11#include \n 12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-23 template\n-_\b2_\b4 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-25 {\n-26 public:\n-27 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-28 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-29 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b0 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+13#include \n+14\n+15#include \"../../common/localbasis.hh\"\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+28 template\n+_\b2_\b9 class _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+30 {\n 31\n-_\b3_\b2 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-33 {}\n-34\n-_\b3_\b5 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-36 basis(s),\n-37 interpolation(s)\n-38 {}\n-39\n-_\b4_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-41 {\n-42 return basis;\n-43 }\n-44\n-_\b4_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-46 {\n-47 return coefficients;\n-48 }\n-49\n-_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-51 {\n-52 return interpolation;\n+32 public:\n+33 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,\n+34 R,2,Dune::FieldVector,\n+_\b3_\b5 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+36\n+_\b3_\b8 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n+39 {\n+40 for (size_t i=0; i<4; i++)\n+41 sign_[i] = 1.0;\n+42 }\n+43\n+_\b4_\b9 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs(std::bitset<4> s)\n+50 {\n+51 for (size_t i=0; i<4; i++)\n+52 sign_[i] = s[i] ? -1.0 : 1.0;\n 53 }\n 54\n-_\b5_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+_\b5_\b6 unsigned int _\bs_\bi_\bz_\be() const\n 57 {\n-58 return basis.size();\n+58 return 14;\n 59 }\n 60\n-_\b6_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-62 {\n-63 return GeometryTypes::hexahedron;\n-64 }\n-65\n-66 private:\n-67 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-68 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-69 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-70 };\n-71}\n-72#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\ba_\bl_\bl_\b._\bh_\bh\n+_\b6_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+68 std::vector& out) const\n+69 {\n+70 out.resize(_\bs_\bi_\bz_\be());\n+71\n+72 out[0][0] = sign_[0]*(-2.25 + 5.25*in[0] + 7.5*in[1] - 7.5*in[0]*in[1] -\n+3.0*in[0]*in[0] - 7.5*in[1]*in[1] + 7.5*in[0]*in[1]*in[1]);\n+73 out[0][1] = sign_[0]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in\n+[1]);\n+74 out[1][0] = 3.0 - 3.0*in[0]-6.0*in[1] + 6.0*in[0]*in[1];\n+75 out[1][1] = 0.0;\n+76 out[2][0] = sign_[0]*(-3.75 + 3.75*in[0] + 22.5*in[1] - 22.5*in[0]*in[1] -\n+22.5*in[1]*in[1] + 22.5*in[0]*in[1]*in[1]);\n+77 out[2][1] = sign_[0]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in\n+[1]);\n+78 out[3][0] = sign_[1]*(-0.75*in[0] - 7.5*in[0]*in[1] + 3.0*in[0]*in[0] +\n+7.5*in[0]*in[1]*in[1]);\n+79 out[3][1] = sign_[1]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in\n+[1]);\n+80 out[4][0] = 3.0*in[0] - 6.0*in[0]*in[1];\n+81 out[4][1] = 0.0;\n+82 out[5][0] = sign_[1]*(+3.75*in[0] - 22.5*in[0]*in[1] + 22.5*in[0]*in[1]*in\n+[1]);\n+83 out[5][1] = sign_[1]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in\n+[1]);\n+84 out[6][0] = sign_[2]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in\n+[0]);\n+85 out[6][1] = sign_[2]*(-2.25 + 7.5*in[0] + 5.25*in[1] - 7.5*in[0]*in[1] -\n+7.5*in[0]*in[0] - 3.0*in[1]*in[1] + 7.5*in[0]*in[0]*in[1]);\n+86 out[7][0] = 0.0;\n+87 out[7][1] = -3.0 + 6.0*in[0] + 3.0*in[1] - 6.0*in[0]*in[1];\n+88 out[8][0] = sign_[2]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in\n+[0]);\n+89 out[8][1] = sign_[2]*(-3.75 + 22.5*in[0] + 3.75*in[1] - 22.5*in[0]*in[1] -\n+22.5*in[0]*in[0] + 22.5*in[0]*in[0]*in[1]);\n+90 out[9][0] = sign_[3]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in\n+[0]);\n+91 out[9][1] = sign_[3]*(-0.75*in[1] - 7.5*in[0]*in[1] + 3.0*in[1]*in[1] +\n+7.5*in[0]*in[0]*in[1]);\n+92 out[10][0] = 0.0;\n+93 out[10][1] = -3.0*in[1] + 6.0*in[0]*in[1];\n+94 out[11][0] = sign_[3]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in\n+[0]);\n+95 out[11][1] = sign_[3]*(3.75*in[1] - 22.5*in[0]*in[1] + 22.5*in[0]*in[0]*in\n+[1]);\n+96 out[12][0] = 6.0*in[0] - 6.0*in[0]*in[0];\n+97 out[12][1] = 0.0;\n+98 out[13][0] = 0.0;\n+99 out[13][1] = 6.0*in[1] - 6.0*in[1]*in[1];\n+100 }\n+101\n+_\b1_\b0_\b8 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+109 std::vector& out) const\n+110 {\n+111 out.resize(_\bs_\bi_\bz_\be());\n+112\n+113 out[0][0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);\n+114 out[0][0][1] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);\n+115 out[0][1][0] = 0.0;\n+116 out[0][1][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);\n+117\n+118 out[1][0][0] = -3.0 + 6.0*in[1];\n+119 out[1][0][1] = -6.0 + 6.0*in[0];\n+120 out[1][1][0] = 0.0;\n+121 out[1][1][1] = 0.0;\n+122\n+123 out[2][0][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);\n+124 out[2][0][1] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in\n+[1]);\n+125 out[2][1][0] = 0.0;\n+126 out[2][1][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);\n+127\n+128 out[3][0][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);\n+129 out[3][0][1] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);\n+130 out[3][1][0] = 0.0;\n+131 out[3][1][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);\n+132\n+133 out[4][0][0] = 3.0 - 6.0*in[1];\n+134 out[4][0][1] = -6.0*in[0];\n+135 out[4][1][0] = 0.0;\n+136 out[4][1][1] = 0.0;\n+137\n+138 out[5][0][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);\n+139 out[5][0][1] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);\n+140 out[5][1][0] = 0.0;\n+141 out[5][1][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);\n+142\n+143 out[6][0][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);\n+144 out[6][0][1] = 0.0;\n+145 out[6][1][0] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);\n+146 out[6][1][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);\n+147\n+148 out[7][0][0] = 0.0;\n+149 out[7][0][1] = 0.0;\n+150 out[7][1][0] = 6.0 - 6.0*in[1];\n+151 out[7][1][1] = 3.0 - 6.0*in[0];\n+152\n+153 out[8][0][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);\n+154 out[8][0][1] = 0.0;\n+155 out[8][1][0] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in\n+[1]);\n+156 out[8][1][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);\n+157\n+158 out[9][0][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);\n+159 out[9][0][1] = 0.0;\n+160 out[9][1][0] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);\n+161 out[9][1][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);\n+162\n+163 out[10][0][0] = 0.0;\n+164 out[10][0][1] = 0.0;\n+165 out[10][1][0] = 6.0*in[1];\n+166 out[10][1][1] = -3.0 + 6.0*in[0];\n+167\n+168 out[11][0][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);\n+169 out[11][0][1] = 0.0;\n+170 out[11][1][0] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);\n+171 out[11][1][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);\n+172\n+173 out[12][0][0] = 6.0 - 12.0*in[0];\n+174 out[12][0][1] = 0.0;\n+175 out[12][1][0] = 0.0;\n+176 out[12][1][1] = 0.0;\n+177\n+178 out[13][0][0] = 0.0;\n+179 out[13][0][1] = 0.0;\n+180 out[13][1][0] = 0.0;\n+181 out[13][1][1] = 6.0 - 12.0*in[1];\n+182 }\n+183\n+_\b1_\b8_\b5 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+186 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+187 std::vector& out) const // return value\n+188 {\n+189 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+190 if (totalOrder == 0) {\n+191 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+192 } else if (totalOrder == 1) {\n+193 out.resize(_\bs_\bi_\bz_\be());\n+194 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n+195\n+196 switch (direction) {\n+197 case 0:\n+198 out[0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);\n+199 out[0][1] = 0.0;\n+200\n+201 out[1][0] = -3.0 + 6.0*in[1];\n+202 out[1][1] = 0.0;\n+203\n+204 out[2][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);\n+205 out[2][1] = 0.0;\n+206\n+207 out[3][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);\n+208 out[3][1] = 0.0;\n+209\n+210 out[4][0] = 3.0 - 6.0*in[1];\n+211 out[4][1] = 0.0;\n+212\n+213 out[5][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);\n+214 out[5][1] = 0.0;\n+215\n+216 out[6][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);\n+217 out[6][1] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);\n+218\n+219 out[7][0] = 0.0;\n+220 out[7][1] = 6.0 - 6.0*in[1];\n+221\n+222 out[8][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);\n+223 out[8][1] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);\n+224\n+225 out[9][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);\n+226 out[9][1] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);\n+227\n+228 out[10][0] = 0.0;\n+229 out[10][1] = 6.0*in[1];\n+230\n+231 out[11][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);\n+232 out[11][1] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);\n+233\n+234 out[12][0] = 6.0 - 12.0*in[0];\n+235 out[12][1] = 0.0;\n+236\n+237 out[13][0] = 0.0;\n+238 out[13][1] = 0.0;\n+239 break;\n+240 case 1:\n+241 out[0][0] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);\n+242 out[0][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);\n+243\n+244 out[1][0] = -6.0 + 6.0*in[0];\n+245 out[1][1] = 0.0;\n+246\n+247 out[2][0] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);\n+248 out[2][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);\n+249\n+250 out[3][0] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);\n+251 out[3][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);\n+252\n+253 out[4][0] = -6.0*in[0];\n+254 out[4][1] = 0.0;\n+255\n+256 out[5][0] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);\n+257 out[5][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);\n+258\n+259 out[6][0] = 0.0;\n+260 out[6][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);\n+261\n+262 out[7][0] = 0.0;\n+263 out[7][1] = 3.0 - 6.0*in[0];\n+264\n+265 out[8][0] = 0.0;\n+266 out[8][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);\n+267\n+268 out[9][0] = 0.0;\n+269 out[9][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);\n+270\n+271 out[10][0] = 0.0;\n+272 out[10][1] = -3.0 + 6.0*in[0];\n+273\n+274 out[11][0] = 0.0;\n+275 out[11][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);\n+276\n+277 out[12][0] = 0.0;\n+278 out[12][1] = 0.0;\n+279\n+280 out[13][0] = 0.0;\n+281 out[13][1] = 6.0 - 12.0*in[1];\n+282 break;\n+283 default:\n+284 DUNE_THROW(RangeError, \"Component out of range.\");\n+285 }\n+286 } else {\n+287 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+288 }\n+289 }\n+290\n+_\b2_\b9_\b2 unsigned int _\bo_\br_\bd_\be_\br() const\n+293 {\n+294 return 3;\n+295 }\n+296\n+297 private:\n+298 std::array sign_;\n+299 };\n+300} // end namespace Dune\n+301#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Zero order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT0Cube3DLocalFiniteElement(int s)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:292\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM2Cube2DLocalBasis()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM2Cube2DLocalBasis(std::bitset< 4 > s)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT0Cube3DLocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT0Cube3DLocalBasis< D, R >,\n-RT0Cube3DLocalCoefficients, RT0Cube3DLocalInterpolation< RT0Cube3DLocalBasis<\n-D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:216\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas02d.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,33 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas02d.hh File Reference
    \n+
    brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include "raviartthomas02d/raviartthomas02dlocalbasis.hh"
    \n-#include "raviartthomas02d/raviartthomas02dlocalcoefficients.hh"
    \n-#include "raviartthomas02d/raviartthomas02dlocalinterpolation.hh"
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT02DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on triangles. More...
    class  Dune::BDM2Cube2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas02d.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 _\bZ_\be_\br_\bo order Raviart-Thomas shape functions on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas02d.hh Source File\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,125 +70,153 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas02d.hh
    \n+
    brezzidouglasmarini2cube2dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <vector>
    \n
    9
    \n-\n-\n-\n-\n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17
    \n-
    26 template<class D, class R>
    \n-
    \n-
    27 class
    \n-\n-
    29 {
    \n-
    30 public:
    \n-\n-\n+
    23 template<class LB>
    \n+
    \n+\n+
    25 {
    \n+
    26
    \n+
    27 public:
    \n+
    \n+\n+
    30 {
    \n+
    31 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n+
    32 }
    \n+
    \n
    33
    \n-
    \n-\n-
    36 {}
    \n-
    \n-
    37
    \n-
    \n-
    43 RT02DLocalFiniteElement (std::bitset<3> s) :
    \n-
    44 basis(s),
    \n-
    45 interpolation(s)
    \n-
    46 {}
    \n-
    \n-
    47
    \n-
    \n-
    48 const typename Traits::LocalBasisType& localBasis () const
    \n-
    49 {
    \n-
    50 return basis;
    \n-
    51 }
    \n-
    \n-
    52
    \n-
    \n-\n-
    54 {
    \n-
    55 return coefficients;
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    \n-\n-
    59 {
    \n-
    60 return interpolation;
    \n-
    61 }
    \n-
    \n-
    62
    \n-
    \n-
    63 unsigned int size () const
    \n-
    64 {
    \n-
    65 return 3;
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    68 static constexpr GeometryType type ()
    \n-
    69 {
    \n-
    70 return GeometryTypes::triangle;
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    73 private:
    \n-\n-
    75 RT02DLocalCoefficients coefficients;
    \n-\n-
    77 };
    \n-
    \n-
    78
    \n-
    79}
    \n-
    80
    \n-
    81#endif
    \n-\n-\n-\n-\n+
    \n+\n+
    40 {
    \n+
    41 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n+
    42 if (s & 1)
    \n+
    43 {
    \n+
    44 sign0 = -1.0;
    \n+
    45 }
    \n+
    46 if (s & 2)
    \n+
    47 {
    \n+
    48 sign1 = -1.0;
    \n+
    49 }
    \n+
    50 if (s & 4)
    \n+
    51 {
    \n+
    52 sign2 = -1.0;
    \n+
    53 }
    \n+
    54 if (s & 8)
    \n+
    55 {
    \n+
    56 sign3 = -1.0;
    \n+
    57 }
    \n+
    58
    \n+
    59 n0[0] = -1.0;
    \n+
    60 n0[1] = 0.0;
    \n+
    61 n1[0] = 1.0;
    \n+
    62 n1[1] = 0.0;
    \n+
    63 n2[0] = 0.0;
    \n+
    64 n2[1] = -1.0;
    \n+
    65 n3[0] = 0.0;
    \n+
    66 n3[1] = 1.0;
    \n+
    67 }
    \n+
    \n+
    68
    \n+
    77 template<typename F, typename C>
    \n+
    \n+
    78 void interpolate(const F& f, std::vector<C>& out) const
    \n+
    79 {
    \n+
    80 // f gives v*outer normal at a point on the edge!
    \n+
    81 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    82 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    83
    \n+
    84 out.resize(14);
    \n+
    85 fill(out.begin(), out.end(), 0.0);
    \n+
    86
    \n+
    87 const int qOrder = 4;
    \n+
    88 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    89
    \n+
    90 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n+
    91 it != rule.end(); ++it)
    \n+
    92 {
    \n+
    93 Scalar qPos = it->position();
    \n+
    94
    \n+
    95 typename LB::Traits::DomainType localPos;
    \n+
    96
    \n+
    97 localPos[0] = 0.0;
    \n+
    98 localPos[1] = qPos;
    \n+
    99 auto y = f(localPos);
    \n+
    100 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n+
    101 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    102 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign0;
    \n+
    103
    \n+
    104 localPos[0] = 1.0;
    \n+
    105 localPos[1] = qPos;
    \n+
    106 y = f(localPos);
    \n+
    107 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;
    \n+
    108 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    109 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign1;
    \n+
    110
    \n+
    111 localPos[0] = qPos;
    \n+
    112 localPos[1] = 0.0;
    \n+
    113 y = f(localPos);
    \n+
    114 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n+
    115 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    116 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign2;
    \n+
    117
    \n+
    118 localPos[0] = qPos;
    \n+
    119 localPos[1] = 1.0;
    \n+
    120 y = f(localPos);
    \n+
    121 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n+
    122 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    123 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign3;
    \n+
    124 }
    \n+
    125
    \n+
    126 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    127
    \n+
    128 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
    \n+
    129 {
    \n+
    130 auto y = f(it->position());
    \n+
    131 out[12] += y[0]*it->weight();
    \n+
    132 out[13] += y[1]*it->weight();
    \n+
    133 }
    \n+
    134 }
    \n+
    \n+
    135
    \n+
    136 private:
    \n+
    137 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n+
    138 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n+
    139 };
    \n+
    \n+
    140} // end namespace Dune
    \n+
    141#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Zero order Raviart-Thomas shape functions on triangles.
    Definition raviartthomas02d.hh:29
    \n-
    RT02DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas02d.hh:35
    \n-
    LocalFiniteElementTraits< RT02DLocalBasis< D, R >, RT02DLocalCoefficients, RT02DLocalInterpolation< RT02DLocalBasis< D, R > > > Traits
    Definition raviartthomas02d.hh:32
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas02d.hh:68
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas02d.hh:58
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas02d.hh:48
    \n-
    RT02DLocalFiniteElement(std::bitset< 3 > s)
    Constructor with explicitly given edge orientations.
    Definition raviartthomas02d.hh:43
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas02d.hh:53
    \n-
    unsigned int size() const
    Definition raviartthomas02d.hh:63
    \n-
    Definition raviartthomas02dlocalbasis.hh:27
    \n-
    Definition raviartthomas02dlocalcoefficients.hh:25
    \n-
    Definition raviartthomas02dlocalinterpolation.hh:20
    \n+
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:25
    \n+
    BDM2Cube2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:39
    \n+
    BDM2Cube2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:29
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:78
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,134 +1,157 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas02d.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+brezzidouglasmarini2cube2dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH\n-6#define DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH\n 7\n-8#include \n+8#include \n 9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17\n-26 template\n-_\b2_\b7 class\n-28 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-29 {\n-30 public:\n-31 typedef\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b2 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+23 template\n+_\b2_\b4 class _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+25 {\n+26\n+27 public:\n+_\b2_\b9 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n+30 {\n+31 sign0 = sign1 = sign2 = sign3 = 1.0;\n+32 }\n 33\n-_\b3_\b5 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-36 {}\n-37\n-_\b4_\b3 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset<3> s) :\n-44 basis(s),\n-45 interpolation(s)\n-46 {}\n-47\n-_\b4_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-49 {\n-50 return basis;\n-51 }\n-52\n-_\b5_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-54 {\n-55 return coefficients;\n-56 }\n-57\n-_\b5_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-59 {\n-60 return interpolation;\n-61 }\n-62\n-_\b6_\b3 unsigned int _\bs_\bi_\bz_\be () const\n-64 {\n-65 return 3;\n-66 }\n-67\n-_\b6_\b8 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-69 {\n-70 return GeometryTypes::triangle;\n-71 }\n-72\n-73 private:\n-74 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-75 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-76 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-77 };\n-78\n-79}\n-80\n-81#endif\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\b3_\b9 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(unsigned int s)\n+40 {\n+41 sign0 = sign1 = sign2 = sign3 = 1.0;\n+42 if (s & 1)\n+43 {\n+44 sign0 = -1.0;\n+45 }\n+46 if (s & 2)\n+47 {\n+48 sign1 = -1.0;\n+49 }\n+50 if (s & 4)\n+51 {\n+52 sign2 = -1.0;\n+53 }\n+54 if (s & 8)\n+55 {\n+56 sign3 = -1.0;\n+57 }\n+58\n+59 n0[0] = -1.0;\n+60 n0[1] = 0.0;\n+61 n1[0] = 1.0;\n+62 n1[1] = 0.0;\n+63 n2[0] = 0.0;\n+64 n2[1] = -1.0;\n+65 n3[0] = 0.0;\n+66 n3[1] = 1.0;\n+67 }\n+68\n+77 template\n+_\b7_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const\n+79 {\n+80 // f gives v*outer normal at a point on the edge!\n+81 typedef typename LB::Traits::RangeFieldType Scalar;\n+82 typedef typename LB::Traits::DomainFieldType Vector;\n+83\n+84 out.resize(14);\n+85 fill(out.begin(), out.end(), 0.0);\n+86\n+87 const int qOrder = 4;\n+88 const QuadratureRule& rule = QuadratureRules::rule\n+(GeometryTypes::cube(1), qOrder);\n+89\n+90 for (typename QuadratureRule::const_iterator it = rule.begin();\n+91 it != rule.end(); ++it)\n+92 {\n+93 Scalar qPos = it->position();\n+94\n+95 typename LB::Traits::DomainType localPos;\n+96\n+97 localPos[0] = 0.0;\n+98 localPos[1] = qPos;\n+99 auto y = f(localPos);\n+100 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n+101 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n+102 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n+>weight()*sign0;\n+103\n+104 localPos[0] = 1.0;\n+105 localPos[1] = qPos;\n+106 y = f(localPos);\n+107 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;\n+108 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n+109 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n+>weight()*sign1;\n+110\n+111 localPos[0] = qPos;\n+112 localPos[1] = 0.0;\n+113 y = f(localPos);\n+114 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n+115 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n+116 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n+>weight()*sign2;\n+117\n+118 localPos[0] = qPos;\n+119 localPos[1] = 1.0;\n+120 y = f(localPos);\n+121 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n+122 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n+123 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n+>weight()*sign3;\n+124 }\n+125\n+126 const QuadratureRule& rule2 = QuadratureRules::rule\n+(GeometryTypes::cube(2), qOrder);\n+127\n+128 for (typename QuadratureRule::const_iterator it=rule2.begin();\n+it!=rule2.end(); ++it)\n+129 {\n+130 auto y = f(it->position());\n+131 out[12] += y[0]*it->weight();\n+132 out[13] += y[1]*it->weight();\n+133 }\n+134 }\n+135\n+136 private:\n+137 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n+138 typename LB::Traits::DomainType n0, n1, n2, n3;\n+139 };\n+140} // end namespace Dune\n+141#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Zero order Raviart-Thomas shape functions on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT02DLocalFiniteElement()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM2Cube2DLocalInterpolation(unsigned int s)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM2Cube2DLocalInterpolation()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT02DLocalBasis< D, R >, RT02DLocalCoefficients,\n-RT02DLocalInterpolation< RT02DLocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT02DLocalFiniteElement(std::bitset< 3 > s)\n-Constructor with explicitly given edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:20\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:78\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas2cube2dlocalbasis.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas2cube2dlocalbasis.hh File Reference
    \n+
    brezzidouglasmarini1simplex2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n+
    #include <array>
    \n+#include <bitset>
    \n+#include <numeric>
    \n #include <vector>
    \n #include <dune/common/fmatrix.hh>
    \n #include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT2Cube2DLocalBasis< D, R >
     Second order Raviart-Thomas shape functions on the reference quadrilateral. More...
    class  Dune::BDM1Simplex2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on the reference triangle. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas2cube2dlocalbasis.hh File Reference\n+brezzidouglasmarini1simplex2dlocalbasis.hh File Reference\n+#include \n+#include \n #include \n #include \n #include \n #include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 Second order Raviart-Thomas shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n+ triangle. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas2cube2dlocalbasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,300 +70,215 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas2cube2dlocalbasis.hh
    \n+
    brezzidouglasmarini1simplex2dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n+
    8#include <array>
    \n+
    9#include <bitset>
    \n+
    10#include <numeric>
    \n+
    11#include <vector>
    \n
    12
    \n-
    13#include "../../common/localbasis.hh"
    \n+
    13#include <dune/common/fmatrix.hh>
    \n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    26 template<class D, class R>
    \n-
    \n-\n-
    28 {
    \n-
    29
    \n-
    30 public:
    \n-
    31 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    32 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    33
    \n-
    \n-
    39 RT2Cube2DLocalBasis (unsigned int s = 0)
    \n-
    40 {
    \n-
    41 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n-
    42 if (s & 1)
    \n-
    43 {
    \n-
    44 sign0 = -1.0;
    \n-
    45 }
    \n-
    46 if (s & 2)
    \n-
    47 {
    \n-
    48 sign1 = -1.0;
    \n-
    49 }
    \n-
    50 if (s & 4)
    \n-
    51 {
    \n-
    52 sign2 = -1.0;
    \n-
    53 }
    \n-
    54 if (s & 8)
    \n-
    55 {
    \n-
    56 sign3 = -1.0;
    \n-
    57 }
    \n+
    15#include "../../common/localbasis.hh"
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    28 template<class D, class R>
    \n+
    \n+\n+
    30 {
    \n+
    31
    \n+
    32 public:
    \n+
    33 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    34 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    35
    \n+
    \n+\n+
    38 {
    \n+
    39 for (size_t i=0; i<3; i++)
    \n+
    40 sign_[i] = 1.0;
    \n+
    41 }
    \n+
    \n+
    42
    \n+
    \n+
    48 BDM1Simplex2DLocalBasis (std::bitset<3> s)
    \n+
    49 {
    \n+
    50 for (size_t i=0; i<3; i++)
    \n+
    51 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+
    55 unsigned int size () const
    \n+
    56 {
    \n+
    57 return 6;
    \n
    58 }
    \n
    \n
    59
    \n-
    \n-
    61 unsigned int size () const
    \n-
    62 {
    \n-
    63 return 24;
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    \n-
    72 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    73 std::vector<typename Traits::RangeType>& out) const
    \n-
    74 {
    \n-
    75 out.resize(24);
    \n-
    76
    \n-
    77 out[0][0] = sign0*(-1.0 + 9.0*in[0] - 18.0*in[0]*in[0] + 10.0*in[0]*in[0]*in[0]);
    \n-
    78 out[0][1] = 0.0;
    \n-
    79 out[1][0] = 3.0 - 27.0*in[0] - 6.0*in[1] + 54.0*in[0]*in[1] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1] - 30.0*in[0]*in[0]*in[0] + 60.0*in[0]*in[0]*in[0]*in[1];
    \n-
    80 out[1][1] = 0.0;
    \n-
    81 out[2][0] = sign0*(-5.0 + 45.0*in[0] + 30.0*in[1] - 270.0*in[0]*in[1] - 90.0*in[0]*in[0] - 30.0*in[1]*in[1] + 540.0*in[0]*in[0]*in[1] + 270.0*in[0]*in[1]*in[1] + 50.0*in[0]*in[0]*in[0] - 540.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[0]*in[0]*in[1] + 300.0*in[0]*in[0]*in[0]*in[1]*in[1]);
    \n-
    82 out[2][1] = 0.0;
    \n-
    83 out[3][0] = sign1*(3.0*in[0] - 12.0*in[0]*in[0] + 10.0*in[0]*in[0]*in[0]);
    \n-
    84 out[3][1] = 0.0;
    \n-
    85 out[4][0] = 9.0*in[0] - 18.0*in[0]*in[1] - 36.0*in[0]*in[0] + 72.0*in[0]*in[0]*in[1] + 30.0*in[0]*in[0]*in[0] - 60.0*in[0]*in[0]*in[0]*in[1];
    \n-
    86 out[4][1] = 0.0;
    \n-
    87 out[5][0] = sign1*(15.0*in[0] - 90.0*in[0]*in[1] - 60.0*in[0]*in[0] + 360.0*in[0]*in[0]*in[1] + 90.0*in[0]*in[1]*in[1] + 50.0*in[0]*in[0]*in[0] - 360.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[0]*in[0]*in[1] + 300.0*in[0]*in[0]*in[0]*in[1]*in[1]);
    \n-
    88 out[5][1] = 0.0;
    \n-
    89 out[6][0] = 0.0;
    \n-
    90 out[6][1] = sign2*(-1.0 + 9.0*in[1] - 18.0*in[1]*in[1] + 10.0*in[1]*in[1]*in[1]);
    \n-
    91 out[7][0] = 0.0;
    \n-
    92 out[7][1] = -3.0 + 6.0*in[0] + 27.0*in[1] - 54.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1] + 30.0*in[1]*in[1]*in[1] - 60.0*in[0]*in[1]*in[1]*in[1];
    \n-
    93 out[8][0] = 0.0;
    \n-
    94 out[8][1] = sign2*(-5.0 + 30.0*in[0] + 45.0*in[1] - 270.0*in[0]*in[1] - 30.0*in[0]*in[0] - 90.0*in[1]*in[1] + 270.0*in[0]*in[0]*in[1] + 540.0*in[0]*in[1]*in[1] + 50.0*in[1]*in[1]*in[1] - 540.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[1]*in[1]*in[1] + 300.0*in[1]*in[1]*in[1]*in[0]*in[0]);
    \n-
    95 out[9][0] = 0.0;
    \n-
    96 out[9][1] = sign3*(3.0*in[1] - 12.0*in[1]*in[1] + 10.0*in[1]*in[1]*in[1]);
    \n-
    97 out[10][0] = 0.0;
    \n-
    98 out[10][1] = -9.0*in[1] + 18.0*in[0]*in[1] + 36.0*in[1]*in[1] - 72.0*in[0]*in[1]*in[1] - 30.0*in[1]*in[1]*in[1] + 60.0*in[0]*in[1]*in[1]*in[1];
    \n-
    99 out[11][0] = 0.0;
    \n-
    100 out[11][1] = sign3*(15.0*in[1] - 90.0*in[0]*in[1] - 60.0*in[1]*in[1] + 90.0*in[0]*in[0]*in[1] + 360.0*in[0]*in[1]*in[1] + 50.0*in[1]*in[1]*in[1] - 360.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[1]*in[1]*in[1] + 300.0*in[1]*in[1]*in[1]*in[0]*in[0]);
    \n-
    101 out[12][0] = 324.0*in[0] -1296.0*in[0]*in[1] - 864.0*in[0]*in[0] + 3456.0*in[0]*in[0]*in[1] + 1080.0*in[0]*in[1]*in[1] + 540.0*in[0]*in[0]*in[0] - 2880.0*in[0]*in[0]*in[1]*in[1] - 2160.0*in[0]*in[0]*in[0]*in[1] + 1800.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n-
    102 out[12][1] = 0.0;
    \n-
    103 out[13][0] = 0.0;
    \n-
    104 out[13][1] = 324.0*in[1] - 1296.0*in[0]*in[1] - 864.0*in[1]*in[1] + 1080.0*in[0]*in[0]*in[1] + 3456.0*in[0]*in[1]*in[1] + 540.0*in[1]*in[1]*in[1] - 2880.0*in[0]*in[0]*in[1]*in[1] - 2160.0*in[0]*in[1]*in[1]*in[1] + 1800.0*in[1]*in[1]*in[1]*in[0]*in[0];
    \n-
    105 out[14][0] = -540.0*in[0] + 2160.0*in[0]*in[1] + 1620.0*in[0]*in[0] - 6480.0*in[0]*in[0]*in[1] - 1800.0*in[0]*in[1]*in[1] - 1080.0*in[0]*in[0]*in[0] + 5400.0*in[0]*in[0]*in[1]*in[1] + 4320.0*in[0]*in[0]*in[0]*in[1] - 3600.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n-
    106 out[14][1] = 0.0;
    \n-
    107 out[15][0] = 0.0;
    \n-
    108 out[15][1] = -1296.0*in[1] + 6912.0*in[0]*in[1] + 3456.0*in[1]*in[1] - 6480.0*in[0]*in[0]*in[1] - 18432.0*in[0]*in[1]*in[1] - 2160.0*in[1]*in[1]*in[1] + 17280.0*in[0]*in[0]*in[1]*in[1] + 11520.0*in[0]*in[1]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n-
    109 out[16][0] = -1296.0*in[0] + 6912.0*in[0]*in[1] + 3456.0*in[0]*in[0] - 6480.0*in[0]*in[1]*in[1] - 18432.0*in[0]*in[0]*in[1] - 2160.0*in[0]*in[0]*in[0] + 17280.0*in[0]*in[0]*in[1]*in[1] + 11520.0*in[1]*in[0]*in[0]*in[0] - 10800.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n-
    110 out[16][1] = 0.0;
    \n-
    111 out[17][0] = 0.0;
    \n-
    112 out[17][1] = -540.0*in[1] + 2160.0*in[0]*in[1] + 1620.0*in[1]*in[1] - 1800.0*in[0]*in[0]*in[1] - 6480.0*in[0]*in[1]*in[1] - 1080.0*in[1]*in[1]*in[1] + 5400.0*in[0]*in[0]*in[1]*in[1] + 4320.0*in[0]*in[1]*in[1]*in[1] - 3600.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n-
    113 out[18][0] = 2160.0*in[0] - 11520.0*in[0]*in[1] - 6480.0*in[0]*in[0] + 34560.0*in[0]*in[0]*in[1] + 10800.0*in[0]*in[1]*in[1] + 4320.0*in[0]*in[0]*in[0] - 32400.0*in[0]*in[0]*in[1]*in[1] - 23040.0*in[0]*in[0]*in[0]*in[1] + 21600.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n-
    114 out[18][1] = 0.0;
    \n-
    115 out[19][0] = 0.0;
    \n-
    116 out[19][1] = 2160.0*in[1] - 11520.0*in[0]*in[1] - 6480.0*in[1]*in[1] + 10800.0*in[0]*in[0]*in[1] + 34560.0*in[0]*in[1]*in[1] + 4320.0*in[1]*in[1]*in[1] - 32400.0*in[0]*in[0]*in[1]*in[1] - 23040.0*in[0]*in[1]*in[1]*in[1] + 21600.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n-
    117 out[20][0] = 1080.0*in[0] - 6480.0*in[0]*in[1] - 2880.0*in[0]*in[0] + 17280.0*in[0]*in[0]*in[1] + 6480.0*in[0]*in[1]*in[1] + 1800.0*in[0]*in[0]*in[0] - 17280.0*in[0]*in[0]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[0]*in[1] + 10800.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n-
    118 out[20][1] = 0.0;
    \n-
    119 out[21][0] = 0.0;
    \n-
    120 out[21][1] = 1080.0*in[1] - 6480.0*in[0]*in[1] - 2880.0*in[1]*in[1] + 6480.0*in[0]*in[0]*in[1] + 17280.0*in[0]*in[1]*in[1] + 1800.0*in[1]*in[1]*in[1] - 17280.0*in[0]*in[0]*in[1]*in[1] - 10800.0*in[0]*in[1]*in[1]*in[1] + 10800.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n-
    121 out[22][0] = -1800.0*in[0] + 10800.0*in[0]*in[1] + 5400.0*in[0]*in[0] - 32400.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[1]*in[1] - 3600.0*in[0]*in[0]*in[0] + 32400.0*in[0]*in[0]*in[1]*in[1] + 21600.0*in[0]*in[0]*in[0]*in[1] - 21600.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n-
    122 out[22][1] = 0.0;
    \n-
    123 out[23][0] = 0.0;
    \n-
    124 out[23][1] = -1800.0*in[1] + 10800.0*in[0]*in[1] + 5400.0*in[1]*in[1] - 10800.0*in[0]*in[0]*in[1] - 32400.0*in[0]*in[1]*in[1] - 3600.0*in[1]*in[1]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1] + 21600.0*in[0]*in[1]*in[1]*in[1] - 21600.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n+
    \n+
    66 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    67 std::vector<typename Traits::RangeType>& out) const
    \n+
    68 {
    \n+
    69 out.resize(6);
    \n+
    70
    \n+
    71 out[0][0] = sign_[0]*in[0];
    \n+
    72 out[0][1] = sign_[0]*(in[1] - 1.0);
    \n+
    73 out[1][0] = sign_[1]*(in[0] - 1.0);
    \n+
    74 out[1][1] = sign_[1]*in[1];
    \n+
    75 out[2][0] = sign_[2]*in[0];
    \n+
    76 out[2][1] = sign_[2]*in[1];
    \n+
    77 out[3][0] = 3.0*in[0];
    \n+
    78 out[3][1] = 3.0 - 6.0*in[0] - 3.0*in[1];
    \n+
    79 out[4][0] = -3.0 + 3.0*in[0] + 6.0*in[1];
    \n+
    80 out[4][1] = -3.0*in[1];
    \n+
    81 out[5][0] = -3.0*in[0];
    \n+
    82 out[5][1] = 3.0*in[1];
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    \n+
    91 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    92 std::vector<typename Traits::JacobianType>& out) const
    \n+
    93 {
    \n+
    94 out.resize(6);
    \n+
    95
    \n+
    96 out[0][0][0] = sign_[0];
    \n+
    97 out[0][0][1] = 0.0;
    \n+
    98 out[0][1][0] = 0.0;
    \n+
    99 out[0][1][1] = sign_[0];
    \n+
    100
    \n+
    101 out[1][0][0] = sign_[1];
    \n+
    102 out[1][0][1] = 0.0;
    \n+
    103 out[1][1][0] = 0.0;
    \n+
    104 out[1][1][1] = sign_[1];
    \n+
    105
    \n+
    106 out[2][0][0] = sign_[2];
    \n+
    107 out[2][0][1] = 0.0;
    \n+
    108 out[2][1][0] = 0.0;
    \n+
    109 out[2][1][1] = sign_[2];
    \n+
    110
    \n+
    111 out[3][0][0] = 3.0;
    \n+
    112 out[3][0][1] = 0.0;
    \n+
    113 out[3][1][0] = -6.0;
    \n+
    114 out[3][1][1] = -3.0;
    \n+
    115
    \n+
    116 out[4][0][0] = 3.0;
    \n+
    117 out[4][0][1] = 6.0;
    \n+
    118 out[4][1][0] = 0.0;
    \n+
    119 out[4][1][1] = -3.0;
    \n+
    120
    \n+
    121 out[5][0][0] = -3.0;
    \n+
    122 out[5][0][1] = 0.0;
    \n+
    123 out[5][1][0] = 0.0;
    \n+
    124 out[5][1][1] = 3.0;
    \n
    125 }
    \n
    \n
    126
    \n-
    \n-
    133 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    134 std::vector<typename Traits::JacobianType>& out) const
    \n-
    135 {
    \n-
    136 out.resize(24);
    \n-
    137
    \n-
    138 out[0][0][0] = sign0*(9.0 - 36.0*in[0] + 30.0*in[0]*in[0]);
    \n-
    139 out[0][0][1] = 0.0;
    \n-
    140 out[0][1][0] = 0.0;
    \n-
    141 out[0][1][1] = 0.0;
    \n-
    142
    \n-
    143 out[1][0][0] = -27.0 + 54.0*in[1] + 108.0*in[0] - 216.0*in[0]*in[1] - 90.0*in[0]*in[0] + 180.0*in[0]*in[0]*in[1];
    \n-
    144 out[1][0][1] = -6.0 + 54.0*in[0] - 108.0*in[0]*in[0] + 60.0*in[0]*in[0]*in[0];
    \n-
    145 out[1][1][0] = 0.0;
    \n-
    146 out[1][1][1] = 0.0;
    \n-
    147
    \n-
    148 out[2][0][0] = sign0*(45.0 - 270.0*in[1] - 180.0*in[0] + 1080.0*in[0]*in[1] + 270.0*in[1]*in[1] + 150.0*in[0]*in[0] - 1080.0*in[0]*in[1]*in[1] - 900.0*in[0]*in[0]*in[1] + 900.0*in[0]*in[0]*in[1]*in[1]);
    \n-
    149 out[2][0][1] = sign0*(30.0 - 270.0*in[0] - 60.0*in[1] + 540.0*in[0]*in[0] + 540.0*in[0]*in[1] - 1080.0*in[0]*in[0]*in[1] - 300.0*in[0]*in[0]*in[0] + 600.0*in[0]*in[0]*in[0]*in[1]);
    \n-
    150 out[2][1][0] = 0.0;
    \n-
    151 out[2][1][1] = 0.0;
    \n+
    \n+
    128 void partial (const std::array<unsigned int, 2>& order,
    \n+
    129 const typename Traits::DomainType& in, // position
    \n+
    130 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    131 {
    \n+
    132 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    133 if (totalOrder == 0) {
    \n+
    134 evaluateFunction(in, out);
    \n+
    135 } else if (totalOrder == 1) {
    \n+
    136 out.resize(size());
    \n+
    137 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    138
    \n+
    139 switch (direction) {
    \n+
    140 case 0:
    \n+
    141 out[0][0] = sign_[0];
    \n+
    142 out[0][1] = 0.0;
    \n+
    143
    \n+
    144 out[1][0] = sign_[1];
    \n+
    145 out[1][1] = 0.0;
    \n+
    146
    \n+
    147 out[2][0] = sign_[2];
    \n+
    148 out[2][1] = 0.0;
    \n+
    149
    \n+
    150 out[3][0] = 3.0;
    \n+
    151 out[3][1] = -6.0;
    \n
    152
    \n-
    153 out[3][0][0] = sign1*(3.0 - 24.0*in[0] + 30.0*in[0]*in[0]);
    \n-
    154 out[3][0][1] = 0.0;
    \n-
    155 out[3][1][0] = 0.0;
    \n-
    156 out[3][1][1] = 0.0;
    \n-
    157
    \n-
    158 out[4][0][0] = 9.0 - 18.0*in[1] - 72.0*in[0] + 144.0*in[0]*in[1] + 90.0*in[0]*in[0] - 180.0*in[0]*in[0]*in[1];
    \n-
    159 out[4][0][1] = -18.0*in[0] + 72.0*in[0]*in[0] - 60.0*in[0]*in[0]*in[0];
    \n-
    160 out[4][1][0] = 0.0;
    \n-
    161 out[4][1][1] = 0.0;
    \n+
    153 out[4][0] = 3.0;
    \n+
    154 out[4][1] = 0.0;
    \n+
    155
    \n+
    156 out[5][0] = -3.0;
    \n+
    157 out[5][1] = 0.0;
    \n+
    158 break;
    \n+
    159 case 1:
    \n+
    160 out[0][0] = 0.0;
    \n+
    161 out[0][1] = sign_[0];
    \n
    162
    \n-
    163 out[5][0][0] = sign1*(15.0 - 90.0*in[1] - 120.0*in[0] + 720.0*in[0]*in[1] + 90.0*in[1]*in[1] + 150.0*in[0]*in[0] - 720.0*in[0]*in[1]*in[1] - 900.0*in[0]*in[0]*in[1] + 900.0*in[0]*in[0]*in[1]*in[1]);
    \n-
    164 out[5][0][1] = sign1*(-90.0*in[0] + 360.0*in[0]*in[0] + 180.0*in[0]*in[1] - 720.0*in[0]*in[0]*in[1] - 300.0*in[0]*in[0]*in[0] + 600.0*in[0]*in[0]*in[0]*in[1]);
    \n-
    165 out[5][1][0] = 0.0;
    \n-
    166 out[5][1][1] = 0.0;
    \n-
    167
    \n+
    163 out[1][0] = 0.0;
    \n+
    164 out[1][1] = sign_[1];
    \n+
    165
    \n+
    166 out[2][0] = 0.0;
    \n+
    167 out[2][1] = sign_[2];
    \n
    168
    \n-
    169 out[6][0][0] = 0.0;
    \n-
    170 out[6][0][1] = 0.0;
    \n-
    171 out[6][1][0] = 0.0;
    \n-
    172 out[6][1][1] = sign2*(9.0 - 36.0*in[1] + 30.0*in[1]*in[1]);
    \n-
    173
    \n-
    174 out[7][0][0] = 0.0;
    \n-
    175 out[7][0][1] = 0.0;
    \n-
    176 out[7][1][0] = 6.0 - 54.0*in[1] + 108.0*in[1]*in[1] - 60.0*in[1]*in[1]*in[1];
    \n-
    177 out[7][1][1] = 27.0 - 54.0*in[0] - 108.0*in[1] + 216.0*in[0]*in[1] + 90.0*in[1]*in[1] - 180.0*in[0]*in[1]*in[1];
    \n-
    178
    \n-
    179 out[8][0][0] = 0.0;
    \n-
    180 out[8][0][1] = 0.0;
    \n-
    181 out[8][1][0] = sign2*(30.0 - 270.0*in[1] - 60.0*in[0] + 540.0*in[0]*in[1] + 540.0*in[1]*in[1] - 1080.0*in[0]*in[1]*in[1] - 300.0*in[1]*in[1]*in[1] + 600.0*in[1]*in[1]*in[1]*in[0]);
    \n-
    182 out[8][1][1] = sign2*(45.0 - 270.0*in[0] - 180.0*in[1] + 270.0*in[0]*in[0] + 1080.0*in[0]*in[1] + 150.0*in[1]*in[1] - 1080.0*in[0]*in[0]*in[1] - 900.0*in[0]*in[1]*in[1] + 900.0*in[1]*in[1]*in[0]*in[0]);
    \n-
    183
    \n-
    184 out[9][0][0] = 0.0;
    \n-
    185 out[9][0][1] = 0.0;
    \n-
    186 out[9][1][0] = 0.0;
    \n-
    187 out[9][1][1] = sign3*(3.0 - 24.0*in[1] + 30.0*in[1]*in[1]);
    \n-
    188
    \n-
    189 out[10][0][0] = 0.0;
    \n-
    190 out[10][0][1] = 0.0;
    \n-
    191 out[10][1][0] = 18.0*in[1] - 72.0*in[1]*in[1] + 60.0*in[1]*in[1]*in[1];
    \n-
    192 out[10][1][1] = -9.0 + 18.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] - 90.0*in[1]*in[1] + 180.0*in[0]*in[1]*in[1];
    \n-
    193
    \n-
    194 out[11][0][0] = 0.0;
    \n-
    195 out[11][0][1] = 0.0;
    \n-
    196 out[11][1][0] = sign3*(-90.0*in[1] + 180.0*in[0]*in[1] + 360.0*in[1]*in[1] - 720.0*in[0]*in[1]*in[1] - 300.0*in[1]*in[1]*in[1] + 600.0*in[1]*in[1]*in[1]*in[0]);
    \n-
    197 out[11][1][1] = sign3*(15.0 - 90.0*in[0] - 120.0*in[1] + 90.0*in[0]*in[0] + 720.0*in[0]*in[1] + 150.0*in[1]*in[1] - 720.0*in[0]*in[0]*in[1] - 900.0*in[0]*in[1]*in[1] + 900.0*in[1]*in[1]*in[0]*in[0]);
    \n-
    198
    \n-
    199 out[12][0][0] = 324 -1296.0*in[1] - 1728.0*in[0] + 6912.0*in[0]*in[1] + 1080.0*in[1]*in[1] + 1620.0*in[0]*in[0] - 5760.0*in[0]*in[1]*in[1] - 6480.0*in[0]*in[0]*in[1] + 5400.0*in[0]*in[0]*in[1]*in[1];
    \n-
    200 out[12][0][1] = -1296.0*in[0] + 3456.0*in[0]*in[0] + 2160.0*in[0]*in[1] - 5760.0*in[0]*in[0]*in[1] - 2160.0*in[0]*in[0]*in[0] + 3600.0*in[0]*in[0]*in[0]*in[1];
    \n-
    201 out[12][1][0] = 0.0;
    \n-
    202 out[12][1][1] = 0.0;
    \n-
    203
    \n-
    204 out[13][0][0] = 0.0;
    \n-
    205 out[13][0][1] = 0.0;
    \n-
    206 out[13][1][0] = -1296.0*in[1] + 2160.0*in[0]*in[1] + 3456.0*in[1]*in[1] - 5760.0*in[0]*in[1]*in[1] - 2160.0*in[1]*in[1]*in[1] + 3600.0*in[1]*in[1]*in[1]*in[0];
    \n-
    207 out[13][1][1] = 324.0 - 1296.0*in[0] - 1728.0*in[1] + 1080.0*in[0]*in[0] + 6912.0*in[0]*in[1] + 1620.0*in[1]*in[1] - 5760.0*in[0]*in[0]*in[1] - 6480.0*in[0]*in[1]*in[1] + 5400.0*in[1]*in[1]*in[0]*in[0];
    \n-
    208
    \n-
    209 out[14][0][0] = -540.0 + 2160.0*in[1] + 3240.0*in[0] - 12960.0*in[0]*in[1] - 1800.0*in[1]*in[1] - 3240.0*in[0]*in[0] + 10800.0*in[0]*in[1]*in[1] + 12960.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1];
    \n-
    210 out[14][0][1] = 2160.0*in[0] - 6480.0*in[0]*in[0] - 3600.0*in[0]*in[1] + 10800.0*in[0]*in[0]*in[1] + 4320.0*in[0]*in[0]*in[0] - 7200.0*in[0]*in[0]*in[0]*in[1];
    \n-
    211 out[14][1][0] = 0.0;
    \n-
    212 out[14][1][1] = 0.0;
    \n-
    213
    \n-
    214 out[15][0][0] = 0.0;
    \n-
    215 out[15][0][1] = 0.0;
    \n-
    216 out[15][1][0] = 6912.0*in[1] - 12960.0*in[0]*in[1] - 18432.0*in[1]*in[1] + 34560.0*in[0]*in[1]*in[1] + 11520.0*in[1]*in[1]*in[1] - 21600.0*in[0]*in[1]*in[1]*in[1];
    \n-
    217 out[15][1][1] = -1296.0 + 6912.0*in[0] + 6912.0*in[1] - 6480.0*in[0]*in[0] - 36864.0*in[0]*in[1] - 6480.0*in[1]*in[1] + 34560.0*in[0]*in[0]*in[1] + 34560.0*in[0]*in[1]*in[1] - 32400.0*in[0]*in[0]*in[1]*in[1];
    \n-
    218
    \n-
    219 out[16][0][0] = -1296.0 + 6912.0*in[1] + 6912.0*in[0] - 6480.0*in[1]*in[1] - 36864.0*in[0]*in[1] - 6480.0*in[0]*in[0] + 34560.0*in[0]*in[1]*in[1] + 34560.0*in[1]*in[0]*in[0] - 32400.0*in[0]*in[0]*in[1]*in[1];
    \n-
    220 out[16][0][1] = 6912.0*in[0] - 12960.0*in[0]*in[1] - 18432.0*in[0]*in[0] + 34560.0*in[0]*in[0]*in[1] + 11520.0*in[0]*in[0]*in[0] - 21600.0*in[0]*in[0]*in[0]*in[1];
    \n-
    221 out[16][1][0] = 0.0;
    \n-
    222 out[16][1][1] = 0.0;
    \n-
    223
    \n-
    224 out[17][0][0] = 0.0;
    \n-
    225 out[17][0][1] = 0.0;
    \n-
    226 out[17][1][0] = 2160.0*in[1] - 3600.0*in[0]*in[1] - 6480.0*in[1]*in[1] + 10800.0*in[0]*in[1]*in[1] + 4320.0*in[1]*in[1]*in[1] - 7200.0*in[0]*in[1]*in[1]*in[1];
    \n-
    227 out[17][1][1] = -540.0 + 2160.0*in[0] + 3240.0*in[1] - 1800.0*in[0]*in[0] - 12960.0*in[0]*in[1] - 3240.0*in[1]*in[1] + 10800.0*in[0]*in[0]*in[1] + 12960.0*in[0]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1];
    \n-
    228
    \n-
    229 out[18][0][0] = 2160.0 - 11520.0*in[1] - 12960.0*in[0] + 69120.0*in[0]*in[1] + 10800.0*in[1]*in[1] + 12960.0*in[0]*in[0] - 64800.0*in[0]*in[1]*in[1] - 69120.0*in[0]*in[0]*in[1] + 64800.0*in[0]*in[0]*in[1]*in[1];
    \n-
    230 out[18][0][1] = -11520.0*in[0] + 34560.0*in[0]*in[0] + 21600.0*in[0]*in[1] - 64800.0*in[0]*in[0]*in[1] - 23040.0*in[0]*in[0]*in[0] + 43200.0*in[0]*in[0]*in[0]*in[1];
    \n-
    231 out[18][1][0] = 0.0;
    \n-
    232 out[18][1][1] = 0.0;
    \n-
    233
    \n-
    234 out[19][0][0] = 0.0;
    \n-
    235 out[19][0][1] = 0.0;
    \n-
    236 out[19][1][0] = -11520.0*in[1] + 21600.0*in[0]*in[1] + 34560.0*in[1]*in[1] - 64800.0*in[0]*in[1]*in[1] - 23040.0*in[1]*in[1]*in[1] + 43200.0*in[0]*in[1]*in[1]*in[1];
    \n-
    237 out[19][1][1] = 2160.0 - 11520.0*in[0] - 12960.0*in[1] + 10800.0*in[0]*in[0] + 69120.0*in[0]*in[1] + 12960.0*in[1]*in[1] - 64800.0*in[0]*in[0]*in[1] - 69120.0*in[0]*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1]*in[1];
    \n-
    238
    \n-
    239 out[20][0][0] = 1080.0 - 6480.0*in[1] - 5760.0*in[0] + 34560.0*in[0]*in[1] + 6480.0*in[1]*in[1] + 5400.0*in[0]*in[0] - 34560.0*in[0]*in[1]*in[1] - 32400.0*in[0]*in[0]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1];
    \n-
    240 out[20][0][1] = -6480.0*in[0] + 17280.0*in[0]*in[0] + 12960.0*in[0]*in[1] - 34560.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[0]*in[0] + 21600.0*in[0]*in[0]*in[0]*in[1];
    \n-
    241 out[20][1][0] = 0.0;
    \n-
    242 out[20][1][1] = 0.0;
    \n-
    243
    \n-
    244 out[21][0][0] = 0.0;
    \n-
    245 out[21][0][1] = 0.0;
    \n-
    246 out[21][1][0] = -6480.0*in[1] + 12960.0*in[0]*in[1] + 17280.0*in[1]*in[1] - 34560.0*in[0]*in[1]*in[1] - 10800.0*in[1]*in[1]*in[1] + 21600.0*in[0]*in[1]*in[1]*in[1];
    \n-
    247 out[21][1][1] = 1080.0 - 6480.0*in[0] - 5760.0*in[1] + 6480.0*in[0]*in[0] + 34560.0*in[0]*in[1] + 5400.0*in[1]*in[1] - 34560.0*in[0]*in[0]*in[1] - 32400.0*in[0]*in[1]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1];
    \n-
    248
    \n-
    249 out[22][0][0] = -1800.0 + 10800.0*in[1] + 10800.0*in[0] - 64800.0*in[0]*in[1] - 10800.0*in[1]*in[1] - 10800.0*in[0]*in[0] + 64800.0*in[0]*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1] - 64800.0*in[0]*in[0]*in[1]*in[1];
    \n-
    250 out[22][0][1] = 10800.0*in[0] - 32400.0*in[0]*in[0] - 21600.0*in[0]*in[1] + 64800.0*in[0]*in[0]*in[1] + 21600.0*in[0]*in[0]*in[0] - 43200.0*in[0]*in[0]*in[0]*in[1];
    \n-
    251 out[22][1][0] = 0.0;
    \n-
    252 out[22][1][1] = 0.0;
    \n-
    253
    \n-
    254 out[23][0][0] = 0.0;
    \n-
    255 out[23][0][1] = 0.0;
    \n-
    256 out[23][1][0] = 10800.0*in[1] - 21600.0*in[0]*in[1] - 32400.0*in[1]*in[1] + 64800.0*in[0]*in[1]*in[1] + 21600.0*in[1]*in[1]*in[1] - 43200.0*in[0]*in[1]*in[1]*in[1];
    \n-
    257 out[23][1][1] = -1800.0 + 10800.0*in[0] + 10800.0*in[1] - 10800.0*in[0]*in[0] - 64800.0*in[0]*in[1] - 10800.0*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1] + 64800.0*in[0]*in[1]*in[1] - 64800.0*in[0]*in[0]*in[1]*in[1];
    \n-
    258 }
    \n-
    \n-
    259
    \n-
    \n-
    261 void partial (const std::array<unsigned int, 2>& order,
    \n-
    262 const typename Traits::DomainType& in, // position
    \n-
    263 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    264 {
    \n-
    265 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    266 if (totalOrder == 0) {
    \n-
    267 evaluateFunction(in, out);
    \n-
    268 } else {
    \n-
    269 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    270 }
    \n-
    271 }
    \n-
    \n-
    272
    \n-
    \n-
    274 unsigned int order () const
    \n-
    275 {
    \n-
    276 return 5;
    \n-
    277 }
    \n-
    \n-
    278
    \n-
    279 private:
    \n-
    280 R sign0, sign1, sign2, sign3;
    \n-
    281 };
    \n+
    169 out[3][0] = 0.0;
    \n+
    170 out[3][1] = -3.0;
    \n+
    171
    \n+
    172 out[4][0] = 6.0;
    \n+
    173 out[4][1] = -3.0;
    \n+
    174
    \n+
    175 out[5][0] = 0.0;
    \n+
    176 out[5][1] = 3.0;
    \n+
    177 break;
    \n+
    178 default:
    \n+
    179 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    180 }
    \n+
    181 } else {
    \n+
    182 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    183 }
    \n+
    184 }
    \n+
    \n+
    185
    \n+
    \n+
    187 unsigned int order () const
    \n+
    188 {
    \n+
    189 return 1;
    \n+
    190 }
    \n+
    \n+
    191
    \n+
    192 private:
    \n+
    193 std::array<R,3> sign_;
    \n+
    194 };
    \n
    \n-
    282}
    \n-
    283#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH
    \n+
    195}
    \n+
    196#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:30
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:91
    \n+
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:55
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:66
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:34
    \n+
    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
    \n+
    BDM1Simplex2DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:37
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:187
    \n+
    BDM1Simplex2DLocalBasis(std::bitset< 3 > s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:48
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas2cube2dlocalbasis.hh:28
    \n-
    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 raviartthomas2cube2dlocalbasis.hh:261
    \n-
    RT2Cube2DLocalBasis(unsigned int s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas2cube2dlocalbasis.hh:39
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas2cube2dlocalbasis.hh:133
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas2cube2dlocalbasis.hh:274
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas2cube2dlocalbasis.hh:32
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas2cube2dlocalbasis.hh:61
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas2cube2dlocalbasis.hh:72
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,437 +1,228 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas2cube2dlocalbasis.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+brezzidouglasmarini1simplex2dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n+8#include \n+9#include \n+10#include \n+11#include \n 12\n-13#include \"../../common/localbasis.hh\"\n+13#include \n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-26 template\n-_\b2_\b7 class _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-28 {\n-29\n-30 public:\n-31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n+15#include \"../../common/localbasis.hh\"\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+28 template\n+_\b2_\b9 class _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+30 {\n+31\n+32 public:\n+33 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n FieldVector,\n-_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-33\n-_\b3_\b9 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int s = 0)\n-40 {\n-41 sign0 = sign1 = sign2 = sign3 = 1.0;\n-42 if (s & 1)\n-43 {\n-44 sign0 = -1.0;\n-45 }\n-46 if (s & 2)\n-47 {\n-48 sign1 = -1.0;\n-49 }\n-50 if (s & 4)\n-51 {\n-52 sign2 = -1.0;\n-53 }\n-54 if (s & 8)\n-55 {\n-56 sign3 = -1.0;\n-57 }\n+_\b3_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+35\n+_\b3_\b7 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs ()\n+38 {\n+39 for (size_t i=0; i<3; i++)\n+40 sign_[i] = 1.0;\n+41 }\n+42\n+_\b4_\b8 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<3> s)\n+49 {\n+50 for (size_t i=0; i<3; i++)\n+51 sign_[i] = s[i] ? -1.0 : 1.0;\n+52 }\n+53\n+_\b5_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+56 {\n+57 return 6;\n 58 }\n 59\n-_\b6_\b1 unsigned int _\bs_\bi_\bz_\be () const\n-62 {\n-63 return 24;\n-64 }\n-65\n-_\b7_\b2 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-73 std::vector& out) const\n-74 {\n-75 out.resize(24);\n-76\n-77 out[0][0] = sign0*(-1.0 + 9.0*in[0] - 18.0*in[0]*in[0] + 10.0*in[0]*in[0]*in\n-[0]);\n-78 out[0][1] = 0.0;\n-79 out[1][0] = 3.0 - 27.0*in[0] - 6.0*in[1] + 54.0*in[0]*in[1] + 54.0*in[0]*in\n-[0] - 108.0*in[0]*in[0]*in[1] - 30.0*in[0]*in[0]*in[0] + 60.0*in[0]*in[0]*in\n-[0]*in[1];\n-80 out[1][1] = 0.0;\n-81 out[2][0] = sign0*(-5.0 + 45.0*in[0] + 30.0*in[1] - 270.0*in[0]*in[1] -\n-90.0*in[0]*in[0] - 30.0*in[1]*in[1] + 540.0*in[0]*in[0]*in[1] + 270.0*in[0]*in\n-[1]*in[1] + 50.0*in[0]*in[0]*in[0] - 540.0*in[0]*in[0]*in[1]*in[1] - 300.0*in\n-[0]*in[0]*in[0]*in[1] + 300.0*in[0]*in[0]*in[0]*in[1]*in[1]);\n-82 out[2][1] = 0.0;\n-83 out[3][0] = sign1*(3.0*in[0] - 12.0*in[0]*in[0] + 10.0*in[0]*in[0]*in[0]);\n-84 out[3][1] = 0.0;\n-85 out[4][0] = 9.0*in[0] - 18.0*in[0]*in[1] - 36.0*in[0]*in[0] + 72.0*in[0]*in\n-[0]*in[1] + 30.0*in[0]*in[0]*in[0] - 60.0*in[0]*in[0]*in[0]*in[1];\n-86 out[4][1] = 0.0;\n-87 out[5][0] = sign1*(15.0*in[0] - 90.0*in[0]*in[1] - 60.0*in[0]*in[0] +\n-360.0*in[0]*in[0]*in[1] + 90.0*in[0]*in[1]*in[1] + 50.0*in[0]*in[0]*in[0] -\n-360.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[0]*in[0]*in[1] + 300.0*in[0]*in\n-[0]*in[0]*in[1]*in[1]);\n-88 out[5][1] = 0.0;\n-89 out[6][0] = 0.0;\n-90 out[6][1] = sign2*(-1.0 + 9.0*in[1] - 18.0*in[1]*in[1] + 10.0*in[1]*in[1]*in\n-[1]);\n-91 out[7][0] = 0.0;\n-92 out[7][1] = -3.0 + 6.0*in[0] + 27.0*in[1] - 54.0*in[0]*in[1] - 54.0*in[1]*in\n-[1] + 108.0*in[0]*in[1]*in[1] + 30.0*in[1]*in[1]*in[1] - 60.0*in[0]*in[1]*in\n-[1]*in[1];\n-93 out[8][0] = 0.0;\n-94 out[8][1] = sign2*(-5.0 + 30.0*in[0] + 45.0*in[1] - 270.0*in[0]*in[1] -\n-30.0*in[0]*in[0] - 90.0*in[1]*in[1] + 270.0*in[0]*in[0]*in[1] + 540.0*in[0]*in\n-[1]*in[1] + 50.0*in[1]*in[1]*in[1] - 540.0*in[0]*in[0]*in[1]*in[1] - 300.0*in\n-[0]*in[1]*in[1]*in[1] + 300.0*in[1]*in[1]*in[1]*in[0]*in[0]);\n-95 out[9][0] = 0.0;\n-96 out[9][1] = sign3*(3.0*in[1] - 12.0*in[1]*in[1] + 10.0*in[1]*in[1]*in[1]);\n-97 out[10][0] = 0.0;\n-98 out[10][1] = -9.0*in[1] + 18.0*in[0]*in[1] + 36.0*in[1]*in[1] - 72.0*in\n-[0]*in[1]*in[1] - 30.0*in[1]*in[1]*in[1] + 60.0*in[0]*in[1]*in[1]*in[1];\n-99 out[11][0] = 0.0;\n-100 out[11][1] = sign3*(15.0*in[1] - 90.0*in[0]*in[1] - 60.0*in[1]*in[1] +\n-90.0*in[0]*in[0]*in[1] + 360.0*in[0]*in[1]*in[1] + 50.0*in[1]*in[1]*in[1] -\n-360.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[1]*in[1]*in[1] + 300.0*in[1]*in\n-[1]*in[1]*in[0]*in[0]);\n-101 out[12][0] = 324.0*in[0] -1296.0*in[0]*in[1] - 864.0*in[0]*in[0] +\n-3456.0*in[0]*in[0]*in[1] + 1080.0*in[0]*in[1]*in[1] + 540.0*in[0]*in[0]*in[0] -\n-2880.0*in[0]*in[0]*in[1]*in[1] - 2160.0*in[0]*in[0]*in[0]*in[1] + 1800.0*in\n-[0]*in[0]*in[0]*in[1]*in[1];\n-102 out[12][1] = 0.0;\n-103 out[13][0] = 0.0;\n-104 out[13][1] = 324.0*in[1] - 1296.0*in[0]*in[1] - 864.0*in[1]*in[1] +\n-1080.0*in[0]*in[0]*in[1] + 3456.0*in[0]*in[1]*in[1] + 540.0*in[1]*in[1]*in[1] -\n-2880.0*in[0]*in[0]*in[1]*in[1] - 2160.0*in[0]*in[1]*in[1]*in[1] + 1800.0*in\n-[1]*in[1]*in[1]*in[0]*in[0];\n-105 out[14][0] = -540.0*in[0] + 2160.0*in[0]*in[1] + 1620.0*in[0]*in[0] -\n-6480.0*in[0]*in[0]*in[1] - 1800.0*in[0]*in[1]*in[1] - 1080.0*in[0]*in[0]*in[0]\n-+ 5400.0*in[0]*in[0]*in[1]*in[1] + 4320.0*in[0]*in[0]*in[0]*in[1] - 3600.0*in\n-[0]*in[0]*in[0]*in[1]*in[1];\n-106 out[14][1] = 0.0;\n-107 out[15][0] = 0.0;\n-108 out[15][1] = -1296.0*in[1] + 6912.0*in[0]*in[1] + 3456.0*in[1]*in[1] -\n-6480.0*in[0]*in[0]*in[1] - 18432.0*in[0]*in[1]*in[1] - 2160.0*in[1]*in[1]*in[1]\n-+ 17280.0*in[0]*in[0]*in[1]*in[1] + 11520.0*in[0]*in[1]*in[1]*in[1] -\n-10800.0*in[0]*in[0]*in[1]*in[1]*in[1];\n-109 out[16][0] = -1296.0*in[0] + 6912.0*in[0]*in[1] + 3456.0*in[0]*in[0] -\n-6480.0*in[0]*in[1]*in[1] - 18432.0*in[0]*in[0]*in[1] - 2160.0*in[0]*in[0]*in[0]\n-+ 17280.0*in[0]*in[0]*in[1]*in[1] + 11520.0*in[1]*in[0]*in[0]*in[0] -\n-10800.0*in[0]*in[0]*in[0]*in[1]*in[1];\n-110 out[16][1] = 0.0;\n-111 out[17][0] = 0.0;\n-112 out[17][1] = -540.0*in[1] + 2160.0*in[0]*in[1] + 1620.0*in[1]*in[1] -\n-1800.0*in[0]*in[0]*in[1] - 6480.0*in[0]*in[1]*in[1] - 1080.0*in[1]*in[1]*in[1]\n-+ 5400.0*in[0]*in[0]*in[1]*in[1] + 4320.0*in[0]*in[1]*in[1]*in[1] - 3600.0*in\n-[0]*in[0]*in[1]*in[1]*in[1];\n-113 out[18][0] = 2160.0*in[0] - 11520.0*in[0]*in[1] - 6480.0*in[0]*in[0] +\n-34560.0*in[0]*in[0]*in[1] + 10800.0*in[0]*in[1]*in[1] + 4320.0*in[0]*in[0]*in\n-[0] - 32400.0*in[0]*in[0]*in[1]*in[1] - 23040.0*in[0]*in[0]*in[0]*in[1] +\n-21600.0*in[0]*in[0]*in[0]*in[1]*in[1];\n-114 out[18][1] = 0.0;\n-115 out[19][0] = 0.0;\n-116 out[19][1] = 2160.0*in[1] - 11520.0*in[0]*in[1] - 6480.0*in[1]*in[1] +\n-10800.0*in[0]*in[0]*in[1] + 34560.0*in[0]*in[1]*in[1] + 4320.0*in[1]*in[1]*in\n-[1] - 32400.0*in[0]*in[0]*in[1]*in[1] - 23040.0*in[0]*in[1]*in[1]*in[1] +\n-21600.0*in[0]*in[0]*in[1]*in[1]*in[1];\n-117 out[20][0] = 1080.0*in[0] - 6480.0*in[0]*in[1] - 2880.0*in[0]*in[0] +\n-17280.0*in[0]*in[0]*in[1] + 6480.0*in[0]*in[1]*in[1] + 1800.0*in[0]*in[0]*in[0]\n-- 17280.0*in[0]*in[0]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[0]*in[1] +\n-10800.0*in[0]*in[0]*in[0]*in[1]*in[1];\n-118 out[20][1] = 0.0;\n-119 out[21][0] = 0.0;\n-120 out[21][1] = 1080.0*in[1] - 6480.0*in[0]*in[1] - 2880.0*in[1]*in[1] +\n-6480.0*in[0]*in[0]*in[1] + 17280.0*in[0]*in[1]*in[1] + 1800.0*in[1]*in[1]*in[1]\n-- 17280.0*in[0]*in[0]*in[1]*in[1] - 10800.0*in[0]*in[1]*in[1]*in[1] +\n-10800.0*in[0]*in[0]*in[1]*in[1]*in[1];\n-121 out[22][0] = -1800.0*in[0] + 10800.0*in[0]*in[1] + 5400.0*in[0]*in[0] -\n-32400.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[1]*in[1] - 3600.0*in[0]*in[0]*in\n-[0] + 32400.0*in[0]*in[0]*in[1]*in[1] + 21600.0*in[0]*in[0]*in[0]*in[1] -\n-21600.0*in[0]*in[0]*in[0]*in[1]*in[1];\n-122 out[22][1] = 0.0;\n-123 out[23][0] = 0.0;\n-124 out[23][1] = -1800.0*in[1] + 10800.0*in[0]*in[1] + 5400.0*in[1]*in[1] -\n-10800.0*in[0]*in[0]*in[1] - 32400.0*in[0]*in[1]*in[1] - 3600.0*in[1]*in[1]*in\n-[1] + 32400.0*in[0]*in[0]*in[1]*in[1] + 21600.0*in[0]*in[1]*in[1]*in[1] -\n-21600.0*in[0]*in[0]*in[1]*in[1]*in[1];\n+_\b6_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+67 std::vector& out) const\n+68 {\n+69 out.resize(6);\n+70\n+71 out[0][0] = sign_[0]*in[0];\n+72 out[0][1] = sign_[0]*(in[1] - 1.0);\n+73 out[1][0] = sign_[1]*(in[0] - 1.0);\n+74 out[1][1] = sign_[1]*in[1];\n+75 out[2][0] = sign_[2]*in[0];\n+76 out[2][1] = sign_[2]*in[1];\n+77 out[3][0] = 3.0*in[0];\n+78 out[3][1] = 3.0 - 6.0*in[0] - 3.0*in[1];\n+79 out[4][0] = -3.0 + 3.0*in[0] + 6.0*in[1];\n+80 out[4][1] = -3.0*in[1];\n+81 out[5][0] = -3.0*in[0];\n+82 out[5][1] = 3.0*in[1];\n+83 }\n+84\n+_\b9_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+92 std::vector& out) const\n+93 {\n+94 out.resize(6);\n+95\n+96 out[0][0][0] = sign_[0];\n+97 out[0][0][1] = 0.0;\n+98 out[0][1][0] = 0.0;\n+99 out[0][1][1] = sign_[0];\n+100\n+101 out[1][0][0] = sign_[1];\n+102 out[1][0][1] = 0.0;\n+103 out[1][1][0] = 0.0;\n+104 out[1][1][1] = sign_[1];\n+105\n+106 out[2][0][0] = sign_[2];\n+107 out[2][0][1] = 0.0;\n+108 out[2][1][0] = 0.0;\n+109 out[2][1][1] = sign_[2];\n+110\n+111 out[3][0][0] = 3.0;\n+112 out[3][0][1] = 0.0;\n+113 out[3][1][0] = -6.0;\n+114 out[3][1][1] = -3.0;\n+115\n+116 out[4][0][0] = 3.0;\n+117 out[4][0][1] = 6.0;\n+118 out[4][1][0] = 0.0;\n+119 out[4][1][1] = -3.0;\n+120\n+121 out[5][0][0] = -3.0;\n+122 out[5][0][1] = 0.0;\n+123 out[5][1][0] = 0.0;\n+124 out[5][1][1] = 3.0;\n 125 }\n 126\n-_\b1_\b3_\b3 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-134 std::vector& out) const\n-135 {\n-136 out.resize(24);\n-137\n-138 out[0][0][0] = sign0*(9.0 - 36.0*in[0] + 30.0*in[0]*in[0]);\n-139 out[0][0][1] = 0.0;\n-140 out[0][1][0] = 0.0;\n-141 out[0][1][1] = 0.0;\n-142\n-143 out[1][0][0] = -27.0 + 54.0*in[1] + 108.0*in[0] - 216.0*in[0]*in[1] -\n-90.0*in[0]*in[0] + 180.0*in[0]*in[0]*in[1];\n-144 out[1][0][1] = -6.0 + 54.0*in[0] - 108.0*in[0]*in[0] + 60.0*in[0]*in[0]*in\n-[0];\n-145 out[1][1][0] = 0.0;\n-146 out[1][1][1] = 0.0;\n-147\n-148 out[2][0][0] = sign0*(45.0 - 270.0*in[1] - 180.0*in[0] + 1080.0*in[0]*in[1]\n-+ 270.0*in[1]*in[1] + 150.0*in[0]*in[0] - 1080.0*in[0]*in[1]*in[1] - 900.0*in\n-[0]*in[0]*in[1] + 900.0*in[0]*in[0]*in[1]*in[1]);\n-149 out[2][0][1] = sign0*(30.0 - 270.0*in[0] - 60.0*in[1] + 540.0*in[0]*in[0] +\n-540.0*in[0]*in[1] - 1080.0*in[0]*in[0]*in[1] - 300.0*in[0]*in[0]*in[0] +\n-600.0*in[0]*in[0]*in[0]*in[1]);\n-150 out[2][1][0] = 0.0;\n-151 out[2][1][1] = 0.0;\n+_\b1_\b2_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+129 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+130 std::vector& out) const // return value\n+131 {\n+132 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+133 if (totalOrder == 0) {\n+134 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+135 } else if (totalOrder == 1) {\n+136 out.resize(_\bs_\bi_\bz_\be());\n+137 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n+138\n+139 switch (direction) {\n+140 case 0:\n+141 out[0][0] = sign_[0];\n+142 out[0][1] = 0.0;\n+143\n+144 out[1][0] = sign_[1];\n+145 out[1][1] = 0.0;\n+146\n+147 out[2][0] = sign_[2];\n+148 out[2][1] = 0.0;\n+149\n+150 out[3][0] = 3.0;\n+151 out[3][1] = -6.0;\n 152\n-153 out[3][0][0] = sign1*(3.0 - 24.0*in[0] + 30.0*in[0]*in[0]);\n-154 out[3][0][1] = 0.0;\n-155 out[3][1][0] = 0.0;\n-156 out[3][1][1] = 0.0;\n-157\n-158 out[4][0][0] = 9.0 - 18.0*in[1] - 72.0*in[0] + 144.0*in[0]*in[1] + 90.0*in\n-[0]*in[0] - 180.0*in[0]*in[0]*in[1];\n-159 out[4][0][1] = -18.0*in[0] + 72.0*in[0]*in[0] - 60.0*in[0]*in[0]*in[0];\n-160 out[4][1][0] = 0.0;\n-161 out[4][1][1] = 0.0;\n+153 out[4][0] = 3.0;\n+154 out[4][1] = 0.0;\n+155\n+156 out[5][0] = -3.0;\n+157 out[5][1] = 0.0;\n+158 break;\n+159 case 1:\n+160 out[0][0] = 0.0;\n+161 out[0][1] = sign_[0];\n 162\n-163 out[5][0][0] = sign1*(15.0 - 90.0*in[1] - 120.0*in[0] + 720.0*in[0]*in[1] +\n-90.0*in[1]*in[1] + 150.0*in[0]*in[0] - 720.0*in[0]*in[1]*in[1] - 900.0*in[0]*in\n-[0]*in[1] + 900.0*in[0]*in[0]*in[1]*in[1]);\n-164 out[5][0][1] = sign1*(-90.0*in[0] + 360.0*in[0]*in[0] + 180.0*in[0]*in[1] -\n-720.0*in[0]*in[0]*in[1] - 300.0*in[0]*in[0]*in[0] + 600.0*in[0]*in[0]*in[0]*in\n-[1]);\n-165 out[5][1][0] = 0.0;\n-166 out[5][1][1] = 0.0;\n-167\n+163 out[1][0] = 0.0;\n+164 out[1][1] = sign_[1];\n+165\n+166 out[2][0] = 0.0;\n+167 out[2][1] = sign_[2];\n 168\n-169 out[6][0][0] = 0.0;\n-170 out[6][0][1] = 0.0;\n-171 out[6][1][0] = 0.0;\n-172 out[6][1][1] = sign2*(9.0 - 36.0*in[1] + 30.0*in[1]*in[1]);\n-173\n-174 out[7][0][0] = 0.0;\n-175 out[7][0][1] = 0.0;\n-176 out[7][1][0] = 6.0 - 54.0*in[1] + 108.0*in[1]*in[1] - 60.0*in[1]*in[1]*in\n-[1];\n-177 out[7][1][1] = 27.0 - 54.0*in[0] - 108.0*in[1] + 216.0*in[0]*in[1] +\n-90.0*in[1]*in[1] - 180.0*in[0]*in[1]*in[1];\n-178\n-179 out[8][0][0] = 0.0;\n-180 out[8][0][1] = 0.0;\n-181 out[8][1][0] = sign2*(30.0 - 270.0*in[1] - 60.0*in[0] + 540.0*in[0]*in[1] +\n-540.0*in[1]*in[1] - 1080.0*in[0]*in[1]*in[1] - 300.0*in[1]*in[1]*in[1] +\n-600.0*in[1]*in[1]*in[1]*in[0]);\n-182 out[8][1][1] = sign2*(45.0 - 270.0*in[0] - 180.0*in[1] + 270.0*in[0]*in[0]\n-+ 1080.0*in[0]*in[1] + 150.0*in[1]*in[1] - 1080.0*in[0]*in[0]*in[1] - 900.0*in\n-[0]*in[1]*in[1] + 900.0*in[1]*in[1]*in[0]*in[0]);\n-183\n-184 out[9][0][0] = 0.0;\n-185 out[9][0][1] = 0.0;\n-186 out[9][1][0] = 0.0;\n-187 out[9][1][1] = sign3*(3.0 - 24.0*in[1] + 30.0*in[1]*in[1]);\n-188\n-189 out[10][0][0] = 0.0;\n-190 out[10][0][1] = 0.0;\n-191 out[10][1][0] = 18.0*in[1] - 72.0*in[1]*in[1] + 60.0*in[1]*in[1]*in[1];\n-192 out[10][1][1] = -9.0 + 18.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] -\n-90.0*in[1]*in[1] + 180.0*in[0]*in[1]*in[1];\n-193\n-194 out[11][0][0] = 0.0;\n-195 out[11][0][1] = 0.0;\n-196 out[11][1][0] = sign3*(-90.0*in[1] + 180.0*in[0]*in[1] + 360.0*in[1]*in[1]\n-- 720.0*in[0]*in[1]*in[1] - 300.0*in[1]*in[1]*in[1] + 600.0*in[1]*in[1]*in\n-[1]*in[0]);\n-197 out[11][1][1] = sign3*(15.0 - 90.0*in[0] - 120.0*in[1] + 90.0*in[0]*in[0] +\n-720.0*in[0]*in[1] + 150.0*in[1]*in[1] - 720.0*in[0]*in[0]*in[1] - 900.0*in\n-[0]*in[1]*in[1] + 900.0*in[1]*in[1]*in[0]*in[0]);\n-198\n-199 out[12][0][0] = 324 -1296.0*in[1] - 1728.0*in[0] + 6912.0*in[0]*in[1] +\n-1080.0*in[1]*in[1] + 1620.0*in[0]*in[0] - 5760.0*in[0]*in[1]*in[1] - 6480.0*in\n-[0]*in[0]*in[1] + 5400.0*in[0]*in[0]*in[1]*in[1];\n-200 out[12][0][1] = -1296.0*in[0] + 3456.0*in[0]*in[0] + 2160.0*in[0]*in[1] -\n-5760.0*in[0]*in[0]*in[1] - 2160.0*in[0]*in[0]*in[0] + 3600.0*in[0]*in[0]*in\n-[0]*in[1];\n-201 out[12][1][0] = 0.0;\n-202 out[12][1][1] = 0.0;\n-203\n-204 out[13][0][0] = 0.0;\n-205 out[13][0][1] = 0.0;\n-206 out[13][1][0] = -1296.0*in[1] + 2160.0*in[0]*in[1] + 3456.0*in[1]*in[1] -\n-5760.0*in[0]*in[1]*in[1] - 2160.0*in[1]*in[1]*in[1] + 3600.0*in[1]*in[1]*in\n-[1]*in[0];\n-207 out[13][1][1] = 324.0 - 1296.0*in[0] - 1728.0*in[1] + 1080.0*in[0]*in[0] +\n-6912.0*in[0]*in[1] + 1620.0*in[1]*in[1] - 5760.0*in[0]*in[0]*in[1] - 6480.0*in\n-[0]*in[1]*in[1] + 5400.0*in[1]*in[1]*in[0]*in[0];\n-208\n-209 out[14][0][0] = -540.0 + 2160.0*in[1] + 3240.0*in[0] - 12960.0*in[0]*in[1]\n-- 1800.0*in[1]*in[1] - 3240.0*in[0]*in[0] + 10800.0*in[0]*in[1]*in[1] +\n-12960.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1];\n-210 out[14][0][1] = 2160.0*in[0] - 6480.0*in[0]*in[0] - 3600.0*in[0]*in[1] +\n-10800.0*in[0]*in[0]*in[1] + 4320.0*in[0]*in[0]*in[0] - 7200.0*in[0]*in[0]*in\n-[0]*in[1];\n-211 out[14][1][0] = 0.0;\n-212 out[14][1][1] = 0.0;\n-213\n-214 out[15][0][0] = 0.0;\n-215 out[15][0][1] = 0.0;\n-216 out[15][1][0] = 6912.0*in[1] - 12960.0*in[0]*in[1] - 18432.0*in[1]*in[1] +\n-34560.0*in[0]*in[1]*in[1] + 11520.0*in[1]*in[1]*in[1] - 21600.0*in[0]*in[1]*in\n-[1]*in[1];\n-217 out[15][1][1] = -1296.0 + 6912.0*in[0] + 6912.0*in[1] - 6480.0*in[0]*in[0]\n-- 36864.0*in[0]*in[1] - 6480.0*in[1]*in[1] + 34560.0*in[0]*in[0]*in[1] +\n-34560.0*in[0]*in[1]*in[1] - 32400.0*in[0]*in[0]*in[1]*in[1];\n-218\n-219 out[16][0][0] = -1296.0 + 6912.0*in[1] + 6912.0*in[0] - 6480.0*in[1]*in[1]\n-- 36864.0*in[0]*in[1] - 6480.0*in[0]*in[0] + 34560.0*in[0]*in[1]*in[1] +\n-34560.0*in[1]*in[0]*in[0] - 32400.0*in[0]*in[0]*in[1]*in[1];\n-220 out[16][0][1] = 6912.0*in[0] - 12960.0*in[0]*in[1] - 18432.0*in[0]*in[0] +\n-34560.0*in[0]*in[0]*in[1] + 11520.0*in[0]*in[0]*in[0] - 21600.0*in[0]*in[0]*in\n-[0]*in[1];\n-221 out[16][1][0] = 0.0;\n-222 out[16][1][1] = 0.0;\n-223\n-224 out[17][0][0] = 0.0;\n-225 out[17][0][1] = 0.0;\n-226 out[17][1][0] = 2160.0*in[1] - 3600.0*in[0]*in[1] - 6480.0*in[1]*in[1] +\n-10800.0*in[0]*in[1]*in[1] + 4320.0*in[1]*in[1]*in[1] - 7200.0*in[0]*in[1]*in\n-[1]*in[1];\n-227 out[17][1][1] = -540.0 + 2160.0*in[0] + 3240.0*in[1] - 1800.0*in[0]*in[0] -\n-12960.0*in[0]*in[1] - 3240.0*in[1]*in[1] + 10800.0*in[0]*in[0]*in[1] +\n-12960.0*in[0]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1];\n-228\n-229 out[18][0][0] = 2160.0 - 11520.0*in[1] - 12960.0*in[0] + 69120.0*in[0]*in\n-[1] + 10800.0*in[1]*in[1] + 12960.0*in[0]*in[0] - 64800.0*in[0]*in[1]*in[1] -\n-69120.0*in[0]*in[0]*in[1] + 64800.0*in[0]*in[0]*in[1]*in[1];\n-230 out[18][0][1] = -11520.0*in[0] + 34560.0*in[0]*in[0] + 21600.0*in[0]*in[1]\n-- 64800.0*in[0]*in[0]*in[1] - 23040.0*in[0]*in[0]*in[0] + 43200.0*in[0]*in\n-[0]*in[0]*in[1];\n-231 out[18][1][0] = 0.0;\n-232 out[18][1][1] = 0.0;\n-233\n-234 out[19][0][0] = 0.0;\n-235 out[19][0][1] = 0.0;\n-236 out[19][1][0] = -11520.0*in[1] + 21600.0*in[0]*in[1] + 34560.0*in[1]*in[1]\n-- 64800.0*in[0]*in[1]*in[1] - 23040.0*in[1]*in[1]*in[1] + 43200.0*in[0]*in\n-[1]*in[1]*in[1];\n-237 out[19][1][1] = 2160.0 - 11520.0*in[0] - 12960.0*in[1] + 10800.0*in[0]*in\n-[0] + 69120.0*in[0]*in[1] + 12960.0*in[1]*in[1] - 64800.0*in[0]*in[0]*in[1] -\n-69120.0*in[0]*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1]*in[1];\n-238\n-239 out[20][0][0] = 1080.0 - 6480.0*in[1] - 5760.0*in[0] + 34560.0*in[0]*in[1]\n-+ 6480.0*in[1]*in[1] + 5400.0*in[0]*in[0] - 34560.0*in[0]*in[1]*in[1] -\n-32400.0*in[0]*in[0]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1];\n-240 out[20][0][1] = -6480.0*in[0] + 17280.0*in[0]*in[0] + 12960.0*in[0]*in[1] -\n-34560.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[0]*in[0] + 21600.0*in[0]*in[0]*in\n-[0]*in[1];\n-241 out[20][1][0] = 0.0;\n-242 out[20][1][1] = 0.0;\n-243\n-244 out[21][0][0] = 0.0;\n-245 out[21][0][1] = 0.0;\n-246 out[21][1][0] = -6480.0*in[1] + 12960.0*in[0]*in[1] + 17280.0*in[1]*in[1] -\n-34560.0*in[0]*in[1]*in[1] - 10800.0*in[1]*in[1]*in[1] + 21600.0*in[0]*in[1]*in\n-[1]*in[1];\n-247 out[21][1][1] = 1080.0 - 6480.0*in[0] - 5760.0*in[1] + 6480.0*in[0]*in[0] +\n-34560.0*in[0]*in[1] + 5400.0*in[1]*in[1] - 34560.0*in[0]*in[0]*in[1] -\n-32400.0*in[0]*in[1]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1];\n-248\n-249 out[22][0][0] = -1800.0 + 10800.0*in[1] + 10800.0*in[0] - 64800.0*in[0]*in\n-[1] - 10800.0*in[1]*in[1] - 10800.0*in[0]*in[0] + 64800.0*in[0]*in[1]*in[1] +\n-64800.0*in[0]*in[0]*in[1] - 64800.0*in[0]*in[0]*in[1]*in[1];\n-250 out[22][0][1] = 10800.0*in[0] - 32400.0*in[0]*in[0] - 21600.0*in[0]*in[1] +\n-64800.0*in[0]*in[0]*in[1] + 21600.0*in[0]*in[0]*in[0] - 43200.0*in[0]*in[0]*in\n-[0]*in[1];\n-251 out[22][1][0] = 0.0;\n-252 out[22][1][1] = 0.0;\n-253\n-254 out[23][0][0] = 0.0;\n-255 out[23][0][1] = 0.0;\n-256 out[23][1][0] = 10800.0*in[1] - 21600.0*in[0]*in[1] - 32400.0*in[1]*in[1] +\n-64800.0*in[0]*in[1]*in[1] + 21600.0*in[1]*in[1]*in[1] - 43200.0*in[0]*in[1]*in\n-[1]*in[1];\n-257 out[23][1][1] = -1800.0 + 10800.0*in[0] + 10800.0*in[1] - 10800.0*in[0]*in\n-[0] - 64800.0*in[0]*in[1] - 10800.0*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1] +\n-64800.0*in[0]*in[1]*in[1] - 64800.0*in[0]*in[0]*in[1]*in[1];\n-258 }\n-259\n-_\b2_\b6_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-262 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-263 std::vector& out) const // return value\n-264 {\n-265 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-266 if (totalOrder == 0) {\n-267 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-268 } else {\n-269 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-270 }\n-271 }\n-272\n-_\b2_\b7_\b4 unsigned int _\bo_\br_\bd_\be_\br () const\n-275 {\n-276 return 5;\n-277 }\n-278\n-279 private:\n-280 R sign0, sign1, sign2, sign3;\n-281 };\n-282}\n-283#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH\n+169 out[3][0] = 0.0;\n+170 out[3][1] = -3.0;\n+171\n+172 out[4][0] = 6.0;\n+173 out[4][1] = -3.0;\n+174\n+175 out[5][0] = 0.0;\n+176 out[5][1] = 3.0;\n+177 break;\n+178 default:\n+179 DUNE_THROW(RangeError, \"Component out of range.\");\n+180 }\n+181 } else {\n+182 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+183 }\n+184 }\n+185\n+_\b1_\b8_\b7 unsigned int _\bo_\br_\bd_\be_\br () const\n+188 {\n+189 return 1;\n+190 }\n+191\n+192 private:\n+193 std::array sign_;\n+194 };\n+195}\n+196#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Second order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:261\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT2Cube2DLocalBasis(unsigned int s=0)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n typename Traits::JacobianType > &out) const\n Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:274\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n typename Traits::RangeType > &out) const\n Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:72\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:128\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM1Simplex2DLocalBasis()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM1Simplex2DLocalBasis(std::bitset< 3 > s)\n+Make set number s, where 0 <= s < 8.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas2cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,33 @@\n
    \n
    \n
    \n \n \n \n \n
    \n \n-
    raviartthomas2cube2dlocalcoefficients.hh File Reference
    \n+
    brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT2Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-2 elements on quadrilaterals. More...
    class  Dune::BDM1Simplex2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on the reference triangle. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas2cube2dlocalcoefficients.hh File Reference\n-#include \n+brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference\n #include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Raviart-Thomas-2 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n+ triangle. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas2cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,83 +70,130 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas2cube2dlocalcoefficients.hh
    \n+
    brezzidouglasmarini1simplex2dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include "../../common/localkey.hh"
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    \n-\n-
    23 {
    \n-
    24
    \n-
    25 public:
    \n-
    \n-\n-
    28 {
    \n-
    29 for (std::size_t i = 0; i < 4; i++)
    \n-
    30 {
    \n-
    31 li[3*i] = LocalKey(i,1,0);
    \n-
    32 li[3*i + 1] = LocalKey(i,1,1);
    \n-
    33 li[3*i + 2] = LocalKey(i,1,2);
    \n-
    34 }
    \n-
    35
    \n-
    36 for (std::size_t i=0; i<12; i++)
    \n-
    37 {
    \n-
    38 li[12 + i] = LocalKey(0,0,i);
    \n-
    39 }
    \n-
    40 }
    \n-
    \n-
    41
    \n-
    \n-
    43 std::size_t size () const
    \n-
    44 {
    \n-
    45 return 24;
    \n-
    46 }
    \n-
    \n-
    47
    \n-
    \n-
    49 const LocalKey& localKey (std::size_t i) const
    \n-
    50 {
    \n-
    51 return li[i];
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    54 private:
    \n-
    55 std::vector<LocalKey> li;
    \n-
    56 };
    \n-
    \n-
    57}
    \n-
    58#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    22 template<class LB>
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 sign0 = sign1 = sign2 = 1.0;
    \n+
    31 }
    \n+
    \n+
    32
    \n+
    \n+\n+
    39 {
    \n+
    40 using std::sqrt;
    \n+
    41 sign0 = sign1 = sign2 = 1.0;
    \n+
    42 if (s & 1)
    \n+
    43 {
    \n+
    44 sign0 = -1.0;
    \n+
    45 }
    \n+
    46 if (s & 2)
    \n+
    47 {
    \n+
    48 sign1 = -1.0;
    \n+
    49 }
    \n+
    50 if (s & 4)
    \n+
    51 {
    \n+
    52 sign2 = -1.0;
    \n+
    53 }
    \n+
    54
    \n+
    55 n0[0] = 0.0;
    \n+
    56 n0[1] = -1.0;
    \n+
    57 n1[0] = -1.0;
    \n+
    58 n1[1] = 0.0;
    \n+
    59 n2[0] = 1.0/sqrt(2.0);
    \n+
    60 n2[1] = 1.0/sqrt(2.0);
    \n+
    61 c0 = 0.5*n0[0] - 1.0*n0[1];
    \n+
    62 c1 = -1.0*n1[0] + 0.5*n1[1];
    \n+
    63 c2 = 0.5*n2[0] + 0.5*n2[1];
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    74 template<typename F, typename C>
    \n+
    \n+
    75 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    76 {
    \n+
    77 // f gives v*outer normal at a point on the edge!
    \n+
    78 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    79
    \n+
    80 out.resize(6);
    \n+
    81 fill(out.begin(), out.end(), 0.0);
    \n+
    82
    \n+
    83 const int qOrder = 4;
    \n+
    84 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
    \n+
    85
    \n+
    86 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n+
    87 {
    \n+
    88 Scalar qPos = it->position();
    \n+
    89 typename LB::Traits::DomainType localPos;
    \n+
    90
    \n+
    91 localPos[0] = qPos;
    \n+
    92 localPos[1] = 0.0;
    \n+
    93 auto y = f(localPos);
    \n+
    94 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
    \n+
    95 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;
    \n+
    96
    \n+
    97 localPos[0] = 0.0;
    \n+
    98 localPos[1] = qPos;
    \n+
    99 y = f(localPos);
    \n+
    100 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;
    \n+
    101 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;
    \n+
    102
    \n+
    103 localPos[0] = 1.0 - qPos;
    \n+
    104 localPos[1] = qPos;
    \n+
    105 y = f(localPos);
    \n+
    106 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
    \n+
    107 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;
    \n+
    108 }
    \n+
    109 }
    \n+
    \n+
    110
    \n+
    111 private:
    \n+
    112 typename LB::Traits::RangeFieldType sign0,sign1,sign2;
    \n+
    113 typename LB::Traits::DomainType n0,n1,n2;
    \n+
    114 typename LB::Traits::RangeFieldType c0,c1,c2;
    \n+
    115 };
    \n+
    \n+
    116}
    \n+
    117
    \n+
    118#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for Raviart-Thomas-2 elements on quadrilaterals.
    Definition raviartthomas2cube2dlocalcoefficients.hh:23
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas2cube2dlocalcoefficients.hh:43
    \n-
    RT2Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas2cube2dlocalcoefficients.hh:27
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas2cube2dlocalcoefficients.hh:49
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:24
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:75
    \n+
    BDM1Simplex2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:38
    \n+
    BDM1Simplex2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:28
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,81 +1,131 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas2cube2dlocalcoefficients.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+brezzidouglasmarini1simplex2dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \"../../common/localkey.hh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-_\b2_\b2 class _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-23 {\n-24\n-25 public:\n-_\b2_\b7 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(24)\n-28 {\n-29 for (std::size_t i = 0; i < 4; i++)\n-30 {\n-31 li[3*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-32 li[3*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-33 li[3*i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n-34 }\n-35\n-36 for (std::size_t i=0; i<12; i++)\n-37 {\n-38 li[12 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n-39 }\n-40 }\n-41\n-_\b4_\b3 std::size_t _\bs_\bi_\bz_\be () const\n-44 {\n-45 return 24;\n-46 }\n-47\n-_\b4_\b9 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-50 {\n-51 return li[i];\n-52 }\n-53\n-54 private:\n-55 std::vector li;\n-56 };\n-57}\n-58#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH\n+8#include \n+9\n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+22 template\n+_\b2_\b3 class _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+24 {\n+25\n+26 public:\n+_\b2_\b8 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ()\n+29 {\n+30 sign0 = sign1 = sign2 = 1.0;\n+31 }\n+32\n+_\b3_\b8 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (unsigned int s)\n+39 {\n+40 using std::sqrt;\n+41 sign0 = sign1 = sign2 = 1.0;\n+42 if (s & 1)\n+43 {\n+44 sign0 = -1.0;\n+45 }\n+46 if (s & 2)\n+47 {\n+48 sign1 = -1.0;\n+49 }\n+50 if (s & 4)\n+51 {\n+52 sign2 = -1.0;\n+53 }\n+54\n+55 n0[0] = 0.0;\n+56 n0[1] = -1.0;\n+57 n1[0] = -1.0;\n+58 n1[1] = 0.0;\n+59 n2[0] = 1.0/sqrt(2.0);\n+60 n2[1] = 1.0/sqrt(2.0);\n+61 c0 = 0.5*n0[0] - 1.0*n0[1];\n+62 c1 = -1.0*n1[0] + 0.5*n1[1];\n+63 c2 = 0.5*n2[0] + 0.5*n2[1];\n+64 }\n+65\n+74 template\n+_\b7_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+76 {\n+77 // f gives v*outer normal at a point on the edge!\n+78 typedef typename LB::Traits::RangeFieldType Scalar;\n+79\n+80 out.resize(6);\n+81 fill(out.begin(), out.end(), 0.0);\n+82\n+83 const int qOrder = 4;\n+84 const Dune::QuadratureRule& rule = Dune::\n+QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder);\n+85\n+86 for (typename Dune::QuadratureRule::const_iterator it=rule.begin\n+(); it!=rule.end(); ++it)\n+87 {\n+88 Scalar qPos = it->position();\n+89 typename LB::Traits::DomainType localPos;\n+90\n+91 localPos[0] = qPos;\n+92 localPos[1] = 0.0;\n+93 auto y = f(localPos);\n+94 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;\n+95 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;\n+96\n+97 localPos[0] = 0.0;\n+98 localPos[1] = qPos;\n+99 y = f(localPos);\n+100 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;\n+101 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;\n+102\n+103 localPos[0] = 1.0 - qPos;\n+104 localPos[1] = qPos;\n+105 y = f(localPos);\n+106 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;\n+107 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;\n+108 }\n+109 }\n+110\n+111 private:\n+112 typename LB::Traits::RangeFieldType sign0,sign1,sign2;\n+113 typename LB::Traits::DomainType n0,n1,n2;\n+114 typename LB::Traits::RangeFieldType c0,c1,c2;\n+115 };\n+116}\n+117\n+118#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-2 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT2Cube2DLocalCoefficients()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM1Simplex2DLocalInterpolation(unsigned int s)\n+Make set number s, where 0 <= s < 8.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM1Simplex2DLocalInterpolation()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:49\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:28\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas2cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas2cube2dlocalinterpolation.hh File Reference
    \n+
    brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT2Cube2DLocalInterpolation< LB >
     Second order Raviart-Thomas shape functions on the reference triangle. More...
    class  Dune::BDM1Simplex2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-1 elements on triangles. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas2cube2dlocalinterpolation.hh File Reference\n+brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference\n+#include \n #include \n-#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 Second order Raviart-Thomas shape functions on the reference triangle.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Brezzi-Douglas-Marini-1 elements on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas2cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,136 +70,78 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas2cube2dlocalinterpolation.hh
    \n+
    brezzidouglasmarini1simplex2dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    23 template<class LB>
    \n-
    \n-\n-
    25 {
    \n-
    26
    \n-
    27 public:
    \n-
    28
    \n-
    \n-
    34 RT2Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n-
    35 {
    \n-
    36 for (size_t i=0; i<4; i++)
    \n-
    37 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    38
    \n-
    39 n_[0] = {-1.0, 0.0};
    \n-
    40 n_[1] = { 1.0, 0.0};
    \n-
    41 n_[2] = { 0.0, -1.0};
    \n-
    42 n_[3] = { 0.0, 1.0};
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    53 template<typename F, typename C>
    \n-
    \n-
    54 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    55 {
    \n-
    56 // f gives v*outer normal at a point on the edge!
    \n-
    57 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    58 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    59
    \n-
    60 out.resize(24);
    \n-
    61 fill(out.begin(), out.end(), 0.0);
    \n-
    62
    \n-
    63 const int qOrder = 6;
    \n-
    64 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    65
    \n-
    66 for (auto&& qp : rule1)
    \n-
    67 {
    \n-
    68 Scalar qPos = qp.position();
    \n-
    69 typename LB::Traits::DomainType localPos;
    \n-
    70
    \n-
    71 localPos = {0.0, qPos};
    \n-
    72 auto y = f(localPos);
    \n-
    73 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n-
    74 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    75 out[2] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[0];
    \n-
    76
    \n-
    77 localPos = {1.0, qPos};
    \n-
    78 y = f(localPos);
    \n-
    79 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n-
    80 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    81 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[1];
    \n-
    82
    \n-
    83 localPos = {qPos, 0.0};
    \n-
    84 y = f(localPos);
    \n-
    85 out[6] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n-
    86 out[7] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    87 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[2];
    \n-
    88
    \n-
    89 localPos = {qPos, 1.0};
    \n-
    90 y = f(localPos);
    \n-
    91 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n-
    92 out[10] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    93 out[11] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[3];
    \n-
    94 }
    \n-
    95
    \n-
    96 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    97
    \n-
    98 for (auto&& qp : rule2)
    \n-
    99 {
    \n-
    100 FieldVector<double,2> qPos = qp.position();
    \n-
    101
    \n-
    102 auto y = f(qPos);
    \n-
    103 out[12] += y[0]*qp.weight();
    \n-
    104 out[13] += y[1]*qp.weight();
    \n-
    105 out[14] += y[0]*qPos[0]*qp.weight();
    \n-
    106 out[15] += y[1]*qPos[0]*qp.weight();
    \n-
    107 out[16] += y[0]*qPos[1]*qp.weight();
    \n-
    108 out[17] += y[1]*qPos[1]*qp.weight();
    \n-
    109 out[18] += y[0]*qPos[0]*qPos[1]*qp.weight();
    \n-
    110 out[19] += y[1]*qPos[0]*qPos[1]*qp.weight();
    \n-
    111 out[20] += y[0]*qPos[1]*qPos[1]*qp.weight();
    \n-
    112 out[21] += y[1]*qPos[0]*qPos[0]*qp.weight();
    \n-
    113 out[22] += y[0]*qPos[0]*qPos[1]*qPos[1]*qp.weight();
    \n-
    114 out[23] += y[1]*qPos[0]*qPos[0]*qPos[1]*qp.weight();
    \n-
    115 }
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    118 private:
    \n-
    119 // Edge orientations
    \n-
    120 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n-
    121
    \n-
    122 // Edge normals
    \n-
    123 std::array<typename LB::Traits::DomainType, 4> n_;
    \n-
    124 };
    \n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include "../../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for (std::size_t i=0; i<3; i++)
    \n+
    31 {
    \n+
    32 li[i] = LocalKey(i,1,0);
    \n+
    33 li[3 + i] = LocalKey(i,1,1);
    \n+
    34 }
    \n+
    35 }
    \n+
    \n+
    36
    \n+
    \n+
    38 std::size_t size () const
    \n+
    39 {
    \n+
    40 return 6;
    \n+
    41 }
    \n+
    \n+
    42
    \n+
    \n+
    44 const LocalKey& localKey (std::size_t i) const
    \n+
    45 {
    \n+
    46 return li[i];
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    49 private:
    \n+
    50 std::vector<LocalKey> li;
    \n+
    51 };
    \n
    \n-
    125}
    \n-
    126#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    52}
    \n+
    53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas2cube2dlocalinterpolation.hh:25
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas2cube2dlocalinterpolation.hh:54
    \n-
    RT2Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas2cube2dlocalinterpolation.hh:34
    \n+
    Layout map for Brezzi-Douglas-Marini-1 elements on triangles.
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:24
    \n+
    BDM1Simplex2DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:28
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:44
    \n+
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:38
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,137 +1,79 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas2cube2dlocalinterpolation.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+brezzidouglasmarini1simplex2dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9\n-10#include \n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-23 template\n-_\b2_\b4 class _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-25 {\n-26\n-27 public:\n-28\n-_\b3_\b4 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<4> s = 0)\n-35 {\n-36 for (size_t i=0; i<4; i++)\n-37 sign_[i] = (s[i]) ? -1.0 : 1.0;\n-38\n-39 n_[0] = {-1.0, 0.0};\n-40 n_[1] = { 1.0, 0.0};\n-41 n_[2] = { 0.0, -1.0};\n-42 n_[3] = { 0.0, 1.0};\n-43 }\n-44\n-53 template\n-_\b5_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-55 {\n-56 // f gives v*outer normal at a point on the edge!\n-57 typedef typename LB::Traits::RangeFieldType Scalar;\n-58 typedef typename LB::Traits::DomainFieldType Vector;\n-59\n-60 out.resize(24);\n-61 fill(out.begin(), out.end(), 0.0);\n-62\n-63 const int qOrder = 6;\n-64 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n-qOrder);\n-65\n-66 for (auto&& qp : rule1)\n-67 {\n-68 Scalar qPos = qp.position();\n-69 typename LB::Traits::DomainType localPos;\n-70\n-71 localPos = {0.0, qPos};\n-72 auto y = f(localPos);\n-73 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n-74 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n-75 out[2] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(6.0*qPos*qPos - 6.0*qPos +\n-1.0)*qp.weight()*sign_[0];\n-76\n-77 localPos = {1.0, qPos};\n-78 y = f(localPos);\n-79 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n-80 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n-81 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(6.0*qPos*qPos - 6.0*qPos +\n-1.0)*qp.weight()*sign_[1];\n-82\n-83 localPos = {qPos, 0.0};\n-84 y = f(localPos);\n-85 out[6] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n-86 out[7] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n-87 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(6.0*qPos*qPos - 6.0*qPos +\n-1.0)*qp.weight()*sign_[2];\n-88\n-89 localPos = {qPos, 1.0};\n-90 y = f(localPos);\n-91 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n-92 out[10] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n-93 out[11] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(6.0*qPos*qPos - 6.0*qPos +\n-1.0)*qp.weight()*sign_[3];\n-94 }\n-95\n-96 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n-qOrder);\n-97\n-98 for (auto&& qp : rule2)\n-99 {\n-100 FieldVector qPos = qp.position();\n-101\n-102 auto y = f(qPos);\n-103 out[12] += y[0]*qp.weight();\n-104 out[13] += y[1]*qp.weight();\n-105 out[14] += y[0]*qPos[0]*qp.weight();\n-106 out[15] += y[1]*qPos[0]*qp.weight();\n-107 out[16] += y[0]*qPos[1]*qp.weight();\n-108 out[17] += y[1]*qPos[1]*qp.weight();\n-109 out[18] += y[0]*qPos[0]*qPos[1]*qp.weight();\n-110 out[19] += y[1]*qPos[0]*qPos[1]*qp.weight();\n-111 out[20] += y[0]*qPos[1]*qPos[1]*qp.weight();\n-112 out[21] += y[1]*qPos[0]*qPos[0]*qp.weight();\n-113 out[22] += y[0]*qPos[0]*qPos[1]*qPos[1]*qp.weight();\n-114 out[23] += y[1]*qPos[0]*qPos[0]*qPos[1]*qp.weight();\n-115 }\n-116 }\n-117\n-118 private:\n-119 // Edge orientations\n-120 std::array sign_;\n-121\n-122 // Edge normals\n-123 std::array n_;\n-124 };\n-125}\n-126#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH\n+8#include \n+9#include \n+10\n+11#include \"../../common/localkey.hh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+_\b2_\b3 class _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+24 {\n+25\n+26 public:\n+_\b2_\b8 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(6)\n+29 {\n+30 for (std::size_t i=0; i<3; i++)\n+31 {\n+32 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+33 li[3 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+34 }\n+35 }\n+36\n+_\b3_\b8 std::size_t _\bs_\bi_\bz_\be () const\n+39 {\n+40 return 6;\n+41 }\n+42\n+_\b4_\b4 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+45 {\n+46 return li[i];\n+47 }\n+48\n+49 private:\n+50 std::vector li;\n+51 };\n+52}\n+53#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Second order Raviart-Thomas shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalinterpolation.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalinterpolation.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT2Cube2DLocalInterpolation(std::bitset< 4 > s=0)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalinterpolation.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-1 elements on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+BDM1Simplex2DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube3dlocalbasis.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,34 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas1cube3dlocalbasis.hh File Reference
    \n+
    brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n+
    #include <cstddef>
    \n #include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT1Cube3DLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference hexahedron. More...
    class  Dune::BDM1Cube2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas1cube3dlocalbasis.hh File Reference\n-#include \n+brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference\n+#include \n #include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference hexahedron.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.\n _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube3dlocalbasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,642 +70,78 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube3dlocalbasis.hh
    \n+
    brezzidouglasmarini1cube2dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <numeric>
    \n+
    8#include <cstddef>
    \n
    9#include <vector>
    \n
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n+
    11#include "../../common/localkey.hh"
    \n
    12
    \n-
    13#include "../../common/localbasis.hh"
    \n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    26 template<class D, class R>
    \n-
    \n-\n-
    28 {
    \n-
    29
    \n-
    30 public:
    \n-
    31 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n-
    32 Dune::FieldMatrix<R,3,3> > Traits;
    \n-
    33
    \n-
    \n-
    39 RT1Cube3DLocalBasis (unsigned int s = 0)
    \n-
    40 {
    \n-
    41 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n-
    42 if (s & 1)
    \n-
    43 {
    \n-
    44 sign0 = -1.0;
    \n-
    45 }
    \n-
    46 if (s & 2)
    \n-
    47 {
    \n-
    48 sign1 = -1.0;
    \n-
    49 }
    \n-
    50 if (s & 4)
    \n-
    51 {
    \n-
    52 sign2 = -1.0;
    \n-
    53 }
    \n-
    54 if (s & 8)
    \n-
    55 {
    \n-
    56 sign3 = -1.0;
    \n-
    57 }
    \n-
    58 if (s & 16)
    \n-
    59 {
    \n-
    60 sign4 = -1.0;
    \n-
    61 }
    \n-
    62 if (s & 32)
    \n-
    63 {
    \n-
    64 sign5 = -1.0;
    \n-
    65 }
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    69 unsigned int size () const
    \n-
    70 {
    \n-
    71 return 36;
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    \n-
    80 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    81 std::vector<typename Traits::RangeType>& out) const
    \n-
    82 {
    \n-
    83 out.resize(36);
    \n-
    84
    \n-
    85 out[0][0] = sign0*(-3.0*in[0]*in[0] + 4.0*in[0] - 1.0);
    \n-
    86 out[0][1] = 0.0;
    \n-
    87 out[0][2] = 0.0;
    \n-
    88
    \n-
    89 out[1][0] = sign1*(-2.0*in[0] + 3.0*in[0]*in[0]);
    \n-
    90 out[1][1] = 0.0;
    \n-
    91 out[1][2] = 0.0;
    \n-
    92
    \n-
    93 out[2][0] = 0.0;
    \n-
    94 out[2][1] = sign2*(-3.0*in[1]*in[1] + 4.0*in[1] - 1.0);
    \n-
    95 out[2][2] = 0.0;
    \n-
    96
    \n-
    97 out[3][0] = 0.0;
    \n-
    98 out[3][1] = sign3*(3.0*in[1]*in[1] - 2.0*in[1]);
    \n-
    99 out[3][2] = 0.0;
    \n-
    100
    \n-
    101 out[4][0] = 0.0;
    \n-
    102 out[4][1] = 0.0;
    \n-
    103 out[4][2] = sign4*(-3.0*in[2]*in[2] + 4.0*in[2] - 1.0);
    \n-
    104
    \n-
    105 out[5][0] = 0.0;
    \n-
    106 out[5][1] = 0.0;
    \n-
    107 out[5][2] = sign5*(3.0*in[2]*in[2] - 2.0*in[2]);
    \n-
    108
    \n-
    109 out[6][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 24.0*in[0]*in[1] - 6.0*in[1] -12.0*in[0] + 3.0;
    \n-
    110 out[6][1] = 0.0;
    \n-
    111 out[6][2] = 0.0;
    \n-
    112
    \n-
    113 out[7][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 12.0*in[0]*in[1] - 6.0*in[0];
    \n-
    114 out[7][1] = 0.0;
    \n-
    115 out[7][2] = 0.0;
    \n-
    116
    \n-
    117 out[8][0] = 0.0;
    \n-
    118 out[8][1] = 18.0*in[0]*in[1]*in[1] - 9.0*in[1]*in[1] - 24.0*in[0]*in[1] + 12.0*in[1] + 6.0*in[0] - 3.0;
    \n-
    119 out[8][2] = 0.0;
    \n-
    120
    \n-
    121 out[9][0] = 0.0;
    \n-
    122 out[9][1] = 6.0*in[1] - 12.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in[1]*in[1];
    \n-
    123 out[9][2] = 0.0;
    \n-
    124
    \n-
    125 out[10][0] = 0.0;
    \n-
    126 out[10][1] = 0.0;
    \n-
    127 out[10][2] = -3.0 + 6.0*in[0] + 12.0*in[2] - 24.0*in[0]*in[2] - 9.0*in[2]*in[2] + 18.0*in[0]*in[2]*in[2];
    \n-
    128
    \n-
    129 out[11][0] = 0.0;
    \n-
    130 out[11][1] = 0.0;
    \n-
    131 out[11][2] = 6.0*in[2] - 12.0*in[0]*in[2] - 9.0*in[2]*in[2] + 18.0*in[0]*in[2]*in[2];
    \n-
    132
    \n-
    133 out[12][0] = 3.0 - 12.0*in[0] - 6.0*in[2] + 24.0*in[0]*in[2] + 9.0*in[0]*in[0] - 18.0*in[0]*in[0]*in[2];
    \n-
    134 out[12][1] = 0.0;
    \n-
    135 out[12][2] = 0.0;
    \n-
    136
    \n-
    137 out[13][0] = -6.0*in[0] + 12.0*in[0]*in[2] + 9.0*in[0]*in[0] - 18.0*in[0]*in[0]*in[2];
    \n-
    138 out[13][1] = 0.0;
    \n-
    139 out[13][2] = 0.0;
    \n-
    140
    \n-
    141 out[14][0] = 0.0;
    \n-
    142 out[14][1] = 3.0 - 12.0*in[1] - 6.0*in[2] + 24.0*in[1]*in[2] + 9.0*in[1]*in[1] - 18.0*in[1]*in[1]*in[2];
    \n-
    143 out[14][2] = 0.0;
    \n-
    144
    \n-
    145 out[15][0] = 0.0;
    \n-
    146 out[15][1] = -6.0*in[1] + 12.0*in[1]*in[2] + 9.0*in[1]*in[1] - 18.0*in[1]*in[1]*in[2];
    \n-
    147 out[15][2] = 0.0;
    \n-
    148
    \n-
    149 out[16][0] = 0.0;
    \n-
    150 out[16][1] = 0.0;
    \n-
    151 out[16][2] = -3.0 + 6.0*in[1] + 12.0*in[2] - 24.0*in[1]*in[2] - 9.0*in[2]*in[2] + 18.0*in[1]*in[2]*in[2];
    \n-
    152
    \n-
    153 out[17][0] = 0.0;
    \n-
    154 out[17][1] = 0.0;
    \n-
    155 out[17][2] = 6.0*in[2] - 12.0*in[1]*in[2] - 9.0*in[2]*in[2] + 18.0*in[1]*in[2]*in[2];
    \n-
    156
    \n-
    157 out[18][0] = -9.0 + 36.0*in[0] + 18.0*in[1] + 18.0*in[2] - 72.0*in[0]*in[1] - 72.0*in[0]*in[2] - 36.0*in[1]*in[2] + 144.0*in[0]*in[1]*in[2] - 27.0*in[0]*in[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in[0]*in[2] - 108.0*in[0]*in[0]*in[1]*in[2];
    \n-
    158 out[18][1] = 0.0;
    \n-
    159 out[18][2] = 0.0;
    \n-
    160
    \n-
    161 out[19][0] = 18.0*in[0] - 36.0*in[0]*in[1] - 36.0*in[0]*in[2] + 72.0*in[0]*in[1]*in[2] - 27.0*in[0]*in[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in[0]*in[2] - 108.0*in[0]*in[0]*in[1]*in[2];
    \n-
    162 out[19][1] = 0.0;
    \n-
    163 out[19][2] = 0.0;
    \n-
    164
    \n-
    165 out[20][0] = 0.0;
    \n-
    166 out[20][1] = 9.0 - 18.0*in[0] - 36.0*in[1] - 18.0*in[2] + 72.0*in[0]*in[1] + 36.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[1]*in[1] - 54.0*in[1]*in[1]*in[0] - 54.0*in[1]*in[1]*in[2] + 108.0*in[0]*in[1]*in[1]*in[2];
    \n-
    167 out[20][2] = 0.0;
    \n-
    168
    \n-
    169 out[21][0] = 0.0;
    \n-
    170 out[21][1] = -18.0*in[1] + 36.0*in[0]*in[1] + 36.0*in[1]*in[2] - 72.0*in[0]*in[1]*in[2] + 27.0*in[1]*in[1] - 54.0*in[0]*in[1]*in[1] - 54.0*in[1]*in[1]*in[2] + 108.0*in[0]*in[1]*in[1]*in[2];
    \n-
    171 out[21][2] = 0.0;
    \n-
    172
    \n-
    173 out[22][0] = 0.0;
    \n-
    174 out[22][1] = 0.0;
    \n-
    175 out[22][2] = 9.0 - 18.0*in[0] - 18.0*in[1] - 36.0*in[2] + 36.0*in[0]*in[1] + 72.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[2]*in[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in[2]*in[2] + 108.0*in[0]*in[1]*in[2]*in[2];
    \n-
    176
    \n-
    177 out[23][0] = 0.0;
    \n-
    178 out[23][1] = 0.0;
    \n-
    179 out[23][2] = -18.0*in[2] + 36.0*in[0]*in[2] + 36.0*in[1]*in[2] - 72.0*in[0]*in[1]*in[2] + 27.0*in[2]*in[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in[2]*in[2] + 108.0*in[0]*in[1]*in[2]*in[2];
    \n-
    180
    \n-
    181 out[24][0] = 96.0*in[0] - 144.0*in[0]*in[1] - 144.0*in[0]*in[2] + 216.0*in[0]*in[1]*in[2] - 96.0*in[0]*in[0] + 144.0*in[0]*in[0]*in[1] + 144.0*in[0]*in[0]*in[2] - 216.0*in[0]*in[0]*in[1]*in[2];
    \n-
    182 out[24][1] = 0.0;
    \n-
    183 out[24][2] = 0.0;
    \n-
    184
    \n-
    185 out[25][0] = 0.0;
    \n-
    186 out[25][1] = 96.0*in[1] - 144.0*in[0]*in[1] - 144.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2] - 96.0*in[1]*in[1] + 144.0*in[0]*in[1]*in[1] + 144.0*in[1]*in[1]*in[2] - 216.0*in[0]*in[1]*in[1]*in[2];
    \n-
    187 out[25][2] = 0.0;
    \n-
    188
    \n-
    189 out[26][0] = 0.0;
    \n-
    190 out[26][1] = 0.0;
    \n-
    191 out[26][2] = 96.0*in[2] - 144.0*in[0]*in[2] - 144.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2] - 96.0*in[2]*in[2] + 144.0*in[0]*in[2]*in[2] + 144.0*in[1]*in[2]*in[2] - 216.0*in[0]*in[1]*in[2]*in[2];
    \n-
    192
    \n-
    193 out[27][0] = -144.0*in[0] + 288.0*in[0]*in[1] + 216.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 288.0*in[0]*in[0]*in[1] - 216.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2];
    \n-
    194 out[27][1] = 0.0;
    \n-
    195 out[27][2] = 0.0;
    \n-
    196
    \n-
    197 out[28][0] = -144.0*in[0] + 216.0*in[0]*in[1] + 288.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[1] - 288.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2];
    \n-
    198 out[28][1] = 0.0;
    \n-
    199 out[28][2] = 0.0;
    \n-
    200
    \n-
    201 out[29][0] = 0.0;
    \n-
    202 out[29][1] = -144.0*in[1] + 288.0*in[0]*in[1] + 216.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 288.0*in[0]*in[1]*in[1] - 216.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2];
    \n-
    203 out[29][2] = 0.0;
    \n-
    204
    \n-
    205 out[30][0] = 0.0;
    \n-
    206 out[30][1] = -144.0*in[1] + 216.0*in[0]*in[1] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 216.0*in[0]*in[1]*in[1] - 288.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2];
    \n-
    207 out[30][2] = 0.0;
    \n-
    208
    \n-
    209 out[31][0] = 0.0;
    \n-
    210 out[31][1] = 0.0;
    \n-
    211 out[31][2] =-144.0*in[2] + 288.0*in[0]*in[2] + 216.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 288.0*in[0]*in[2]*in[2] - 216.0*in[1]*in[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2];
    \n-
    212
    \n-
    213 out[32][0] = 0.0;
    \n-
    214 out[32][1] = 0.0;
    \n-
    215 out[32][2] = -144.0*in[2] + 216.0*in[0]*in[2] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 216.0*in[0]*in[2]*in[2] - 288.0*in[1]*in[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2];
    \n-
    216
    \n-
    217 out[33][0] = 216.0*in[0] - 432.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1] + 432.0*in[0]*in[0]*in[2] - 864.0*in[0]*in[0]*in[1]*in[2];
    \n-
    218 out[33][1] = 0.0;
    \n-
    219 out[33][2] = 0.0;
    \n-
    220
    \n-
    221 out[34][0] = 0.0;
    \n-
    222 out[34][1] = 216.0*in[1] - 432.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2] - 216.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1] + 432.0*in[1]*in[1]*in[2] - 864.0*in[0]*in[1]*in[1]*in[2];
    \n-
    223 out[34][2] = 0.0;
    \n-
    224
    \n-
    225 out[35][0] = 0.0;
    \n-
    226 out[35][1] = 0.0;
    \n-
    227 out[35][2] = 216.0*in[2] - 432.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2] - 216.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2] + 432.0*in[1]*in[2]*in[2] - 864.0*in[0]*in[1]*in[2]*in[2];
    \n-
    228 }
    \n-
    \n-
    229
    \n-
    \n-
    236 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    237 std::vector<typename Traits::JacobianType>& out) const
    \n-
    238 {
    \n-
    239 out.resize(36);
    \n-
    240
    \n-
    241 out[0][0][0] = sign0*(-6.0*in[0] + 4);
    \n-
    242 out[0][0][1] = 0;
    \n-
    243 out[0][0][2] = 0;
    \n-
    244 out[0][1][0] = 0;
    \n-
    245 out[0][1][1] = 0;
    \n-
    246 out[0][1][2] = 0;
    \n-
    247 out[0][2][0] = 0;
    \n-
    248 out[0][2][1] = 0;
    \n-
    249 out[0][2][2] = 0;
    \n-
    250
    \n-
    251 out[1][0][0] = sign1*(-2 + 6.0*in[0]);
    \n-
    252 out[1][0][1] = 0;
    \n-
    253 out[1][0][2] = 0;
    \n-
    254 out[1][1][0] = 0;
    \n-
    255 out[1][1][1] = 0;
    \n-
    256 out[1][1][2] = 0;
    \n-
    257 out[1][2][0] = 0;
    \n-
    258 out[1][2][1] = 0;
    \n-
    259 out[1][2][2] = 0;
    \n-
    260
    \n-
    261 out[2][0][0] = 0;
    \n-
    262 out[2][0][1] = 0;
    \n-
    263 out[2][0][2] = 0;
    \n-
    264 out[2][1][0] = 0;
    \n-
    265 out[2][1][1] = sign2*(-6.0*in[1] + 4);
    \n-
    266 out[2][1][2] = 0;
    \n-
    267 out[2][2][0] = 0;
    \n-
    268 out[2][2][1] = 0;
    \n-
    269 out[2][2][2] = 0;
    \n-
    270
    \n-
    271 out[3][0][0] = 0;
    \n-
    272 out[3][0][1] = 0;
    \n-
    273 out[3][0][2] = 0;
    \n-
    274 out[3][1][0] = 0;
    \n-
    275 out[3][1][1] = sign3*(6.0*in[1] - 2);
    \n-
    276 out[3][1][2] = 0;
    \n-
    277 out[3][2][0] = 0;
    \n-
    278 out[3][2][1] = 0;
    \n-
    279 out[3][2][2] = 0;
    \n-
    280
    \n-
    281 out[4][0][0] = 0;
    \n-
    282 out[4][0][1] = 0;
    \n-
    283 out[4][0][2] = 0;
    \n-
    284 out[4][1][0] = 0;
    \n-
    285 out[4][1][1] = 0;
    \n-
    286 out[4][1][2] = 0;
    \n-
    287 out[4][2][0] = 0;
    \n-
    288 out[4][2][1] = 0;
    \n-
    289 out[4][2][2] = sign4*(-6.0*in[2] + 4);
    \n-
    290
    \n-
    291 out[5][0][0] = 0;
    \n-
    292 out[5][0][1] = 0;
    \n-
    293 out[5][0][2] = 0;
    \n-
    294 out[5][1][0] = 0;
    \n-
    295 out[5][1][1] = 0;
    \n-
    296 out[5][1][2] = 0;
    \n-
    297 out[5][2][0] = 0;
    \n-
    298 out[5][2][1] = 0;
    \n-
    299 out[5][2][2] = sign5*(6.0*in[2] - 2);
    \n-
    300
    \n-
    301 out[6][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 24.0*in[1] - 12.0;
    \n-
    302 out[6][0][1] = -18.0*in[0]*in[0] + 24.0*in[0] - 6;
    \n-
    303 out[6][0][2] = 0.0;
    \n-
    304 out[6][1][0] = 0.0;
    \n-
    305 out[6][1][1] = 0.0;
    \n-
    306 out[6][1][2] = 0.0;
    \n-
    307 out[6][2][0] = 0.0;
    \n-
    308 out[6][2][1] = 0.0;
    \n-
    309 out[6][2][2] = 0.0;
    \n-
    310
    \n-
    311 out[7][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 12.0*in[1] - 6.0;
    \n-
    312 out[7][0][1] = -18.0*in[0]*in[0] + 12.0*in[0];
    \n-
    313 out[7][0][2] = 0.0;
    \n-
    314 out[7][1][0] = 0.0;
    \n-
    315 out[7][1][1] = 0.0;
    \n-
    316 out[7][1][2] = 0.0;
    \n-
    317 out[7][2][0] = 0.0;
    \n-
    318 out[7][2][1] = 0.0;
    \n-
    319 out[7][2][2] = 0.0;
    \n-
    320
    \n-
    321 out[8][0][0] = 0.0;
    \n-
    322 out[8][0][1] = 0.0;
    \n-
    323 out[8][0][2] = 0.0;
    \n-
    324 out[8][1][0] = 18.0*in[1]*in[1] - 24.0*in[1] + 6.0;
    \n-
    325 out[8][1][1] = 36.0*in[0]*in[1] - 18.0*in[1] - 24.0*in[0] + 12.0;
    \n-
    326 out[8][1][2] = 0.0;
    \n-
    327 out[8][2][0] = 0.0;
    \n-
    328 out[8][2][1] = 0.0;
    \n-
    329 out[8][2][2] = 0.0;
    \n-
    330
    \n-
    331 out[9][0][0] = 0.0;
    \n-
    332 out[9][0][1] = 0.0;
    \n-
    333 out[9][0][2] = 0.0;
    \n-
    334 out[9][1][0] = -12.0*in[1] + 18.0*in[1]*in[1];
    \n-
    335 out[9][1][1] = 6.0 - 12.0*in[0] - 18.0*in[1] + 36.0*in[0]*in[1];;
    \n-
    336 out[9][1][2] = 0.0;
    \n-
    337 out[9][2][0] = 0.0;
    \n-
    338 out[9][2][1] = 0.0;
    \n-
    339 out[9][2][2] = 0.0;
    \n-
    340
    \n-
    341 out[10][0][0] = 0.0;
    \n-
    342 out[10][0][1] = 0.0;
    \n-
    343 out[10][0][2] = 0.0;
    \n-
    344 out[10][1][0] = 0.0;
    \n-
    345 out[10][1][1] = 0.0;
    \n-
    346 out[10][1][2] = 0.0;
    \n-
    347 out[10][2][0] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2];
    \n-
    348 out[10][2][1] = 0.0;
    \n-
    349 out[10][2][2] = 12.0 - 24.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2];
    \n-
    350
    \n-
    351 out[11][0][0] = 0.0;
    \n-
    352 out[11][0][1] = 0.0;
    \n-
    353 out[11][0][2] = 0.0;
    \n-
    354 out[11][1][0] = 0.0;
    \n-
    355 out[11][1][1] = 0.0;
    \n-
    356 out[11][1][2] = 0.0;
    \n-
    357 out[11][2][0] = -12.0*in[2] + 18.0*in[2]*in[2];
    \n-
    358 out[11][2][1] = 0.0;
    \n-
    359 out[11][2][2] = 6.0 - 12.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2];
    \n-
    360
    \n-
    361 out[12][0][0] = -12.0 + 24.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2];
    \n-
    362 out[12][0][1] = 0.0;
    \n-
    363 out[12][0][2] = -6.0 + 24.0*in[0] - 18.0*in[0]*in[0];
    \n-
    364 out[12][1][0] = 0.0;
    \n-
    365 out[12][1][1] = 0.0;
    \n-
    366 out[12][1][2] = 0.0;
    \n-
    367 out[12][2][0] = 0.0;
    \n-
    368 out[12][2][1] = 0.0;
    \n-
    369 out[12][2][2] = 0.0;
    \n-
    370
    \n-
    371 out[13][0][0] = -6.0 + 12.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2];
    \n-
    372 out[13][0][1] = 0.0;
    \n-
    373 out[13][0][2] = 12.0*in[0] - 18.0*in[0]*in[0];
    \n-
    374 out[13][1][0] = 0.0;
    \n-
    375 out[13][1][1] = 0.0;
    \n-
    376 out[13][1][2] = 0.0;
    \n-
    377 out[13][2][0] = 0.0;
    \n-
    378 out[13][2][1] = 0.0;
    \n-
    379 out[13][2][2] = 0.0;
    \n-
    380
    \n-
    381 out[14][0][0] = 0.0;
    \n-
    382 out[14][0][1] = 0.0;
    \n-
    383 out[14][0][2] = 0.0;
    \n-
    384 out[14][1][0] = 0.0;
    \n-
    385 out[14][1][1] = -12.0 + 24.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2];
    \n-
    386 out[14][1][2] = -6.0 + 24.0*in[1] - 18.0*in[1]*in[1];
    \n-
    387 out[14][2][0] = 0.0;
    \n-
    388 out[14][2][1] = 0.0;
    \n-
    389 out[14][2][2] = 0.0;
    \n-
    390
    \n-
    391 out[15][0][0] = 0.0;
    \n-
    392 out[15][0][1] = 0.0;
    \n-
    393 out[15][0][2] = 0.0;
    \n-
    394 out[15][1][0] = 0.0;
    \n-
    395 out[15][1][1] = -6.0 + 12.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2];
    \n-
    396 out[15][1][2] = 12.0*in[1] - 18.0*in[1]*in[1];
    \n-
    397 out[15][2][0] = 0.0;
    \n-
    398 out[15][2][1] = 0.0;
    \n-
    399 out[15][2][2] = 0.0;
    \n-
    400
    \n-
    401 out[16][0][0] = 0.0;
    \n-
    402 out[16][0][1] = 0.0;
    \n-
    403 out[16][0][2] = 0.0;
    \n-
    404 out[16][1][0] = 0.0;
    \n-
    405 out[16][1][1] = 0.0;
    \n-
    406 out[16][1][2] = 0.0;
    \n-
    407 out[16][2][0] = 0.0;
    \n-
    408 out[16][2][1] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2];
    \n-
    409 out[16][2][2] = 12.0 - 24.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2];
    \n-
    410
    \n-
    411 out[17][0][0] = 0.0;
    \n-
    412 out[17][0][1] = 0.0;
    \n-
    413 out[17][0][2] = 0.0;
    \n-
    414 out[17][1][0] = 0.0;
    \n-
    415 out[17][1][1] = 0.0;
    \n-
    416 out[17][1][2] = 0.0;
    \n-
    417 out[17][2][0] = 0.0;
    \n-
    418 out[17][2][1] = -12.0*in[2] + 18.0*in[2]*in[2];
    \n-
    419 out[17][2][2] = 6.0 - 12.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2];
    \n-
    420
    \n-
    421 out[18][0][0] = 36.0 - 72.0*in[1] - 72.0*in[2] + 144.0*in[1]*in[2] - 54.0*in[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2];
    \n-
    422 out[18][0][1] = 18.0 - 72.0*in[0] - 36.0*in[2] + 144.0*in[0]*in[2] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[2];
    \n-
    423 out[18][0][2] = 18.0 - 72.0*in[0] - 36.0*in[1] + 144.0*in[0]*in[1] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1];
    \n-
    424 out[18][1][0] = 0.0;
    \n-
    425 out[18][1][1] = 0.0;
    \n-
    426 out[18][1][2] = 0.0;
    \n-
    427 out[18][2][0] = 0.0;
    \n-
    428 out[18][2][1] = 0.0;
    \n-
    429 out[18][2][2] = 0.0;
    \n-
    430
    \n-
    431 out[19][0][0] = 18 - 36.0*in[1] - 36.0*in[2] + 72.0*in[1]*in[2] - 54.0*in[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2];
    \n-
    432 out[19][0][1] = -36.0*in[0] + 72.0*in[0]*in[2] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[2];
    \n-
    433 out[19][0][2] = -36.0*in[0] + 72.0*in[0]*in[1] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1];
    \n-
    434 out[19][1][0] = 0.0;
    \n-
    435 out[19][1][1] = 0.0;
    \n-
    436 out[19][1][2] = 0.0;
    \n-
    437 out[19][2][0] = 0.0;
    \n-
    438 out[19][2][1] = 0.0;
    \n-
    439 out[19][2][2] = 0.0;
    \n-
    440
    \n-
    441 out[20][0][0] = 0.0;
    \n-
    442 out[20][0][1] = 0.0;
    \n-
    443 out[20][0][2] = 0.0;
    \n-
    444 out[20][1][0] = -18.0 + 72.0*in[1] + 36.0*in[2] - 144.0*in[1]*in[2] - 54.0*in[1]*in[1] + 108.0*in[1]*in[1]*in[2];
    \n-
    445 out[20][1][1] = -36.0 + 72.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] + 54.0*in[1] - 108.0*in[1]*in[0] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];
    \n-
    446 out[20][1][2] = -18.0 + 36.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1];
    \n-
    447 out[20][2][0] = 0.0;
    \n-
    448 out[20][2][1] = 0.0;
    \n-
    449 out[20][2][2] = 0.0;
    \n-
    450
    \n-
    451 out[21][0][0] = 0.0;
    \n-
    452 out[21][0][1] = 0.0;
    \n-
    453 out[21][0][2] = 0.0;
    \n-
    454 out[21][1][0] = 36.0*in[1] - 72.0*in[1]*in[2] - 54.0*in[1]*in[1] + 108.0*in[1]*in[1]*in[2];
    \n-
    455 out[21][1][1] = -18.0 + 36.0*in[0] + 36.0*in[2] - 72.0*in[0]*in[2] + 54.0*in[1] - 108.0*in[0]*in[1] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];
    \n-
    456 out[21][1][2] = 36.0*in[1] - 72.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1];
    \n-
    457 out[21][2][0] = 0.0;
    \n-
    458 out[21][2][1] = 0.0;
    \n-
    459 out[21][2][2] = 0.0;
    \n-
    460
    \n-
    461 out[22][0][0] = 0.0;
    \n-
    462 out[22][0][1] = 0.0;
    \n-
    463 out[22][0][2] = 0.0;
    \n-
    464 out[22][1][0] = 0.0;
    \n-
    465 out[22][1][1] = 0.0;
    \n-
    466 out[22][1][2] = 0.0;
    \n-
    467 out[22][2][0] = -18.0 + 36.0*in[1] + 72.0*in[2] - 144.0*in[1]*in[2] - 54.0*in[2]*in[2] + 108.0*in[1]*in[2]*in[2];
    \n-
    468 out[22][2][1] = -18.0 + 36.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] - 54.0*in[2]*in[2] + 108.0*in[0]*in[2]*in[2];
    \n-
    469 out[22][2][2] = -36.0 + 72.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] + 54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];
    \n-
    470
    \n-
    471 out[23][0][0] = 0.0;
    \n-
    472 out[23][0][1] = 0.0;
    \n-
    473 out[23][0][2] = 0.0;
    \n-
    474 out[23][1][0] = 0.0;
    \n-
    475 out[23][1][1] = 0.0;
    \n-
    476 out[23][1][2] = 0.0;
    \n-
    477 out[23][2][0] = 36.0*in[2] - 72.0*in[1]*in[2] - 54.0*in[2]*in[2] + 108.0*in[1]*in[2]*in[2];
    \n-
    478 out[23][2][1] = 36.0*in[2] - 72.0*in[0]*in[2] - 54.0*in[2]*in[2] + 108.0*in[0]*in[2]*in[2];
    \n-
    479 out[23][2][2] = -18.0 + 36.0*in[0] + 36.0*in[1] - 72.0*in[0]*in[1] + 54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];
    \n-
    480
    \n-
    481 out[24][0][0] = 96.0 - 144.0*in[1] - 144.0*in[2] + 216.0*in[1]*in[2] - 192.0*in[0] + 288.0*in[0]*in[1] + 288.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2];
    \n-
    482 out[24][0][1] = -144.0*in[0] + 216.0*in[0]*in[2] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[2];
    \n-
    483 out[24][0][2] = -144.0*in[0] + 216.0*in[0]*in[1] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[1];
    \n-
    484 out[24][1][0] = 0.0;
    \n-
    485 out[24][1][1] = 0.0;
    \n-
    486 out[24][1][2] = 0.0;
    \n-
    487 out[24][2][0] = 0.0;
    \n-
    488 out[24][2][1] = 0.0;
    \n-
    489 out[24][2][2] = 0.0;
    \n-
    490
    \n-
    491 out[25][0][0] = 0.0;
    \n-
    492 out[25][0][1] = 0.0;
    \n-
    493 out[25][0][2] = 0.0;
    \n-
    494 out[25][1][0] = -144.0*in[1] + 216.0*in[1]*in[2] + 144.0*in[1]*in[1] - 216.0*in[1]*in[1]*in[2];
    \n-
    495 out[25][1][1] = 96.0 - 144.0*in[0] - 144.0*in[2] + 216.0*in[0]*in[2] - 192.0*in[1] + 288.0*in[0]*in[1] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2];
    \n-
    496 out[25][1][2] = -144.0*in[1] + 216.0*in[0]*in[1] + 144.0*in[1]*in[1] - 216.0*in[0]*in[1]*in[1];
    \n-
    497 out[25][2][0] = 0.0;
    \n-
    498 out[25][2][1] = 0.0;
    \n-
    499 out[25][2][2] = 0.0;
    \n-
    500
    \n-
    501 out[26][0][0] = 0.0;
    \n-
    502 out[26][0][1] = 0.0;
    \n-
    503 out[26][0][2] = 0.0;
    \n-
    504 out[26][1][0] = 0.0;
    \n-
    505 out[26][1][1] = 0.0;
    \n-
    506 out[26][1][2] = 0.0;
    \n-
    507 out[26][2][0] = -144.0*in[2] + 216.0*in[1]*in[2] + 144.0*in[2]*in[2] - 216.0*in[1]*in[2]*in[2];
    \n-
    508 out[26][2][1] = -144.0*in[2] + 216.0*in[0]*in[2] + 144.0*in[2]*in[2] - 216.0*in[0]*in[2]*in[2];
    \n-
    509 out[26][2][2] = 96.0 - 144.0*in[0] - 144.0*in[1] + 216.0*in[0]*in[1] - 192.0*in[2] + 288.0*in[0]*in[2] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2];
    \n-
    510
    \n-
    511 out[27][0][0] = -144.0 + 288.0*in[1] + 216.0*in[2] - 432.0*in[1]*in[2] + 288.0*in[0] - 576.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n-
    512 out[27][0][1] = 288.0*in[0] - 432.0*in[0]*in[2] - 288.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[2];
    \n-
    513 out[27][0][2] = 216.0*in[0] - 432.0*in[0]*in[1] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1];
    \n-
    514 out[27][1][0] = 0.0;
    \n-
    515 out[27][1][1] = 0.0;
    \n-
    516 out[27][1][2] = 0.0;
    \n-
    517 out[27][2][0] = 0.0;
    \n-
    518 out[27][2][1] = 0.0;
    \n-
    519 out[27][2][2] = 0.0;
    \n-
    520
    \n-
    521 out[28][0][0] = -144.0 + 216.0*in[1] + 288.0*in[2] - 432.0*in[1]*in[2] + 288.0*in[0] - 432.0*in[0]*in[1] - 576.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n-
    522 out[28][0][1] = 216.0*in[0] - 432.0*in[0]*in[2] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[2];
    \n-
    523 out[28][0][2] = 288.0*in[0] - 432.0*in[0]*in[1] - 288.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1];
    \n-
    524 out[28][1][0] = 0.0;
    \n-
    525 out[28][1][1] = 0.0;
    \n-
    526 out[28][1][2] = 0.0;
    \n-
    527 out[28][2][0] = 0.0;
    \n-
    528 out[28][2][1] = 0.0;
    \n-
    529 out[28][2][2] = 0.0;
    \n-
    530
    \n-
    531 out[29][0][0] = 0.0;
    \n-
    532 out[29][0][1] = 0.0;
    \n-
    533 out[29][0][2] = 0.0;
    \n-
    534 out[29][1][0] = 288.0*in[1] - 432.0*in[1]*in[2] - 288.0*in[1]*in[1] + 432.0*in[1]*in[1]*in[2];
    \n-
    535 out[29][1][1] = -144.0 + 288.0*in[0] + 216.0*in[2] - 432.0*in[0]*in[2] + 288.0*in[1] - 576.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n-
    536 out[29][1][2] = 216.0*in[1] - 432.0*in[0]*in[1] - 216.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1];
    \n-
    537 out[29][2][0] = 0.0;
    \n-
    538 out[29][2][1] = 0.0;
    \n-
    539 out[29][2][2] = 0.0;
    \n-
    540
    \n-
    541 out[30][0][0] = 0.0;
    \n-
    542 out[30][0][1] = 0.0;
    \n-
    543 out[30][0][2] = 0.0;
    \n-
    544 out[30][1][0] = 216.0*in[1] - 432.0*in[1]*in[2] - 216.0*in[1]*in[1] + 432.0*in[1]*in[1]*in[2];
    \n-
    545 out[30][1][1] = -144.0 + 216.0*in[0] + 288.0*in[2] - 432.0*in[0]*in[2] + 288.0*in[1] - 432.0*in[0]*in[1] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n-
    546 out[30][1][2] = 288.0*in[1] - 432.0*in[0]*in[1] - 288.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1];
    \n-
    547 out[30][2][0] = 0.0;
    \n-
    548 out[30][2][1] = 0.0;
    \n-
    549 out[30][2][2] = 0.0;
    \n-
    550
    \n-
    551 out[31][0][0] = 0.0;
    \n-
    552 out[31][0][1] = 0.0;
    \n-
    553 out[31][0][2] = 0.0;
    \n-
    554 out[31][1][0] = 0.0;
    \n-
    555 out[31][1][1] = 0.0;
    \n-
    556 out[31][1][2] = 0.0;
    \n-
    557 out[31][2][0] = 288.0*in[2] - 432.0*in[1]*in[2] - 288.0*in[2]*in[2] + 432.0*in[1]*in[2]*in[2];
    \n-
    558 out[31][2][1] = 216.0*in[2] - 432.0*in[0]*in[2] - 216.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2];
    \n-
    559 out[31][2][2] = -144.0 + 288.0*in[0] + 216.0*in[1] - 432.0*in[0]*in[1] + 288.0*in[2] - 576.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n-
    560
    \n-
    561 out[32][0][0] = 0.0;
    \n-
    562 out[32][0][1] = 0.0;
    \n-
    563 out[32][0][2] = 0.0;
    \n-
    564 out[32][1][0] = 0.0;
    \n-
    565 out[32][1][1] = 0.0;
    \n-
    566 out[32][1][2] = 0.0;
    \n-
    567 out[32][2][0] = 216.0*in[2] - 432.0*in[1]*in[2] - 216.0*in[2]*in[2] + 432.0*in[1]*in[2]*in[2];
    \n-
    568 out[32][2][1] = 288.0*in[2] - 432.0*in[0]*in[2] - 288.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2];
    \n-
    569 out[32][2][2] = -144.0 + 216.0*in[0] + 288.0*in[1] - 432.0*in[0]*in[1] + 288.0*in[2] - 432.0*in[0]*in[2] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n-
    570
    \n-
    571 out[33][0][0] = 216.0 - 432.0*in[1] - 432.0*in[2] + 864.0*in[1]*in[2] - 432.0*in[0] + 864.0*in[0]*in[1] + 864.0*in[0]*in[2] - 1728.0*in[0]*in[1]*in[2];
    \n-
    572 out[33][0][1] = -432.0*in[0] + 864.0*in[0]*in[2] + 432.0*in[0]*in[0] - 864.0*in[0]*in[0]*in[2];
    \n-
    573 out[33][0][2] = -432.0*in[0] + 864.0*in[0]*in[1] + 432.0*in[0]*in[0] - 864.0*in[0]*in[0]*in[1];
    \n-
    574 out[33][1][0] = 0.0;
    \n-
    575 out[33][1][1] = 0.0;
    \n-
    576 out[33][1][2] = 0.0;
    \n-
    577 out[33][2][0] = 0.0;
    \n-
    578 out[33][2][1] = 0.0;
    \n-
    579 out[33][2][2] = 0.0;
    \n-
    580
    \n-
    581 out[34][0][0] = 0.0;
    \n-
    582 out[34][0][1] = 0.0;
    \n-
    583 out[34][0][2] = 0.0;
    \n-
    584 out[34][1][0] = -432.0*in[1] + 864.0*in[1]*in[2] + 432.0*in[1]*in[1] - 864.0*in[1]*in[1]*in[2];
    \n-
    585 out[34][1][1] = 216.0 - 432.0*in[0] - 432.0*in[2] + 864.0*in[0]*in[2] - 432.0*in[1] + 864.0*in[0]*in[1] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2];
    \n-
    586 out[34][1][2] = -432.0*in[1] + 864.0*in[0]*in[1] + 432.0*in[1]*in[1] - 864.0*in[0]*in[1]*in[1];
    \n-
    587 out[34][2][0] = 0.0;
    \n-
    588 out[34][2][1] = 0.0;
    \n-
    589 out[34][2][2] = 0.0;
    \n-
    590
    \n-
    591 out[35][0][0] = 0.0;
    \n-
    592 out[35][0][1] = 0.0;
    \n-
    593 out[35][0][2] = 0.0;
    \n-
    594 out[35][1][0] = 0.0;
    \n-
    595 out[35][1][1] = 0.0;
    \n-
    596 out[35][1][2] = 0.0;
    \n-
    597 out[35][2][0] = -432.0*in[2] + 864.0*in[1]*in[2] + 432.0*in[2]*in[2] - 864.0*in[1]*in[2]*in[2];
    \n-
    598 out[35][2][1] = -432.0*in[2] + 864.0*in[0]*in[2] + 432.0*in[2]*in[2] - 864.0*in[0]*in[2]*in[2];
    \n-
    599 out[35][2][2] = 216.0 - 432.0*in[0] - 432.0*in[1] + 864.0*in[0]*in[1] - 432.0*in[2] + 864.0*in[0]*in[2] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2];
    \n-
    600 }
    \n-
    \n-
    601
    \n-
    \n-
    603 void partial (const std::array<unsigned int, 3>& order,
    \n-
    604 const typename Traits::DomainType& in, // position
    \n-
    605 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    606 {
    \n-
    607 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    608 if (totalOrder == 0) {
    \n-
    609 evaluateFunction(in, out);
    \n-
    610 } else {
    \n-
    611 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    612 }
    \n-
    613 }
    \n-
    \n-
    614
    \n-
    \n-
    616 unsigned int order () const
    \n-
    617 {
    \n-
    618 return 3;
    \n-
    619 }
    \n-
    \n-
    620
    \n-
    621 private:
    \n-
    622 R sign0, sign1, sign2, sign3, sign4, sign5;
    \n-
    623 };
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for (std::size_t i = 0; i < 4; ++i)
    \n+
    31 {
    \n+
    32 li[2*i] = LocalKey(i,1,0);
    \n+
    33 li[2*i + 1] = LocalKey(i,1,1);
    \n+
    34 }
    \n+
    35 }
    \n+
    \n+
    36
    \n+
    \n+
    38 std::size_t size () const
    \n+
    39 {
    \n+
    40 return 8;
    \n+
    41 }
    \n+
    \n+
    42
    \n+
    \n+
    44 const LocalKey& localKey (std::size_t i) const
    \n+
    45 {
    \n+
    46 return li[i];
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    49 private:
    \n+
    50 std::vector<LocalKey> li;
    \n+
    51 };
    \n
    \n-
    624}
    \n-
    625#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH
    \n+
    52}
    \n+
    53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalbasis.hh:28
    \n-
    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 raviartthomas1cube3dlocalbasis.hh:603
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas1cube3dlocalbasis.hh:32
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas1cube3dlocalbasis.hh:69
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas1cube3dlocalbasis.hh:80
    \n-
    RT1Cube3DLocalBasis(unsigned int s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas1cube3dlocalbasis.hh:39
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas1cube3dlocalbasis.hh:236
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas1cube3dlocalbasis.hh:616
    \n+
    Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:24
    \n+
    BDM1Cube2DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:28
    \n+
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:38
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:44
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,758 +1,77 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n-raviartthomas1cube3dlocalbasis.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+brezzidouglasmarini1cube2dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n+8#include \n 9#include \n 10\n-11#include \n+11#include \"../../common/localkey.hh\"\n 12\n-13#include \"../../common/localbasis.hh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-26 template\n-_\b2_\b7 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-28 {\n-29\n-30 public:\n-31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n-FieldVector,\n-_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-33\n-_\b3_\b9 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int s = 0)\n-40 {\n-41 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n-42 if (s & 1)\n-43 {\n-44 sign0 = -1.0;\n-45 }\n-46 if (s & 2)\n-47 {\n-48 sign1 = -1.0;\n-49 }\n-50 if (s & 4)\n-51 {\n-52 sign2 = -1.0;\n-53 }\n-54 if (s & 8)\n-55 {\n-56 sign3 = -1.0;\n-57 }\n-58 if (s & 16)\n-59 {\n-60 sign4 = -1.0;\n-61 }\n-62 if (s & 32)\n-63 {\n-64 sign5 = -1.0;\n-65 }\n-66 }\n-67\n-_\b6_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-70 {\n-71 return 36;\n-72 }\n-73\n-_\b8_\b0 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-81 std::vector& out) const\n-82 {\n-83 out.resize(36);\n-84\n-85 out[0][0] = sign0*(-3.0*in[0]*in[0] + 4.0*in[0] - 1.0);\n-86 out[0][1] = 0.0;\n-87 out[0][2] = 0.0;\n-88\n-89 out[1][0] = sign1*(-2.0*in[0] + 3.0*in[0]*in[0]);\n-90 out[1][1] = 0.0;\n-91 out[1][2] = 0.0;\n-92\n-93 out[2][0] = 0.0;\n-94 out[2][1] = sign2*(-3.0*in[1]*in[1] + 4.0*in[1] - 1.0);\n-95 out[2][2] = 0.0;\n-96\n-97 out[3][0] = 0.0;\n-98 out[3][1] = sign3*(3.0*in[1]*in[1] - 2.0*in[1]);\n-99 out[3][2] = 0.0;\n-100\n-101 out[4][0] = 0.0;\n-102 out[4][1] = 0.0;\n-103 out[4][2] = sign4*(-3.0*in[2]*in[2] + 4.0*in[2] - 1.0);\n-104\n-105 out[5][0] = 0.0;\n-106 out[5][1] = 0.0;\n-107 out[5][2] = sign5*(3.0*in[2]*in[2] - 2.0*in[2]);\n-108\n-109 out[6][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 24.0*in[0]*in[1] -\n-6.0*in[1] -12.0*in[0] + 3.0;\n-110 out[6][1] = 0.0;\n-111 out[6][2] = 0.0;\n-112\n-113 out[7][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 12.0*in[0]*in[1] -\n-6.0*in[0];\n-114 out[7][1] = 0.0;\n-115 out[7][2] = 0.0;\n-116\n-117 out[8][0] = 0.0;\n-118 out[8][1] = 18.0*in[0]*in[1]*in[1] - 9.0*in[1]*in[1] - 24.0*in[0]*in[1] +\n-12.0*in[1] + 6.0*in[0] - 3.0;\n-119 out[8][2] = 0.0;\n-120\n-121 out[9][0] = 0.0;\n-122 out[9][1] = 6.0*in[1] - 12.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in\n-[1]*in[1];\n-123 out[9][2] = 0.0;\n-124\n-125 out[10][0] = 0.0;\n-126 out[10][1] = 0.0;\n-127 out[10][2] = -3.0 + 6.0*in[0] + 12.0*in[2] - 24.0*in[0]*in[2] - 9.0*in\n-[2]*in[2] + 18.0*in[0]*in[2]*in[2];\n-128\n-129 out[11][0] = 0.0;\n-130 out[11][1] = 0.0;\n-131 out[11][2] = 6.0*in[2] - 12.0*in[0]*in[2] - 9.0*in[2]*in[2] + 18.0*in[0]*in\n-[2]*in[2];\n-132\n-133 out[12][0] = 3.0 - 12.0*in[0] - 6.0*in[2] + 24.0*in[0]*in[2] + 9.0*in[0]*in\n-[0] - 18.0*in[0]*in[0]*in[2];\n-134 out[12][1] = 0.0;\n-135 out[12][2] = 0.0;\n-136\n-137 out[13][0] = -6.0*in[0] + 12.0*in[0]*in[2] + 9.0*in[0]*in[0] - 18.0*in\n-[0]*in[0]*in[2];\n-138 out[13][1] = 0.0;\n-139 out[13][2] = 0.0;\n-140\n-141 out[14][0] = 0.0;\n-142 out[14][1] = 3.0 - 12.0*in[1] - 6.0*in[2] + 24.0*in[1]*in[2] + 9.0*in[1]*in\n-[1] - 18.0*in[1]*in[1]*in[2];\n-143 out[14][2] = 0.0;\n-144\n-145 out[15][0] = 0.0;\n-146 out[15][1] = -6.0*in[1] + 12.0*in[1]*in[2] + 9.0*in[1]*in[1] - 18.0*in\n-[1]*in[1]*in[2];\n-147 out[15][2] = 0.0;\n-148\n-149 out[16][0] = 0.0;\n-150 out[16][1] = 0.0;\n-151 out[16][2] = -3.0 + 6.0*in[1] + 12.0*in[2] - 24.0*in[1]*in[2] - 9.0*in\n-[2]*in[2] + 18.0*in[1]*in[2]*in[2];\n-152\n-153 out[17][0] = 0.0;\n-154 out[17][1] = 0.0;\n-155 out[17][2] = 6.0*in[2] - 12.0*in[1]*in[2] - 9.0*in[2]*in[2] + 18.0*in[1]*in\n-[2]*in[2];\n-156\n-157 out[18][0] = -9.0 + 36.0*in[0] + 18.0*in[1] + 18.0*in[2] - 72.0*in[0]*in[1]\n-- 72.0*in[0]*in[2] - 36.0*in[1]*in[2] + 144.0*in[0]*in[1]*in[2] - 27.0*in[0]*in\n-[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in[0]*in[2] - 108.0*in[0]*in[0]*in\n-[1]*in[2];\n-158 out[18][1] = 0.0;\n-159 out[18][2] = 0.0;\n-160\n-161 out[19][0] = 18.0*in[0] - 36.0*in[0]*in[1] - 36.0*in[0]*in[2] + 72.0*in\n-[0]*in[1]*in[2] - 27.0*in[0]*in[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in\n-[0]*in[2] - 108.0*in[0]*in[0]*in[1]*in[2];\n-162 out[19][1] = 0.0;\n-163 out[19][2] = 0.0;\n-164\n-165 out[20][0] = 0.0;\n-166 out[20][1] = 9.0 - 18.0*in[0] - 36.0*in[1] - 18.0*in[2] + 72.0*in[0]*in[1]\n-+ 36.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[1]*in\n-[1] - 54.0*in[1]*in[1]*in[0] - 54.0*in[1]*in[1]*in[2] + 108.0*in[0]*in[1]*in\n-[1]*in[2];\n-167 out[20][2] = 0.0;\n-168\n-169 out[21][0] = 0.0;\n-170 out[21][1] = -18.0*in[1] + 36.0*in[0]*in[1] + 36.0*in[1]*in[2] - 72.0*in\n-[0]*in[1]*in[2] + 27.0*in[1]*in[1] - 54.0*in[0]*in[1]*in[1] - 54.0*in[1]*in\n-[1]*in[2] + 108.0*in[0]*in[1]*in[1]*in[2];\n-171 out[21][2] = 0.0;\n-172\n-173 out[22][0] = 0.0;\n-174 out[22][1] = 0.0;\n-175 out[22][2] = 9.0 - 18.0*in[0] - 18.0*in[1] - 36.0*in[2] + 36.0*in[0]*in[1]\n-+ 72.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[2]*in\n-[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in[2]*in[2] + 108.0*in[0]*in[1]*in\n-[2]*in[2];\n-176\n-177 out[23][0] = 0.0;\n-178 out[23][1] = 0.0;\n-179 out[23][2] = -18.0*in[2] + 36.0*in[0]*in[2] + 36.0*in[1]*in[2] - 72.0*in\n-[0]*in[1]*in[2] + 27.0*in[2]*in[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in\n-[2]*in[2] + 108.0*in[0]*in[1]*in[2]*in[2];\n-180\n-181 out[24][0] = 96.0*in[0] - 144.0*in[0]*in[1] - 144.0*in[0]*in[2] + 216.0*in\n-[0]*in[1]*in[2] - 96.0*in[0]*in[0] + 144.0*in[0]*in[0]*in[1] + 144.0*in[0]*in\n-[0]*in[2] - 216.0*in[0]*in[0]*in[1]*in[2];\n-182 out[24][1] = 0.0;\n-183 out[24][2] = 0.0;\n-184\n-185 out[25][0] = 0.0;\n-186 out[25][1] = 96.0*in[1] - 144.0*in[0]*in[1] - 144.0*in[1]*in[2] + 216.0*in\n-[0]*in[1]*in[2] - 96.0*in[1]*in[1] + 144.0*in[0]*in[1]*in[1] + 144.0*in[1]*in\n-[1]*in[2] - 216.0*in[0]*in[1]*in[1]*in[2];\n-187 out[25][2] = 0.0;\n-188\n-189 out[26][0] = 0.0;\n-190 out[26][1] = 0.0;\n-191 out[26][2] = 96.0*in[2] - 144.0*in[0]*in[2] - 144.0*in[1]*in[2] + 216.0*in\n-[0]*in[1]*in[2] - 96.0*in[2]*in[2] + 144.0*in[0]*in[2]*in[2] + 144.0*in[1]*in\n-[2]*in[2] - 216.0*in[0]*in[1]*in[2]*in[2];\n-192\n-193 out[27][0] = -144.0*in[0] + 288.0*in[0]*in[1] + 216.0*in[0]*in[2] -\n-432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 288.0*in[0]*in[0]*in[1] -\n-216.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2];\n-194 out[27][1] = 0.0;\n-195 out[27][2] = 0.0;\n-196\n-197 out[28][0] = -144.0*in[0] + 216.0*in[0]*in[1] + 288.0*in[0]*in[2] -\n-432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[1] -\n-288.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2];\n-198 out[28][1] = 0.0;\n-199 out[28][2] = 0.0;\n-200\n-201 out[29][0] = 0.0;\n-202 out[29][1] = -144.0*in[1] + 288.0*in[0]*in[1] + 216.0*in[1]*in[2] -\n-432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 288.0*in[0]*in[1]*in[1] -\n-216.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2];\n-203 out[29][2] = 0.0;\n-204\n-205 out[30][0] = 0.0;\n-206 out[30][1] = -144.0*in[1] + 216.0*in[0]*in[1] + 288.0*in[1]*in[2] -\n-432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 216.0*in[0]*in[1]*in[1] -\n-288.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2];\n-207 out[30][2] = 0.0;\n-208\n-209 out[31][0] = 0.0;\n-210 out[31][1] = 0.0;\n-211 out[31][2] =-144.0*in[2] + 288.0*in[0]*in[2] + 216.0*in[1]*in[2] - 432.0*in\n-[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 288.0*in[0]*in[2]*in[2] - 216.0*in[1]*in\n-[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2];\n-212\n-213 out[32][0] = 0.0;\n-214 out[32][1] = 0.0;\n-215 out[32][2] = -144.0*in[2] + 216.0*in[0]*in[2] + 288.0*in[1]*in[2] -\n-432.0*in[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 216.0*in[0]*in[2]*in[2] -\n-288.0*in[1]*in[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2];\n-216\n-217 out[33][0] = 216.0*in[0] - 432.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in\n-[0]*in[1]*in[2] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1] + 432.0*in[0]*in\n-[0]*in[2] - 864.0*in[0]*in[0]*in[1]*in[2];\n-218 out[33][1] = 0.0;\n-219 out[33][2] = 0.0;\n-220\n-221 out[34][0] = 0.0;\n-222 out[34][1] = 216.0*in[1] - 432.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in\n-[0]*in[1]*in[2] - 216.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1] + 432.0*in[1]*in\n-[1]*in[2] - 864.0*in[0]*in[1]*in[1]*in[2];\n-223 out[34][2] = 0.0;\n-224\n-225 out[35][0] = 0.0;\n-226 out[35][1] = 0.0;\n-227 out[35][2] = 216.0*in[2] - 432.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in\n-[0]*in[1]*in[2] - 216.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2] + 432.0*in[1]*in\n-[2]*in[2] - 864.0*in[0]*in[1]*in[2]*in[2];\n-228 }\n-229\n-_\b2_\b3_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-237 std::vector& out) const\n-238 {\n-239 out.resize(36);\n-240\n-241 out[0][0][0] = sign0*(-6.0*in[0] + 4);\n-242 out[0][0][1] = 0;\n-243 out[0][0][2] = 0;\n-244 out[0][1][0] = 0;\n-245 out[0][1][1] = 0;\n-246 out[0][1][2] = 0;\n-247 out[0][2][0] = 0;\n-248 out[0][2][1] = 0;\n-249 out[0][2][2] = 0;\n-250\n-251 out[1][0][0] = sign1*(-2 + 6.0*in[0]);\n-252 out[1][0][1] = 0;\n-253 out[1][0][2] = 0;\n-254 out[1][1][0] = 0;\n-255 out[1][1][1] = 0;\n-256 out[1][1][2] = 0;\n-257 out[1][2][0] = 0;\n-258 out[1][2][1] = 0;\n-259 out[1][2][2] = 0;\n-260\n-261 out[2][0][0] = 0;\n-262 out[2][0][1] = 0;\n-263 out[2][0][2] = 0;\n-264 out[2][1][0] = 0;\n-265 out[2][1][1] = sign2*(-6.0*in[1] + 4);\n-266 out[2][1][2] = 0;\n-267 out[2][2][0] = 0;\n-268 out[2][2][1] = 0;\n-269 out[2][2][2] = 0;\n-270\n-271 out[3][0][0] = 0;\n-272 out[3][0][1] = 0;\n-273 out[3][0][2] = 0;\n-274 out[3][1][0] = 0;\n-275 out[3][1][1] = sign3*(6.0*in[1] - 2);\n-276 out[3][1][2] = 0;\n-277 out[3][2][0] = 0;\n-278 out[3][2][1] = 0;\n-279 out[3][2][2] = 0;\n-280\n-281 out[4][0][0] = 0;\n-282 out[4][0][1] = 0;\n-283 out[4][0][2] = 0;\n-284 out[4][1][0] = 0;\n-285 out[4][1][1] = 0;\n-286 out[4][1][2] = 0;\n-287 out[4][2][0] = 0;\n-288 out[4][2][1] = 0;\n-289 out[4][2][2] = sign4*(-6.0*in[2] + 4);\n-290\n-291 out[5][0][0] = 0;\n-292 out[5][0][1] = 0;\n-293 out[5][0][2] = 0;\n-294 out[5][1][0] = 0;\n-295 out[5][1][1] = 0;\n-296 out[5][1][2] = 0;\n-297 out[5][2][0] = 0;\n-298 out[5][2][1] = 0;\n-299 out[5][2][2] = sign5*(6.0*in[2] - 2);\n-300\n-301 out[6][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 24.0*in[1] - 12.0;\n-302 out[6][0][1] = -18.0*in[0]*in[0] + 24.0*in[0] - 6;\n-303 out[6][0][2] = 0.0;\n-304 out[6][1][0] = 0.0;\n-305 out[6][1][1] = 0.0;\n-306 out[6][1][2] = 0.0;\n-307 out[6][2][0] = 0.0;\n-308 out[6][2][1] = 0.0;\n-309 out[6][2][2] = 0.0;\n-310\n-311 out[7][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 12.0*in[1] - 6.0;\n-312 out[7][0][1] = -18.0*in[0]*in[0] + 12.0*in[0];\n-313 out[7][0][2] = 0.0;\n-314 out[7][1][0] = 0.0;\n-315 out[7][1][1] = 0.0;\n-316 out[7][1][2] = 0.0;\n-317 out[7][2][0] = 0.0;\n-318 out[7][2][1] = 0.0;\n-319 out[7][2][2] = 0.0;\n-320\n-321 out[8][0][0] = 0.0;\n-322 out[8][0][1] = 0.0;\n-323 out[8][0][2] = 0.0;\n-324 out[8][1][0] = 18.0*in[1]*in[1] - 24.0*in[1] + 6.0;\n-325 out[8][1][1] = 36.0*in[0]*in[1] - 18.0*in[1] - 24.0*in[0] + 12.0;\n-326 out[8][1][2] = 0.0;\n-327 out[8][2][0] = 0.0;\n-328 out[8][2][1] = 0.0;\n-329 out[8][2][2] = 0.0;\n-330\n-331 out[9][0][0] = 0.0;\n-332 out[9][0][1] = 0.0;\n-333 out[9][0][2] = 0.0;\n-334 out[9][1][0] = -12.0*in[1] + 18.0*in[1]*in[1];\n-335 out[9][1][1] = 6.0 - 12.0*in[0] - 18.0*in[1] + 36.0*in[0]*in[1];;\n-336 out[9][1][2] = 0.0;\n-337 out[9][2][0] = 0.0;\n-338 out[9][2][1] = 0.0;\n-339 out[9][2][2] = 0.0;\n-340\n-341 out[10][0][0] = 0.0;\n-342 out[10][0][1] = 0.0;\n-343 out[10][0][2] = 0.0;\n-344 out[10][1][0] = 0.0;\n-345 out[10][1][1] = 0.0;\n-346 out[10][1][2] = 0.0;\n-347 out[10][2][0] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2];\n-348 out[10][2][1] = 0.0;\n-349 out[10][2][2] = 12.0 - 24.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2];\n-350\n-351 out[11][0][0] = 0.0;\n-352 out[11][0][1] = 0.0;\n-353 out[11][0][2] = 0.0;\n-354 out[11][1][0] = 0.0;\n-355 out[11][1][1] = 0.0;\n-356 out[11][1][2] = 0.0;\n-357 out[11][2][0] = -12.0*in[2] + 18.0*in[2]*in[2];\n-358 out[11][2][1] = 0.0;\n-359 out[11][2][2] = 6.0 - 12.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2];\n-360\n-361 out[12][0][0] = -12.0 + 24.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2];\n-362 out[12][0][1] = 0.0;\n-363 out[12][0][2] = -6.0 + 24.0*in[0] - 18.0*in[0]*in[0];\n-364 out[12][1][0] = 0.0;\n-365 out[12][1][1] = 0.0;\n-366 out[12][1][2] = 0.0;\n-367 out[12][2][0] = 0.0;\n-368 out[12][2][1] = 0.0;\n-369 out[12][2][2] = 0.0;\n-370\n-371 out[13][0][0] = -6.0 + 12.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2];\n-372 out[13][0][1] = 0.0;\n-373 out[13][0][2] = 12.0*in[0] - 18.0*in[0]*in[0];\n-374 out[13][1][0] = 0.0;\n-375 out[13][1][1] = 0.0;\n-376 out[13][1][2] = 0.0;\n-377 out[13][2][0] = 0.0;\n-378 out[13][2][1] = 0.0;\n-379 out[13][2][2] = 0.0;\n-380\n-381 out[14][0][0] = 0.0;\n-382 out[14][0][1] = 0.0;\n-383 out[14][0][2] = 0.0;\n-384 out[14][1][0] = 0.0;\n-385 out[14][1][1] = -12.0 + 24.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2];\n-386 out[14][1][2] = -6.0 + 24.0*in[1] - 18.0*in[1]*in[1];\n-387 out[14][2][0] = 0.0;\n-388 out[14][2][1] = 0.0;\n-389 out[14][2][2] = 0.0;\n-390\n-391 out[15][0][0] = 0.0;\n-392 out[15][0][1] = 0.0;\n-393 out[15][0][2] = 0.0;\n-394 out[15][1][0] = 0.0;\n-395 out[15][1][1] = -6.0 + 12.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2];\n-396 out[15][1][2] = 12.0*in[1] - 18.0*in[1]*in[1];\n-397 out[15][2][0] = 0.0;\n-398 out[15][2][1] = 0.0;\n-399 out[15][2][2] = 0.0;\n-400\n-401 out[16][0][0] = 0.0;\n-402 out[16][0][1] = 0.0;\n-403 out[16][0][2] = 0.0;\n-404 out[16][1][0] = 0.0;\n-405 out[16][1][1] = 0.0;\n-406 out[16][1][2] = 0.0;\n-407 out[16][2][0] = 0.0;\n-408 out[16][2][1] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2];\n-409 out[16][2][2] = 12.0 - 24.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2];\n-410\n-411 out[17][0][0] = 0.0;\n-412 out[17][0][1] = 0.0;\n-413 out[17][0][2] = 0.0;\n-414 out[17][1][0] = 0.0;\n-415 out[17][1][1] = 0.0;\n-416 out[17][1][2] = 0.0;\n-417 out[17][2][0] = 0.0;\n-418 out[17][2][1] = -12.0*in[2] + 18.0*in[2]*in[2];\n-419 out[17][2][2] = 6.0 - 12.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2];\n-420\n-421 out[18][0][0] = 36.0 - 72.0*in[1] - 72.0*in[2] + 144.0*in[1]*in[2] -\n-54.0*in[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2];\n-422 out[18][0][1] = 18.0 - 72.0*in[0] - 36.0*in[2] + 144.0*in[0]*in[2] +\n-54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[2];\n-423 out[18][0][2] = 18.0 - 72.0*in[0] - 36.0*in[1] + 144.0*in[0]*in[1] +\n-54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1];\n-424 out[18][1][0] = 0.0;\n-425 out[18][1][1] = 0.0;\n-426 out[18][1][2] = 0.0;\n-427 out[18][2][0] = 0.0;\n-428 out[18][2][1] = 0.0;\n-429 out[18][2][2] = 0.0;\n-430\n-431 out[19][0][0] = 18 - 36.0*in[1] - 36.0*in[2] + 72.0*in[1]*in[2] - 54.0*in\n-[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2];\n-432 out[19][0][1] = -36.0*in[0] + 72.0*in[0]*in[2] + 54.0*in[0]*in[0] -\n-108.0*in[0]*in[0]*in[2];\n-433 out[19][0][2] = -36.0*in[0] + 72.0*in[0]*in[1] + 54.0*in[0]*in[0] -\n-108.0*in[0]*in[0]*in[1];\n-434 out[19][1][0] = 0.0;\n-435 out[19][1][1] = 0.0;\n-436 out[19][1][2] = 0.0;\n-437 out[19][2][0] = 0.0;\n-438 out[19][2][1] = 0.0;\n-439 out[19][2][2] = 0.0;\n-440\n-441 out[20][0][0] = 0.0;\n-442 out[20][0][1] = 0.0;\n-443 out[20][0][2] = 0.0;\n-444 out[20][1][0] = -18.0 + 72.0*in[1] + 36.0*in[2] - 144.0*in[1]*in[2] -\n-54.0*in[1]*in[1] + 108.0*in[1]*in[1]*in[2];\n-445 out[20][1][1] = -36.0 + 72.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] +\n-54.0*in[1] - 108.0*in[1]*in[0] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];\n-446 out[20][1][2] = -18.0 + 36.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] -\n-54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1];\n-447 out[20][2][0] = 0.0;\n-448 out[20][2][1] = 0.0;\n-449 out[20][2][2] = 0.0;\n-450\n-451 out[21][0][0] = 0.0;\n-452 out[21][0][1] = 0.0;\n-453 out[21][0][2] = 0.0;\n-454 out[21][1][0] = 36.0*in[1] - 72.0*in[1]*in[2] - 54.0*in[1]*in[1] + 108.0*in\n-[1]*in[1]*in[2];\n-455 out[21][1][1] = -18.0 + 36.0*in[0] + 36.0*in[2] - 72.0*in[0]*in[2] +\n-54.0*in[1] - 108.0*in[0]*in[1] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];\n-456 out[21][1][2] = 36.0*in[1] - 72.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in\n-[0]*in[1]*in[1];\n-457 out[21][2][0] = 0.0;\n-458 out[21][2][1] = 0.0;\n-459 out[21][2][2] = 0.0;\n-460\n-461 out[22][0][0] = 0.0;\n-462 out[22][0][1] = 0.0;\n-463 out[22][0][2] = 0.0;\n-464 out[22][1][0] = 0.0;\n-465 out[22][1][1] = 0.0;\n-466 out[22][1][2] = 0.0;\n-467 out[22][2][0] = -18.0 + 36.0*in[1] + 72.0*in[2] - 144.0*in[1]*in[2] -\n-54.0*in[2]*in[2] + 108.0*in[1]*in[2]*in[2];\n-468 out[22][2][1] = -18.0 + 36.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] -\n-54.0*in[2]*in[2] + 108.0*in[0]*in[2]*in[2];\n-469 out[22][2][2] = -36.0 + 72.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] +\n-54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];\n-470\n-471 out[23][0][0] = 0.0;\n-472 out[23][0][1] = 0.0;\n-473 out[23][0][2] = 0.0;\n-474 out[23][1][0] = 0.0;\n-475 out[23][1][1] = 0.0;\n-476 out[23][1][2] = 0.0;\n-477 out[23][2][0] = 36.0*in[2] - 72.0*in[1]*in[2] - 54.0*in[2]*in[2] + 108.0*in\n-[1]*in[2]*in[2];\n-478 out[23][2][1] = 36.0*in[2] - 72.0*in[0]*in[2] - 54.0*in[2]*in[2] + 108.0*in\n-[0]*in[2]*in[2];\n-479 out[23][2][2] = -18.0 + 36.0*in[0] + 36.0*in[1] - 72.0*in[0]*in[1] +\n-54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];\n-480\n-481 out[24][0][0] = 96.0 - 144.0*in[1] - 144.0*in[2] + 216.0*in[1]*in[2] -\n-192.0*in[0] + 288.0*in[0]*in[1] + 288.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2];\n-482 out[24][0][1] = -144.0*in[0] + 216.0*in[0]*in[2] + 144.0*in[0]*in[0] -\n-216.0*in[0]*in[0]*in[2];\n-483 out[24][0][2] = -144.0*in[0] + 216.0*in[0]*in[1] + 144.0*in[0]*in[0] -\n-216.0*in[0]*in[0]*in[1];\n-484 out[24][1][0] = 0.0;\n-485 out[24][1][1] = 0.0;\n-486 out[24][1][2] = 0.0;\n-487 out[24][2][0] = 0.0;\n-488 out[24][2][1] = 0.0;\n-489 out[24][2][2] = 0.0;\n-490\n-491 out[25][0][0] = 0.0;\n-492 out[25][0][1] = 0.0;\n-493 out[25][0][2] = 0.0;\n-494 out[25][1][0] = -144.0*in[1] + 216.0*in[1]*in[2] + 144.0*in[1]*in[1] -\n-216.0*in[1]*in[1]*in[2];\n-495 out[25][1][1] = 96.0 - 144.0*in[0] - 144.0*in[2] + 216.0*in[0]*in[2] -\n-192.0*in[1] + 288.0*in[0]*in[1] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2];\n-496 out[25][1][2] = -144.0*in[1] + 216.0*in[0]*in[1] + 144.0*in[1]*in[1] -\n-216.0*in[0]*in[1]*in[1];\n-497 out[25][2][0] = 0.0;\n-498 out[25][2][1] = 0.0;\n-499 out[25][2][2] = 0.0;\n-500\n-501 out[26][0][0] = 0.0;\n-502 out[26][0][1] = 0.0;\n-503 out[26][0][2] = 0.0;\n-504 out[26][1][0] = 0.0;\n-505 out[26][1][1] = 0.0;\n-506 out[26][1][2] = 0.0;\n-507 out[26][2][0] = -144.0*in[2] + 216.0*in[1]*in[2] + 144.0*in[2]*in[2] -\n-216.0*in[1]*in[2]*in[2];\n-508 out[26][2][1] = -144.0*in[2] + 216.0*in[0]*in[2] + 144.0*in[2]*in[2] -\n-216.0*in[0]*in[2]*in[2];\n-509 out[26][2][2] = 96.0 - 144.0*in[0] - 144.0*in[1] + 216.0*in[0]*in[1] -\n-192.0*in[2] + 288.0*in[0]*in[2] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2];\n-510\n-511 out[27][0][0] = -144.0 + 288.0*in[1] + 216.0*in[2] - 432.0*in[1]*in[2] +\n-288.0*in[0] - 576.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2];\n-512 out[27][0][1] = 288.0*in[0] - 432.0*in[0]*in[2] - 288.0*in[0]*in[0] +\n-432.0*in[0]*in[0]*in[2];\n-513 out[27][0][2] = 216.0*in[0] - 432.0*in[0]*in[1] - 216.0*in[0]*in[0] +\n-432.0*in[0]*in[0]*in[1];\n-514 out[27][1][0] = 0.0;\n-515 out[27][1][1] = 0.0;\n-516 out[27][1][2] = 0.0;\n-517 out[27][2][0] = 0.0;\n-518 out[27][2][1] = 0.0;\n-519 out[27][2][2] = 0.0;\n-520\n-521 out[28][0][0] = -144.0 + 216.0*in[1] + 288.0*in[2] - 432.0*in[1]*in[2] +\n-288.0*in[0] - 432.0*in[0]*in[1] - 576.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2];\n-522 out[28][0][1] = 216.0*in[0] - 432.0*in[0]*in[2] - 216.0*in[0]*in[0] +\n-432.0*in[0]*in[0]*in[2];\n-523 out[28][0][2] = 288.0*in[0] - 432.0*in[0]*in[1] - 288.0*in[0]*in[0] +\n-432.0*in[0]*in[0]*in[1];\n-524 out[28][1][0] = 0.0;\n-525 out[28][1][1] = 0.0;\n-526 out[28][1][2] = 0.0;\n-527 out[28][2][0] = 0.0;\n-528 out[28][2][1] = 0.0;\n-529 out[28][2][2] = 0.0;\n-530\n-531 out[29][0][0] = 0.0;\n-532 out[29][0][1] = 0.0;\n-533 out[29][0][2] = 0.0;\n-534 out[29][1][0] = 288.0*in[1] - 432.0*in[1]*in[2] - 288.0*in[1]*in[1] +\n-432.0*in[1]*in[1]*in[2];\n-535 out[29][1][1] = -144.0 + 288.0*in[0] + 216.0*in[2] - 432.0*in[0]*in[2] +\n-288.0*in[1] - 576.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];\n-536 out[29][1][2] = 216.0*in[1] - 432.0*in[0]*in[1] - 216.0*in[1]*in[1] +\n-432.0*in[0]*in[1]*in[1];\n-537 out[29][2][0] = 0.0;\n-538 out[29][2][1] = 0.0;\n-539 out[29][2][2] = 0.0;\n-540\n-541 out[30][0][0] = 0.0;\n-542 out[30][0][1] = 0.0;\n-543 out[30][0][2] = 0.0;\n-544 out[30][1][0] = 216.0*in[1] - 432.0*in[1]*in[2] - 216.0*in[1]*in[1] +\n-432.0*in[1]*in[1]*in[2];\n-545 out[30][1][1] = -144.0 + 216.0*in[0] + 288.0*in[2] - 432.0*in[0]*in[2] +\n-288.0*in[1] - 432.0*in[0]*in[1] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];\n-546 out[30][1][2] = 288.0*in[1] - 432.0*in[0]*in[1] - 288.0*in[1]*in[1] +\n-432.0*in[0]*in[1]*in[1];\n-547 out[30][2][0] = 0.0;\n-548 out[30][2][1] = 0.0;\n-549 out[30][2][2] = 0.0;\n-550\n-551 out[31][0][0] = 0.0;\n-552 out[31][0][1] = 0.0;\n-553 out[31][0][2] = 0.0;\n-554 out[31][1][0] = 0.0;\n-555 out[31][1][1] = 0.0;\n-556 out[31][1][2] = 0.0;\n-557 out[31][2][0] = 288.0*in[2] - 432.0*in[1]*in[2] - 288.0*in[2]*in[2] +\n-432.0*in[1]*in[2]*in[2];\n-558 out[31][2][1] = 216.0*in[2] - 432.0*in[0]*in[2] - 216.0*in[2]*in[2] +\n-432.0*in[0]*in[2]*in[2];\n-559 out[31][2][2] = -144.0 + 288.0*in[0] + 216.0*in[1] - 432.0*in[0]*in[1] +\n-288.0*in[2] - 576.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];\n-560\n-561 out[32][0][0] = 0.0;\n-562 out[32][0][1] = 0.0;\n-563 out[32][0][2] = 0.0;\n-564 out[32][1][0] = 0.0;\n-565 out[32][1][1] = 0.0;\n-566 out[32][1][2] = 0.0;\n-567 out[32][2][0] = 216.0*in[2] - 432.0*in[1]*in[2] - 216.0*in[2]*in[2] +\n-432.0*in[1]*in[2]*in[2];\n-568 out[32][2][1] = 288.0*in[2] - 432.0*in[0]*in[2] - 288.0*in[2]*in[2] +\n-432.0*in[0]*in[2]*in[2];\n-569 out[32][2][2] = -144.0 + 216.0*in[0] + 288.0*in[1] - 432.0*in[0]*in[1] +\n-288.0*in[2] - 432.0*in[0]*in[2] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];\n-570\n-571 out[33][0][0] = 216.0 - 432.0*in[1] - 432.0*in[2] + 864.0*in[1]*in[2] -\n-432.0*in[0] + 864.0*in[0]*in[1] + 864.0*in[0]*in[2] - 1728.0*in[0]*in[1]*in[2];\n-572 out[33][0][1] = -432.0*in[0] + 864.0*in[0]*in[2] + 432.0*in[0]*in[0] -\n-864.0*in[0]*in[0]*in[2];\n-573 out[33][0][2] = -432.0*in[0] + 864.0*in[0]*in[1] + 432.0*in[0]*in[0] -\n-864.0*in[0]*in[0]*in[1];\n-574 out[33][1][0] = 0.0;\n-575 out[33][1][1] = 0.0;\n-576 out[33][1][2] = 0.0;\n-577 out[33][2][0] = 0.0;\n-578 out[33][2][1] = 0.0;\n-579 out[33][2][2] = 0.0;\n-580\n-581 out[34][0][0] = 0.0;\n-582 out[34][0][1] = 0.0;\n-583 out[34][0][2] = 0.0;\n-584 out[34][1][0] = -432.0*in[1] + 864.0*in[1]*in[2] + 432.0*in[1]*in[1] -\n-864.0*in[1]*in[1]*in[2];\n-585 out[34][1][1] = 216.0 - 432.0*in[0] - 432.0*in[2] + 864.0*in[0]*in[2] -\n-432.0*in[1] + 864.0*in[0]*in[1] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2];\n-586 out[34][1][2] = -432.0*in[1] + 864.0*in[0]*in[1] + 432.0*in[1]*in[1] -\n-864.0*in[0]*in[1]*in[1];\n-587 out[34][2][0] = 0.0;\n-588 out[34][2][1] = 0.0;\n-589 out[34][2][2] = 0.0;\n-590\n-591 out[35][0][0] = 0.0;\n-592 out[35][0][1] = 0.0;\n-593 out[35][0][2] = 0.0;\n-594 out[35][1][0] = 0.0;\n-595 out[35][1][1] = 0.0;\n-596 out[35][1][2] = 0.0;\n-597 out[35][2][0] = -432.0*in[2] + 864.0*in[1]*in[2] + 432.0*in[2]*in[2] -\n-864.0*in[1]*in[2]*in[2];\n-598 out[35][2][1] = -432.0*in[2] + 864.0*in[0]*in[2] + 432.0*in[2]*in[2] -\n-864.0*in[0]*in[2]*in[2];\n-599 out[35][2][2] = 216.0 - 432.0*in[0] - 432.0*in[1] + 864.0*in[0]*in[1] -\n-432.0*in[2] + 864.0*in[0]*in[2] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2];\n-600 }\n-601\n-_\b6_\b0_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-604 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-605 std::vector& out) const // return value\n-606 {\n-607 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-608 if (totalOrder == 0) {\n-609 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-610 } else {\n-611 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-612 }\n-613 }\n-614\n-_\b6_\b1_\b6 unsigned int _\bo_\br_\bd_\be_\br () const\n-617 {\n-618 return 3;\n-619 }\n-620\n-621 private:\n-622 R sign0, sign1, sign2, sign3, sign4, sign5;\n-623 };\n-624}\n-625#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+_\b2_\b3 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+24 {\n+25\n+26 public:\n+_\b2_\b8 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(8)\n+29 {\n+30 for (std::size_t i = 0; i < 4; ++i)\n+31 {\n+32 li[2*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+33 li[2*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+34 }\n+35 }\n+36\n+_\b3_\b8 std::size_t _\bs_\bi_\bz_\be () const\n+39 {\n+40 return 8;\n+41 }\n+42\n+_\b4_\b4 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+45 {\n+46 return li[i];\n+47 }\n+48\n+49 private:\n+50 std::vector li;\n+51 };\n+52}\n+53#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:603\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n-3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT1Cube3DLocalBasis(unsigned int s=0)\n-Make set number s, where 0 <= s < 64.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:236\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:616\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+BDM1Cube2DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube3dlocalcoefficients.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,37 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas1cube3dlocalcoefficients.hh File Reference
    \n+
    brezzidouglasmarini1cube2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n+
    #include <array>
    \n+#include <bitset>
    \n+#include <numeric>
    \n #include <vector>
    \n-#include "../../common/localkey.hh"
    \n+#include <dune/common/fmatrix.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT1Cube3DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on quadrilaterals. More...
    class  Dune::BDM1Cube2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas1cube3dlocalcoefficients.hh File Reference\n-#include \n+brezzidouglasmarini1cube2dlocalbasis.hh File Reference\n+#include \n+#include \n+#include \n #include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Raviart-Thomas-1 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube3dlocalcoefficients.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,85 +70,241 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube3dlocalcoefficients.hh
    \n+
    brezzidouglasmarini1cube2dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include "../../common/localkey.hh"
    \n+
    8#include <array>
    \n+
    9#include <bitset>
    \n+
    10#include <numeric>
    \n+
    11#include <vector>
    \n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    \n-\n-
    24 {
    \n-
    25
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for (std::size_t i = 0; i < 6; i++)
    \n-
    31 {
    \n-
    32 li[i] = LocalKey(i,1,0);
    \n-
    33 li[i + 6] = LocalKey(i,1,1);
    \n-
    34 li[i + 12] = LocalKey(i,1,2);
    \n-
    35 li[i + 18] = LocalKey(i,1,3);
    \n-
    36 }
    \n-
    37
    \n-
    38 for (std::size_t i = 0; i < 12; i++)
    \n-
    39 {
    \n-
    40 li[i + 24] = LocalKey(0,0,i);
    \n-
    41 }
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    \n-
    45 std::size_t size () const
    \n-
    46 {
    \n-
    47 return 36;
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    \n-
    51 const LocalKey& localKey (std::size_t i) const
    \n-
    52 {
    \n-
    53 return li[i];
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    56 private:
    \n-
    57 std::vector<LocalKey> li;
    \n-
    58 };
    \n+
    13#include <dune/common/fmatrix.hh>
    \n+
    14
    \n+
    15#include "../../common/localbasis.hh"
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    28 template<class D, class R>
    \n+
    \n+\n+
    30 {
    \n+
    31
    \n+
    32 public:
    \n+
    33 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    34 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    35
    \n+
    \n+\n+
    38 {
    \n+
    39 for (size_t i=0; i<4; i++)
    \n+
    40 sign_[i] = 1.0;
    \n+
    41 }
    \n+
    \n+
    42
    \n+
    \n+
    48 BDM1Cube2DLocalBasis (std::bitset<4> s)
    \n+
    49 {
    \n+
    50 for (size_t i=0; i<4; i++)
    \n+
    51 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+
    55 unsigned int size () const
    \n+
    56 {
    \n+
    57 return 8;
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+
    66 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    67 std::vector<typename Traits::RangeType>& out) const
    \n+
    68 {
    \n+
    69 out.resize(8);
    \n+
    70
    \n+
    71 out[0][0] = sign_[0]*(in[0] - 1.0);
    \n+
    72 out[0][1] = 0.0;
    \n+
    73 out[1][0] = 6.0*in[0]*in[1] - 3.0*in[0]-6*in[1] + 3.0;
    \n+
    74 out[1][1] = -3.0*in[1]*in[1] + 3.0*in[1];
    \n+
    75 out[2][0] = sign_[1]*(in[0]);
    \n+
    76 out[2][1] = 0.0;
    \n+
    77 out[3][0] = -6.0*in[0]*in[1] + 3.0*in[0];
    \n+
    78 out[3][1] = 3.0*in[1]*in[1] - 3.0*in[1];
    \n+
    79 out[4][0] = 0.0;
    \n+
    80 out[4][1] = sign_[2]*(in[1] - 1.0);
    \n+
    81 out[5][0] = 3.0*in[0]*in[0] - 3.0*in[0];
    \n+
    82 out[5][1] = -6.0*in[0]*in[1] + 6.0*in[0] + 3.0*in[1] - 3.0;
    \n+
    83 out[6][0] = 0.0;
    \n+
    84 out[6][1] = sign_[3]*(in[1]);
    \n+
    85 out[7][0] = -3.0*in[0]*in[0] + 3.0*in[0];
    \n+
    86 out[7][1] = 6.0*in[0]*in[1] - 3.0*in[1];
    \n+
    87 }
    \n+
    \n+
    88
    \n+
    \n+
    95 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    96 std::vector<typename Traits::JacobianType>& out) const
    \n+
    97 {
    \n+
    98 out.resize(8);
    \n+
    99
    \n+
    100 out[0][0][0] = sign_[0];
    \n+
    101 out[0][0][1] = 0.0;
    \n+
    102 out[0][1][0] = 0.0;
    \n+
    103 out[0][1][1] = 0.0;
    \n+
    104
    \n+
    105 out[1][0][0] = 6.0*in[1] - 3.0;
    \n+
    106 out[1][0][1] = 6.0*in[0] - 6.0;
    \n+
    107 out[1][1][0] = 0.0;
    \n+
    108 out[1][1][1] = -6.0*in[1] + 3.0;
    \n+
    109
    \n+
    110 out[2][0][0] = sign_[1];
    \n+
    111 out[2][0][1] = 0.0;
    \n+
    112 out[2][1][0] = 0.0;
    \n+
    113 out[2][1][1] = 0.0;
    \n+
    114
    \n+
    115 out[3][0][0] = -6.0*in[1] + 3.0;
    \n+
    116 out[3][0][1] = -6.0*in[0];
    \n+
    117 out[3][1][0] = 0.0;
    \n+
    118 out[3][1][1] = 6.0*in[1] - 3.0;
    \n+
    119
    \n+
    120 out[4][0][0] = 0.0;
    \n+
    121 out[4][0][1] = 0.0;
    \n+
    122 out[4][1][0] = 0.0;
    \n+
    123 out[4][1][1] = sign_[2];
    \n+
    124
    \n+
    125 out[5][0][0] = 6.0*in[0] - 3.0;
    \n+
    126 out[5][0][1] = 0.0;
    \n+
    127 out[5][1][0] = -6.0*in[1] + 6.0;
    \n+
    128 out[5][1][1] = -6.0*in[0] + 3.0;
    \n+
    129
    \n+
    130 out[6][0][0] = 0.0;
    \n+
    131 out[6][0][1] = 0.0;
    \n+
    132 out[6][1][0] = 0.0;
    \n+
    133 out[6][1][1] = sign_[3];
    \n+
    134
    \n+
    135 out[7][0][0] = -6.0*in[0] + 3.0;
    \n+
    136 out[7][0][1] = 0.0;
    \n+
    137 out[7][1][0] = 6.0*in[1];
    \n+
    138 out[7][1][1] = 6.0*in[0] - 3.0;
    \n+
    139 }
    \n+
    \n+
    140
    \n+
    \n+
    142 void partial (const std::array<unsigned int, 2>& order,
    \n+
    143 const typename Traits::DomainType& in, // position
    \n+
    144 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    145 {
    \n+
    146 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    147 if (totalOrder == 0) {
    \n+
    148 evaluateFunction(in, out);
    \n+
    149 } else if (totalOrder == 1) {
    \n+
    150 out.resize(size());
    \n+
    151 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    152
    \n+
    153 switch (direction) {
    \n+
    154 case 0:
    \n+
    155 out[0][0] = sign_[0];
    \n+
    156 out[0][1] = 0.0;
    \n+
    157
    \n+
    158 out[1][0] = 6.0*in[1] - 3.0;
    \n+
    159 out[1][1] = 0.0;
    \n+
    160
    \n+
    161 out[2][0] = sign_[1];
    \n+
    162 out[2][1] = 0.0;
    \n+
    163
    \n+
    164 out[3][0] = -6.0*in[1] + 3.0;
    \n+
    165 out[3][1] = 0.0;
    \n+
    166
    \n+
    167 out[4][0] = 0.0;
    \n+
    168 out[4][1] = 0.0;
    \n+
    169
    \n+
    170 out[5][0] = 6.0*in[0] - 3.0;
    \n+
    171 out[5][1] = -6.0*in[1] + 6.0;
    \n+
    172
    \n+
    173 out[6][0] = 0.0;
    \n+
    174 out[6][1] = 0.0;
    \n+
    175
    \n+
    176 out[7][0] = -6.0*in[0] + 3.0;
    \n+
    177 out[7][1] = 6.0*in[1];
    \n+
    178 break;
    \n+
    179 case 1:
    \n+
    180 out[0][0] = 0.0;
    \n+
    181 out[0][1] = 0.0;
    \n+
    182
    \n+
    183 out[1][0] = 6.0*in[0] - 6.0;
    \n+
    184 out[1][1] = -6.0*in[1] + 3.0;
    \n+
    185
    \n+
    186 out[2][0] = 0.0;
    \n+
    187 out[2][1] = 0.0;
    \n+
    188
    \n+
    189 out[3][0] = -6.0*in[0];
    \n+
    190 out[3][1] = 6.0*in[1] - 3.0;
    \n+
    191
    \n+
    192 out[4][0] = 0.0;
    \n+
    193 out[4][1] = sign_[2];
    \n+
    194
    \n+
    195 out[5][0] = 0.0;
    \n+
    196 out[5][1] = -6.0*in[0] + 3.0;
    \n+
    197
    \n+
    198 out[6][0] = 0.0;
    \n+
    199 out[6][1] = sign_[3];
    \n+
    200
    \n+
    201 out[7][0] = 0.0;
    \n+
    202 out[7][1] = 6.0*in[0] - 3.0;
    \n+
    203 break;
    \n+
    204 default:
    \n+
    205 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    206 }
    \n+
    207 } else {
    \n+
    208 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    209 }
    \n+
    210 }
    \n+
    \n+
    211
    \n+
    \n+
    213 unsigned int order () const
    \n+
    214 {
    \n+
    215 return 2;
    \n+
    216 }
    \n+
    \n+
    217
    \n+
    218 private:
    \n+
    219 std::array<R,4> sign_;
    \n+
    220 };
    \n
    \n-
    59}
    \n-
    60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n+
    221}
    \n+
    222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for Raviart-Thomas-1 elements on quadrilaterals.
    Definition raviartthomas1cube3dlocalcoefficients.hh:24
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas1cube3dlocalcoefficients.hh:45
    \n-
    RT1Cube3DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas1cube3dlocalcoefficients.hh:28
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas1cube3dlocalcoefficients.hh:51
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:30
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:95
    \n+
    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
    \n+
    BDM1Cube2DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:37
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:34
    \n+
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:55
    \n+
    BDM1Cube2DLocalBasis(std::bitset< 4 > s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:48
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:213
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:66
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,83 +1,255 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n-raviartthomas1cube3dlocalcoefficients.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+brezzidouglasmarini1cube2dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \"../../common/localkey.hh\"\n+8#include \n+9#include \n+10#include \n+11#include \n 12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-_\b2_\b3 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n-25\n-26 public:\n-_\b2_\b8 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(36)\n-29 {\n-30 for (std::size_t i = 0; i < 6; i++)\n-31 {\n-32 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-33 li[i + 6] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-34 li[i + 12] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n-35 li[i + 18] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,3);\n-36 }\n-37\n-38 for (std::size_t i = 0; i < 12; i++)\n-39 {\n-40 li[i + 24] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n+13#include \n+14\n+15#include \"../../common/localbasis.hh\"\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+28 template\n+_\b2_\b9 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+30 {\n+31\n+32 public:\n+33 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n+FieldVector,\n+_\b3_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+35\n+_\b3_\b7 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs ()\n+38 {\n+39 for (size_t i=0; i<4; i++)\n+40 sign_[i] = 1.0;\n 41 }\n-42 }\n-43\n-_\b4_\b5 std::size_t _\bs_\bi_\bz_\be () const\n-46 {\n-47 return 36;\n-48 }\n-49\n-_\b5_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-52 {\n-53 return li[i];\n-54 }\n-55\n-56 private:\n-57 std::vector li;\n-58 };\n-59}\n-60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH\n+42\n+_\b4_\b8 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s)\n+49 {\n+50 for (size_t i=0; i<4; i++)\n+51 sign_[i] = s[i] ? -1.0 : 1.0;\n+52 }\n+53\n+_\b5_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+56 {\n+57 return 8;\n+58 }\n+59\n+_\b6_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+67 std::vector& out) const\n+68 {\n+69 out.resize(8);\n+70\n+71 out[0][0] = sign_[0]*(in[0] - 1.0);\n+72 out[0][1] = 0.0;\n+73 out[1][0] = 6.0*in[0]*in[1] - 3.0*in[0]-6*in[1] + 3.0;\n+74 out[1][1] = -3.0*in[1]*in[1] + 3.0*in[1];\n+75 out[2][0] = sign_[1]*(in[0]);\n+76 out[2][1] = 0.0;\n+77 out[3][0] = -6.0*in[0]*in[1] + 3.0*in[0];\n+78 out[3][1] = 3.0*in[1]*in[1] - 3.0*in[1];\n+79 out[4][0] = 0.0;\n+80 out[4][1] = sign_[2]*(in[1] - 1.0);\n+81 out[5][0] = 3.0*in[0]*in[0] - 3.0*in[0];\n+82 out[5][1] = -6.0*in[0]*in[1] + 6.0*in[0] + 3.0*in[1] - 3.0;\n+83 out[6][0] = 0.0;\n+84 out[6][1] = sign_[3]*(in[1]);\n+85 out[7][0] = -3.0*in[0]*in[0] + 3.0*in[0];\n+86 out[7][1] = 6.0*in[0]*in[1] - 3.0*in[1];\n+87 }\n+88\n+_\b9_\b5 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+96 std::vector& out) const\n+97 {\n+98 out.resize(8);\n+99\n+100 out[0][0][0] = sign_[0];\n+101 out[0][0][1] = 0.0;\n+102 out[0][1][0] = 0.0;\n+103 out[0][1][1] = 0.0;\n+104\n+105 out[1][0][0] = 6.0*in[1] - 3.0;\n+106 out[1][0][1] = 6.0*in[0] - 6.0;\n+107 out[1][1][0] = 0.0;\n+108 out[1][1][1] = -6.0*in[1] + 3.0;\n+109\n+110 out[2][0][0] = sign_[1];\n+111 out[2][0][1] = 0.0;\n+112 out[2][1][0] = 0.0;\n+113 out[2][1][1] = 0.0;\n+114\n+115 out[3][0][0] = -6.0*in[1] + 3.0;\n+116 out[3][0][1] = -6.0*in[0];\n+117 out[3][1][0] = 0.0;\n+118 out[3][1][1] = 6.0*in[1] - 3.0;\n+119\n+120 out[4][0][0] = 0.0;\n+121 out[4][0][1] = 0.0;\n+122 out[4][1][0] = 0.0;\n+123 out[4][1][1] = sign_[2];\n+124\n+125 out[5][0][0] = 6.0*in[0] - 3.0;\n+126 out[5][0][1] = 0.0;\n+127 out[5][1][0] = -6.0*in[1] + 6.0;\n+128 out[5][1][1] = -6.0*in[0] + 3.0;\n+129\n+130 out[6][0][0] = 0.0;\n+131 out[6][0][1] = 0.0;\n+132 out[6][1][0] = 0.0;\n+133 out[6][1][1] = sign_[3];\n+134\n+135 out[7][0][0] = -6.0*in[0] + 3.0;\n+136 out[7][0][1] = 0.0;\n+137 out[7][1][0] = 6.0*in[1];\n+138 out[7][1][1] = 6.0*in[0] - 3.0;\n+139 }\n+140\n+_\b1_\b4_\b2 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+143 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+144 std::vector& out) const // return value\n+145 {\n+146 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+147 if (totalOrder == 0) {\n+148 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+149 } else if (totalOrder == 1) {\n+150 out.resize(_\bs_\bi_\bz_\be());\n+151 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n+152\n+153 switch (direction) {\n+154 case 0:\n+155 out[0][0] = sign_[0];\n+156 out[0][1] = 0.0;\n+157\n+158 out[1][0] = 6.0*in[1] - 3.0;\n+159 out[1][1] = 0.0;\n+160\n+161 out[2][0] = sign_[1];\n+162 out[2][1] = 0.0;\n+163\n+164 out[3][0] = -6.0*in[1] + 3.0;\n+165 out[3][1] = 0.0;\n+166\n+167 out[4][0] = 0.0;\n+168 out[4][1] = 0.0;\n+169\n+170 out[5][0] = 6.0*in[0] - 3.0;\n+171 out[5][1] = -6.0*in[1] + 6.0;\n+172\n+173 out[6][0] = 0.0;\n+174 out[6][1] = 0.0;\n+175\n+176 out[7][0] = -6.0*in[0] + 3.0;\n+177 out[7][1] = 6.0*in[1];\n+178 break;\n+179 case 1:\n+180 out[0][0] = 0.0;\n+181 out[0][1] = 0.0;\n+182\n+183 out[1][0] = 6.0*in[0] - 6.0;\n+184 out[1][1] = -6.0*in[1] + 3.0;\n+185\n+186 out[2][0] = 0.0;\n+187 out[2][1] = 0.0;\n+188\n+189 out[3][0] = -6.0*in[0];\n+190 out[3][1] = 6.0*in[1] - 3.0;\n+191\n+192 out[4][0] = 0.0;\n+193 out[4][1] = sign_[2];\n+194\n+195 out[5][0] = 0.0;\n+196 out[5][1] = -6.0*in[0] + 3.0;\n+197\n+198 out[6][0] = 0.0;\n+199 out[6][1] = sign_[3];\n+200\n+201 out[7][0] = 0.0;\n+202 out[7][1] = 6.0*in[0] - 3.0;\n+203 break;\n+204 default:\n+205 DUNE_THROW(RangeError, \"Component out of range.\");\n+206 }\n+207 } else {\n+208 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+209 }\n+210 }\n+211\n+_\b2_\b1_\b3 unsigned int _\bo_\br_\bd_\be_\br () const\n+214 {\n+215 return 2;\n+216 }\n+217\n+218 private:\n+219 std::array sign_;\n+220 };\n+221}\n+222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT1Cube3DLocalCoefficients()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on the reference\n+quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM1Cube2DLocalBasis()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:51\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM1Cube2DLocalBasis(std::bitset< 4 > s)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:213\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube3dlocalinterpolation.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,33 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas1cube3dlocalinterpolation.hh File Reference
    \n+
    brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference
    \n
    \n
    \n
    #include <vector>
    \n #include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT1Cube3DLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference hexahedron. More...
    class  Dune::BDM1Cube2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas1cube3dlocalinterpolation.hh File Reference\n+brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference\n #include \n #include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference hexahedron.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube3dlocalinterpolation.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,154 +70,139 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas1cube3dlocalinterpolation.hh
    \n+
    brezzidouglasmarini1cube2dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n
    8#include <vector>
    \n
    9
    \n
    10#include <dune/geometry/quadraturerules.hh>
    \n
    11
    \n
    12namespace Dune
    \n
    13{
    \n-
    22 template<class LB>
    \n-
    \n-\n-
    24 {
    \n-
    25
    \n-
    26 public:
    \n-
    27
    \n-
    \n-
    33 RT1Cube3DLocalInterpolation (std::bitset<6> s = 0)
    \n-
    34 {
    \n-
    35 for (size_t i=0; i<6; i++)
    \n-
    36 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    37
    \n-
    38 n_[0] = {-1.0, 0.0, 0.0};
    \n-
    39 n_[1] = { 1.0, 0.0, 0.0};
    \n-
    40 n_[2] = { 0.0, -1.0, 0.0};
    \n-
    41 n_[3] = { 0.0, 1.0, 0.0};
    \n-
    42 n_[4] = { 0.0, 0.0, -1.0};
    \n-
    43 n_[5] = { 0.0, 0.0, 1.0};
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    54 template<class F, class C>
    \n-
    \n-
    55 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    56 {
    \n-
    57 // f gives v*outer normal at a point on the edge!
    \n-
    58 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    59 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    60
    \n-
    61 out.resize(36);
    \n-
    62 fill(out.begin(), out.end(), 0.0);
    \n-
    63
    \n-
    64 const int qOrder = 3;
    \n-
    65 const auto& rule1 = QuadratureRules<Scalar,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    66
    \n-
    67 for (auto&& qp : rule1)
    \n-
    68 {
    \n-
    69 Dune::FieldVector<Scalar,2> qPos = qp.position();
    \n-
    70 typename LB::Traits::DomainType localPos;
    \n-
    71
    \n-
    72 localPos = {0.0, qPos[0], qPos[1]};
    \n-
    73 auto y = f(localPos);
    \n-
    74 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*qp.weight()*sign_[0];
    \n-
    75 out[6] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[0] - 1.0)*qp.weight();
    \n-
    76 out[12] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n-
    77 out[18] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[0] - 1.0)*(2.0*qPos[1] - 1.0)*qp.weight();
    \n-
    78
    \n-
    79 localPos = {1.0, qPos[0], qPos[1]};
    \n-
    80 y = f(localPos);
    \n-
    81 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*qp.weight()*sign_[1];
    \n-
    82 out[7] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos[0])*qp.weight();
    \n-
    83 out[13] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos[1])*qp.weight();
    \n-
    84 out[19] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos[0])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n-
    85
    \n-
    86 localPos = {qPos[0], 0.0, qPos[1]};
    \n-
    87 y = f(localPos);
    \n-
    88 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*qp.weight()*sign_[2];
    \n-
    89 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(1.0 - 2.0*qPos[0])*qp.weight();
    \n-
    90 out[14] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n-
    91 out[20] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(1.0 - 2.0*qPos[0])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n-
    92
    \n-
    93 localPos = {qPos[0], 1.0, qPos[1]};
    \n-
    94 y = f(localPos);
    \n-
    95 out[3] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*qp.weight()*sign_[3];
    \n-
    96 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(2.0*qPos[0] - 1.0)*qp.weight();
    \n-
    97 out[15] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(1.0 - 2.0*qPos[1])*qp.weight();
    \n-
    98 out[21] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(2.0*qPos[0] - 1.0)*(2.0*qPos[1] - 1.0)*qp.weight();
    \n-
    99
    \n-
    100 localPos = {qPos[0], qPos[1], 0.0};
    \n-
    101 y = f(localPos);
    \n-
    102 out[4] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*qp.weight()*sign_[4];
    \n-
    103 out[10] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos[0])*qp.weight();
    \n-
    104 out[16] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos[1])*qp.weight();
    \n-
    105 out[22] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos[0])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n-
    106
    \n-
    107 localPos = {qPos[0], qPos[1], 1.0};
    \n-
    108 y = f(localPos);
    \n-
    109 out[5] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*qp.weight()*sign_[5];
    \n-
    110 out[11] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[0] - 1.0)*qp.weight();
    \n-
    111 out[17] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n-
    112 out[23] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[0] - 1.0)*(2.0*qPos[1] - 1.0)*qp.weight();
    \n-
    113 }
    \n-
    114
    \n-
    115 const auto& rule2 = QuadratureRules<Vector,3>::rule(GeometryTypes::cube(3), qOrder);
    \n-
    116 for (auto&& qp : rule2)
    \n-
    117 {
    \n-
    118 FieldVector<double,3> qPos = qp.position();
    \n-
    119
    \n-
    120 auto y = f(qPos);
    \n-
    121 out[24] += y[0]*qp.weight();
    \n-
    122 out[25] += y[1]*qp.weight();
    \n-
    123 out[26] += y[2]*qp.weight();
    \n-
    124 out[27] += y[0]*qPos[1]*qp.weight();
    \n-
    125 out[28] += y[0]*qPos[2]*qp.weight();
    \n-
    126 out[29] += y[1]*qPos[0]*qp.weight();
    \n-
    127 out[30] += y[1]*qPos[2]*qp.weight();
    \n-
    128 out[31] += y[2]*qPos[0]*qp.weight();
    \n-
    129 out[32] += y[2]*qPos[1]*qp.weight();
    \n-
    130 out[33] += y[0]*qPos[1]*qPos[2]*qp.weight();
    \n-
    131 out[34] += y[1]*qPos[0]*qPos[2]*qp.weight();
    \n-
    132 out[35] += y[2]*qPos[0]*qPos[1]*qp.weight();
    \n-
    133 }
    \n-
    134 }
    \n-
    \n-
    135
    \n-
    136 private:
    \n-
    137 // Facet orientations
    \n-
    138 std::array<typename LB::Traits::RangeFieldType, 6> sign_;
    \n-
    139
    \n-
    140 // Facet normals
    \n-
    141 std::array<typename LB::Traits::DomainType, 6> n_;
    \n-
    142 };
    \n+
    14
    \n+
    23 template<class LB>
    \n+
    \n+\n+
    25 {
    \n+
    26
    \n+
    27 public:
    \n+
    \n+\n+
    30 {
    \n+
    31 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n+
    32 }
    \n+
    \n+
    33
    \n+
    \n+\n+
    40 {
    \n+
    41 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n+
    42 if (s & 1)
    \n+
    43 {
    \n+
    44 sign0 = -1.0;
    \n+
    45 }
    \n+
    46 if (s & 2)
    \n+
    47 {
    \n+
    48 sign1 = -1.0;
    \n+
    49 }
    \n+
    50 if (s & 4)
    \n+
    51 {
    \n+
    52 sign2 = -1.0;
    \n+
    53 }
    \n+
    54 if (s & 8)
    \n+
    55 {
    \n+
    56 sign3 = -1.0;
    \n+
    57 }
    \n+
    58
    \n+
    59 n0[0] = -1.0;
    \n+
    60 n0[1] = 0.0;
    \n+
    61 n1[0] = 1.0;
    \n+
    62 n1[1] = 0.0;
    \n+
    63 n2[0] = 0.0;
    \n+
    64 n2[1] = -1.0;
    \n+
    65 n3[0] = 0.0;
    \n+
    66 n3[1] = 1.0;
    \n+
    67 }
    \n+
    \n+
    68
    \n+
    77 template<typename F, typename C>
    \n+
    \n+
    78 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    79 {
    \n+
    80 // f gives v*outer normal at a point on the edge!
    \n+
    81 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    82 //typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    83
    \n+
    84 out.resize(8);
    \n+
    85 fill(out.begin(), out.end(), 0.0);
    \n+
    86
    \n+
    87 const int qOrder = 4;
    \n+
    88 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    89
    \n+
    90 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n+
    91 it != rule.end(); ++it)
    \n+
    92 {
    \n+
    93 Scalar qPos = it->position();
    \n+
    94 typename LB::Traits::DomainType localPos;
    \n+
    95
    \n+
    96 localPos[0] = 0.0;
    \n+
    97 localPos[1] = qPos;
    \n+
    98 auto y = f(localPos);
    \n+
    99 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n+
    100 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    101
    \n+
    102 localPos[0] = 1.0;
    \n+
    103 localPos[1] = qPos;
    \n+
    104 y = f(localPos);
    \n+
    105 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
    \n+
    106 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    107
    \n+
    108 localPos[0] = qPos;
    \n+
    109 localPos[1] = 0.0;
    \n+
    110 y = f(localPos);
    \n+
    111 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n+
    112 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    113
    \n+
    114 localPos[0] = qPos;
    \n+
    115 localPos[1] = 1.0;
    \n+
    116 y = f(localPos);
    \n+
    117 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n+
    118 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    119 }
    \n+
    120 }
    \n+
    \n+
    121
    \n+
    122 private:
    \n+
    123 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n+
    124 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n+
    125 };
    \n
    \n-
    143}
    \n-
    144#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \n+
    126}
    \n+
    127#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalinterpolation.hh:24
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas1cube3dlocalinterpolation.hh:55
    \n-
    RT1Cube3DLocalInterpolation(std::bitset< 6 > s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas1cube3dlocalinterpolation.hh:33
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:25
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:78
    \n+
    BDM1Cube2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:39
    \n+
    BDM1Cube2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:29
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,175 +1,138 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n-raviartthomas1cube3dlocalinterpolation.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+brezzidouglasmarini1cube2dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH\n 7\n 8#include \n 9\n 10#include \n 11\n 12namespace _\bD_\bu_\bn_\be\n 13{\n-22 template\n-_\b2_\b3 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-24 {\n-25\n-26 public:\n-27\n-_\b3_\b3 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<6> s = 0)\n-34 {\n-35 for (size_t i=0; i<6; i++)\n-36 sign_[i] = (s[i]) ? -1.0 : 1.0;\n-37\n-38 n_[0] = {-1.0, 0.0, 0.0};\n-39 n_[1] = { 1.0, 0.0, 0.0};\n-40 n_[2] = { 0.0, -1.0, 0.0};\n-41 n_[3] = { 0.0, 1.0, 0.0};\n-42 n_[4] = { 0.0, 0.0, -1.0};\n-43 n_[5] = { 0.0, 0.0, 1.0};\n-44 }\n-45\n-54 template\n-_\b5_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-56 {\n-57 // f gives v*outer normal at a point on the edge!\n-58 typedef typename LB::Traits::RangeFieldType Scalar;\n-59 typedef typename LB::Traits::DomainFieldType Vector;\n-60\n-61 out.resize(36);\n-62 fill(out.begin(), out.end(), 0.0);\n-63\n-64 const int qOrder = 3;\n-65 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(2),\n-qOrder);\n-66\n-67 for (auto&& qp : rule1)\n-68 {\n-69 Dune::FieldVector qPos = qp.position();\n-70 typename LB::Traits::DomainType localPos;\n-71\n-72 localPos = {0.0, qPos[0], qPos[1]};\n-73 auto y = f(localPos);\n-74 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*qp.weight()*sign_\n-[0];\n-75 out[6] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[0] -\n-1.0)*qp.weight();\n-76 out[12] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[1] -\n-1.0)*qp.weight();\n-77 out[18] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[0] -\n-1.0)*(2.0*qPos[1] - 1.0)*qp.weight();\n-78\n-79 localPos = {1.0, qPos[0], qPos[1]};\n-80 y = f(localPos);\n-81 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*qp.weight()*sign_\n-[1];\n-82 out[7] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos\n-[0])*qp.weight();\n-83 out[13] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos\n-[1])*qp.weight();\n-84 out[19] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos\n-[0])*(2.0*qPos[1] - 1.0)*qp.weight();\n-85\n-86 localPos = {qPos[0], 0.0, qPos[1]};\n-87 y = f(localPos);\n-88 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*qp.weight()*sign_\n-[2];\n-89 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(1.0 - 2.0*qPos\n-[0])*qp.weight();\n-90 out[14] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(2.0*qPos[1] -\n-1.0)*qp.weight();\n-91 out[20] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(1.0 - 2.0*qPos\n-[0])*(2.0*qPos[1] - 1.0)*qp.weight();\n-92\n-93 localPos = {qPos[0], 1.0, qPos[1]};\n-94 y = f(localPos);\n-95 out[3] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*qp.weight()*sign_\n-[3];\n-96 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(2.0*qPos[0] -\n-1.0)*qp.weight();\n-97 out[15] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(1.0 - 2.0*qPos\n-[1])*qp.weight();\n-98 out[21] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(2.0*qPos[0] -\n-1.0)*(2.0*qPos[1] - 1.0)*qp.weight();\n-99\n-100 localPos = {qPos[0], qPos[1], 0.0};\n-101 y = f(localPos);\n-102 out[4] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*qp.weight()*sign_\n-[4];\n-103 out[10] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos\n-[0])*qp.weight();\n-104 out[16] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos\n-[1])*qp.weight();\n-105 out[22] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos\n-[0])*(2.0*qPos[1] - 1.0)*qp.weight();\n-106\n-107 localPos = {qPos[0], qPos[1], 1.0};\n-108 y = f(localPos);\n-109 out[5] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*qp.weight()*sign_\n-[5];\n-110 out[11] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[0] -\n-1.0)*qp.weight();\n-111 out[17] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[1] -\n-1.0)*qp.weight();\n-112 out[23] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[0] -\n-1.0)*(2.0*qPos[1] - 1.0)*qp.weight();\n-113 }\n-114\n-115 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(3),\n-qOrder);\n-116 for (auto&& qp : rule2)\n-117 {\n-118 FieldVector qPos = qp.position();\n-119\n-120 auto y = f(qPos);\n-121 out[24] += y[0]*qp.weight();\n-122 out[25] += y[1]*qp.weight();\n-123 out[26] += y[2]*qp.weight();\n-124 out[27] += y[0]*qPos[1]*qp.weight();\n-125 out[28] += y[0]*qPos[2]*qp.weight();\n-126 out[29] += y[1]*qPos[0]*qp.weight();\n-127 out[30] += y[1]*qPos[2]*qp.weight();\n-128 out[31] += y[2]*qPos[0]*qp.weight();\n-129 out[32] += y[2]*qPos[1]*qp.weight();\n-130 out[33] += y[0]*qPos[1]*qPos[2]*qp.weight();\n-131 out[34] += y[1]*qPos[0]*qPos[2]*qp.weight();\n-132 out[35] += y[2]*qPos[0]*qPos[1]*qp.weight();\n-133 }\n-134 }\n-135\n-136 private:\n-137 // Facet orientations\n-138 std::array sign_;\n-139\n-140 // Facet normals\n-141 std::array n_;\n-142 };\n-143}\n-144#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH\n+14\n+23 template\n+_\b2_\b4 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+25 {\n+26\n+27 public:\n+_\b2_\b9 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ()\n+30 {\n+31 sign0 = sign1 = sign2 = sign3 = 1.0;\n+32 }\n+33\n+_\b3_\b9 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (unsigned int s)\n+40 {\n+41 sign0 = sign1 = sign2 = sign3 = 1.0;\n+42 if (s & 1)\n+43 {\n+44 sign0 = -1.0;\n+45 }\n+46 if (s & 2)\n+47 {\n+48 sign1 = -1.0;\n+49 }\n+50 if (s & 4)\n+51 {\n+52 sign2 = -1.0;\n+53 }\n+54 if (s & 8)\n+55 {\n+56 sign3 = -1.0;\n+57 }\n+58\n+59 n0[0] = -1.0;\n+60 n0[1] = 0.0;\n+61 n1[0] = 1.0;\n+62 n1[1] = 0.0;\n+63 n2[0] = 0.0;\n+64 n2[1] = -1.0;\n+65 n3[0] = 0.0;\n+66 n3[1] = 1.0;\n+67 }\n+68\n+77 template\n+_\b7_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+79 {\n+80 // f gives v*outer normal at a point on the edge!\n+81 typedef typename LB::Traits::RangeFieldType Scalar;\n+82 //typedef typename LB::Traits::DomainFieldType Vector;\n+83\n+84 out.resize(8);\n+85 fill(out.begin(), out.end(), 0.0);\n+86\n+87 const int qOrder = 4;\n+88 const QuadratureRule& rule = QuadratureRules::rule\n+(GeometryTypes::cube(1), qOrder);\n+89\n+90 for (typename QuadratureRule::const_iterator it = rule.begin();\n+91 it != rule.end(); ++it)\n+92 {\n+93 Scalar qPos = it->position();\n+94 typename LB::Traits::DomainType localPos;\n+95\n+96 localPos[0] = 0.0;\n+97 localPos[1] = qPos;\n+98 auto y = f(localPos);\n+99 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n+100 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n+101\n+102 localPos[0] = 1.0;\n+103 localPos[1] = qPos;\n+104 y = f(localPos);\n+105 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;\n+106 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n+107\n+108 localPos[0] = qPos;\n+109 localPos[1] = 0.0;\n+110 y = f(localPos);\n+111 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n+112 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n+113\n+114 localPos[0] = qPos;\n+115 localPos[1] = 1.0;\n+116 y = f(localPos);\n+117 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n+118 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n+119 }\n+120 }\n+121\n+122 private:\n+123 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n+124 typename LB::Traits::DomainType n0, n1, n2, n3;\n+125 };\n+126}\n+127#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalinterpolation.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on the reference\n+quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n void interpolate(const F &f, std::vector< C > &out) const\n Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalinterpolation.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT1Cube3DLocalInterpolation(std::bitset< 6 > s=0)\n-Make set number s, where 0 <= s < 64.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalinterpolation.hh:33\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM1Cube2DLocalInterpolation(unsigned int s)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM1Cube2DLocalInterpolation()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:29\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0prismlocalcoefficients.hh File Reference\n+dune-localfunctions: brezzidouglasmarinicube.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,40 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0prismlocalcoefficients.hh File Reference
    \n+
    brezzidouglasmarinicube.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT0PrismLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on prisms. More...
    class  Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 1 >
     Brezzi-Douglas-Marini local finite elements for cubes with dimension 2 and order 1. 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::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 3, 1 >
     Brezzi-Douglas-Marini local finite elements for cubes with dimension 3 and order 1. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,34 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0prismlocalcoefficients.hh File Reference\n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+brezzidouglasmarinicube.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Raviart-Thomas-1 elements on prisms. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>\n+\u00a0 Brezzi-Douglas-Marini local finite elements for cubes with dimension 2\n+ and order 1. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>\n+\u00a0 Brezzi-Douglas-Marini local finite elements for cubes with dimension 2\n+ and order 2. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>\n+\u00a0 Brezzi-Douglas-Marini local finite elements for cubes with dimension 3\n+ and order 1. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0prismlocalcoefficients.hh Source File\n+dune-localfunctions: brezzidouglasmarinicube.hh Source File\n \n \n \n \n \n \n \n@@ -70,75 +70,112 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0prismlocalcoefficients.hh
    \n+
    brezzidouglasmarinicube.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include "../../common/localkey.hh"
    \n+\n+\n+\n+
    11
    \n
    12
    \n
    13namespace Dune
    \n
    14{
    \n-
    15
    \n-
    \n-\n-
    24 {
    \n+
    23 template<class D, class R, unsigned int dim, unsigned int order>
    \n+\n
    25
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for(std::size_t i=0; i< size(); i++)
    \n-
    31 li[i] = LocalKey(i,1,0);
    \n-
    32 }
    \n-
    \n-
    33
    \n+
    29 template<class D, class R>
    \n+
    \n+\n+
    31 : public BDM1Cube2DLocalFiniteElement<D, R>
    \n+
    32 {
    \n+
    33 public:
    \n
    \n-
    35 std::size_t size () const
    \n-
    36 {
    \n-
    37 return 5;
    \n-
    38 }
    \n-
    \n-
    39
    \n-
    \n-
    41 const LocalKey& localKey (std::size_t i) const
    \n-
    42 {
    \n-
    43 return li[i];
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    46 private:
    \n-
    47 std::vector<LocalKey> li;
    \n-
    48 };
    \n+\n+
    36 {}
    \n
    \n-
    49}
    \n-
    50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH
    \n+
    37
    \n+\n+
    46 };
    \n+
    \n+
    47
    \n+
    51 template<class D, class R>
    \n+
    \n+\n+
    53 : public BDM2Cube2DLocalFiniteElement<D, R>
    \n+
    54 {
    \n+
    55 public:
    \n+\n+
    59
    \n+\n+
    68 };
    \n+
    \n+
    69
    \n+
    73 template<class D, class R>
    \n+
    \n+\n+
    75 : public BDM1Cube3DLocalFiniteElement<D, R>
    \n+
    76 {
    \n+
    77 public:
    \n+\n+
    81
    \n+\n+
    90 };
    \n+
    \n+
    91
    \n+
    92} // namespace Dune
    \n+
    93
    \n+
    94#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for Raviart-Thomas-1 elements on prisms.
    Definition raviartthomas0prismlocalcoefficients.hh:24
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0prismlocalcoefficients.hh:41
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0prismlocalcoefficients.hh:35
    \n-
    RT0PrismLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0prismlocalcoefficients.hh:28
    \n+
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini1cube2d.hh:27
    \n+
    First order Brezzi-Douglas-Marini shape functions on hexahedron.
    Definition brezzidouglasmarini1cube3d.hh:27
    \n+
    Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2d.hh:27
    \n+
    Brezzi-Douglas-Marini local finite element for cubes.
    Definition brezzidouglasmarinicube.hh:24
    \n+
    BrezziDouglasMariniCubeLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinicube.hh:43
    \n+
    BrezziDouglasMariniCubeLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinicube.hh:35
    \n+
    BrezziDouglasMariniCubeLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinicube.hh:57
    \n+
    BrezziDouglasMariniCubeLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinicube.hh:65
    \n+
    BrezziDouglasMariniCubeLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinicube.hh:79
    \n+
    BrezziDouglasMariniCubeLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinicube.hh:87
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,73 +1,122 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n-raviartthomas0prismlocalcoefficients.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+brezzidouglasmarinicube.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \"../../common/localkey.hh\"\n+8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh>\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n+11\n 12\n 13namespace _\bD_\bu_\bn_\be\n 14{\n-15\n-_\b2_\b3 class _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n+23 template\n+_\b2_\b4 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n 25\n-26 public:\n-_\b2_\b8 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(_\bs_\bi_\bz_\be())\n-29 {\n-30 for(std::size_t i=0; i< _\bs_\bi_\bz_\be(); i++)\n-31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-32 }\n-33\n-_\b3_\b5 std::size_t _\bs_\bi_\bz_\be () const\n-36 {\n-37 return 5;\n-38 }\n-39\n-_\b4_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-42 {\n-43 return li[i];\n-44 }\n-45\n-46 private:\n-47 std::vector li;\n-48 };\n-49}\n-50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH\n+29 template\n+_\b3_\b0 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+31 : public _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+32 {\n+33 public:\n+_\b3_\b5 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+36 {}\n+37\n+_\b4_\b3 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+44 : _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+45 {}\n+46 };\n+47\n+51 template\n+_\b5_\b2 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+53 : public _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+54 {\n+55 public:\n+_\b5_\b7 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+58 {}\n+59\n+_\b6_\b5 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+66 : _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+67 {}\n+68 };\n+69\n+73 template\n+_\b7_\b4 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+75 : public _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+76 {\n+77 public:\n+_\b7_\b9 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+80 {}\n+81\n+_\b8_\b7 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+88 : _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+89 {}\n+90 };\n+91\n+92} // namespace Dune\n+93\n+94#endif // #ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on prisms.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT0PrismLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Brezzi-Douglas-Marini shape functions on hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Brezzi-Douglas-Marini local finite element for cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniCubeLocalFiniteElement(int s)\n+Constructor with a set of edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniCubeLocalFiniteElement()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniCubeLocalFiniteElement()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniCubeLocalFiniteElement(int s)\n+Constructor with a set of edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniCubeLocalFiniteElement()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BrezziDouglasMariniCubeLocalFiniteElement(int s)\n+Constructor with a set of edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:87\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0prismlocalinterpolation.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2cube2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0prismlocalinterpolation.hh File Reference
    \n+
    brezzidouglasmarini2cube2d.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT0PrismLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference prism. More...
    class  Dune::BDM2Cube2DLocalFiniteElement< D, R >
     Second order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0prismlocalinterpolation.hh File Reference\n-#include \n+brezzidouglasmarini2cube2d.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference prism.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0prismlocalinterpolation.hh Source File\n+dune-localfunctions: brezzidouglasmarini2cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,97 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0prismlocalinterpolation.hh
    \n+
    brezzidouglasmarini2cube2d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    20 template<class LB>
    \n-
    \n-\n-
    22 {
    \n-
    23
    \n-
    24 public:
    \n-
    25
    \n-
    \n-
    31 RT0PrismLocalInterpolation (std::bitset<5> s = 0)
    \n-
    32 {
    \n-
    33 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28
    \n+
    29 public:
    \n+\n+\n+\n+\n
    34
    \n-
    35 for (size_t i=0; i<5; i++)
    \n-
    36 sign[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    37
    \n-
    38 Scalar r = 1/std::sqrt(2);
    \n-
    39
    \n-
    40 n[0] = { 0.0, -1.0, 0.0};
    \n-
    41 n[1] = {-1.0, 0.0, 0.0};
    \n-
    42 n[2] = { r, r, 0.0};
    \n-
    43 n[3] = { 0.0, 0.0, -1.0};
    \n-
    44 n[4] = { 0.0, 0.0, 1.0};
    \n-
    45
    \n-
    46 c[0] = 1.0;
    \n-
    47 c[1] = 1.0;
    \n-
    48 c[2] = std::sqrt(2);
    \n-
    49 c[3] = 1/2.0;
    \n-
    50 c[4] = 1/2.0;
    \n-
    51
    \n-
    52 m[0] = { 0.5, 0.0, 0.5};
    \n-
    53 m[1] = { 0.0, 0.5, 0.5};
    \n-
    54 m[2] = { 0.5, 0.5, 0.5};
    \n-
    55 m[3] = { 1/3.0, 1/3.0, 0.0};
    \n-
    56 m[4] = { 1/3.0, 1/3.0, 1.0};
    \n+\n+
    38
    \n+
    \n+\n+
    45 basis(s),
    \n+
    46 interpolation(s)
    \n+
    47 {}
    \n+
    \n+
    48
    \n+
    \n+
    49 const typename Traits::LocalBasisType& localBasis () const
    \n+
    50 {
    \n+
    51 return basis;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    55 {
    \n+
    56 return coefficients;
    \n
    57 }
    \n
    \n
    58
    \n-
    67 template<class F, class C>
    \n-
    \n-
    68 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    69 {
    \n-
    70 out.resize(5);
    \n-
    71 for(int i=0; i<5; i++)
    \n-
    72 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];
    \n+
    \n+\n+
    60 {
    \n+
    61 return interpolation;
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    \n+
    65 unsigned int size () const
    \n+
    66 {
    \n+
    67 return basis.size();
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    \n+
    70 static constexpr GeometryType type ()
    \n+
    71 {
    \n+
    72 return GeometryTypes::quadrilateral;
    \n
    73 }
    \n
    \n
    74
    \n
    75 private:
    \n-
    76 // Facet orientations
    \n-
    77 std::array<typename LB::Traits::RangeFieldType, 5> sign;
    \n-
    78 // Facet area
    \n-
    79 std::array<typename LB::Traits::RangeFieldType, 5> c;
    \n-
    80
    \n-
    81 // Facet normals
    \n-
    82 std::array<typename LB::Traits::DomainType, 5> n;
    \n-
    83 // Facet midpoints
    \n-
    84 std::array<typename LB::Traits::DomainType, 5> m;
    \n-
    85 };
    \n-
    \n-
    86}
    \n-
    87#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH
    \n+\n+
    77 BDM2Cube2DLocalCoefficients coefficients;
    \n+\n+
    79 };
    \n+
    \n+
    80}
    \n+
    81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalinterpolation.hh:22
    \n-
    RT0PrismLocalInterpolation(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0prismlocalinterpolation.hh:31
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas0prismlocalinterpolation.hh:68
    \n+
    Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2d.hh:27
    \n+
    BDM2Cube2DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini2cube2d.hh:36
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini2cube2d.hh:65
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini2cube2d.hh:49
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini2cube2d.hh:59
    \n+
    static constexpr GeometryType type()
    Definition brezzidouglasmarini2cube2d.hh:70
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini2cube2d.hh:54
    \n+
    BDM2Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < ??
    Definition brezzidouglasmarini2cube2d.hh:44
    \n+
    LocalFiniteElementTraits< BDM2Cube2DLocalBasis< D, R >, BDM2Cube2DLocalCoefficients, BDM2Cube2DLocalInterpolation< BDM2Cube2DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini2cube2d.hh:33
    \n+
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:30
    \n+
    Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:24
    \n+
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:25
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,92 +1,139 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n-raviartthomas0prismlocalinterpolation.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+brezzidouglasmarini2cube2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH\n 7\n-8#include \n+8#include \n 9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-20 template\n-_\b2_\b1 class _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-22 {\n-23\n-24 public:\n-25\n-_\b3_\b1 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<5> s = 0)\n-32 {\n-33 typedef typename LB::Traits::RangeFieldType Scalar;\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+25 template\n+_\b2_\b6 class _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 {\n+28\n+29 public:\n+30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+31 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+32 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n 34\n-35 for (size_t i=0; i<5; i++)\n-36 sign[i] = (s[i]) ? -1.0 : 1.0;\n-37\n-38 Scalar r = 1/std::sqrt(2);\n-39\n-40 n[0] = { 0.0, -1.0, 0.0};\n-41 n[1] = {-1.0, 0.0, 0.0};\n-42 n[2] = { r, r, 0.0};\n-43 n[3] = { 0.0, 0.0, -1.0};\n-44 n[4] = { 0.0, 0.0, 1.0};\n-45\n-46 c[0] = 1.0;\n-47 c[1] = 1.0;\n-48 c[2] = std::sqrt(2);\n-49 c[3] = 1/2.0;\n-50 c[4] = 1/2.0;\n-51\n-52 m[0] = { 0.5, 0.0, 0.5};\n-53 m[1] = { 0.0, 0.5, 0.5};\n-54 m[2] = { 0.5, 0.5, 0.5};\n-55 m[3] = { 1/3.0, 1/3.0, 0.0};\n-56 m[4] = { 1/3.0, 1/3.0, 1.0};\n+_\b3_\b6 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+37 {}\n+38\n+_\b4_\b4 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+45 basis(s),\n+46 interpolation(s)\n+47 {}\n+48\n+_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+50 {\n+51 return basis;\n+52 }\n+53\n+_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+55 {\n+56 return coefficients;\n 57 }\n 58\n-67 template\n-_\b6_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-69 {\n-70 out.resize(5);\n-71 for(int i=0; i<5; i++)\n-72 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];\n+_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+60 {\n+61 return interpolation;\n+62 }\n+63\n+_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+66 {\n+67 return basis.size();\n+68 }\n+69\n+_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+71 {\n+72 return GeometryTypes::quadrilateral;\n 73 }\n 74\n 75 private:\n-76 // Facet orientations\n-77 std::array sign;\n-78 // Facet area\n-79 std::array c;\n-80\n-81 // Facet normals\n-82 std::array n;\n-83 // Facet midpoints\n-84 std::array m;\n-85 };\n-86}\n-87#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH\n+76 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+77 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+78 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+79 };\n+80}\n+81#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference prism.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalinterpolation.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT0PrismLocalInterpolation(std::bitset< 5 > s=0)\n-Make set number s, where 0 <= s < 32.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalinterpolation.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalinterpolation.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM2Cube2DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM2Cube2DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < ??\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< BDM2Cube2DLocalBasis< D, R >,\n+BDM2Cube2DLocalCoefficients, BDM2Cube2DLocalInterpolation<\n+BDM2Cube2DLocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0prismlocalbasis.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2simplex2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,36 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    raviartthomas0prismlocalbasis.hh File Reference
    \n+
    brezzidouglasmarini2simplex2d.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT0PrismLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference prism. More...
    class  Dune::BDM2Simplex2DLocalFiniteElement< D, R >
     Second order Brezzi-Douglas-Marini shape functions on triangles. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0prismlocalbasis.hh File Reference\n-#include \n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+brezzidouglasmarini2simplex2d.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on the reference prism.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 Second order Brezzi-Douglas-Marini shape functions on triangles.\n _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0prismlocalbasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini2simplex2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,146 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0prismlocalbasis.hh
    \n+
    brezzidouglasmarini2simplex2d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12
    \n-
    13#include "../../common/localbasis.hh"
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n
    14
    \n
    15namespace Dune
    \n
    16{
    \n-
    26 template<class D, class R>
    \n-
    \n-\n-
    28 {
    \n-
    29
    \n-
    30 public:
    \n-
    31 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n-
    32 Dune::FieldMatrix<R,3,3> > Traits;
    \n-
    33
    \n-
    \n-
    39 RT0PrismLocalBasis (std::bitset<5> s = 0)
    \n-
    40 {
    \n-
    41 for (size_t i=0; i<size(); i++)
    \n-
    42 sign[i] = s[i] ? -1.0 : 1.0;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-
    46 unsigned int size () const
    \n-
    47 {
    \n-
    48 return 5;
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    57 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    58 std::vector<typename Traits::RangeType>& out) const
    \n-
    59 {
    \n-
    60 out.resize(5);
    \n-
    61
    \n-
    62 out[0] = { in[0], -1.0 + in[1], 0.0};
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28
    \n+
    29 public:
    \n+\n+\n+\n+\n+
    34
    \n+\n+
    38
    \n+
    \n+\n+
    45 basis(s),
    \n+
    46 interpolation(s)
    \n+
    47 {}
    \n+
    \n+
    48
    \n+
    \n+
    49 const typename Traits::LocalBasisType& localBasis () const
    \n+
    50 {
    \n+
    51 return basis;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    55 {
    \n+
    56 return coefficients;
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+\n+
    60 {
    \n+
    61 return interpolation;
    \n+
    62 }
    \n+
    \n
    63
    \n-
    64 out[1] = { -1.0 + in[0], in[1], 0.0};
    \n-
    65
    \n-
    66 out[2] = { in[0], in[1], 0.0};
    \n-
    67
    \n-
    68 out[3] = { 0.0, 0.0, -2.0 + 2.0*in[2]};
    \n-
    69
    \n-
    70 out[4] = { 0.0, 0.0, 2.0*in[2]};
    \n-
    71
    \n-
    72 for (std::size_t i=0; i<out.size(); i++)
    \n-
    73 out[i] *= sign[i];
    \n-
    74
    \n-
    75 }
    \n+
    \n+
    65 unsigned int size () const
    \n+
    66 {
    \n+
    67 return basis.size();
    \n+
    68 }
    \n
    \n-
    76
    \n-
    \n-
    83 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    84 std::vector<typename Traits::JacobianType>& out) const
    \n-
    85 {
    \n-
    86 out.resize(5);
    \n-
    87
    \n-
    88 for(int i=0; i<size(); i++)
    \n-
    89 for(int j=0; j<3; j++)
    \n-
    90 out[i][j] = {0.0, 0.0, 0.0};
    \n-
    91
    \n-
    92 out[0][0][0] = sign[0];
    \n-
    93 out[0][1][1] = sign[0];
    \n-
    94
    \n-
    95 out[1][0][0] = sign[1];
    \n-
    96 out[1][1][1] = sign[1];
    \n-
    97
    \n-
    98 out[2][0][0] = sign[2];
    \n-
    99 out[2][1][1] = sign[2];
    \n-
    100
    \n-
    101 out[3][2][2] = sign[3]*(2.0);
    \n-
    102
    \n-
    103 out[4][2][2] = sign[4]*(2.0);
    \n-
    104 }
    \n-
    \n-
    105
    \n-
    \n-
    107 void partial (const std::array<unsigned int, 3>& order,
    \n-
    108 const typename Traits::DomainType& in, // position
    \n-
    109 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    110 {
    \n-
    111 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    112 if (totalOrder == 0) {
    \n-
    113 evaluateFunction(in, out);
    \n-
    114 } else {
    \n-
    115 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    116 }
    \n-
    117 }
    \n-
    \n-
    118
    \n-
    \n-
    120 unsigned int order () const
    \n-
    121 {
    \n-
    122 return 1;
    \n-
    123 }
    \n-
    \n-
    124
    \n-
    125 private:
    \n-
    126 std::array<R,5> sign;
    \n-
    127 };
    \n+
    69
    \n+
    \n+
    70 static constexpr GeometryType type ()
    \n+
    71 {
    \n+
    72 return GeometryTypes::triangle;
    \n+
    73 }
    \n
    \n-
    128}
    \n-
    129#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH
    \n+
    74
    \n+
    75 private:
    \n+\n+\n+\n+
    79 };
    \n+
    \n+
    80}
    \n+
    81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalbasis.hh:28
    \n-
    RT0PrismLocalBasis(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0prismlocalbasis.hh:39
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas0prismlocalbasis.hh:57
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas0prismlocalbasis.hh:46
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas0prismlocalbasis.hh:120
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas0prismlocalbasis.hh:83
    \n-
    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 raviartthomas0prismlocalbasis.hh:107
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas0prismlocalbasis.hh:32
    \n+
    Second order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2d.hh:27
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini2simplex2d.hh:54
    \n+
    LocalFiniteElementTraits< BDM2Simplex2DLocalBasis< D, R >, BDM2Simplex2DLocalCoefficients, BDM2Simplex2DLocalInterpolation< BDM2Simplex2DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini2simplex2d.hh:33
    \n+
    BDM2Simplex2DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2d.hh:36
    \n+
    static constexpr GeometryType type()
    Definition brezzidouglasmarini2simplex2d.hh:70
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini2simplex2d.hh:49
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini2simplex2d.hh:59
    \n+
    BDM2Simplex2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini2simplex2d.hh:44
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini2simplex2d.hh:65
    \n+
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:30
    \n+
    Layout map for Brezzi-Douglas-Marini-2 elements on triangles.
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:24
    \n+
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:25
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,157 +1,143 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n-raviartthomas0prismlocalbasis.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+brezzidouglasmarini2simplex2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12\n-13#include \"../../common/localbasis.hh\"\n+8#include \n+9\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n 14\n 15namespace _\bD_\bu_\bn_\be\n 16{\n-26 template\n-_\b2_\b7 class _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-28 {\n-29\n-30 public:\n-31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n-FieldVector,\n-_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-33\n-_\b3_\b9 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<5> s = 0)\n-40 {\n-41 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n-42 sign[i] = s[i] ? -1.0 : 1.0;\n-43 }\n-44\n-_\b4_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-47 {\n-48 return 5;\n-49 }\n-50\n-_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-58 std::vector& out) const\n-59 {\n-60 out.resize(5);\n-61\n-62 out[0] = { in[0], -1.0 + in[1], 0.0};\n+25 template\n+_\b2_\b6 class _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 {\n+28\n+29 public:\n+30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+31 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+32 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b6 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+37 {}\n+38\n+_\b4_\b4 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+45 basis(s),\n+46 interpolation(s)\n+47 {}\n+48\n+_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+50 {\n+51 return basis;\n+52 }\n+53\n+_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+55 {\n+56 return coefficients;\n+57 }\n+58\n+_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+60 {\n+61 return interpolation;\n+62 }\n 63\n-64 out[1] = { -1.0 + in[0], in[1], 0.0};\n-65\n-66 out[2] = { in[0], in[1], 0.0};\n-67\n-68 out[3] = { 0.0, 0.0, -2.0 + 2.0*in[2]};\n+_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+66 {\n+67 return basis.size();\n+68 }\n 69\n-70 out[4] = { 0.0, 0.0, 2.0*in[2]};\n-71\n-72 for (std::size_t i=0; i& out) const\n-85 {\n-86 out.resize(5);\n-87\n-88 for(int i=0; i<_\bs_\bi_\bz_\be(); i++)\n-89 for(int j=0; j<3; j++)\n-90 out[i][j] = {0.0, 0.0, 0.0};\n-91\n-92 out[0][0][0] = sign[0];\n-93 out[0][1][1] = sign[0];\n-94\n-95 out[1][0][0] = sign[1];\n-96 out[1][1][1] = sign[1];\n-97\n-98 out[2][0][0] = sign[2];\n-99 out[2][1][1] = sign[2];\n-100\n-101 out[3][2][2] = sign[3]*(2.0);\n-102\n-103 out[4][2][2] = sign[4]*(2.0);\n-104 }\n-105\n-_\b1_\b0_\b7 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-108 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-109 std::vector& out) const // return value\n-110 {\n-111 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-112 if (totalOrder == 0) {\n-113 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-114 } else {\n-115 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-116 }\n-117 }\n-118\n-_\b1_\b2_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n-121 {\n-122 return 1;\n-123 }\n-124\n-125 private:\n-126 std::array sign;\n-127 };\n-128}\n-129#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH\n+75 private:\n+76 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+77 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+78 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> >\n+interpolation;\n+79 };\n+80}\n+81#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference prism.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT0PrismLocalBasis(std::bitset< 5 > s=0)\n-Make set number s, where 0 <= s < 32.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Brezzi-Douglas-Marini shape functions on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< BDM2Simplex2DLocalBasis< D, R >,\n+BDM2Simplex2DLocalCoefficients, BDM2Simplex2DLocalInterpolation<\n+BDM2Simplex2DLocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM2Simplex2DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM2Simplex2DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 8.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:120\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n-3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:32\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-2 elements on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomassimplexinterpolation.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,50 +65,37 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    raviartthomassimplexinterpolation.hh File Reference
    \n+
    brezzidouglasmarini1cube3dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <utility>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/typeindex.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/utility/interpolationhelper.hh>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n-#include <dune/localfunctions/orthonormal/orthonormalbasis.hh>
    \n+
    #include <array>
    \n+#include <bitset>
    \n+#include <numeric>
    \n+#include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::LocalCoefficientsContainer
     
    struct  Dune::RaviartThomasCoefficientsFactory< dim >
     
    struct  Dune::RTL2InterpolationBuilder< dim, Field >
     
    class  Dune::RaviartThomasL2Interpolation< dimension, F >
     An L2-based interpolation for Raviart Thomas. More...
     
    struct  Dune::RaviartThomasL2InterpolationFactory< dim, Field >
    class  Dune::BDM1Cube3DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,39 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomassimplexinterpolation.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+brezzidouglasmarini1cube3dlocalbasis.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b>\n-\u00a0 An L2-based interpolation for Raviart Thomas. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n+ hexahedron. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomassimplexinterpolation.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,547 +70,322 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomassimplexinterpolation.hh
    \n+
    brezzidouglasmarini1cube3dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <utility>
    \n-
    10
    \n-
    11#include <dune/common/exceptions.hh>
    \n+
    8#include <array>
    \n+
    9#include <bitset>
    \n+
    10#include <numeric>
    \n+
    11#include <vector>
    \n
    12
    \n-
    13#include <dune/geometry/quadraturerules.hh>
    \n-
    14#include <dune/geometry/referenceelements.hh>
    \n-
    15#include <dune/geometry/type.hh>
    \n-
    16#include <dune/geometry/typeindex.hh>
    \n-
    17
    \n-\n-\n-\n-\n-
    22
    \n-
    23namespace Dune
    \n-
    24{
    \n-
    25
    \n-
    26 // Internal Forward Declarations
    \n-
    27 // -----------------------------
    \n-
    28
    \n-
    29 template < unsigned int dim, class Field >
    \n-
    30 struct RaviartThomasL2InterpolationFactory;
    \n-
    31
    \n+
    13#include <dune/common/fmatrix.hh>
    \n+
    14
    \n+
    15#include "../../common/localbasis.hh"
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    29 template<class D, class R>
    \n+
    \n+\n+
    31 {
    \n
    32
    \n-
    33
    \n-
    34 // LocalCoefficientsContainer
    \n-
    35 // --------------------------
    \n-
    36
    \n-
    37 class LocalCoefficientsContainer
    \n-
    38 {
    \n-
    39 typedef LocalCoefficientsContainer This;
    \n-
    40
    \n-
    41 public:
    \n-
    42 template <class Setter>
    \n-
    \n-
    43 LocalCoefficientsContainer ( const Setter &setter )
    \n-
    44 {
    \n-
    45 setter.setLocalKeys(localKey_);
    \n-
    46 }
    \n-
    \n-
    47
    \n-
    \n-
    48 const LocalKey &localKey ( const unsigned int i ) const
    \n-
    49 {
    \n-
    50 assert( i < size() );
    \n-
    51 return localKey_[ i ];
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-
    54 std::size_t size () const
    \n-
    55 {
    \n-
    56 return localKey_.size();
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    59 private:
    \n-
    60 std::vector< LocalKey > localKey_;
    \n-
    61 };
    \n-
    62
    \n-
    63
    \n-
    64
    \n-
    65 // RaviartThomasCoefficientsFactory
    \n-
    66 // --------------------------------
    \n-
    67
    \n-
    68 template < unsigned int dim >
    \n-
    \n-\n-
    70 {
    \n-
    71 typedef std::size_t Key;
    \n-\n-
    73
    \n-
    74 template< GeometryType::Id geometryId >
    \n-
    \n-
    75 static Object *create( const Key &key )
    \n-
    76 {
    \n-
    77 typedef RaviartThomasL2InterpolationFactory< dim, double > InterpolationFactory;
    \n-
    78 if( !supports< geometryId >( key ) )
    \n-
    79 return nullptr;
    \n-
    80 typename InterpolationFactory::Object *interpolation = InterpolationFactory::template create< geometryId >( key );
    \n-
    81 Object *localKeys = new Object( *interpolation );
    \n-
    82 InterpolationFactory::release( interpolation );
    \n-
    83 return localKeys;
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    86 template< GeometryType::Id geometryId >
    \n-
    \n-
    87 static bool supports ( const Key &key )
    \n-
    88 {
    \n-
    89 return GeometryType(geometryId).isSimplex();
    \n-
    90 }
    \n-
    \n-
    91 static void release( Object *object ) { delete object; }
    \n-
    92 };
    \n-
    \n-
    93
    \n-
    94
    \n-
    95
    \n-
    96 // RTL2InterpolationBuilder
    \n-
    97 // ------------------------
    \n-
    98
    \n-
    99 // L2 Interpolation requires:
    \n-
    100 // - for element
    \n-
    101 // - test basis
    \n-
    102 // - for each face (dynamic)
    \n-
    103 // - test basis
    \n-
    104 // - normal
    \n-
    105 template< unsigned int dim, class Field >
    \n-
    \n-\n-
    107 {
    \n-
    108 static const unsigned int dimension = dim;
    \n-
    109
    \n-
    110 // for the dofs associated to the element
    \n-\n-\n-
    113
    \n-
    114 // for the dofs associated to the faces
    \n-\n-\n-
    117
    \n-
    118 // the normals of the faces
    \n-
    119 typedef FieldVector< Field, dimension > Normal;
    \n-
    120
    \n-\n-
    122
    \n-\n-\n-
    125
    \n-
    \n-\n-
    127 {
    \n-
    128 TestBasisFactory::release( testBasis_ );
    \n-
    129 for( FaceStructure &f : faceStructure_ )
    \n-\n-
    131 }
    \n-
    \n-
    132
    \n-
    133 GeometryType type () const { return geometry_; }
    \n-
    134
    \n-
    135 std::size_t order () const { return order_; }
    \n-
    136
    \n-
    137 // number of faces
    \n-
    138 unsigned int faceSize () const { return faceSize_; }
    \n+
    33 public:
    \n+\n+
    35 R,3,Dune::FieldVector<R,3>,
    \n+
    36 Dune::FieldMatrix<R,3,3> > Traits;
    \n+
    37
    \n+
    \n+\n+
    40 {
    \n+
    41 for (size_t i=0; i<6; i++)
    \n+
    42 sign_[i] = 1.0;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+
    50 BDM1Cube3DLocalBasis(std::bitset<6> s)
    \n+
    51 {
    \n+
    52 for (size_t i=0; i<6; i++)
    \n+
    53 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    \n+
    57 unsigned int size() const
    \n+
    58 {
    \n+
    59 return 18;
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+
    68 inline void evaluateFunction(const typename Traits::DomainType& in,
    \n+
    69 std::vector<typename Traits::RangeType>& out) const
    \n+
    70 {
    \n+
    71 out.resize(size());
    \n+
    72
    \n+
    73 out[0][0] = sign_[0] * (in[0] - 1.0);
    \n+
    74 out[0][1] = 0;
    \n+
    75 out[0][2] = 0;
    \n+
    76 out[1][0] = sign_[1] * in[0];
    \n+
    77 out[1][1] = 0;
    \n+
    78 out[1][2] = 0;
    \n+
    79 out[2][0] = 0;
    \n+
    80 out[2][1] = sign_[2] * (in[1] - 1.0);
    \n+
    81 out[2][2] = 0;
    \n+
    82 out[3][0] = 0;
    \n+
    83 out[3][1] = sign_[3] * in[1];
    \n+
    84 out[3][2] = 0;
    \n+
    85 out[4][0] = 0;
    \n+
    86 out[4][1] = 0;
    \n+
    87 out[4][2] = sign_[4] * (in[2] - 1.0);
    \n+
    88 out[5][0] = 0;
    \n+
    89 out[5][1] = 0;
    \n+
    90 out[5][2] = sign_[5] * in[2];
    \n+
    91 out[6][0] = 6.0 * in[0] * in[1] - 3 * in[0]-6 * in[1] + 3.0;
    \n+
    92 out[6][1] = -3.0 * in[1] * in[1] + 3 * in[1];
    \n+
    93 out[6][2] = 0;
    \n+
    94 out[7][0] = -6.0 * in[0] * in[1] + 3 * in[0];
    \n+
    95 out[7][1] = 3.0 * in[1] * in[1] - 3 * in[1];
    \n+
    96 out[7][2] = 0;
    \n+
    97 out[8][0] = 3.0 * in[0] * in[0] - 3 * in[0];
    \n+
    98 out[8][1] = -6.0 * in[0] * in[1] + 3 * in[1]+6 * in[0]-3.0;
    \n+
    99 out[8][2] = 0;
    \n+
    100 out[9][0] = -3.0 * in[0] * in[0] + 3 * in[0];
    \n+
    101 out[9][1] = 6.0 * in[0] * in[1] - 3 * in[1];
    \n+
    102 out[9][2] = 0;
    \n+
    103 out[10][0] = -3.0 * in[0] * in[0] + 3 * in[0];
    \n+
    104 out[10][1] = 0;
    \n+
    105 out[10][2] = 6.0 * in[0] * in[2]-6 * in[0]-3 * in[2] + 3.0;
    \n+
    106 out[11][0] = 3.0 * in[0] * in[0]-3 * in[0];
    \n+
    107 out[11][1] = 0;
    \n+
    108 out[11][2] = -6.0 * in[0] * in[2] + 3 * in[2];
    \n+
    109 out[12][0] = -6.0 * in[0] * in[2]+6 * in[2] + 3 * in[0]-3.0;
    \n+
    110 out[12][1] = 0;
    \n+
    111 out[12][2] = 3.0 * in[2] * in[2]-3 * in[2];
    \n+
    112 out[13][0] = -3 * in[0]+6 * in[0] * in[2];
    \n+
    113 out[13][1] = 0;
    \n+
    114 out[13][2] = -3.0 * in[2] * in[2] + 3 * in[2];
    \n+
    115 out[14][0] = 0;
    \n+
    116 out[14][1] = 6.0 * in[1] * in[2]-3 * in[1]-6 * in[2] + 3.0;
    \n+
    117 out[14][2] = -3 * in[2] * in[2] + 3 * in[2];
    \n+
    118 out[15][0] = 0;
    \n+
    119 out[15][1] = -6.0 * in[1] * in[2] + 3 * in[1];
    \n+
    120 out[15][2] = 3.0 * in[2] * in[2]-3 * in[2];
    \n+
    121 out[16][0] = 0;
    \n+
    122 out[16][1] = 3.0 * in[1] * in[1]-3 * in[1];
    \n+
    123 out[16][2] = -6.0 * in[1] * in[2] + 3 * in[2]+6 * in[1]-3.0;
    \n+
    124 out[17][0] = 0;
    \n+
    125 out[17][1] = -3.0 * in[1] * in[1] + 3 * in[1];
    \n+
    126 out[17][2] = 6.0 * in[1] * in[2] - 3.0 * in[2];
    \n+
    127 }
    \n+
    \n+
    128
    \n+
    \n+
    135 inline void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    136 std::vector<typename Traits::JacobianType>& out) const
    \n+
    137 {
    \n+
    138 out.resize(size());
    \n
    139
    \n-
    140 // basis associated to the element
    \n-
    141 TestBasis *testBasis () const { return testBasis_; }
    \n-
    142
    \n-
    143 // basis associated to face f
    \n-
    144 TestFaceBasis *testFaceBasis ( unsigned int f ) const { assert( f < faceSize() ); return faceStructure_[ f ].basis_; }
    \n-
    145
    \n-
    146 // normal of face f
    \n-
    147 const Normal normal ( unsigned int f ) const { assert( f < faceSize() ); return faceStructure_[ f ].normal_; }
    \n-
    148
    \n-
    149 template< GeometryType::Id geometryId >
    \n-
    \n-
    150 void build ( std::size_t order )
    \n-
    151 {
    \n-
    152 constexpr GeometryType geometry = geometryId;
    \n-
    153 geometry_ = geometry;
    \n-
    154 order_ = order;
    \n+
    140 out[0][0] = { sign_[0], 0, 0};
    \n+
    141 out[0][1] = { 0, 0, 0};
    \n+
    142 out[0][2] = { 0, 0, 0};
    \n+
    143
    \n+
    144 out[1][0] = { sign_[1], 0, 0};
    \n+
    145 out[1][1] = { 0, 0, 0};
    \n+
    146 out[1][2] = { 0, 0, 0};
    \n+
    147
    \n+
    148 out[2][0] = { 0, 0, 0};
    \n+
    149 out[2][1] = { 0, sign_[2], 0};
    \n+
    150 out[2][2] = { 0, 0, 0};
    \n+
    151
    \n+
    152 out[3][0] = { 0, 0, 0};
    \n+
    153 out[3][1] = { 0, sign_[3], 0};
    \n+
    154 out[3][2] = { 0, 0, 0};
    \n
    155
    \n-
    156 testBasis_ = (order > 0 ? TestBasisFactory::template create< geometry >( order-1 ) : nullptr);
    \n-
    157
    \n-
    158 const auto &refElement = ReferenceElements< Field, dimension >::general( type() );
    \n-
    159 faceSize_ = refElement.size( 1 );
    \n-
    160 faceStructure_.reserve( faceSize_ );
    \n-
    161 for( unsigned int face = 0; face < faceSize_; ++face )
    \n-
    162 {
    \n-
    163 /* For simplices or cubes of arbitrary dimension you could just use
    \n-
    164 *
    \n-
    165 * ```
    \n-
    166 * GeometryType faceGeometry = Impl::getBase(geometry_);
    \n-
    167 * TestFaceBasis *faceBasis = TestFaceBasisFactory::template create< faceGeometry >( order );
    \n-
    168 * ```
    \n-
    169 *
    \n-
    170 * For i.e. Prisms and Pyramids in 3d this does not work because they contain squares and triangles as faces.
    \n-
    171 * And depending on the dynamic face index a different face geometry is needed.
    \n-
    172 *
    \n-
    173 */
    \n-
    174 TestFaceBasis *faceBasis = Impl::toGeometryTypeIdConstant<dimension-1>(refElement.type( face, 1 ), [&](auto faceGeometryTypeId) {
    \n-
    175 return TestFaceBasisFactory::template create< decltype(faceGeometryTypeId)::value >( order );
    \n-
    176 });
    \n-
    177 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal( face ) );
    \n-
    178 }
    \n-
    179 assert( faceStructure_.size() == faceSize_ );
    \n-
    180 }
    \n-
    \n-
    181
    \n-
    182 private:
    \n-
    183 struct FaceStructure
    \n-
    184 {
    \n-
    185 FaceStructure( TestFaceBasis *tfb, const Normal n )
    \n-
    186 : basis_( tfb ), normal_( n )
    \n-
    187 {}
    \n-
    188
    \n-
    189 TestFaceBasis *basis_;
    \n-
    190 const Dune::FieldVector< Field, dimension > normal_;
    \n-
    191 };
    \n-
    192
    \n-
    193 std::vector< FaceStructure > faceStructure_;
    \n-
    194 TestBasis *testBasis_ = nullptr;
    \n-
    195 GeometryType geometry_;
    \n-
    196 unsigned int faceSize_;
    \n-
    197 std::size_t order_;
    \n-
    198 };
    \n-
    \n+
    156 out[4][0] = { 0, 0, 0};
    \n+
    157 out[4][1] = { 0, 0, 0};
    \n+
    158 out[4][2] = { 0, 0, sign_[4]};
    \n+
    159
    \n+
    160 out[5][0] = { 0, 0, 0};
    \n+
    161 out[5][1] = { 0, 0, 0};
    \n+
    162 out[5][2] = { 0, 0, sign_[5]};
    \n+
    163
    \n+
    164 out[6][0] = { 6*in[1]-3, 6*in[0]-6, 0};
    \n+
    165 out[6][1] = { 0, -6*in[1]+3, 0};
    \n+
    166 out[6][2] = { 0, 0, 0};
    \n+
    167
    \n+
    168 out[7][0] = {-6*in[1]+3, -6*in[0], 0};
    \n+
    169 out[7][1] = { 0, 6*in[1]-3, 0};
    \n+
    170 out[7][2] = { 0, 0, 0};
    \n+
    171
    \n+
    172 out[8][0] = { 6*in[0]-3, 0, 0};
    \n+
    173 out[8][1] = {-6*in[1]+6, -6*in[0]+3, 0};
    \n+
    174 out[8][2] = { 0, 0, 0};
    \n+
    175
    \n+
    176 out[9][0] = {-6*in[0]+3, 0, 0};
    \n+
    177 out[9][1] = { 6*in[1], 6*in[0]-3, 0};
    \n+
    178 out[9][2] = { 0, 0, 0};
    \n+
    179
    \n+
    180 out[10][0] = {-6*in[0]+3, 0, 0};
    \n+
    181 out[10][1] = { 0, 0, 0};
    \n+
    182 out[10][2] = { 6*in[2]-6, 0, 6*in[0]-3};
    \n+
    183
    \n+
    184 out[11][0] = { 6*in[0]-3, 0, 0};
    \n+
    185 out[11][1] = { 0, 0, 0};
    \n+
    186 out[11][2] = { -6*in[2], 0, -6*in[0]+3};
    \n+
    187
    \n+
    188 out[12][0] = {-6*in[2]+3, 0, -6*in[0]+6};
    \n+
    189 out[12][1] = { 0, 0, 0};
    \n+
    190 out[12][2] = { 0, 0, 6*in[2]-3};
    \n+
    191
    \n+
    192 out[13][0] = { 6*in[2]-3, 0, 6*in[0]};
    \n+
    193 out[13][1] = { 0, 0, 0};
    \n+
    194 out[13][2] = { 0, 0, -6*in[2]+3};
    \n+
    195
    \n+
    196 out[14][0] = { 0, 0, 0};
    \n+
    197 out[14][1] = { 0, 6*in[2]-3, 6*in[1]-6};
    \n+
    198 out[14][2] = { 0, 0, -6*in[2]+3};
    \n
    199
    \n-
    200
    \n-
    201
    \n-
    202 // RaviartThomasL2Interpolation
    \n-
    203 // ----------------------------
    \n-
    204
    \n-
    210 template< unsigned int dimension, class F>
    \n-
    \n-\n-
    212 : public InterpolationHelper< F ,dimension >
    \n-
    213 {
    \n-\n-\n-
    216
    \n-
    217 public:
    \n-
    218 typedef F Field;
    \n-\n-
    \n-\n-
    221 : order_(0),
    \n-
    222 size_(0)
    \n-
    223 {}
    \n-
    \n+
    200 out[15][0] = { 0, 0, 0};
    \n+
    201 out[15][1] = { 0, -6*in[2]+3, -6*in[1]};
    \n+
    202 out[15][2] = { 0, 0, 6*in[2]-3};
    \n+
    203
    \n+
    204 out[16][0] = { 0, 0, 0};
    \n+
    205 out[16][1] = { 0, 6*in[1]-3, 0};
    \n+
    206 out[16][2] = { 0, -6*in[2]+6, -6*in[1]+3};
    \n+
    207
    \n+
    208 out[17][0] = { 0, 0, 0};
    \n+
    209 out[17][1] = { 0, -6*in[1]+3, 0};
    \n+
    210 out[17][2] = { 0, 6*in[2], 6*in[1]-3};
    \n+
    211 }
    \n+
    \n+
    212
    \n+
    \n+
    214 void partial (const std::array<unsigned int, 3>& order,
    \n+
    215 const typename Traits::DomainType& in, // position
    \n+
    216 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    217 {
    \n+
    218 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    219 if (totalOrder == 0) {
    \n+
    220 evaluateFunction(in, out);
    \n+
    221 } else if (totalOrder == 1) {
    \n+
    222 out.resize(size());
    \n+
    223 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n
    224
    \n-
    225 template< class Function, class Vector,
    \n-
    226 decltype(std::declval<Vector>().size(),bool{}) = true,
    \n-
    227 decltype(std::declval<Vector>().resize(0u),bool{}) = true>
    \n-
    \n-
    228 void interpolate ( const Function &function, Vector &coefficients ) const
    \n-
    229 {
    \n-
    230 coefficients.resize(size());
    \n-
    231 typename Base::template Helper<Function,Vector,true> func( function,coefficients );
    \n-
    232 interpolate(func);
    \n-
    233 }
    \n-
    \n-
    234
    \n-
    235 template< class Basis, class Matrix,
    \n-
    236 decltype(std::declval<Matrix>().rows(),bool{}) = true,
    \n-
    237 decltype(std::declval<Matrix>().cols(),bool{}) = true,
    \n-
    238 decltype(std::declval<Matrix>().resize(0u,0u),bool{}) = true>
    \n-
    \n-
    239 void interpolate ( const Basis &basis, Matrix &matrix ) const
    \n-
    240 {
    \n-
    241 matrix.resize( size(), basis.size() );
    \n-
    242 typename Base::template Helper<Basis,Matrix,false> func( basis,matrix );
    \n-
    243 interpolate(func);
    \n-
    244 }
    \n-
    \n-
    245
    \n-
    \n-
    246 std::size_t order() const
    \n-
    247 {
    \n-
    248 return order_;
    \n-
    249 }
    \n-
    \n-
    \n-
    250 std::size_t size() const
    \n-
    251 {
    \n-
    252 return size_;
    \n-
    253 }
    \n-
    \n-
    254 template <GeometryType::Id geometryId>
    \n-
    \n-
    255 void build( std::size_t order )
    \n-
    256 {
    \n-
    257 size_ = 0;
    \n-
    258 order_ = order;
    \n-
    259 builder_.template build<geometryId>(order_);
    \n-
    260 if (builder_.testBasis())
    \n-
    261 size_ += dimension*builder_.testBasis()->size();
    \n-
    262 for ( unsigned int f=0; f<builder_.faceSize(); ++f )
    \n-
    263 if (builder_.testFaceBasis(f))
    \n-
    264 size_ += builder_.testFaceBasis(f)->size();
    \n-
    265 }
    \n-
    \n-
    266
    \n-
    \n-
    267 void setLocalKeys(std::vector< LocalKey > &keys) const
    \n-
    268 {
    \n-
    269 keys.resize(size());
    \n-
    270 unsigned int row = 0;
    \n-
    271 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n-
    272 {
    \n-
    273 if (builder_.faceSize())
    \n-
    274 for (unsigned int i=0; i<builder_.testFaceBasis(f)->size(); ++i,++row)
    \n-
    275 keys[row] = LocalKey(f,1,i);
    \n-
    276 }
    \n-
    277 if (builder_.testBasis())
    \n-
    278 for (unsigned int i=0; i<builder_.testBasis()->size()*dimension; ++i,++row)
    \n-
    279 keys[row] = LocalKey(0,0,i);
    \n-
    280 assert( row == size() );
    \n-
    281 }
    \n-
    \n-
    282
    \n-
    283 protected:
    \n-
    284 template< class Func, class Container, bool type >
    \n-
    \n-
    285 void interpolate ( typename Base::template Helper<Func,Container,type> &func ) const
    \n-
    286 {
    \n-
    287 const Dune::GeometryType geoType = builder_.type();
    \n-
    288
    \n-
    289 std::vector< Field > testBasisVal;
    \n-
    290
    \n-
    291 for (unsigned int i=0; i<size(); ++i)
    \n-
    292 for (unsigned int j=0; j<func.size(); ++j)
    \n-
    293 func.set(i,j,0);
    \n-
    294
    \n-
    295 unsigned int row = 0;
    \n-
    296
    \n-
    297 // boundary dofs:
    \n-
    298 typedef Dune::QuadratureRule<Field, dimension-1> FaceQuadrature;
    \n-
    299 typedef Dune::QuadratureRules<Field, dimension-1> FaceQuadratureRules;
    \n-
    300
    \n-
    301 const auto &refElement = Dune::ReferenceElements< Field, dimension >::general( geoType );
    \n-
    302
    \n-
    303 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n-
    304 {
    \n-
    305 if (!builder_.testFaceBasis(f))
    \n-
    306 continue;
    \n-
    307 testBasisVal.resize(builder_.testFaceBasis(f)->size());
    \n-
    308
    \n-
    309 const auto &geometry = refElement.template geometry< 1 >( f );
    \n-
    310 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );
    \n-
    311 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n-
    312
    \n-
    313 const unsigned int quadratureSize = faceQuad.size();
    \n-
    314 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    315 {
    \n-
    316 if (dimension>1)
    \n-
    317 builder_.testFaceBasis(f)->template evaluate<0>(faceQuad[qi].position(),testBasisVal);
    \n-
    318 else
    \n-
    319 testBasisVal[0] = 1.;
    \n-
    320 fillBnd( row, testBasisVal,
    \n-
    321 func.evaluate( geometry.global( faceQuad[qi].position() ) ),
    \n-
    322 builder_.normal(f), faceQuad[qi].weight(),
    \n-
    323 func);
    \n-
    324 }
    \n-
    325
    \n-
    326 row += builder_.testFaceBasis(f)->size();
    \n-
    327 }
    \n-
    328 // element dofs
    \n-
    329 if (builder_.testBasis())
    \n-
    330 {
    \n-
    331 testBasisVal.resize(builder_.testBasis()->size());
    \n-
    332
    \n-
    333 typedef Dune::QuadratureRule<Field, dimension> Quadrature;
    \n-
    334 typedef Dune::QuadratureRules<Field, dimension> QuadratureRules;
    \n-
    335 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );
    \n-
    336
    \n-
    337 const unsigned int quadratureSize = elemQuad.size();
    \n-
    338 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    339 {
    \n-
    340 builder_.testBasis()->template evaluate<0>(elemQuad[qi].position(),testBasisVal);
    \n-
    341 fillInterior( row, testBasisVal,
    \n-
    342 func.evaluate(elemQuad[qi].position()),
    \n-
    343 elemQuad[qi].weight(),
    \n-
    344 func );
    \n-
    345 }
    \n-
    346
    \n-
    347 row += builder_.testBasis()->size()*dimension;
    \n-
    348 }
    \n-
    349 assert(row==size());
    \n-
    350 }
    \n-
    \n-
    351
    \n-
    352 private:
    \n-
    362 template <class MVal, class RTVal,class Matrix>
    \n-
    363 void fillBnd (unsigned int startRow,
    \n-
    364 const MVal &mVal,
    \n-
    365 const RTVal &rtVal,
    \n-
    366 const FieldVector<Field,dimension> &normal,
    \n-
    367 const Field &weight,
    \n-
    368 Matrix &matrix) const
    \n-
    369 {
    \n-
    370 const unsigned int endRow = startRow+mVal.size();
    \n-
    371 typename RTVal::const_iterator rtiter = rtVal.begin();
    \n-
    372 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)
    \n-
    373 {
    \n-
    374 Field cFactor = (*rtiter)*normal;
    \n-
    375 typename MVal::const_iterator miter = mVal.begin();
    \n-
    376 for (unsigned int row = startRow;
    \n-
    377 row!=endRow; ++miter, ++row )
    \n-
    378 {
    \n-
    379 matrix.add(row,col, (weight*cFactor)*(*miter) );
    \n-
    380 }
    \n-
    381 assert( miter == mVal.end() );
    \n-
    382 }
    \n-
    383 }
    \n-
    392 template <class MVal, class RTVal,class Matrix>
    \n-
    393 void fillInterior (unsigned int startRow,
    \n-
    394 const MVal &mVal,
    \n-
    395 const RTVal &rtVal,
    \n-
    396 Field weight,
    \n-
    397 Matrix &matrix) const
    \n-
    398 {
    \n-
    399 const unsigned int endRow = startRow+mVal.size()*dimension;
    \n-
    400 typename RTVal::const_iterator rtiter = rtVal.begin();
    \n-
    401 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)
    \n-
    402 {
    \n-
    403 typename MVal::const_iterator miter = mVal.begin();
    \n-
    404 for (unsigned int row = startRow;
    \n-
    405 row!=endRow; ++miter,row+=dimension )
    \n-
    406 {
    \n-
    407 for (unsigned int i=0; i<dimension; ++i)
    \n-
    408 {
    \n-
    409 matrix.add(row+i,col, (weight*(*miter))*(*rtiter)[i] );
    \n-
    410 }
    \n-
    411 }
    \n-
    412 assert( miter == mVal.end() );
    \n-
    413 }
    \n-
    414 }
    \n-
    415
    \n-
    416 Builder builder_;
    \n-
    417 std::size_t order_;
    \n-
    418 std::size_t size_;
    \n-
    419 };
    \n-
    \n-
    420
    \n-
    421 template < unsigned int dim, class Field >
    \n-
    \n-\n-
    423 {
    \n-\n-\n-
    426 typedef std::size_t Key;
    \n-
    427 typedef typename std::remove_const<Object>::type NonConstObject;
    \n-
    428
    \n-
    429 template <GeometryType::Id geometryId>
    \n-
    \n-
    430 static Object *create( const Key &key )
    \n-
    431 {
    \n-
    432 if ( !supports<geometryId>(key) )
    \n-
    433 return 0;
    \n-
    434 NonConstObject *interpol = new NonConstObject();
    \n-
    435 interpol->template build<geometryId>(key);
    \n-
    436 return interpol;
    \n-
    437 }
    \n-
    \n-
    438 template< GeometryType::Id geometryId >
    \n-
    \n-
    439 static bool supports ( const Key &key )
    \n-
    440 {
    \n-
    441 return GeometryType(geometryId).isSimplex();
    \n-
    442 }
    \n-
    \n-
    443 static void release( Object *object ) { delete object; }
    \n-
    444 };
    \n-
    \n-
    445
    \n-
    446} // namespace Dune
    \n-
    447
    \n-
    448#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH
    \n-\n-\n-\n-\n+
    225 switch (direction) {
    \n+
    226 case 0:
    \n+
    227 out[0] = { sign_[0], 0, 0};
    \n+
    228 out[1] = { sign_[1], 0, 0};
    \n+
    229 out[2] = { 0, 0, 0};
    \n+
    230 out[3] = { 0, 0, 0};
    \n+
    231 out[4] = { 0, 0, 0};
    \n+
    232 out[5] = { 0, 0, 0};
    \n+
    233 out[6] = { 6*in[1]-3, 0, 0};
    \n+
    234 out[7] = {-6*in[1]+3, 0, 0};
    \n+
    235 out[8] = { 6*in[0]-3, -6*in[1]+6, 0};
    \n+
    236 out[9] = {-6*in[0]+3, 6*in[1], 0};
    \n+
    237 out[10] = {-6*in[0]+3, 0, 6*in[2]-6};
    \n+
    238 out[11] = { 6*in[0]-3, 0, -6*in[2]};
    \n+
    239 out[12] = {-6*in[2]+3, 0, 0};
    \n+
    240 out[13] = { 6*in[2]-3, 0, 0};
    \n+
    241 out[14] = { 0, 0, 0};
    \n+
    242 out[15] = { 0, 0, 0};
    \n+
    243 out[16] = { 0, 0, 0};
    \n+
    244 out[17] = { 0, 0, 0};
    \n+
    245 break;
    \n+
    246 case 1:
    \n+
    247 out[0] = { 0, 0, 0};
    \n+
    248 out[1] = { 0, 0, 0};
    \n+
    249 out[2] = { 0, sign_[2], 0};
    \n+
    250 out[3] = { 0, sign_[3], 0};
    \n+
    251 out[4] = { 0, 0, 0};
    \n+
    252 out[5] = { 0, 0, 0};
    \n+
    253 out[6] = { 6*in[0]-6, -6*in[1]+3, 0};
    \n+
    254 out[7] = { -6*in[0], 6*in[1]-3, 0};
    \n+
    255 out[8] = { 0, -6*in[0]+3, 0};
    \n+
    256 out[9] = { 0, 6*in[0]-3, 0};
    \n+
    257 out[10] = { 0, 0, 0};
    \n+
    258 out[11] = { 0, 0, 0};
    \n+
    259 out[12] = { 0, 0, 0};
    \n+
    260 out[13] = { 0, 0, 0};
    \n+
    261 out[14] = { 0, 6*in[2]-3, 0};
    \n+
    262 out[15] = { 0, -6*in[2]+3, 0};
    \n+
    263 out[16] = { 0, 6*in[1]-3, -6*in[2]+6};
    \n+
    264 out[17] = { 0, -6*in[1]+3, 6*in[2]};
    \n+
    265 break;
    \n+
    266 case 2:
    \n+
    267 out[0] = { 0, 0, 0};
    \n+
    268 out[1] = { 0, 0, 0};
    \n+
    269 out[2] = { 0, 0, 0};
    \n+
    270 out[3] = { 0, 0, 0};
    \n+
    271 out[4] = { 0, 0, sign_[4]};
    \n+
    272 out[5] = { 0, 0, sign_[5]};
    \n+
    273 out[6] = { 0, 0, 0};
    \n+
    274 out[7] = { 0, 0, 0};
    \n+
    275 out[8] = { 0, 0, 0};
    \n+
    276 out[9] = { 0, 0, 0};
    \n+
    277 out[10] = { 0, 0, 6*in[0]-3};
    \n+
    278 out[11] = { 0, 0, -6*in[0]+3};
    \n+
    279 out[12] = {-6*in[0]+6, 0, 6*in[2]-3};
    \n+
    280 out[13] = { 6*in[0], 0, -6*in[2]+3};
    \n+
    281 out[14] = { 0, 6*in[1]-6, -6*in[2]+3};
    \n+
    282 out[15] = { 0, -6*in[1], 6*in[2]-3};
    \n+
    283 out[16] = { 0, 0, -6*in[1]+3};
    \n+
    284 out[17] = { 0, 0, 6*in[1]-3};
    \n+
    285 break;
    \n+
    286 default:
    \n+
    287 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    288 }
    \n+
    289 } else {
    \n+
    290 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    291 }
    \n+
    292 }
    \n+
    \n+
    293
    \n+
    \n+
    295 unsigned int order() const
    \n+
    296 {
    \n+
    297 return 2;
    \n+
    298 }
    \n+
    \n+
    299
    \n+
    300 private:
    \n+
    301 std::array<R,6> sign_;
    \n+
    302 };
    \n+
    \n+
    303} // end namespace Dune
    \n+
    304#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Definition nedelecsimplexinterpolation.hh:41
    \n-
    LocalCoefficientsContainer(const Setter &setter)
    Definition nedelecsimplexinterpolation.hh:46
    \n-
    const LocalKey & localKey(const unsigned int i) const
    Definition raviartthomassimplexinterpolation.hh:48
    \n-
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:57
    \n-
    Definition orthonormalbasis.hh:20
    \n-
    static void release(Object *object)
    Definition orthonormalbasis.hh:57
    \n-
    Definition raviartthomassimplexinterpolation.hh:423
    \n-
    std::remove_const< Object >::type NonConstObject
    Definition raviartthomassimplexinterpolation.hh:427
    \n-
    static void release(Object *object)
    Definition raviartthomassimplexinterpolation.hh:443
    \n-
    static bool supports(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:439
    \n-
    static Object * create(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:430
    \n-
    RTL2InterpolationBuilder< dim, Field > Builder
    Definition raviartthomassimplexinterpolation.hh:424
    \n-
    const RaviartThomasL2Interpolation< dim, Field > Object
    Definition raviartthomassimplexinterpolation.hh:425
    \n-
    std::size_t Key
    Definition raviartthomassimplexinterpolation.hh:426
    \n-
    Definition raviartthomassimplexinterpolation.hh:70
    \n-
    std::size_t Key
    Definition raviartthomassimplexinterpolation.hh:71
    \n-
    static void release(Object *object)
    Definition raviartthomassimplexinterpolation.hh:91
    \n-
    static bool supports(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:87
    \n-
    const LocalCoefficientsContainer Object
    Definition raviartthomassimplexinterpolation.hh:72
    \n-
    static Object * create(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:75
    \n-
    Definition raviartthomassimplexinterpolation.hh:107
    \n-
    TestBasis * testBasis() const
    Definition raviartthomassimplexinterpolation.hh:141
    \n-
    FieldVector< Field, dimension > Normal
    Definition raviartthomassimplexinterpolation.hh:119
    \n-
    TestBasisFactory::Object TestBasis
    Definition raviartthomassimplexinterpolation.hh:112
    \n-
    TestFaceBasisFactory::Object TestFaceBasis
    Definition raviartthomassimplexinterpolation.hh:116
    \n-
    const Normal normal(unsigned int f) const
    Definition raviartthomassimplexinterpolation.hh:147
    \n-
    unsigned int faceSize() const
    Definition raviartthomassimplexinterpolation.hh:138
    \n-
    void build(std::size_t order)
    Definition raviartthomassimplexinterpolation.hh:150
    \n-\n-
    TestFaceBasis * testFaceBasis(unsigned int f) const
    Definition raviartthomassimplexinterpolation.hh:144
    \n-
    GeometryType type() const
    Definition raviartthomassimplexinterpolation.hh:133
    \n-
    RTL2InterpolationBuilder(const RTL2InterpolationBuilder &)=delete
    \n-
    OrthonormalBasisFactory< dimension-1, Field > TestFaceBasisFactory
    Definition raviartthomassimplexinterpolation.hh:115
    \n-
    RTL2InterpolationBuilder(RTL2InterpolationBuilder &&)=delete
    \n-
    OrthonormalBasisFactory< dimension, Field > TestBasisFactory
    Definition raviartthomassimplexinterpolation.hh:111
    \n-
    std::size_t order() const
    Definition raviartthomassimplexinterpolation.hh:135
    \n-
    static const unsigned int dimension
    Definition raviartthomassimplexinterpolation.hh:108
    \n-
    ~RTL2InterpolationBuilder()
    Definition raviartthomassimplexinterpolation.hh:126
    \n-
    An L2-based interpolation for Raviart Thomas.
    Definition raviartthomassimplexinterpolation.hh:213
    \n-
    std::size_t order() const
    Definition raviartthomassimplexinterpolation.hh:246
    \n-
    void interpolate(const Function &function, Vector &coefficients) const
    Definition raviartthomassimplexinterpolation.hh:228
    \n-
    RaviartThomasL2Interpolation()
    Definition raviartthomassimplexinterpolation.hh:220
    \n-
    void interpolate(typename Base::template Helper< Func, Container, type > &func) const
    Definition raviartthomassimplexinterpolation.hh:285
    \n-
    RTL2InterpolationBuilder< dimension, Field > Builder
    Definition raviartthomassimplexinterpolation.hh:219
    \n-
    F Field
    Definition raviartthomassimplexinterpolation.hh:218
    \n-
    void build(std::size_t order)
    Definition raviartthomassimplexinterpolation.hh:255
    \n-
    std::size_t size() const
    Definition raviartthomassimplexinterpolation.hh:250
    \n-
    void setLocalKeys(std::vector< LocalKey > &keys) const
    Definition raviartthomassimplexinterpolation.hh:267
    \n-
    Definition interpolationhelper.hh:21
    \n-
    Definition interpolationhelper.hh:23
    \n-
    Definition polynomialbasis.hh:65
    \n-
    unsigned int size() const
    Definition polynomialbasis.hh:113
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:31
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:135
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:68
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:36
    \n+
    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
    \n+
    BDM1Cube3DLocalBasis(std::bitset< 6 > s)
    Make set number s, where 0 <= s < 64.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:50
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:295
    \n+
    BDM1Cube3DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:39
    \n+
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:57
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,615 +1,334 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-raviartthomassimplexinterpolation.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+brezzidouglasmarini1cube3dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n+8#include \n+9#include \n+10#include \n+11#include \n 12\n-13#include \n-14#include \n-15#include \n-16#include \n-17\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-22\n-23namespace _\bD_\bu_\bn_\be\n-24{\n-25\n-26 // Internal Forward Declarations\n-27 // -----------------------------\n-28\n-29 template < unsigned int dim, class Field >\n-30 struct RaviartThomasL2InterpolationFactory;\n-31\n+13#include \n+14\n+15#include \"../../common/localbasis.hh\"\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+29 template\n+_\b3_\b0 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+31 {\n 32\n-33\n-34 // LocalCoefficientsContainer\n-35 // --------------------------\n-36\n-37 class LocalCoefficientsContainer\n-38 {\n-39 typedef _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br This;\n-40\n-41 public:\n-42 template \n-_\b4_\b3 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br ( const Setter &setter )\n-44 {\n-45 setter.setLocalKeys(localKey_);\n-46 }\n-47\n-_\b4_\b8 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by ( const unsigned int i ) const\n-49 {\n-50 assert( i < _\bs_\bi_\bz_\be() );\n-51 return localKey_[ i ];\n-52 }\n-53\n-_\b5_\b4 std::size_t _\bs_\bi_\bz_\be () const\n-55 {\n-56 return localKey_.size();\n-57 }\n-58\n-59 private:\n-60 std::vector< LocalKey > localKey_;\n-61 };\n-62\n-63\n-64\n-65 // RaviartThomasCoefficientsFactory\n-66 // --------------------------------\n-67\n-68 template < unsigned int dim >\n-_\b6_\b9 struct _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+33 public:\n+34 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,\n+35 R,3,Dune::FieldVector,\n+_\b3_\b6 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+37\n+_\b3_\b9 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n+40 {\n+41 for (size_t i=0; i<6; i++)\n+42 sign_[i] = 1.0;\n+43 }\n+44\n+_\b5_\b0 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs(std::bitset<6> s)\n+51 {\n+52 for (size_t i=0; i<6; i++)\n+53 sign_[i] = s[i] ? -1.0 : 1.0;\n+54 }\n+55\n+_\b5_\b7 unsigned int _\bs_\bi_\bz_\be() const\n+58 {\n+59 return 18;\n+60 }\n+61\n+_\b6_\b8 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+69 std::vector& out) const\n 70 {\n-_\b7_\b1 typedef std::size_t _\bK_\be_\by;\n-_\b7_\b2 typedef const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bO_\bb_\bj_\be_\bc_\bt;\n-73\n-74 template< GeometryType::Id geometryId >\n-_\b7_\b5 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n-76 {\n-77 typedef _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b>\n-InterpolationFactory;\n-78 if( !supports< geometryId >( key ) )\n-79 return nullptr;\n-80 typename InterpolationFactory::Object *interpolation =\n-InterpolationFactory::template create< geometryId >( key );\n-81 _\bO_\bb_\bj_\be_\bc_\bt *localKeys = new _\bO_\bb_\bj_\be_\bc_\bt( *interpolation );\n-82 InterpolationFactory::release( interpolation );\n-83 return localKeys;\n-84 }\n-85\n-86 template< GeometryType::Id geometryId >\n-_\b8_\b7 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n-88 {\n-89 return GeometryType(geometryId).isSimplex();\n-90 }\n-_\b9_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-92 };\n-93\n-94\n-95\n-96 // RTL2InterpolationBuilder\n-97 // ------------------------\n-98\n-99 // L2 Interpolation requires:\n-100 // - for element\n-101 // - test basis\n-102 // - for each face (dynamic)\n-103 // - test basis\n-104 // - normal\n-105 template< unsigned int dim, class Field >\n-_\b1_\b0_\b6 struct _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-107 {\n-_\b1_\b0_\b8 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-109\n-110 // for the dofs associated to the element\n-_\b1_\b1_\b1 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b1_\b1_\b2 typedef typename _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs;\n-113\n-114 // for the dofs associated to the faces\n-_\b1_\b1_\b5 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-1, Field > _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b1_\b1_\b6 typedef typename _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs;\n-117\n-118 // the normals of the faces\n-_\b1_\b1_\b9 typedef FieldVector< Field, dimension > _\bN_\bo_\br_\bm_\ba_\bl;\n-120\n-_\b1_\b2_\b1 _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br () = default;\n-122\n-_\b1_\b2_\b3 _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ( const _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br & ) = delete;\n-_\b1_\b2_\b4 _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ( _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br && ) = delete;\n-125\n-_\b1_\b2_\b6 _\b~_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ()\n-127 {\n-128 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( testBasis_ );\n-129 for( FaceStructure &f : faceStructure_ )\n-130 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( f.basis_ );\n-131 }\n-132\n-_\b1_\b3_\b3 GeometryType _\bt_\by_\bp_\be () const { return geometry_; }\n-134\n-_\b1_\b3_\b5 std::size_t _\bo_\br_\bd_\be_\br () const { return order_; }\n-136\n-137 // number of faces\n-_\b1_\b3_\b8 unsigned int _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be () const { return faceSize_; }\n+71 out.resize(_\bs_\bi_\bz_\be());\n+72\n+73 out[0][0] = sign_[0] * (in[0] - 1.0);\n+74 out[0][1] = 0;\n+75 out[0][2] = 0;\n+76 out[1][0] = sign_[1] * in[0];\n+77 out[1][1] = 0;\n+78 out[1][2] = 0;\n+79 out[2][0] = 0;\n+80 out[2][1] = sign_[2] * (in[1] - 1.0);\n+81 out[2][2] = 0;\n+82 out[3][0] = 0;\n+83 out[3][1] = sign_[3] * in[1];\n+84 out[3][2] = 0;\n+85 out[4][0] = 0;\n+86 out[4][1] = 0;\n+87 out[4][2] = sign_[4] * (in[2] - 1.0);\n+88 out[5][0] = 0;\n+89 out[5][1] = 0;\n+90 out[5][2] = sign_[5] * in[2];\n+91 out[6][0] = 6.0 * in[0] * in[1] - 3 * in[0]-6 * in[1] + 3.0;\n+92 out[6][1] = -3.0 * in[1] * in[1] + 3 * in[1];\n+93 out[6][2] = 0;\n+94 out[7][0] = -6.0 * in[0] * in[1] + 3 * in[0];\n+95 out[7][1] = 3.0 * in[1] * in[1] - 3 * in[1];\n+96 out[7][2] = 0;\n+97 out[8][0] = 3.0 * in[0] * in[0] - 3 * in[0];\n+98 out[8][1] = -6.0 * in[0] * in[1] + 3 * in[1]+6 * in[0]-3.0;\n+99 out[8][2] = 0;\n+100 out[9][0] = -3.0 * in[0] * in[0] + 3 * in[0];\n+101 out[9][1] = 6.0 * in[0] * in[1] - 3 * in[1];\n+102 out[9][2] = 0;\n+103 out[10][0] = -3.0 * in[0] * in[0] + 3 * in[0];\n+104 out[10][1] = 0;\n+105 out[10][2] = 6.0 * in[0] * in[2]-6 * in[0]-3 * in[2] + 3.0;\n+106 out[11][0] = 3.0 * in[0] * in[0]-3 * in[0];\n+107 out[11][1] = 0;\n+108 out[11][2] = -6.0 * in[0] * in[2] + 3 * in[2];\n+109 out[12][0] = -6.0 * in[0] * in[2]+6 * in[2] + 3 * in[0]-3.0;\n+110 out[12][1] = 0;\n+111 out[12][2] = 3.0 * in[2] * in[2]-3 * in[2];\n+112 out[13][0] = -3 * in[0]+6 * in[0] * in[2];\n+113 out[13][1] = 0;\n+114 out[13][2] = -3.0 * in[2] * in[2] + 3 * in[2];\n+115 out[14][0] = 0;\n+116 out[14][1] = 6.0 * in[1] * in[2]-3 * in[1]-6 * in[2] + 3.0;\n+117 out[14][2] = -3 * in[2] * in[2] + 3 * in[2];\n+118 out[15][0] = 0;\n+119 out[15][1] = -6.0 * in[1] * in[2] + 3 * in[1];\n+120 out[15][2] = 3.0 * in[2] * in[2]-3 * in[2];\n+121 out[16][0] = 0;\n+122 out[16][1] = 3.0 * in[1] * in[1]-3 * in[1];\n+123 out[16][2] = -6.0 * in[1] * in[2] + 3 * in[2]+6 * in[1]-3.0;\n+124 out[17][0] = 0;\n+125 out[17][1] = -3.0 * in[1] * in[1] + 3 * in[1];\n+126 out[17][2] = 6.0 * in[1] * in[2] - 3.0 * in[2];\n+127 }\n+128\n+_\b1_\b3_\b5 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+136 std::vector& out) const\n+137 {\n+138 out.resize(_\bs_\bi_\bz_\be());\n 139\n-140 // basis associated to the element\n-_\b1_\b4_\b1 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs () const { return testBasis_; }\n-142\n-143 // basis associated to face f\n-_\b1_\b4_\b4 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs ( unsigned int f ) const { assert( f <\n-_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() ); return faceStructure_[ f ].basis_; }\n-145\n-146 // normal of face f\n-_\b1_\b4_\b7 const _\bN_\bo_\br_\bm_\ba_\bl _\bn_\bo_\br_\bm_\ba_\bl ( unsigned int f ) const { assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n-return faceStructure_[ f ].normal_; }\n-148\n-149 template< GeometryType::Id geometryId >\n-_\b1_\b5_\b0 void _\bb_\bu_\bi_\bl_\bd ( std::size_t _\bo_\br_\bd_\be_\br )\n-151 {\n-152 constexpr GeometryType geometry = geometryId;\n-153 geometry_ = geometry;\n-154 order_ = _\bo_\br_\bd_\be_\br;\n+140 out[0][0] = { sign_[0], 0, 0};\n+141 out[0][1] = { 0, 0, 0};\n+142 out[0][2] = { 0, 0, 0};\n+143\n+144 out[1][0] = { sign_[1], 0, 0};\n+145 out[1][1] = { 0, 0, 0};\n+146 out[1][2] = { 0, 0, 0};\n+147\n+148 out[2][0] = { 0, 0, 0};\n+149 out[2][1] = { 0, sign_[2], 0};\n+150 out[2][2] = { 0, 0, 0};\n+151\n+152 out[3][0] = { 0, 0, 0};\n+153 out[3][1] = { 0, sign_[3], 0};\n+154 out[3][2] = { 0, 0, 0};\n 155\n-156 testBasis_ = (_\bo_\br_\bd_\be_\br > 0 ? TestBasisFactory::template create< geometry >\n-( _\bo_\br_\bd_\be_\br-1 ) : nullptr);\n-157\n-158 const auto &refElement = ReferenceElements< Field, dimension >::general\n-( _\bt_\by_\bp_\be() );\n-159 faceSize_ = refElement.size( 1 );\n-160 faceStructure_.reserve( faceSize_ );\n-161 for( unsigned int face = 0; face < faceSize_; ++face )\n-162 {\n-163 /* For simplices or cubes of arbitrary dimension you could just use\n-164 *\n-165 * ```\n-166 * GeometryType faceGeometry = Impl::getBase(geometry_);\n-167 * TestFaceBasis *faceBasis = TestFaceBasisFactory::template create<\n-faceGeometry >( order );\n-168 * ```\n-169 *\n-170 * For i.e. Prisms and Pyramids in 3d this does not work because they\n-contain squares and triangles as faces.\n-171 * And depending on the dynamic face index a different face geometry is\n-needed.\n-172 *\n-173 */\n-174 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *faceBasis = Impl::toGeometryTypeIdConstant<_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-1>\n-(refElement.type( face, 1 ), [&](auto faceGeometryTypeId) {\n-175 return TestFaceBasisFactory::template create< decltype\n-(faceGeometryTypeId)::value >( _\bo_\br_\bd_\be_\br );\n-176 });\n-177 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal\n-( face ) );\n-178 }\n-179 assert( faceStructure_.size() == faceSize_ );\n-180 }\n-181\n-182 private:\n-183 struct FaceStructure\n-184 {\n-185 FaceStructure( _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *tfb, const _\bN_\bo_\br_\bm_\ba_\bl n )\n-186 : basis_( tfb ), normal_( n )\n-187 {}\n-188\n-189 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *basis_;\n-190 const Dune::FieldVector< Field, dimension > normal_;\n-191 };\n-192\n-193 std::vector< FaceStructure > faceStructure_;\n-194 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *testBasis_ = nullptr;\n-195 GeometryType geometry_;\n-196 unsigned int faceSize_;\n-197 std::size_t order_;\n-198 };\n+156 out[4][0] = { 0, 0, 0};\n+157 out[4][1] = { 0, 0, 0};\n+158 out[4][2] = { 0, 0, sign_[4]};\n+159\n+160 out[5][0] = { 0, 0, 0};\n+161 out[5][1] = { 0, 0, 0};\n+162 out[5][2] = { 0, 0, sign_[5]};\n+163\n+164 out[6][0] = { 6*in[1]-3, 6*in[0]-6, 0};\n+165 out[6][1] = { 0, -6*in[1]+3, 0};\n+166 out[6][2] = { 0, 0, 0};\n+167\n+168 out[7][0] = {-6*in[1]+3, -6*in[0], 0};\n+169 out[7][1] = { 0, 6*in[1]-3, 0};\n+170 out[7][2] = { 0, 0, 0};\n+171\n+172 out[8][0] = { 6*in[0]-3, 0, 0};\n+173 out[8][1] = {-6*in[1]+6, -6*in[0]+3, 0};\n+174 out[8][2] = { 0, 0, 0};\n+175\n+176 out[9][0] = {-6*in[0]+3, 0, 0};\n+177 out[9][1] = { 6*in[1], 6*in[0]-3, 0};\n+178 out[9][2] = { 0, 0, 0};\n+179\n+180 out[10][0] = {-6*in[0]+3, 0, 0};\n+181 out[10][1] = { 0, 0, 0};\n+182 out[10][2] = { 6*in[2]-6, 0, 6*in[0]-3};\n+183\n+184 out[11][0] = { 6*in[0]-3, 0, 0};\n+185 out[11][1] = { 0, 0, 0};\n+186 out[11][2] = { -6*in[2], 0, -6*in[0]+3};\n+187\n+188 out[12][0] = {-6*in[2]+3, 0, -6*in[0]+6};\n+189 out[12][1] = { 0, 0, 0};\n+190 out[12][2] = { 0, 0, 6*in[2]-3};\n+191\n+192 out[13][0] = { 6*in[2]-3, 0, 6*in[0]};\n+193 out[13][1] = { 0, 0, 0};\n+194 out[13][2] = { 0, 0, -6*in[2]+3};\n+195\n+196 out[14][0] = { 0, 0, 0};\n+197 out[14][1] = { 0, 6*in[2]-3, 6*in[1]-6};\n+198 out[14][2] = { 0, 0, -6*in[2]+3};\n 199\n-200\n-201\n-202 // RaviartThomasL2Interpolation\n-203 // ----------------------------\n-204\n-210 template< unsigned int dimension, class F>\n-_\b2_\b1_\b1 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-212 : public _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br< F ,dimension >\n-213 {\n-214 typedef _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n-215 typedef _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b> _\bB_\ba_\bs_\be;\n-216\n-217 public:\n-_\b2_\b1_\b8 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b2_\b1_\b9 typedef _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\bu_\bi_\bl_\bd_\be_\br;\n-_\b2_\b2_\b0 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n-221 : order_(0),\n-222 size_(0)\n-223 {}\n+200 out[15][0] = { 0, 0, 0};\n+201 out[15][1] = { 0, -6*in[2]+3, -6*in[1]};\n+202 out[15][2] = { 0, 0, 6*in[2]-3};\n+203\n+204 out[16][0] = { 0, 0, 0};\n+205 out[16][1] = { 0, 6*in[1]-3, 0};\n+206 out[16][2] = { 0, -6*in[2]+6, -6*in[1]+3};\n+207\n+208 out[17][0] = { 0, 0, 0};\n+209 out[17][1] = { 0, -6*in[1]+3, 0};\n+210 out[17][2] = { 0, 6*in[2], 6*in[1]-3};\n+211 }\n+212\n+_\b2_\b1_\b4 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+215 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+216 std::vector& out) const // return value\n+217 {\n+218 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+219 if (totalOrder == 0) {\n+220 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+221 } else if (totalOrder == 1) {\n+222 out.resize(_\bs_\bi_\bz_\be());\n+223 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n 224\n-225 template< class Function, class Vector,\n-226 decltype(std::declval().size(),bool{}) = true,\n-227 decltype(std::declval().resize(0u),bool{}) = true>\n-_\b2_\b2_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, Vector &coefficients ) const\n-229 {\n-230 coefficients.resize(_\bs_\bi_\bz_\be());\n-231 typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\bV_\be_\bc_\bt_\bo_\br_\b,_\bt_\br_\bu_\be_\b> func\n-( function,coefficients );\n-232 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n-233 }\n-234\n-235 template< class Basis, class Matrix,\n-236 decltype(std::declval().rows(),bool{}) = true,\n-237 decltype(std::declval().cols(),bool{}) = true,\n-238 decltype(std::declval().resize(0u,0u),bool{}) = true>\n-_\b2_\b3_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Basis &basis, Matrix &matrix ) const\n-240 {\n-241 matrix.resize( _\bs_\bi_\bz_\be(), basis.size() );\n-242 typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bB_\ba_\bs_\bi_\bs_\b,_\bM_\ba_\bt_\br_\bi_\bx_\b,_\bf_\ba_\bl_\bs_\be_\b> func( basis,matrix );\n-243 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n-244 }\n-245\n-_\b2_\b4_\b6 std::size_t _\bo_\br_\bd_\be_\br() const\n-247 {\n-248 return order_;\n-249 }\n-_\b2_\b5_\b0 std::size_t _\bs_\bi_\bz_\be() const\n-251 {\n-252 return size_;\n-253 }\n-254 template \n-_\b2_\b5_\b5 void _\bb_\bu_\bi_\bl_\bd( std::size_t _\bo_\br_\bd_\be_\br )\n-256 {\n-257 size_ = 0;\n-258 order_ = _\bo_\br_\bd_\be_\br;\n-259 builder_.template build(order_);\n-260 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-261 size_ += dimension*builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be();\n-262 for ( unsigned int f=0; f_\bs_\bi_\bz_\be();\n-265 }\n-266\n-_\b2_\b6_\b7 void _\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs(std::vector< LocalKey > &keys) const\n-268 {\n-269 keys.resize(_\bs_\bi_\bz_\be());\n-270 unsigned int row = 0;\n-271 for (unsigned int f=0; f_\bs_\bi_\bz_\be(); ++i,++row)\n-275 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(f,1,i);\n-276 }\n-277 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-278 for (unsigned int i=0; i_\bs_\bi_\bz_\be()*dimension; ++i,++row)\n-279 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n-280 assert( row == _\bs_\bi_\bz_\be() );\n-281 }\n-282\n-283 protected:\n-284 template< class Func, class Container, bool type >\n-_\b2_\b8_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\bu_\bn_\bc_\b,_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b,_\bt_\by_\bp_\be_\b>\n-&func ) const\n-286 {\n-287 const Dune::GeometryType geoType = builder_._\bt_\by_\bp_\be();\n-288\n-289 std::vector< Field > testBasisVal;\n-290\n-291 for (unsigned int i=0; i<_\bs_\bi_\bz_\be(); ++i)\n-292 for (unsigned int j=0; j FaceQuadrature;\n-299 typedef Dune::QuadratureRules<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadratureRules;\n-300\n-301 const auto &refElement = Dune::ReferenceElements< Field, dimension >::\n-general( geoType );\n-302\n-303 for (unsigned int f=0; f_\bs_\bi_\bz_\be());\n-308\n-309 const auto &geometry = refElement.template geometry< 1 >( f );\n-310 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );\n-311 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType,\n-2*order_+2 );\n-312\n-313 const unsigned int quadratureSize = faceQuad.size();\n-314 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-315 {\n-316 if (dimension>1)\n-317 builder_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->template evaluate<0>(faceQuad[qi].position\n-(),testBasisVal);\n-318 else\n-319 testBasisVal[0] = 1.;\n-320 fillBnd( row, testBasisVal,\n-321 func.evaluate( geometry.global( faceQuad[qi].position() ) ),\n-322 builder_._\bn_\bo_\br_\bm_\ba_\bl(f), faceQuad[qi].weight(),\n-323 func);\n-324 }\n-325\n-326 row += builder_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be();\n-327 }\n-328 // element dofs\n-329 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-330 {\n-331 testBasisVal.resize(builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be());\n-332\n-333 typedef Dune::QuadratureRule Quadrature;\n-334 typedef Dune::QuadratureRules QuadratureRules;\n-335 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );\n-336\n-337 const unsigned int quadratureSize = elemQuad.size();\n-338 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-339 {\n-340 builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->template evaluate<0>(elemQuad[qi].position\n-(),testBasisVal);\n-341 fillInterior( row, testBasisVal,\n-342 func.evaluate(elemQuad[qi].position()),\n-343 elemQuad[qi].weight(),\n-344 func );\n-345 }\n-346\n-347 row += builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be()*dimension;\n-348 }\n-349 assert(row==_\bs_\bi_\bz_\be());\n-350 }\n-351\n-352 private:\n-362 template \n-363 void fillBnd (unsigned int startRow,\n-364 const MVal &mVal,\n-365 const RTVal &rtVal,\n-366 const FieldVector &normal,\n-367 const _\bF_\bi_\be_\bl_\bd &weight,\n-368 Matrix &matrix) const\n-369 {\n-370 const unsigned int endRow = startRow+mVal.size();\n-371 typename RTVal::const_iterator rtiter = rtVal.begin();\n-372 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)\n-373 {\n-374 _\bF_\bi_\be_\bl_\bd cFactor = (*rtiter)*normal;\n-375 typename MVal::const_iterator miter = mVal.begin();\n-376 for (unsigned int row = startRow;\n-377 row!=endRow; ++miter, ++row )\n-378 {\n-379 matrix.add(row,col, (weight*cFactor)*(*miter) );\n-380 }\n-381 assert( miter == mVal.end() );\n-382 }\n-383 }\n-392 template \n-393 void fillInterior (unsigned int startRow,\n-394 const MVal &mVal,\n-395 const RTVal &rtVal,\n-396 _\bF_\bi_\be_\bl_\bd weight,\n-397 Matrix &matrix) const\n-398 {\n-399 const unsigned int endRow = startRow+mVal.size()*dimension;\n-400 typename RTVal::const_iterator rtiter = rtVal.begin();\n-401 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)\n-402 {\n-403 typename MVal::const_iterator miter = mVal.begin();\n-404 for (unsigned int row = startRow;\n-405 row!=endRow; ++miter,row+=dimension )\n-406 {\n-407 for (unsigned int i=0; i\n-_\b4_\b2_\b2 struct _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-423 {\n-_\b4_\b2_\b4 typedef _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\bu_\bi_\bl_\bd_\be_\br;\n-_\b4_\b2_\b5 typedef const _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bO_\bb_\bj_\be_\bc_\bt;\n-_\b4_\b2_\b6 typedef std::size_t _\bK_\be_\by;\n-_\b4_\b2_\b7 typedef typename std::remove_const::type _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt;\n-428\n-429 template \n-_\b4_\b3_\b0 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n-431 {\n-432 if ( !supports(key) )\n-433 return 0;\n-434 _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt *interpol = new _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt();\n-435 interpol->template build(key);\n-436 return interpol;\n-437 }\n-438 template< GeometryType::Id geometryId >\n-_\b4_\b3_\b9 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n-440 {\n-441 return GeometryType(geometryId).isSimplex();\n-442 }\n-_\b4_\b4_\b3 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-444 };\n-445\n-446} // namespace Dune\n-447\n-448#endif // #ifndef\n-DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh\n+225 switch (direction) {\n+226 case 0:\n+227 out[0] = { sign_[0], 0, 0};\n+228 out[1] = { sign_[1], 0, 0};\n+229 out[2] = { 0, 0, 0};\n+230 out[3] = { 0, 0, 0};\n+231 out[4] = { 0, 0, 0};\n+232 out[5] = { 0, 0, 0};\n+233 out[6] = { 6*in[1]-3, 0, 0};\n+234 out[7] = {-6*in[1]+3, 0, 0};\n+235 out[8] = { 6*in[0]-3, -6*in[1]+6, 0};\n+236 out[9] = {-6*in[0]+3, 6*in[1], 0};\n+237 out[10] = {-6*in[0]+3, 0, 6*in[2]-6};\n+238 out[11] = { 6*in[0]-3, 0, -6*in[2]};\n+239 out[12] = {-6*in[2]+3, 0, 0};\n+240 out[13] = { 6*in[2]-3, 0, 0};\n+241 out[14] = { 0, 0, 0};\n+242 out[15] = { 0, 0, 0};\n+243 out[16] = { 0, 0, 0};\n+244 out[17] = { 0, 0, 0};\n+245 break;\n+246 case 1:\n+247 out[0] = { 0, 0, 0};\n+248 out[1] = { 0, 0, 0};\n+249 out[2] = { 0, sign_[2], 0};\n+250 out[3] = { 0, sign_[3], 0};\n+251 out[4] = { 0, 0, 0};\n+252 out[5] = { 0, 0, 0};\n+253 out[6] = { 6*in[0]-6, -6*in[1]+3, 0};\n+254 out[7] = { -6*in[0], 6*in[1]-3, 0};\n+255 out[8] = { 0, -6*in[0]+3, 0};\n+256 out[9] = { 0, 6*in[0]-3, 0};\n+257 out[10] = { 0, 0, 0};\n+258 out[11] = { 0, 0, 0};\n+259 out[12] = { 0, 0, 0};\n+260 out[13] = { 0, 0, 0};\n+261 out[14] = { 0, 6*in[2]-3, 0};\n+262 out[15] = { 0, -6*in[2]+3, 0};\n+263 out[16] = { 0, 6*in[1]-3, -6*in[2]+6};\n+264 out[17] = { 0, -6*in[1]+3, 6*in[2]};\n+265 break;\n+266 case 2:\n+267 out[0] = { 0, 0, 0};\n+268 out[1] = { 0, 0, 0};\n+269 out[2] = { 0, 0, 0};\n+270 out[3] = { 0, 0, 0};\n+271 out[4] = { 0, 0, sign_[4]};\n+272 out[5] = { 0, 0, sign_[5]};\n+273 out[6] = { 0, 0, 0};\n+274 out[7] = { 0, 0, 0};\n+275 out[8] = { 0, 0, 0};\n+276 out[9] = { 0, 0, 0};\n+277 out[10] = { 0, 0, 6*in[0]-3};\n+278 out[11] = { 0, 0, -6*in[0]+3};\n+279 out[12] = {-6*in[0]+6, 0, 6*in[2]-3};\n+280 out[13] = { 6*in[0], 0, -6*in[2]+3};\n+281 out[14] = { 0, 6*in[1]-6, -6*in[2]+3};\n+282 out[15] = { 0, -6*in[1], 6*in[2]-3};\n+283 out[16] = { 0, 0, -6*in[1]+3};\n+284 out[17] = { 0, 0, 6*in[1]-3};\n+285 break;\n+286 default:\n+287 DUNE_THROW(RangeError, \"Component out of range.\");\n+288 }\n+289 } else {\n+290 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+291 }\n+292 }\n+293\n+_\b2_\b9_\b5 unsigned int _\bo_\br_\bd_\be_\br() const\n+296 {\n+297 return 2;\n+298 }\n+299\n+300 private:\n+301 std::array sign_;\n+302 };\n+303} // end namespace Dune\n+304#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-LocalCoefficientsContainer(const Setter &setter)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(const unsigned int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:423\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt\n-std::remove_const< Object >::type NonConstObject\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:427\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:443\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n-static bool supports(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:439\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:430\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\bu_\bi_\bl_\bd_\be_\br\n-RTL2InterpolationBuilder< dim, Field > Builder\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:424\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const RaviartThomasL2Interpolation< dim, Field > Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:425\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-std::size_t Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:426\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-std::size_t Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n-static bool supports(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const LocalCoefficientsContainer Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs\n-TestBasis * testBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< Field, dimension > Normal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs\n-TestBasisFactory::Object TestBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:112\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs\n-TestFaceBasisFactory::Object TestFaceBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:116\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bn_\bo_\br_\bm_\ba_\bl\n-const Normal normal(unsigned int f) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be\n-unsigned int faceSize() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n-void build(std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:150\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-RTL2InterpolationBuilder()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs\n-TestFaceBasis * testFaceBasis(unsigned int f) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:144\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-RTL2InterpolationBuilder(const RTL2InterpolationBuilder &)=delete\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-OrthonormalBasisFactory< dimension-1, Field > TestFaceBasisFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-RTL2InterpolationBuilder(RTL2InterpolationBuilder &&)=delete\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-OrthonormalBasisFactory< dimension, Field > TestBasisFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:108\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\b~_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-~RTL2InterpolationBuilder()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:126\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-An L2-based interpolation for Raviart Thomas.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:213\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:246\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const Function &function, Vector &coefficients) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:228\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RaviartThomasL2Interpolation()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:220\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(typename Base::template Helper< Func, Container, type > &func)\n-const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:285\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bu_\bi_\bl_\bd_\be_\br\n-RTL2InterpolationBuilder< dimension, Field > Builder\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:219\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:218\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n-void build(std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:255\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:250\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs\n-void setLocalKeys(std::vector< LocalKey > &keys) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:267\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n+3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:214\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM1Cube3DLocalBasis(std::bitset< 6 > s)\n+Make set number s, where 0 <= s < 64.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:295\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+BDM1Cube3DLocalBasis()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:113\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomassimplexbasis.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomassimplexbasis.hh File Reference
    \n+
    brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/localfunctions/utility/defaultbasisfactory.hh>
    \n-#include "raviartthomassimplexinterpolation.hh"
    \n-#include "raviartthomassimplexprebasis.hh"
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    struct  Dune::RaviartThomasBasisFactory< dim, SF, CF >
    class  Dune::BDM1Cube3DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomassimplexbasis.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference\n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomassimplexbasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,72 +70,79 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomassimplexbasis.hh
    \n+
    brezzidouglasmarini1cube3dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RAVIARTTHOMASBASIS_HH
    \n-
    6#define DUNE_RAVIARTTHOMASBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <dune/common/exceptions.hh>
    \n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n
    10
    \n-\n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17 /*
    \n-
    18 * `RTPreBasisFactory` provides a basis for the Raviart-Thomas function space.
    \n-
    19 * `RaviartThomasL2InterpolationFactory` provides the linear functionals.
    \n-
    20 *
    \n-
    21 * `Defaultbasisfactory::create` first builds the function space and the linear functionals.
    \n-
    22 * Then the constructor of `BasisMatrix` gets called. There the matrix
    \n-
    23 *
    \n-
    24 * \\begin{equation}
    \n-
    25 * A_{i,j} := N_j(\\phi_i)
    \n-
    26 * \\end{equation}
    \n-
    27 *
    \n-
    28 * with linear functionals $N_j$ and basisfunctions $\\phi_i$ gets assembled.
    \n-
    29 * Then the matrix gets inverted and is then used as a coefficient matrix for the standard monomial basis.
    \n-
    30 *
    \n-
    31 * For more details on the theory see the first chapter "Construction of Local Finite Element Spaces Using the Generic Reference Elements"
    \n-
    32 * of the book "Advances in Dune" by Dedner, Flemisch and Kl\u00f6fkorn published in 2012.
    \n-
    33 */
    \n-
    34
    \n-
    35 template< unsigned int dim, class SF, class CF >
    \n-
    \n-\n-
    37 : public DefaultBasisFactory< RTPreBasisFactory<dim,CF>,
    \n-
    38 RaviartThomasL2InterpolationFactory<dim,CF>,
    \n-
    39 dim,dim,SF,CF >
    \n-
    40 {};
    \n-
    \n-
    41}
    \n-
    42
    \n-
    43#endif // #ifndef DUNE_RAVIARTTHOMASBASIS_HH
    \n-\n-\n-\n+
    11#include "../../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for (std::size_t i = 0; i < 6; ++i)
    \n+
    31 {
    \n+
    32 li[i] = LocalKey(i,1,0);
    \n+
    33 li[i + 6] = LocalKey(i,1,1);
    \n+
    34 li[i + 12] = LocalKey(i,1,2);
    \n+
    35 }
    \n+
    36 }
    \n+
    \n+
    37
    \n+
    \n+
    39 std::size_t size() const
    \n+
    40 {
    \n+
    41 return 18;
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    \n+
    45 const LocalKey& localKey(std::size_t i) const
    \n+
    46 {
    \n+
    47 return li[i];
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    50 private:
    \n+
    51 std::vector<LocalKey> li;
    \n+
    52 };
    \n+
    \n+
    53} // end namespace Dune
    \n+
    54#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition raviartthomassimplexbasis.hh:40
    \n-
    Definition defaultbasisfactory.hh:38
    \n+
    Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:24
    \n+
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:39
    \n+
    BDM1Cube3DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:28
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:45
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,70 +1,78 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-raviartthomassimplexbasis.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+brezzidouglasmarini1cube3dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RAVIARTTHOMASBASIS_HH\n-6#define DUNE_RAVIARTTHOMASBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9#include \n+8#include \n+9#include \n 10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17 /*\n-18 * `RTPreBasisFactory` provides a basis for the Raviart-Thomas function\n-space.\n-19 * `RaviartThomasL2InterpolationFactory` provides the linear functionals.\n-20 *\n-21 * `Defaultbasisfactory::create` first builds the function space and the\n-linear functionals.\n-22 * Then the constructor of `BasisMatrix` gets called. There the matrix\n-23 *\n-24 * \\begin{equation}\n-25 * A_{i,j} := N_j(\\phi_i)\n-26 * \\end{equation}\n-27 *\n-28 * with linear functionals $N_j$ and basisfunctions $\\phi_i$ gets assembled.\n-29 * Then the matrix gets inverted and is then used as a coefficient matrix for\n-the standard monomial basis.\n-30 *\n-31 * For more details on the theory see the first chapter \"Construction of\n-Local Finite Element Spaces Using the Generic Reference Elements\"\n-32 * of the book \"Advances in Dune\" by Dedner, Flemisch and Kl\u00c3\u00b6fkorn published\n-in 2012.\n-33 */\n-34\n-35 template< unsigned int dim, class SF, class CF >\n-_\b3_\b6 struct _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-37 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< RTPreBasisFactory,\n-38 RaviartThomasL2InterpolationFactory,\n-39 dim,dim,SF,CF >\n-40 {};\n-41}\n-42\n-43#endif // #ifndef DUNE_RAVIARTTHOMASBASIS_HH\n-_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+11#include \"../../common/localkey.hh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+_\b2_\b3 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+24 {\n+25\n+26 public:\n+_\b2_\b8 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(18)\n+29 {\n+30 for (std::size_t i = 0; i < 6; ++i)\n+31 {\n+32 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+33 li[i + 6] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+34 li[i + 12] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n+35 }\n+36 }\n+37\n+_\b3_\b9 std::size_t _\bs_\bi_\bz_\be() const\n+40 {\n+41 return 18;\n+42 }\n+43\n+_\b4_\b5 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const\n+46 {\n+47 return li[i];\n+48 }\n+49\n+50 private:\n+51 std::vector li;\n+52 };\n+53} // end namespace Dune\n+54#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexbasis.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+BDM1Cube3DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomassimplexprebasis.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,38 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomassimplexprebasis.hh File Reference
    \n+
    brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <utility>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::RTPreBasisFactory< dim, Field >
     
    struct  Dune::RTPreBasisFactory< dim, Field >::EvaluationBasisFactory< dd, FF >
     
    struct  Dune::RTVecMatrix< geometryId, Field >
    class  Dune::BDM1Cube3DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomassimplexprebasis.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bd_\b,_\b _\bF_\bF\n- _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n+ hexahedron. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomassimplexprebasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,283 +70,134 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomassimplexprebasis.hh
    \n+
    brezzidouglasmarini1cube3dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RAVIARTTHOMASPREBASIS_HH
    \n-
    6#define DUNE_RAVIARTTHOMASPREBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <utility>
    \n-
    10
    \n-
    11#include <dune/geometry/type.hh>
    \n-
    12
    \n-\n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17 template < GeometryType::Id geometryId, class Field >
    \n-
    18 struct RTVecMatrix;
    \n-
    19
    \n-
    20 template <unsigned int dim, class Field>
    \n-
    \n-\n-
    22 {
    \n-\n-
    24 typedef typename MBasisFactory::Object MBasis;
    \n-\n-\n+
    24 template<class LB>
    \n+
    \n+\n+
    26 {
    \n
    27
    \n-
    28 typedef const Basis Object;
    \n-
    29 typedef std::size_t Key;
    \n-
    30
    \n-
    31 template <unsigned int dd, class FF>
    \n-
    \n-\n-
    33 {
    \n-\n-
    35 };
    \n-
    \n-
    36 template< GeometryType::Id geometryId >
    \n-
    \n-
    37 static Object *create ( const Key &order )
    \n-
    38 {
    \n-
    39 RTVecMatrix<geometryId,Field> vecMatrix(order);
    \n-
    40 MBasis *mbasis = MBasisFactory::template create<geometryId>(order+1);
    \n-
    41 typename std::remove_const<Object>::type *tmBasis = new typename std::remove_const<Object>::type(*mbasis);
    \n-
    42 tmBasis->fill(vecMatrix);
    \n-
    43 return tmBasis;
    \n-
    44 }
    \n-
    \n-
    45 static void release( Object *object ) { delete object; }
    \n-
    46 };
    \n-
    \n-
    47
    \n-
    48 template <GeometryType::Id geometryId, class Field>
    \n-
    \n-\n-
    50 {
    \n-
    51 static constexpr GeometryType geometry = geometryId;
    \n-
    52 static const unsigned int dim = geometry.dim();
    \n-\n-\n-
    \n-
    55 RTVecMatrix(std::size_t order)
    \n-
    56 {
    \n-
    57 /*
    \n-
    58 * Construction of Raviart-Thomas elements in high dimensions see "Mixed Finite Elements in \\R^3" by Nedelec, 1980.
    \n-
    59 *
    \n-
    60 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree $\\leq k$.
    \n-
    61 * The space of Raviart-Thomas functions in $n$ dimensions with index $k$ is defined as
    \n-
    62 *
    \n-
    63 * \\begin{equation*}
    \n-
    64 * RT_k := (\\P_{k-1})^n \\oplus \\widetilde \\P_k x
    \n-
    65 * \\end{equation*}
    \n-
    66 * with $x=(x_1,x_2,\\dots, x_n)$ in $n$ dimensions and $\\widetilde \\P_k$ the homogeneous polynomials of degree $k$.
    \n-
    67 *
    \n-
    68 * For $RT_k$ holds
    \n-
    69 * \\begin{equation*}
    \n-
    70 * (\\P_{k-1})^n \\subset RT_k \\subset (\\P_k)^n.
    \n-
    71 * \\end{equation*}
    \n-
    72 *
    \n-
    73 * We construct $(\\P_k)^n$ and and only use the monomials contained in $RT_k$.
    \n-
    74 *
    \n-
    75 */
    \n-
    76
    \n-
    77 MIBasis basis(order+1);
    \n-
    78 FieldVector< MI, dim > x;
    \n-
    79 /*
    \n-
    80 * Init MultiIndices
    \n-
    81 * x[0]=(1,0,0) x
    \n-
    82 * x[1]=(0,1,0) y
    \n-
    83 * x[2]=(0,0,1) z
    \n-
    84 */
    \n-
    85 for( unsigned int i = 0; i < dim; ++i )
    \n-
    86 x[ i ].set( i, 1 );
    \n-
    87 std::vector< MI > val( basis.size() );
    \n-
    88
    \n-
    89 // val now contains all monomials in $n$ dimensions with degree $\\leq order+1$
    \n-
    90 basis.evaluate( x, val );
    \n-
    91
    \n-
    92 col_ = basis.size();
    \n-
    93
    \n-
    94 // get $\\dim (\\P_{order-1})$
    \n-
    95 unsigned int notHomogen = 0;
    \n-
    96 if (order>0)
    \n-
    97 notHomogen = basis.sizes()[order-1];
    \n-
    98
    \n-
    99 // get $\\dim \\widetilde (\\P_order)$
    \n-
    100 unsigned int homogen = basis.sizes()[order]-notHomogen;
    \n-
    101
    \n-
    102 /*
    \n-
    103 *
    \n-
    104 * The set $RT_k$ is defined as
    \n-
    105 *
    \n-
    106 * \\begin{equation}
    \n-
    107 * RT_k := (\\P_k)^dim + \\widetilde \\P_k x with x\\in \\R^n.
    \n-
    108 * \\end{equation}
    \n-
    109 *
    \n-
    110 * The space $\\P_k$ is split in $\\P_k = \\P_{k-1} + \\widetilde \\P_k$.
    \n-
    111 *
    \n-
    112 * \\begin{align}
    \n-
    113 * RT_k &= (\\P_{k-1} + \\widetilde \\P_k)^dim + \\widetilde \\P_k x with x\\in \\R^n
    \n-
    114 * &= (\\P_{k-1})^n + (\\widetilde \\P_k)^n + \\widetilde \\P_k x with x\\in \\R^n
    \n-
    115 * \\end{align}
    \n-
    116 *
    \n-
    117 * Thus $\\dim RT_k = n * \\dim \\P_{k-1} + (n+1)*\\dim (\\widetilde \\P_k)$
    \n-
    118 */
    \n-
    119
    \n-
    120 // row_ = \\dim RT_k *dim
    \n-
    121 row_ = (notHomogen*dim+homogen*(dim+1))*dim;
    \n-
    122 mat_ = new Field*[row_];
    \n-
    123 int row = 0;
    \n-
    124
    \n-
    125 /* Assign the correct values for the nonhomogeneous polymonials $p\\in (\\P_{oder-1})^dim$
    \n-
    126 * A basis function is represented by $dim$ rows.
    \n-
    127 */
    \n-
    128 for (unsigned int i=0; i<notHomogen+homogen; ++i)
    \n-
    129 {
    \n-
    130 for (unsigned int r=0; r<dim; ++r)
    \n-
    131 {
    \n-
    132 for (unsigned int rr=0; rr<dim; ++rr)
    \n-
    133 {
    \n-
    134 // init row to zero
    \n-
    135 mat_[row] = new Field[col_];
    \n-
    136 for (unsigned int j=0; j<col_; ++j)
    \n-
    137 {
    \n-
    138 mat_[row][j] = 0.;
    \n-
    139 }
    \n-
    140 if (r==rr)
    \n-
    141 mat_[row][i] = 1.;
    \n-
    142 ++row;
    \n-
    143 }
    \n-
    144 }
    \n-
    145 }
    \n-
    146
    \n-
    147 /* Assign the correct values for the homogeneous polymonials $p\\in RT_k \\backslash (\\P_{oder-1})^dim$
    \n-
    148 * A basis function is represented by $dim$ rows.
    \n-
    149 */
    \n-
    150 for (unsigned int i=0; i<homogen; ++i)
    \n-
    151 {
    \n-
    152 for (unsigned int r=0; r<dim; ++r)
    \n-
    153 {
    \n-
    154 // init rows to zero
    \n-
    155 mat_[row] = new Field[col_];
    \n-
    156 for (unsigned int j=0; j<col_; ++j)
    \n-
    157 {
    \n-
    158 mat_[row][j] = 0.;
    \n-
    159 }
    \n-
    160
    \n-
    161 unsigned int w;
    \n-
    162 // get a monomial $ p \\in \\widetilde \\P_{order}$
    \n-
    163 MI xval = val[notHomogen+i];
    \n-
    164 xval *= x[r];
    \n-
    165 for (w=homogen+notHomogen; w<val.size(); ++w)
    \n-
    166 {
    \n-
    167 if (val[w] == xval)
    \n-
    168 {
    \n-
    169 mat_[row][w] = 1.;
    \n-
    170 break;
    \n-
    171 }
    \n-
    172 }
    \n-
    173 assert(w<val.size());
    \n-
    174 ++row;
    \n-
    175 }
    \n-
    176 }
    \n-
    177 }
    \n-
    \n-
    178
    \n-
    \n-\n-
    180 {
    \n-
    181 for (unsigned int i=0; i<rows(); ++i) {
    \n-
    182 delete [] mat_[i];
    \n-
    183 }
    \n-
    184 delete [] mat_;
    \n-
    185 }
    \n-
    \n-
    186
    \n-
    \n-
    187 unsigned int cols() const {
    \n-
    188 return col_;
    \n-
    189 }
    \n-
    \n-
    190
    \n-
    \n-
    191 unsigned int rows() const {
    \n-
    192 return row_;
    \n-
    193 }
    \n-
    \n-
    194
    \n-
    195 template <class Vector>
    \n-
    \n-
    196 void row( const unsigned int row, Vector &vec ) const
    \n-
    197 {
    \n-
    198 const unsigned int N = cols();
    \n-
    199 assert( vec.size() == N );
    \n-
    200 for (unsigned int i=0; i<N; ++i)
    \n-
    201 field_cast(mat_[row][i],vec[i]);
    \n-
    202 }
    \n-
    \n-
    203 unsigned int row_,col_;
    \n-
    204 Field **mat_;
    \n-
    205 };
    \n-
    \n-
    206
    \n-
    207
    \n-
    208}
    \n-
    209#endif // DUNE_RAVIARTTHOMASPREBASIS_HH
    \n-\n+
    28 public:
    \n+
    \n+\n+
    31 {
    \n+
    32 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n+
    33 }
    \n+
    \n+
    34
    \n+
    \n+\n+
    41 {
    \n+
    42 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n+
    43 if (s & 1)
    \n+
    44 {
    \n+
    45 sign0 = -1.0;
    \n+
    46 }
    \n+
    47 if (s & 2)
    \n+
    48 {
    \n+
    49 sign1 = -1.0;
    \n+
    50 }
    \n+
    51 if (s & 4)
    \n+
    52 {
    \n+
    53 sign2 = -1.0;
    \n+
    54 }
    \n+
    55 if (s & 8)
    \n+
    56 {
    \n+
    57 sign3 = -1.0;
    \n+
    58 }
    \n+
    59 if (s & 16)
    \n+
    60 {
    \n+
    61 sign4 = -1.0;
    \n+
    62 }
    \n+
    63 if (s & 32)
    \n+
    64 {
    \n+
    65 sign5 = -1.0;
    \n+
    66 }
    \n+
    67
    \n+
    68 n0[0] = -1.0;
    \n+
    69 n0[1] = 0.0;
    \n+
    70 n0[2] = 0.0;
    \n+
    71 n1[0] = 1.0;
    \n+
    72 n1[1] = 0.0;
    \n+
    73 n1[2] = 0.0;
    \n+
    74 n2[0] = 0.0;
    \n+
    75 n2[1] = -1.0;
    \n+
    76 n2[2] = 0.0;
    \n+
    77 n3[0] = 0.0;
    \n+
    78 n3[1] = 1.0;
    \n+
    79 n3[2] = 0.0;
    \n+
    80 n4[0] = 0.0;
    \n+
    81 n4[1] = 0.0;
    \n+
    82 n4[2] = -1.0;
    \n+
    83 n5[0] = 0.0;
    \n+
    84 n5[1] = 0.0;
    \n+
    85 n5[2] = 1.0;
    \n+
    86 }
    \n+
    \n+
    87
    \n+
    96 template<typename F, typename C>
    \n+
    \n+
    97 void interpolate(const F& f, std::vector<C>& out) const
    \n+
    98 {
    \n+
    99 // f gives v*outer normal at a point on the edge!
    \n+
    100 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    101 //typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    102
    \n+
    103 DUNE_THROW( NotImplemented, "Interpolation for BDM1Cube3D finite elements is not implemented." );
    \n+
    104
    \n+
    105 out.resize(18);
    \n+
    106 fill(out.begin(), out.end(), 0.0);
    \n+
    107
    \n+
    108 const int qOrder = 4;
    \n+
    109 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    110
    \n+
    111 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n+
    112 it != rule.end(); ++it)
    \n+
    113 {
    \n+
    114 // TODO: write interpolation
    \n+
    115 }
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    118 private:
    \n+
    119 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3, sign4, sign5;
    \n+
    120 typename LB::Traits::DomainType n0, n1, n2, n3, n4, n5;
    \n+
    121 };
    \n+
    \n+
    122} // end namespace Dune
    \n+
    123#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    Definition raviartthomassimplexprebasis.hh:50
    \n-
    static const unsigned int dim
    Definition raviartthomassimplexprebasis.hh:52
    \n-
    ~RTVecMatrix()
    Definition raviartthomassimplexprebasis.hh:179
    \n-
    Field ** mat_
    Definition raviartthomassimplexprebasis.hh:204
    \n-
    RTVecMatrix(std::size_t order)
    Definition raviartthomassimplexprebasis.hh:55
    \n-
    unsigned int cols() const
    Definition raviartthomassimplexprebasis.hh:187
    \n-
    unsigned int row_
    Definition raviartthomassimplexprebasis.hh:203
    \n-
    MultiIndex< dim, Field > MI
    Definition raviartthomassimplexprebasis.hh:53
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition raviartthomassimplexprebasis.hh:196
    \n-
    MonomialBasis< geometryId, MI > MIBasis
    Definition raviartthomassimplexprebasis.hh:54
    \n-
    static constexpr GeometryType geometry
    Definition raviartthomassimplexprebasis.hh:51
    \n-
    unsigned int rows() const
    Definition raviartthomassimplexprebasis.hh:191
    \n-
    unsigned int col_
    Definition raviartthomassimplexprebasis.hh:203
    \n-
    Definition raviartthomassimplexprebasis.hh:22
    \n-
    const Basis Object
    Definition raviartthomassimplexprebasis.hh:28
    \n-
    MonomialBasisProvider< dim, Field > MBasisFactory
    Definition raviartthomassimplexprebasis.hh:23
    \n-
    PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis
    Definition raviartthomassimplexprebasis.hh:26
    \n-
    MBasisFactory::Object MBasis
    Definition raviartthomassimplexprebasis.hh:24
    \n-
    std::size_t Key
    Definition raviartthomassimplexprebasis.hh:29
    \n-
    static void release(Object *object)
    Definition raviartthomassimplexprebasis.hh:45
    \n-
    StandardEvaluator< MBasis > EvalMBasis
    Definition raviartthomassimplexprebasis.hh:25
    \n-
    static Object * create(const Key &order)
    Definition raviartthomassimplexprebasis.hh:37
    \n-
    Definition raviartthomassimplexprebasis.hh:33
    \n-
    MonomialBasisProvider< dd, FF > Type
    Definition raviartthomassimplexprebasis.hh:34
    \n-
    Definition basisevaluator.hh:131
    \n-
    Definition monomialbasis.hh:440
    \n-
    unsigned int size() const
    Definition monomialbasis.hh:476
    \n-
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:498
    \n-
    const unsigned int * sizes(unsigned int order) const
    Definition monomialbasis.hh:465
    \n-
    Definition monomialbasis.hh:780
    \n-
    Definition multiindex.hh:38
    \n-
    Definition polynomialbasis.hh:348
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:26
    \n+
    BDM1Cube3DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:30
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:97
    \n+
    BDM1Cube3DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 64.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:40
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,329 +1,134 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-raviartthomassimplexprebasis.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+brezzidouglasmarini1cube3dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RAVIARTTHOMASPREBASIS_HH\n-6#define DUNE_RAVIARTTHOMASPREBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+8#include \n+9\n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17 template < GeometryType::Id geometryId, class Field >\n-18 struct RTVecMatrix;\n-19\n-20 template \n-_\b2_\b1 struct _\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-22 {\n-_\b2_\b3 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bM_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b2_\b4 typedef typename MBasisFactory::Object _\bM_\bB_\ba_\bs_\bi_\bs;\n-_\b2_\b5 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\bM_\bB_\ba_\bs_\bi_\bs_\b> _\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs;\n-_\b2_\b6 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs_\b,_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\b> >\n-_\bB_\ba_\bs_\bi_\bs;\n+24 template\n+_\b2_\b5 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+26 {\n 27\n-_\b2_\b8 typedef const _\bB_\ba_\bs_\bi_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n-_\b2_\b9 typedef std::size_t _\bK_\be_\by;\n-30\n-31 template \n-_\b3_\b2 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-33 {\n-_\b3_\b4 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n-35 };\n-36 template< GeometryType::Id geometryId >\n-_\b3_\b7 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &order )\n-38 {\n-39 _\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bF_\bi_\be_\bl_\bd_\b> vecMatrix(order);\n-40 _\bM_\bB_\ba_\bs_\bi_\bs *mbasis = MBasisFactory::template create(order+1);\n-41 typename std::remove_const::type *tmBasis = new typename std::\n-remove_const::type(*mbasis);\n-42 tmBasis->fill(vecMatrix);\n-43 return tmBasis;\n-44 }\n-_\b4_\b5 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-46 };\n-47\n-48 template \n-_\b4_\b9 struct _\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n-50 {\n-_\b5_\b1 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n-_\b5_\b2 static const unsigned int _\bd_\bi_\bm = _\bg_\be_\bo_\bm_\be_\bt_\br_\by._\bd_\bi_\bm();\n-_\b5_\b3 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bM_\bI;\n-_\b5_\b4 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bM_\bI_\b> _\bM_\bI_\bB_\ba_\bs_\bi_\bs;\n-_\b5_\b5 _\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx(std::size_t order)\n+28 public:\n+_\b3_\b0 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n+31 {\n+32 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n+33 }\n+34\n+_\b4_\b0 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(unsigned int s)\n+41 {\n+42 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n+43 if (s & 1)\n+44 {\n+45 sign0 = -1.0;\n+46 }\n+47 if (s & 2)\n+48 {\n+49 sign1 = -1.0;\n+50 }\n+51 if (s & 4)\n+52 {\n+53 sign2 = -1.0;\n+54 }\n+55 if (s & 8)\n 56 {\n-57 /*\n-58 * Construction of Raviart-Thomas elements in high dimensions see \"Mixed\n-Finite Elements in \\R^3\" by Nedelec, 1980.\n-59 *\n-60 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree\n-$\\leq k$.\n-61 * The space of Raviart-Thomas functions in $n$ dimensions with index $k$ is\n-defined as\n-62 *\n-63 * \\begin{equation*}\n-64 * RT_k := (\\P_{k-1})^n \\oplus \\widetilde \\P_k x\n-65 * \\end{equation*}\n-66 * with $x=(x_1,x_2,\\dots, x_n)$ in $n$ dimensions and $\\widetilde \\P_k$ the\n-homogeneous polynomials of degree $k$.\n-67 *\n-68 * For $RT_k$ holds\n-69 * \\begin{equation*}\n-70 * (\\P_{k-1})^n \\subset RT_k \\subset (\\P_k)^n.\n-71 * \\end{equation*}\n-72 *\n-73 * We construct $(\\P_k)^n$ and and only use the monomials contained in\n-$RT_k$.\n-74 *\n-75 */\n-76\n-77 _\bM_\bI_\bB_\ba_\bs_\bi_\bs basis(order+1);\n-78 FieldVector< MI, dim > x;\n-79 /*\n-80 * Init MultiIndices\n-81 * x[0]=(1,0,0) x\n-82 * x[1]=(0,1,0) y\n-83 * x[2]=(0,0,1) z\n-84 */\n-85 for( unsigned int i = 0; i < _\bd_\bi_\bm; ++i )\n-86 x[ i ].set( i, 1 );\n-87 std::vector< MI > val( basis._\bs_\bi_\bz_\be() );\n-88\n-89 // val now contains all monomials in $n$ dimensions with degree $\\leq\n-order+1$\n-90 basis._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( x, val );\n-91\n-92 _\bc_\bo_\bl_\b_ = basis._\bs_\bi_\bz_\be();\n-93\n-94 // get $\\dim (\\P_{order-1})$\n-95 unsigned int notHomogen = 0;\n-96 if (order>0)\n-97 notHomogen = basis._\bs_\bi_\bz_\be_\bs()[order-1];\n-98\n-99 // get $\\dim \\widetilde (\\P_order)$\n-100 unsigned int homogen = basis._\bs_\bi_\bz_\be_\bs()[order]-notHomogen;\n-101\n-102 /*\n-103 *\n-104 * The set $RT_k$ is defined as\n-105 *\n-106 * \\begin{equation}\n-107 * RT_k := (\\P_k)^dim + \\widetilde \\P_k x with x\\in \\R^n.\n-108 * \\end{equation}\n-109 *\n-110 * The space $\\P_k$ is split in $\\P_k = \\P_{k-1} + \\widetilde \\P_k$.\n-111 *\n-112 * \\begin{align}\n-113 * RT_k &= (\\P_{k-1} + \\widetilde \\P_k)^dim + \\widetilde \\P_k x with x\\in\n-\\R^n\n-114 * &= (\\P_{k-1})^n + (\\widetilde \\P_k)^n + \\widetilde \\P_k x with x\\in \\R^n\n-115 * \\end{align}\n-116 *\n-117 * Thus $\\dim RT_k = n * \\dim \\P_{k-1} + (n+1)*\\dim (\\widetilde \\P_k)$\n-118 */\n-119\n-120 // row_ = \\dim RT_k *dim\n-121 _\br_\bo_\bw_\b_ = (notHomogen*_\bd_\bi_\bm+homogen*(_\bd_\bi_\bm+1))*_\bd_\bi_\bm;\n-122 _\bm_\ba_\bt_\b_ = new Field*[_\br_\bo_\bw_\b_];\n-123 int _\br_\bo_\bw = 0;\n-124\n-125 /* Assign the correct values for the nonhomogeneous polymonials $p\\in (\\P_\n-{oder-1})^dim$\n-126 * A basis function is represented by $dim$ rows.\n-127 */\n-128 for (unsigned int i=0; i\n-_\b1_\b9_\b6 void _\br_\bo_\bw( const unsigned int _\br_\bo_\bw, Vector &vec ) const\n-197 {\n-198 const unsigned int N = _\bc_\bo_\bl_\bs();\n-199 assert( vec.size() == N );\n-200 for (unsigned int i=0; i\n+_\b9_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const\n+98 {\n+99 // f gives v*outer normal at a point on the edge!\n+100 typedef typename LB::Traits::RangeFieldType Scalar;\n+101 //typedef typename LB::Traits::DomainFieldType Vector;\n+102\n+103 DUNE_THROW( NotImplemented, \"Interpolation for BDM1Cube3D finite elements\n+is not implemented.\" );\n+104\n+105 out.resize(18);\n+106 fill(out.begin(), out.end(), 0.0);\n+107\n+108 const int qOrder = 4;\n+109 const QuadratureRule& rule = QuadratureRules::rule\n+(GeometryTypes::cube(1), qOrder);\n+110\n+111 for (typename QuadratureRule::const_iterator it = rule.begin();\n+112 it != rule.end(); ++it)\n+113 {\n+114 // TODO: write interpolation\n+115 }\n+116 }\n+117\n+118 private:\n+119 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3, sign4,\n+sign5;\n+120 typename LB::Traits::DomainType n0, n1, n2, n3, n4, n5;\n+121 };\n+122} // end namespace Dune\n+123#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bd_\bi_\bm\n-static const unsigned int dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\b~_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n-~RTVecMatrix()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:179\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\ba_\bt_\b_\n-Field ** mat_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:204\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n-RTVecMatrix(std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\bs\n-unsigned int cols() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\b_\n-unsigned int row_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:203\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\bI\n-MultiIndex< dim, Field > MI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw\n-void row(const unsigned int row, Vector &vec) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\bI_\bB_\ba_\bs_\bi_\bs\n-MonomialBasis< geometryId, MI > MIBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-static constexpr GeometryType geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs\n-unsigned int rows() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\b_\n-unsigned int col_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:203\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const Basis Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-MonomialBasisProvider< dim, Field > MBasisFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bB_\ba_\bs_\bi_\bs\n-MBasisFactory::Object MBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-std::size_t Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs\n-StandardEvaluator< MBasis > EvalMBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n-MonomialBasisProvider< dd, FF > Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:440\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:476\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n-values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:498\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n-const unsigned int * sizes(unsigned int order) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:465\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:780\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM1Cube3DLocalInterpolation()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDM1Cube3DLocalInterpolation(unsigned int s)\n+Make set number s, where 0 <= s < 64.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:40\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas3cube2d.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube3d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas3cube2d.hh File Reference
    \n+
    brezzidouglasmarini1cube3d.hh File Reference
    \n
    \n
    \n \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT3Cube2DLocalFiniteElement< D, R >
     Second order Raviart-Thomas shape functions on cubes. More...
    class  Dune::BDM1Cube3DLocalFiniteElement< D, R >
     First order Brezzi-Douglas-Marini shape functions on hexahedron. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas3cube2d.hh File Reference\n+brezzidouglasmarini1cube3d.hh File Reference\n #include \n #include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 Second order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Brezzi-Douglas-Marini shape functions on hexahedron.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas3cube2d.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube3d.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,123 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas3cube2d.hh
    \n+
    brezzidouglasmarini1cube3d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
    \n
    7
    \n
    8#include <dune/geometry/type.hh>
    \n
    9
    \n
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n+\n+\n+\n
    14
    \n
    15namespace Dune
    \n
    16{
    \n-
    27 template<class D, class R>
    \n-
    \n-\n-
    29 {
    \n-
    30
    \n-
    31 public:
    \n-\n-\n-\n-\n-
    36
    \n-\n-
    40
    \n-
    \n-\n-
    47 basis(s),
    \n-
    48 interpolation(s)
    \n-
    49 {}
    \n-
    \n-
    50
    \n-
    \n-
    51 const typename Traits::LocalBasisType& localBasis () const
    \n-
    52 {
    \n-
    53 return basis;
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    \n-\n-
    57 {
    \n-
    58 return coefficients;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-\n-
    62 {
    \n-
    63 return interpolation;
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    \n-
    67 unsigned int size () const
    \n-
    68 {
    \n-
    69 return basis.size();
    \n-
    70 }
    \n-
    \n-
    71
    \n-
    \n-
    72 static constexpr GeometryType type ()
    \n-
    73 {
    \n-
    74 return GeometryTypes::quadrilateral;
    \n-
    75 }
    \n-
    \n-
    76
    \n-
    77 private:
    \n-\n-
    79 RT3Cube2DLocalCoefficients coefficients;
    \n-\n-
    81 };
    \n-
    \n-
    82}
    \n-
    83#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28
    \n+
    29 public:
    \n+\n+\n+\n+\n+
    34
    \n+\n+
    38
    \n+
    \n+\n+
    45 : basis(s)
    \n+
    46 , interpolation(s)
    \n+
    47 {}
    \n+
    \n+
    48
    \n+
    \n+
    49 const typename Traits::LocalBasisType& localBasis() const
    \n+
    50 {
    \n+
    51 return basis;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    55 {
    \n+
    56 return coefficients;
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+\n+
    60 {
    \n+
    61 return interpolation;
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    \n+
    65 unsigned int size () const
    \n+
    66 {
    \n+
    67 return basis.size();
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    \n+
    70 static constexpr GeometryType type()
    \n+
    71 {
    \n+
    72 return GeometryTypes::hexahedron;
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75 private:
    \n+\n+
    77 BDM1Cube3DLocalCoefficients coefficients;
    \n+\n+
    79 };
    \n+
    \n+
    80} // end namespace Dune
    \n+
    81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n+
    First order Brezzi-Douglas-Marini shape functions on hexahedron.
    Definition brezzidouglasmarini1cube3d.hh:27
    \n+
    BDM1Cube3DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini1cube3d.hh:36
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini1cube3d.hh:65
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini1cube3d.hh:54
    \n+
    static constexpr GeometryType type()
    Definition brezzidouglasmarini1cube3d.hh:70
    \n+
    LocalFiniteElementTraits< BDM1Cube3DLocalBasis< D, R >, BDM1Cube3DLocalCoefficients, BDM1Cube3DLocalInterpolation< BDM1Cube3DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini1cube3d.hh:33
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini1cube3d.hh:59
    \n+
    BDM1Cube3DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 64.
    Definition brezzidouglasmarini1cube3d.hh:44
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini1cube3d.hh:49
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:31
    \n+
    Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:24
    \n+
    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:26
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas3cube2d.hh:29
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas3cube2d.hh:56
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas3cube2d.hh:72
    \n-
    LocalFiniteElementTraits< RT3Cube2DLocalBasis< D, R >, RT3Cube2DLocalCoefficients, RT3Cube2DLocalInterpolation< RT3Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas3cube2d.hh:35
    \n-
    RT3Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas3cube2d.hh:46
    \n-
    RT3Cube2DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas3cube2d.hh:38
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas3cube2d.hh:67
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas3cube2d.hh:51
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas3cube2d.hh:61
    \n-
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalbasis.hh:29
    \n-
    Layout map for Raviart-Thomas-3 elements on quadrilaterals.
    Definition raviartthomas3cube2dlocalcoefficients.hh:23
    \n-
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalinterpolation.hh:25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,136 +1,139 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas3cube2d.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+brezzidouglasmarini1cube3d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH\n 7\n 8#include \n 9\n 10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n 14\n 15namespace _\bD_\bu_\bn_\be\n 16{\n-27 template\n-_\b2_\b8 class _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-29 {\n-30\n-31 public:\n-32 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-33 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-34 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b5 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-36\n-_\b3_\b8 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-39 {}\n-40\n-_\b4_\b6 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-47 basis(s),\n-48 interpolation(s)\n-49 {}\n-50\n-_\b5_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-52 {\n-53 return basis;\n-54 }\n-55\n-_\b5_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-57 {\n-58 return coefficients;\n-59 }\n-60\n-_\b6_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-62 {\n-63 return interpolation;\n-64 }\n-65\n-_\b6_\b7 unsigned int _\bs_\bi_\bz_\be () const\n-68 {\n-69 return basis.size();\n-70 }\n-71\n-_\b7_\b2 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-73 {\n-74 return GeometryTypes::quadrilateral;\n-75 }\n-76\n-77 private:\n-78 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-79 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-80 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-81 };\n-82}\n-83#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+25 template\n+_\b2_\b6 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 {\n+28\n+29 public:\n+30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+31 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+32 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b6 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+37 {}\n+38\n+_\b4_\b4 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+45 : basis(s)\n+46 , interpolation(s)\n+47 {}\n+48\n+_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() const\n+50 {\n+51 return basis;\n+52 }\n+53\n+_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n+55 {\n+56 return coefficients;\n+57 }\n+58\n+_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n+60 {\n+61 return interpolation;\n+62 }\n+63\n+_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+66 {\n+67 return basis.size();\n+68 }\n+69\n+_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be()\n+71 {\n+72 return GeometryTypes::hexahedron;\n+73 }\n+74\n+75 private:\n+76 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+77 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+78 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+79 };\n+80} // end namespace Dune\n+81#endif /\n+/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Brezzi-Douglas-Marini shape functions on hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM1Cube3DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< BDM1Cube3DLocalBasis< D, R >,\n+BDM1Cube3DLocalCoefficients, BDM1Cube3DLocalInterpolation<\n+BDM1Cube3DLocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+BDM1Cube3DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 64.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:26\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n traits helper struct\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n LB LocalBasisType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n LC LocalCoefficientsType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n LI LocalInterpolationType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT3Cube2DLocalBasis< D, R >,\n-RT3Cube2DLocalCoefficients, RT3Cube2DLocalInterpolation< RT3Cube2DLocalBasis<\n-D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT3Cube2DLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT3Cube2DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Second order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-3 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Second order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:25\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas4cube2d.hh File Reference\n+dune-localfunctions: interpolationhelper.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,38 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas4cube2d.hh File Reference
    \n+
    interpolationhelper.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "raviartthomas4cube2d/raviartthomas4cube2dlocalbasis.hh"
    \n-#include "raviartthomas4cube2d/raviartthomas4cube2dlocalcoefficients.hh"
    \n-#include "raviartthomas4cube2d/raviartthomas4cube2dlocalinterpolation.hh"
    \n+
    #include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/concept.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT4Cube2DLocalFiniteElement< D, R >
     Second order Raviart-Thomas shape functions on cubes. More...
    struct  Dune::InterpolationHelper< F, dimension >
     
    struct  Dune::InterpolationHelper< F, dimension >::Helper< Func, Vector, true >
     
    struct  Dune::InterpolationHelper< F, dimension >::Helper< Basis, Matrix, false >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas4cube2d.hh File Reference\n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+interpolationhelper.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 Second order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be\n+ _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\b>_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,\n+ _\bf_\ba_\bl_\bs_\be_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas4cube2d.hh Source File\n+dune-localfunctions: interpolationhelper.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,199 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas4cube2d.hh
    \n+
    interpolationhelper.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef GENERIC_INTERPOLATIONHELPER_HH
    \n+
    6#define GENERIC_INTERPOLATIONHELPER_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <vector>
    \n
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    27 template<class D, class R>
    \n-
    \n-\n+
    10#include <dune/common/fvector.hh>
    \n+
    11#include <dune/common/concept.hh>
    \n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16 // A small helper class to avoid having to
    \n+
    17 // write the interpolation twice (once for function
    \n+
    18 // and once for a basis)
    \n+
    19 template< class F, unsigned int dimension >
    \n+
    \n+\n+
    21 {
    \n+
    22 template <class Func,class Container, bool type>
    \n+
    23 struct Helper;
    \n+
    24 };
    \n+
    \n+
    25 template <class F,unsigned int d>
    \n+
    26 template <class Func,class Vector>
    \n+
    \n+
    27 struct InterpolationHelper<F,d>::Helper<Func,Vector,true>
    \n+
    28 // Func is of Function type
    \n
    29 {
    \n-
    30
    \n-
    31 public:
    \n-\n-\n-\n-\n-
    36
    \n-\n-
    40
    \n-
    \n-\n-
    47 basis(s),
    \n-
    48 interpolation(s)
    \n-
    49 {}
    \n-
    \n-
    50
    \n-
    \n-
    51 const typename Traits::LocalBasisType& localBasis () const
    \n-
    52 {
    \n-
    53 return basis;
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    \n-\n-
    57 {
    \n-
    58 return coefficients;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-\n-
    62 {
    \n-
    63 return interpolation;
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    \n-
    67 unsigned int size () const
    \n-
    68 {
    \n-
    69 return basis.size();
    \n-
    70 }
    \n-
    \n-
    71
    \n-
    \n-
    72 static constexpr GeometryType type ()
    \n-
    73 {
    \n-
    74 return GeometryTypes::quadrilateral;
    \n-
    75 }
    \n-
    \n-
    76
    \n-
    77 private:
    \n-\n-
    79 RT4Cube2DLocalCoefficients coefficients;
    \n-\n-
    81 };
    \n-
    \n-
    82}
    \n-
    83#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+
    30 typedef std::vector< Dune::FieldVector<F,d> > Result;
    \n+
    \n+
    31 Helper(const Func & func, Vector &vec)
    \n+
    32 : func_(func),
    \n+
    33 vec_(vec),
    \n+
    34 tmp_(1)
    \n+
    35 {}
    \n+
    \n+
    \n+
    36 const typename Vector::value_type &operator()(unsigned int row,unsigned int col)
    \n+
    37 {
    \n+
    38 return vec_[row];
    \n+
    39 }
    \n+
    \n+
    40 template <class Fy>
    \n+
    \n+
    41 void set(unsigned int row,unsigned int col,
    \n+
    42 const Fy &val)
    \n+
    43 {
    \n+
    44 assert(col==0);
    \n+
    45 assert(row<vec_.size());
    \n+
    46 field_cast( val, vec_[row] );
    \n+
    47 }
    \n+
    \n+
    48 template <class Fy>
    \n+
    \n+
    49 void add(unsigned int row,unsigned int col,
    \n+
    50 const Fy &val)
    \n+
    51 {
    \n+
    52 assert(col==0);
    \n+
    53 assert(row<vec_.size());
    \n+
    54 vec_[row] += field_cast<typename Vector::value_type>(val);
    \n+
    55 }
    \n+
    \n+
    56 template <class DomainVector>
    \n+
    \n+
    57 const Result &evaluate(const DomainVector &x) const
    \n+
    58 {
    \n+
    59 field_cast(func_(x), tmp_[0] );
    \n+
    60 return tmp_;
    \n+
    61 }
    \n+
    \n+
    \n+
    62 unsigned int size() const
    \n+
    63 {
    \n+
    64 return 1;
    \n+
    65 }
    \n+
    \n+
    66 const Func &func_;
    \n+
    67 Vector &vec_;
    \n+
    68 mutable Result tmp_;
    \n+
    69 };
    \n+
    \n+
    70 template <class F,unsigned int d>
    \n+
    71 template <class Basis,class Matrix>
    \n+
    \n+
    72 struct InterpolationHelper<F,d>::Helper<Basis,Matrix,false>
    \n+
    73 // Func is of Basis type
    \n+
    74 {
    \n+
    75 typedef std::vector< Dune::FieldVector<F,d> > Result;
    \n+
    \n+
    76 Helper(const Basis & basis, Matrix &matrix)
    \n+
    77 : basis_(basis),
    \n+
    78 matrix_(matrix),
    \n+
    79 tmp_(basis.size()) {}
    \n+
    \n+
    \n+
    80 const F &operator()(unsigned int row,unsigned int col) const
    \n+
    81 {
    \n+
    82 return matrix_[row][col];
    \n+
    83 }
    \n+
    \n+
    \n+
    84 F &operator()(unsigned int row,unsigned int col)
    \n+
    85 {
    \n+
    86 return matrix_[row][col];
    \n+
    87 }
    \n+
    \n+
    88 template <class Fy>
    \n+
    \n+
    89 void set(unsigned int row,unsigned int col,
    \n+
    90 const Fy &val)
    \n+
    91 {
    \n+
    92 assert(col<matrix_.cols());
    \n+
    93 assert(row<matrix_.rows());
    \n+
    94 field_cast(val,matrix_[row][col]);
    \n+
    95 }
    \n+
    \n+
    96 template <class Fy>
    \n+
    \n+
    97 void add(unsigned int row,unsigned int col,
    \n+
    98 const Fy &val)
    \n+
    99 {
    \n+
    100 assert(col<matrix_.cols());
    \n+
    101 assert(row<matrix_.rows());
    \n+
    102 matrix_[row][col] += val;
    \n+
    103 }
    \n+
    \n+
    104 template <class DomainVector>
    \n+
    \n+
    105 const Result &evaluate(const DomainVector &x) const
    \n+
    106 {
    \n+
    107 basis_.template evaluate<0>(x,tmp_);
    \n+
    108 return tmp_;
    \n+
    109 }
    \n+
    \n+
    \n+
    110 unsigned int size() const
    \n+
    111 {
    \n+
    112 return basis_.size();
    \n+
    113 }
    \n+
    \n+
    114
    \n+
    115 const Basis &basis_;
    \n+
    116 Matrix &matrix_;
    \n+
    117 mutable Result tmp_;
    \n+
    118 };
    \n+
    \n+
    119}
    \n+
    120#endif // GENERIC_INTERPOLATIONHELPER_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas4cube2d.hh:29
    \n-
    LocalFiniteElementTraits< RT4Cube2DLocalBasis< D, R >, RT4Cube2DLocalCoefficients, RT4Cube2DLocalInterpolation< RT4Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas4cube2d.hh:35
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas4cube2d.hh:67
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas4cube2d.hh:56
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas4cube2d.hh:61
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas4cube2d.hh:51
    \n-
    RT4Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas4cube2d.hh:46
    \n-
    RT4Cube2DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas4cube2d.hh:38
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas4cube2d.hh:72
    \n-
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas4cube2dlocalbasis.hh:29
    \n-
    Layout map for Raviart-Thomas-4 elements on quadrilaterals.
    Definition raviartthomas4cube2dlocalcoefficients.hh:23
    \n-
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas4cube2dlocalinterpolation.hh:25
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    Definition interpolationhelper.hh:21
    \n+
    Definition interpolationhelper.hh:23
    \n+
    void add(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:49
    \n+
    const Func & func_
    Definition interpolationhelper.hh:66
    \n+
    Helper(const Func &func, Vector &vec)
    Definition interpolationhelper.hh:31
    \n+
    const Result & evaluate(const DomainVector &x) const
    Definition interpolationhelper.hh:57
    \n+
    std::vector< Dune::FieldVector< F, d > > Result
    Definition interpolationhelper.hh:30
    \n+
    unsigned int size() const
    Definition interpolationhelper.hh:62
    \n+
    Vector & vec_
    Definition interpolationhelper.hh:67
    \n+
    void set(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:41
    \n+
    Result tmp_
    Definition interpolationhelper.hh:68
    \n+
    const Vector::value_type & operator()(unsigned int row, unsigned int col)
    Definition interpolationhelper.hh:36
    \n+
    const Basis & basis_
    Definition interpolationhelper.hh:115
    \n+
    const Result & evaluate(const DomainVector &x) const
    Definition interpolationhelper.hh:105
    \n+
    F & operator()(unsigned int row, unsigned int col)
    Definition interpolationhelper.hh:84
    \n+
    void set(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:89
    \n+
    Helper(const Basis &basis, Matrix &matrix)
    Definition interpolationhelper.hh:76
    \n+
    unsigned int size() const
    Definition interpolationhelper.hh:110
    \n+
    Result tmp_
    Definition interpolationhelper.hh:117
    \n+
    void add(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:97
    \n+
    std::vector< Dune::FieldVector< F, d > > Result
    Definition interpolationhelper.hh:75
    \n+
    Matrix & matrix_
    Definition interpolationhelper.hh:116
    \n+
    const F & operator()(unsigned int row, unsigned int col) const
    Definition interpolationhelper.hh:80
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,136 +1,207 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas4cube2d.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+interpolationhelper.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH\n+5#ifndef GENERIC_INTERPOLATIONHELPER_HH\n+6#define GENERIC_INTERPOLATIONHELPER_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-27 template\n-_\b2_\b8 class _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+10#include \n+11#include \n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16 // A small helper class to avoid having to\n+17 // write the interpolation twice (once for function\n+18 // and once for a basis)\n+19 template< class F, unsigned int dimension >\n+_\b2_\b0 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n+21 {\n+22 template \n+_\b2_\b3 struct _\bH_\be_\bl_\bp_\be_\br;\n+24 };\n+25 template \n+26 template \n+_\b2_\b7 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br::_\bH_\be_\bl_\bp_\be_\br\n+28 // Func is of Function type\n 29 {\n-30\n-31 public:\n-32 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-33 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-34 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b5 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-36\n-_\b3_\b8 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-39 {}\n-40\n-_\b4_\b6 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-47 basis(s),\n-48 interpolation(s)\n-49 {}\n-50\n-_\b5_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-52 {\n-53 return basis;\n-54 }\n-55\n-_\b5_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-57 {\n-58 return coefficients;\n-59 }\n-60\n-_\b6_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-62 {\n-63 return interpolation;\n-64 }\n-65\n-_\b6_\b7 unsigned int _\bs_\bi_\bz_\be () const\n-68 {\n-69 return basis.size();\n-70 }\n-71\n-_\b7_\b2 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-73 {\n-74 return GeometryTypes::quadrilateral;\n-75 }\n-76\n-77 private:\n-78 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-79 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-80 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-81 };\n-82}\n-83#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\b3_\b0 typedef std::vector< Dune::FieldVector > _\bR_\be_\bs_\bu_\bl_\bt;\n+_\b3_\b1 _\bH_\be_\bl_\bp_\be_\br(const Func & func, Vector &vec)\n+32 : func_(func),\n+33 vec_(vec),\n+34 tmp_(1)\n+35 {}\n+_\b3_\b6 const typename Vector::value_type &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int\n+col)\n+37 {\n+38 return vec_[row];\n+39 }\n+40 template \n+_\b4_\b1 void _\bs_\be_\bt(unsigned int row,unsigned int col,\n+42 const Fy &val)\n+43 {\n+44 assert(col==0);\n+45 assert(row\n+_\b4_\b9 void _\ba_\bd_\bd(unsigned int row,unsigned int col,\n+50 const Fy &val)\n+51 {\n+52 assert(col==0);\n+53 assert(row(val);\n+55 }\n+56 template \n+_\b5_\b7 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n+58 {\n+59 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(func_(x), tmp_[0] );\n+60 return tmp_;\n+61 }\n+_\b6_\b2 unsigned int _\bs_\bi_\bz_\be() const\n+63 {\n+64 return 1;\n+65 }\n+_\b6_\b6 const Func &_\bf_\bu_\bn_\bc_\b_;\n+_\b6_\b7 Vector &_\bv_\be_\bc_\b_;\n+_\b6_\b8 mutable _\bR_\be_\bs_\bu_\bl_\bt _\bt_\bm_\bp_\b_;\n+69 };\n+70 template \n+71 template \n+_\b7_\b2 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br::_\bH_\be_\bl_\bp_\be_\br\n+73 // Func is of Basis type\n+74 {\n+_\b7_\b5 typedef std::vector< Dune::FieldVector > _\bR_\be_\bs_\bu_\bl_\bt;\n+_\b7_\b6 _\bH_\be_\bl_\bp_\be_\br(const Basis & basis, Matrix &matrix)\n+77 : basis_(basis),\n+78 matrix_(matrix),\n+79 tmp_(basis.size()) {}\n+_\b8_\b0 const F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int col) const\n+81 {\n+82 return matrix_[row][col];\n+83 }\n+_\b8_\b4 F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int col)\n+85 {\n+86 return matrix_[row][col];\n+87 }\n+88 template \n+_\b8_\b9 void _\bs_\be_\bt(unsigned int row,unsigned int col,\n+90 const Fy &val)\n+91 {\n+92 assert(col\n+_\b9_\b7 void _\ba_\bd_\bd(unsigned int row,unsigned int col,\n+98 const Fy &val)\n+99 {\n+100 assert(col\n+_\b1_\b0_\b5 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n+106 {\n+107 basis_.template evaluate<0>(x,tmp_);\n+108 return tmp_;\n+109 }\n+_\b1_\b1_\b0 unsigned int _\bs_\bi_\bz_\be() const\n+111 {\n+112 return basis_.size();\n+113 }\n+114\n+_\b1_\b1_\b5 const Basis &_\bb_\ba_\bs_\bi_\bs_\b_;\n+_\b1_\b1_\b6 Matrix &_\bm_\ba_\bt_\br_\bi_\bx_\b_;\n+_\b1_\b1_\b7 mutable _\bR_\be_\bs_\bu_\bl_\bt _\bt_\bm_\bp_\b_;\n+118 };\n+119}\n+120#endif // GENERIC_INTERPOLATIONHELPER_HH\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT4Cube2DLocalBasis< D, R >,\n-RT4Cube2DLocalCoefficients, RT4Cube2DLocalInterpolation< RT4Cube2DLocalBasis<\n-D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\ba_\bd_\bd\n+void add(unsigned int row, unsigned int col, const Fy &val)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bf_\bu_\bn_\bc_\b_\n+const Func & func_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n+Helper(const Func &func, Vector &vec)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+const Result & evaluate(const DomainVector &x) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bR_\be_\bs_\bu_\bl_\bt\n+std::vector< Dune::FieldVector< F, d > > Result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT4Cube2DLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT4Cube2DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Second order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-4 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Second order Raviart-Thomas shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalinterpolation.hh:25\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bv_\be_\bc_\b_\n+Vector & vec_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bs_\be_\bt\n+void set(unsigned int row, unsigned int col, const Fy &val)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bt_\bm_\bp_\b_\n+Result tmp_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bF_\bu_\bn_\bc_\b,_\b _\bV_\be_\bc_\bt_\bo_\br_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const Vector::value_type & operator()(unsigned int row, unsigned int col)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_\n+const Basis & basis_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+const Result & evaluate(const DomainVector &x) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+F & operator()(unsigned int row, unsigned int col)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bs_\be_\bt\n+void set(unsigned int row, unsigned int col, const Fy &val)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n+Helper(const Basis &basis, Matrix &matrix)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bt_\bm_\bp_\b_\n+Result tmp_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:117\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\ba_\bd_\bd\n+void add(unsigned int row, unsigned int col, const Fy &val)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bR_\be_\bs_\bu_\bl_\bt\n+std::vector< Dune::FieldVector< F, d > > Result\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bm_\ba_\bt_\br_\bi_\bx_\b_\n+Matrix & matrix_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bM_\ba_\bt_\br_\bi_\bx_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const F & operator()(unsigned int row, unsigned int col) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:80\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomaslfecache.hh File Reference\n+dune-localfunctions: monomialbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,66 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomaslfecache.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    monomialbasis.hh File Reference
    \n \n
    \n-
    #include <tuple>
    \n-#include <utility>
    \n+
    #include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/geometry/typeindex.hh>
    \n-#include <dune/localfunctions/raviartthomas.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementvariantcache.hh>
    \n+#include <dune/geometry/topologyfactory.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n+#include <dune/localfunctions/utility/multiindex.hh>
    \n+#include <dune/localfunctions/utility/tensor.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::MonomialBasisSize< geometryId >
     
    struct  Dune::MonomialBasisHelper< mydim, dim, F >
     
    class  Dune::MonomialBasisImpl< geometryId, F >
     
    class  Dune::MonomialBasis< geometryId, F >
     
    class  Dune::StandardMonomialBasis< dim, F >
     
    class  Dune::StandardBiMonomialBasis< dim, F >
     
    class  Dune::VirtualMonomialBasis< dim, F >
     
    class  Dune::VirtualMonomialBasisImpl< geometryId, F >
     
    struct  Dune::MonomialBasisFactory< dim, F >
     
    struct  Dune::MonomialBasisFactory< dim, F >::EvaluationBasisFactory< dd, FF >
     
    struct  Dune::MonomialBasisProvider< dim, SF >
     
    struct  Dune::MonomialBasisProvider< dim, SF >::EvaluationBasisFactory< dd, FF >
     
    \n \n \n \n-

    \n Namespaces

    namespace  Dune
     
    \n-\n-\n-\n-\n-\n

    \n-Typedefs

    template<class D , class R , std::size_t dim, std::size_t order>
    using Dune::RaviartThomasLocalFiniteElementCache = LocalFiniteElementVariantCache< Impl::ImplementedRaviartThomasLocalFiniteElements< D, R, dim, order > >
     A cache that stores all available Raviart-Thomas local finite elements for the given dimension and order.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,49 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-raviartthomaslfecache.hh File Reference\n-#include \n-#include \n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+monomialbasis.hh File Reference\n+#include \n+#include \n+#include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br_\b<_\b _\bm_\by_\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bd_\b,_\b _\bF_\bF_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bd_\b,_\b _\bF_\bF\n+ _\b>\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be =\n- _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be< Impl::\n- ImplementedRaviartThomasLocalFiniteElements< D, R, dim, order > >\n-\u00a0 A cache that stores all available Raviart-Thomas local finite elements\n- for the given dimension and order.\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomaslfecache.hh Source File\n+dune-localfunctions: monomialbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,1025 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomaslfecache.hh
    \n+
    monomialbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
    \n+
    5#ifndef DUNE_MONOMIALBASIS_HH
    \n+
    6#define DUNE_MONOMIALBASIS_HH
    \n
    7
    \n-
    8#include <tuple>
    \n-
    9#include <utility>
    \n-
    10
    \n-
    11#include <dune/geometry/type.hh>
    \n-
    12#include <dune/geometry/typeindex.hh>
    \n-
    13
    \n-\n-\n-
    16
    \n-
    17namespace Dune {
    \n-
    18
    \n-
    19namespace Impl {
    \n-
    20
    \n-
    21 // Provide implemented Raviart-Thomas local finite elements
    \n-
    22
    \n-
    23 template<class D, class R, std::size_t dim, std::size_t order>
    \n-
    24 struct ImplementedRaviartThomasLocalFiniteElements
    \n-
    25 {};
    \n-
    26
    \n-
    27 template<class D, class R>
    \n-
    28 struct ImplementedRaviartThomasLocalFiniteElements<D,R,2,0> : public FixedDimLocalGeometryTypeIndex<2>
    \n-
    29 {
    \n-
    30 using FixedDimLocalGeometryTypeIndex<2>::index;
    \n-
    31 static auto getImplementations()
    \n-
    32 {
    \n-
    33 return std::make_tuple(
    \n-
    34 std::make_pair(index(GeometryTypes::triangle), []() { return RT02DLocalFiniteElement<D,R>(); }),
    \n-
    35 std::make_pair(index(GeometryTypes::quadrilateral), []() { return RT0Cube2DLocalFiniteElement<D,R>(); })
    \n-
    36 );
    \n-
    37 }
    \n-
    38 };
    \n-
    39
    \n-
    40 template<class D, class R>
    \n-
    41 struct ImplementedRaviartThomasLocalFiniteElements<D,R,2,1> : public FixedDimLocalGeometryTypeIndex<2>
    \n-
    42 {
    \n-
    43 using FixedDimLocalGeometryTypeIndex<2>::index;
    \n-
    44 static auto getImplementations()
    \n-
    45 {
    \n-
    46 return std::make_tuple(
    \n-
    47 std::make_pair(index(GeometryTypes::triangle), []() { return RT12DLocalFiniteElement<D,R>(); }),
    \n-
    48 std::make_pair(index(GeometryTypes::quadrilateral), []() { return RT1Cube2DLocalFiniteElement<D,R>(); })
    \n-
    49 );
    \n-
    50 }
    \n-
    51 };
    \n-
    52
    \n-
    53 template<class D, class R>
    \n-
    54 struct ImplementedRaviartThomasLocalFiniteElements<D,R,2,2> : public FixedDimLocalGeometryTypeIndex<2>
    \n-
    55 {
    \n-
    56 using FixedDimLocalGeometryTypeIndex<2>::index;
    \n-
    57 static auto getImplementations()
    \n-
    58 {
    \n-
    59 return std::make_tuple(
    \n-
    60 std::make_pair(index(GeometryTypes::quadrilateral), []() { return RT2Cube2DLocalFiniteElement<D,R>(); })
    \n-
    61 );
    \n-
    62 }
    \n-
    63 };
    \n-
    64
    \n-
    65 template<class D, class R>
    \n-
    66 struct ImplementedRaviartThomasLocalFiniteElements<D,R,3,0> : public FixedDimLocalGeometryTypeIndex<3>
    \n-
    67 {
    \n-
    68 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n-
    69 static auto getImplementations()
    \n-
    70 {
    \n-
    71 return std::make_tuple(
    \n-
    72 std::make_pair(index(GeometryTypes::tetrahedron), []() { return RT03DLocalFiniteElement<D,R>(); }),
    \n-
    73 std::make_pair(index(GeometryTypes::hexahedron), []() { return RT0Cube3DLocalFiniteElement<D,R>(); })
    \n-
    74 );
    \n-
    75 }
    \n-
    76 };
    \n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/common/fvector.hh>
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \n+
    13#include <dune/geometry/type.hh>
    \n+
    14#include <dune/geometry/topologyfactory.hh>
    \n+
    15
    \n+\n+\n+\n+
    19
    \n+
    20namespace Dune
    \n+
    21{
    \n+
    22 /************************************************
    \n+
    23 * Classes for evaluating ''Monomials'' on any order
    \n+
    24 * for all reference element type.
    \n+
    25 * For a simplex topology these are the normal
    \n+
    26 * monomials for cube topologies the bimonomials.
    \n+
    27 * The construction follows the construction of the
    \n+
    28 * generic geometries using tensor products for
    \n+
    29 * prism generation and duffy transform for pyramid
    \n+
    30 * construction.
    \n+
    31 * A derivative argument can be applied, in which case
    \n+
    32 * all derivatives up to the desired order are
    \n+
    33 * evaluated. Note that for higher order derivatives
    \n+
    34 * only the ''lower'' part of the symmetric tensor
    \n+
    35 * is evaluated, e.g., passing derivative equal to 2
    \n+
    36 * to the class will provide the vector
    \n+
    37 * (d/dxdx p, d/dxydx p, d/dydy p,
    \n+
    38 * d/dx p, d/dy p, p)
    \n+
    39 * Important:
    \n+
    40 * So far the computation of the derivatives has not
    \n+
    41 * been fully implemented for general pyramid
    \n+
    42 * construction, i.e., in the case where a pyramid is
    \n+
    43 * build over a non simplex base geometry.
    \n+
    44 *
    \n+
    45 * Central classes:
    \n+
    46 * 1) template< GeometryType::Id geometryId, class F >
    \n+
    47 * class MonomialBasisImpl;
    \n+
    48 * Implementation of the monomial evaluation for
    \n+
    49 * a given topology and field type.
    \n+
    50 * The method evaluate fills a F* vector
    \n+
    51 * 2) template< GeometryType::Id geometryId, class F >
    \n+
    52 * class MonomialBasis
    \n+
    53 * The base class for the static monomial evaluation
    \n+
    54 * providing additional evaluate methods including
    \n+
    55 * one taking std::vector<F>.
    \n+
    56 * 3) template< int dim, class F >
    \n+
    57 * class VirtualMonomialBasis
    \n+
    58 * Virtualization of the MonomialBasis.
    \n+
    59 * 4) template< int dim, class F >
    \n+
    60 * struct MonomialBasisFactory;
    \n+
    61 * A factory class for the VirtualMonomialBasis
    \n+
    62 * 5) template< int dim, class F >
    \n+
    63 * struct MonomialBasisProvider
    \n+
    64 * A singleton container for the virtual monomial
    \n+
    65 * basis
    \n+
    66 ************************************************/
    \n+
    67
    \n+
    68 // Internal Forward Declarations
    \n+
    69 // -----------------------------
    \n+
    70
    \n+
    71 template< GeometryType::Id geometryId >
    \n+
    72 class MonomialBasisSize;
    \n+
    73
    \n+
    74 template< GeometryType::Id geometryId, class F >
    \n+
    75 class MonomialBasis;
    \n+
    76
    \n
    77
    \n-
    78 template<class D, class R>
    \n-
    79 struct ImplementedRaviartThomasLocalFiniteElements<D,R,3,1> : public FixedDimLocalGeometryTypeIndex<3>
    \n-
    80 {
    \n-
    81 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n-
    82 static auto getImplementations()
    \n-
    83 {
    \n-
    84 return std::make_tuple(
    \n-
    85 std::make_pair(index(GeometryTypes::hexahedron), []() { RT1Cube3DLocalFiniteElement<D,R>(); })
    \n-
    86 );
    \n-
    87 }
    \n-
    88 };
    \n-
    89
    \n-
    90} // namespace Impl
    \n-
    91
    \n-
    92
    \n+
    78
    \n+
    79 // MonomialBasisSize
    \n+
    80 // -----------------
    \n+
    81
    \n+
    82 template< GeometryType::Id geometryId >
    \n+
    \n+\n+
    84 {
    \n+\n+
    86
    \n+
    87 public:
    \n+
    \n+
    88 static This &instance ()
    \n+
    89 {
    \n+
    90 static This _instance;
    \n+
    91 return _instance;
    \n+
    92 }
    \n+
    \n
    93
    \n-
    103template<class D, class R, std::size_t dim, std::size_t order>
    \n-\n-
    105
    \n-
    106} // namespace Dune
    \n-
    107
    \n-
    108#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
    \n-\n-\n+
    94 unsigned int maxOrder_;
    \n+
    95
    \n+
    96 // sizes_[ k ]: number of basis functions of exactly order k
    \n+
    97 mutable unsigned int *sizes_;
    \n+
    98
    \n+
    99 // numBaseFunctions_[ k ] = sizes_[ 0 ] + ... + sizes_[ k ]
    \n+
    100 mutable unsigned int *numBaseFunctions_;
    \n+
    101
    \n+
    \n+\n+
    103 : maxOrder_( 0 ),
    \n+
    104 sizes_( 0 ),
    \n+\n+
    106 {
    \n+
    107 computeSizes( 2 );
    \n+
    108 }
    \n+
    \n+
    109
    \n+
    \n+\n+
    111 {
    \n+
    112 delete[] sizes_;
    \n+
    113 delete[] numBaseFunctions_;
    \n+
    114 }
    \n+
    \n+
    115
    \n+
    \n+
    116 unsigned int operator() ( const unsigned int order ) const
    \n+
    117 {
    \n+
    118 return numBaseFunctions_[ order ];
    \n+
    119 }
    \n+
    \n+
    120
    \n+
    \n+
    121 unsigned int maxOrder() const
    \n+
    122 {
    \n+
    123 return maxOrder_;
    \n+
    124 }
    \n+
    \n+
    125
    \n+
    \n+
    126 void computeSizes ( unsigned int order )
    \n+
    127 {
    \n+
    128 if (order <= maxOrder_)
    \n+
    129 return;
    \n+
    130
    \n+
    131 maxOrder_ = order;
    \n+
    132
    \n+
    133 delete[] sizes_;
    \n+
    134 delete[] numBaseFunctions_;
    \n+
    135 sizes_ = new unsigned int[ order+1 ];
    \n+
    136 numBaseFunctions_ = new unsigned int[ order+1 ];
    \n+
    137
    \n+
    138 constexpr GeometryType geometry = geometryId;
    \n+
    139 constexpr auto dim = geometry.dim();
    \n+
    140
    \n+
    141 sizes_[ 0 ] = 1;
    \n+
    142 for( unsigned int k = 1; k <= order; ++k )
    \n+
    143 sizes_[ k ] = 0;
    \n+
    144
    \n+
    145 std::fill(numBaseFunctions_, numBaseFunctions_+order+1, 1);
    \n+
    146
    \n+
    147 for( int codim=dim-1; codim>=0; codim--)
    \n+
    148 {
    \n+
    149 if (Impl::isPrism(geometry.id(),dim,codim))
    \n+
    150 {
    \n+
    151 for( unsigned int k = 1; k <= order; ++k )
    \n+
    152 {
    \n+
    153 sizes_[ k ] = numBaseFunctions_[ k ] + k*sizes_[ k ];
    \n+
    154 numBaseFunctions_[ k ] = numBaseFunctions_[ k-1 ] + sizes_[ k ];
    \n+
    155 }
    \n+
    156 }
    \n+
    157 else
    \n+
    158 {
    \n+
    159 for( unsigned int k = 1; k <= order; ++k )
    \n+
    160 {
    \n+
    161 sizes_[ k ] = numBaseFunctions_[ k ];
    \n+
    162 numBaseFunctions_[ k ] = numBaseFunctions_[ k-1 ] + sizes_[ k ];
    \n+
    163 }
    \n+
    164 }
    \n+
    165 }
    \n+
    166 }
    \n+
    \n+
    167 };
    \n+
    \n+
    168
    \n+
    169
    \n+
    170
    \n+
    171 // MonomialBasisHelper
    \n+
    172 // -------------------
    \n+
    173
    \n+
    174
    \n+
    175 template< int mydim, int dim, class F >
    \n+
    \n+\n+
    177 {
    \n+
    178 typedef MonomialBasisSize< GeometryTypes::simplex(mydim).toId() > MySize;
    \n+
    179 typedef MonomialBasisSize< GeometryTypes::simplex(dim).toId() > Size;
    \n+
    180
    \n+
    \n+
    181 static void copy ( const unsigned int deriv, F *&wit, F *&rit,
    \n+
    182 const unsigned int numBaseFunctions, const F &z )
    \n+
    183 {
    \n+
    184 // n(d,k) = size<k>[d];
    \n+
    185 MySize &mySize = MySize::instance();
    \n+
    186 Size &size = Size::instance();
    \n+
    187
    \n+
    188 const F *const rend = rit + size( deriv )*numBaseFunctions;
    \n+
    189 for( ; rit != rend; )
    \n+
    190 {
    \n+
    191 F *prit = rit;
    \n+
    192
    \n+
    193 *wit = z * *rit;
    \n+
    194 ++rit, ++wit;
    \n+
    195
    \n+
    196 for( unsigned d = 1; d <= deriv; ++d )
    \n+
    197 {
    \n+
    198 #ifndef NDEBUG
    \n+
    199 const F *const derivEnd = rit + mySize.sizes_[ d ];
    \n+
    200 #endif
    \n+
    201
    \n+
    202 {
    \n+
    203 const F *const drend = rit + mySize.sizes_[ d ] - mySize.sizes_[ d-1 ];
    \n+
    204 for( ; rit != drend ; ++rit, ++wit )
    \n+
    205 *wit = z * *rit;
    \n+
    206 }
    \n+
    207
    \n+
    208 for (unsigned int j=1; j<d; ++j)
    \n+
    209 {
    \n+
    210 const F *const drend = rit + mySize.sizes_[ d-j ] - mySize.sizes_[ d-j-1 ];
    \n+
    211 for( ; rit != drend ; ++prit, ++rit, ++wit )
    \n+
    212 *wit = F(j) * *prit + z * *rit;
    \n+
    213 }
    \n+
    214 *wit = F(d) * *prit + z * *rit;
    \n+
    215 ++prit, ++rit, ++wit;
    \n+
    216 assert(derivEnd == rit);
    \n+
    217 rit += size.sizes_[d] - mySize.sizes_[d];
    \n+
    218 prit += size.sizes_[d-1] - mySize.sizes_[d-1];
    \n+
    219 const F *const emptyWitEnd = wit + size.sizes_[d] - mySize.sizes_[d];
    \n+
    220 for ( ; wit != emptyWitEnd; ++wit )
    \n+
    221 *wit = Zero<F>();
    \n+
    222 }
    \n+
    223 }
    \n+
    224 }
    \n+
    \n+
    225 };
    \n+
    \n+
    226
    \n+
    227
    \n+
    228
    \n+
    229 // MonomialBasisImpl
    \n+
    230 // -----------------
    \n+
    231
    \n+
    232 template< GeometryType::Id geometryId, class F>
    \n+
    \n+\n+
    234 {
    \n+
    235 public:
    \n+
    236 typedef F Field;
    \n+
    237
    \n+
    238 static constexpr GeometryType geometry = geometryId;
    \n+
    239
    \n+
    240 static const unsigned int dimDomain = geometry.dim();
    \n+
    241
    \n+
    242 typedef FieldVector< Field, dimDomain > DomainVector;
    \n+
    243
    \n+
    244 private:
    \n+
    245 friend class MonomialBasis< geometryId, Field >;
    \n+
    246
    \n+\n+
    248 {}
    \n+
    249
    \n+
    250 template< int dimD >
    \n+
    251 void evaluate ( const unsigned int deriv, const unsigned int order,
    \n+
    252 const FieldVector< Field, dimD > &x,
    \n+
    253 const unsigned int block, const unsigned int *const offsets,
    \n+
    254 Field *const values ) const
    \n+
    255 {
    \n+
    256 //start with vertex
    \n+
    257 *values = Unity< F >();
    \n+
    258 F *const end = values + block;
    \n+
    259 for( Field *it = values+1 ; it != end; ++it )
    \n+
    260 *it = Zero< F >();
    \n+
    261
    \n+
    262 constexpr GeometryType gt = GeometryTypes::vertex;
    \n+
    263
    \n+
    264 if constexpr ( geometry == gt)
    \n+
    265 return;
    \n+
    266 else
    \n+
    267 evaluate<gt,dimD>(deriv, order, x, block, offsets, values );
    \n+
    268 }
    \n+
    269
    \n+
    270 template<GeometryType::Id baseGeometryId, int dimD >
    \n+
    271 void evaluate ( const unsigned int deriv, const unsigned int order,
    \n+
    272 const FieldVector< Field, dimD > &x,
    \n+
    273 const unsigned int block, const unsigned int *const offsets,
    \n+
    274 Field *const values ) const
    \n+
    275 {
    \n+
    276
    \n+
    277 static constexpr GeometryType baseGeometry = baseGeometryId;
    \n+
    278
    \n+
    279 auto constexpr isPrismatic = geometry.isPrismatic(baseGeometry.dim());
    \n+
    280
    \n+
    281 // compute
    \n+
    282 typedef MonomialBasisHelper< baseGeometry.dim() + 1, dimD, Field > Helper;
    \n+
    283 typedef MonomialBasisSize<baseGeometryId> BaseSize;
    \n+
    284
    \n+
    285 const BaseSize &size = BaseSize::instance();
    \n+
    286 const_cast<BaseSize&>(size).computeSizes(order);
    \n+
    287
    \n+
    288 const Field &z = x[ baseGeometry.dim() ];
    \n+
    289
    \n+
    290 Field *row0 = values;
    \n+
    291 for( unsigned int k = 1; k <= order; ++k )
    \n+
    292 {
    \n+
    293 Field *row1 = values + block*offsets[ k-1 ];
    \n+
    294 Field *wit = row1 + block*size.sizes_[ k ];
    \n+
    295 if constexpr ( isPrismatic )
    \n+
    296 Helper::copy( deriv, wit, row1, k*size.sizes_[ k ], z );
    \n+
    297 Helper::copy( deriv, wit, row0, size( k-1 ), z );
    \n+
    298 row0 = row1;
    \n+
    299 }
    \n+
    300
    \n+
    301 // stop if desired dimension is reached
    \n+
    302 if constexpr( baseGeometry.dim() == dimDomain-1)
    \n+
    303 return;
    \n+
    304 else
    \n+
    305 {
    \n+
    306 constexpr GeometryType nextGeometry = isPrismatic ? GeometryTypes::prismaticExtension(baseGeometry)
    \n+
    307 : GeometryTypes::conicalExtension(baseGeometry);
    \n+
    308
    \n+
    309 evaluate<nextGeometry.toId(),dimD>(deriv, order, x, block, offsets, values );
    \n+
    310 }
    \n+
    311 }
    \n+
    312
    \n+
    313 void integrate ( const unsigned int order,
    \n+
    314 const unsigned int *const offsets,
    \n+
    315 Field *const values ) const
    \n+
    316 {
    \n+
    317 //start with vertex
    \n+
    318 values[ 0 ] = Unity< Field >();
    \n+
    319 static constexpr GeometryType gt = GeometryTypes::vertex;
    \n+
    320
    \n+
    321 if constexpr ( geometry == gt)
    \n+
    322 return;
    \n+
    323 else
    \n+
    324 integrate<gt>(order, offsets, values);
    \n+
    325 }
    \n+
    326
    \n+
    327 template<GeometryType::Id baseGeometryId>
    \n+
    328 void integrate ( const unsigned int order,
    \n+
    329 const unsigned int *const offsets,
    \n+
    330 Field *const values) const
    \n+
    331 {
    \n+
    332 static constexpr GeometryType baseGeometry = baseGeometryId;
    \n+
    333
    \n+
    334 auto constexpr isPrismatic = geometry.isPrismatic(baseGeometry.dim());
    \n+
    335
    \n+
    336 // decide which kind of integration should be performed
    \n+
    337 if constexpr ( isPrismatic )
    \n+
    338 integratePrismatic<baseGeometry>(order, offsets, values);
    \n+
    339 else
    \n+
    340 integrateConical<baseGeometry>(order, offsets, values);
    \n+
    341
    \n+
    342 // stop if the desired dimension is reached
    \n+
    343 if constexpr( baseGeometry.dim() == dimDomain-1)
    \n+
    344 return;
    \n+
    345 else
    \n+
    346 {
    \n+
    347 static constexpr GeometryType nextGeometry = (isPrismatic ? GeometryTypes::prismaticExtension(baseGeometry)
    \n+
    348 : GeometryTypes::conicalExtension(baseGeometry));
    \n+
    349
    \n+
    350 integrate<nextGeometry.toId()>(order, offsets, values);
    \n+
    351 }
    \n+
    352
    \n+
    353 }
    \n+
    354
    \n+
    355 template<GeometryType::Id baseGeometryId>
    \n+
    356 void integratePrismatic ( const unsigned int order,
    \n+
    357 const unsigned int *const offsets,
    \n+
    358 Field *const values ) const
    \n+
    359 {
    \n+
    360 typedef MonomialBasisSize<baseGeometryId> BaseSize;
    \n+
    361 static const BaseSize &size = BaseSize::instance();
    \n+
    362 const unsigned int *const baseSizes = size.sizes_;
    \n+
    363
    \n+
    364 static constexpr GeometryType baseGeometry = baseGeometryId;
    \n+
    365 static constexpr GeometryType nextGeometry = GeometryTypes::prismaticExtension(baseGeometry);
    \n+
    366
    \n+
    367 typedef MonomialBasisSize<nextGeometry.toId()> Size;
    \n+
    368 static const Size &mySize = Size::instance();
    \n+
    369
    \n+
    370 Field *row0 = values;
    \n+
    371 for( unsigned int k = 1; k <= order; ++k )
    \n+
    372 {
    \n+
    373 Field *const row1begin = values + offsets[ k-1 ];
    \n+
    374 Field *const row1End = row1begin + mySize.sizes_[ k ];
    \n+
    375 assert( (unsigned int)(row1End - values) <= offsets[ k ] );
    \n+
    376
    \n+
    377 Field *row1 = row1begin;
    \n+
    378 Field *it = row1begin + baseSizes[ k ];
    \n+
    379 for( unsigned int j = 1; j <= k; ++j )
    \n+
    380 {
    \n+
    381 Field *const end = it + baseSizes[ k ];
    \n+
    382 assert( (unsigned int)(end - values) <= offsets[ k ] );
    \n+
    383 for( ; it != end; ++row1, ++it )
    \n+
    384 *it = (Field( j ) / Field( j+1 )) * (*row1);
    \n+
    385 }
    \n+
    386 for( ; it != row1End; ++row0, ++it )
    \n+
    387 *it = (Field( k ) / Field( k+1 )) * (*row0);
    \n+
    388 row0 = row1;
    \n+
    389 }
    \n+
    390 }
    \n+
    391
    \n+
    392
    \n+
    393 template<GeometryType::Id baseGeometryId>
    \n+
    394 void integrateConical ( const unsigned int order,
    \n+
    395 const unsigned int *const offsets,
    \n+
    396 Field *const values) const
    \n+
    397 {
    \n+
    398 typedef MonomialBasisSize<baseGeometryId> BaseSize;
    \n+
    399 static const BaseSize &size = BaseSize::instance();
    \n+
    400 const unsigned int *const baseSizes = size.sizes_;
    \n+
    401
    \n+
    402 static constexpr GeometryType baseGeometry = baseGeometryId;
    \n+
    403
    \n+
    404 {
    \n+
    405 Field *const col0End = values + baseSizes[ 0 ];
    \n+
    406 for( Field *it = values; it != col0End; ++it )
    \n+
    407 *it *= Field( 1 ) / Field( int(baseGeometry.dim()+1) );
    \n+
    408 }
    \n+
    409
    \n+
    410 Field *row0 = values;
    \n+
    411 for( unsigned int k = 1; k <= order; ++k )
    \n+
    412 {
    \n+
    413 const Field factor = (Field( 1 ) / Field( k + baseGeometry.dim()+1));
    \n+
    414
    \n+
    415 Field *const row1 = values+offsets[ k-1 ];
    \n+
    416 Field *const col0End = row1 + baseSizes[ k ];
    \n+
    417 Field *it = row1;
    \n+
    418 for( ; it != col0End; ++it )
    \n+
    419 *it *= factor;
    \n+
    420 for( unsigned int i = 1; i <= k; ++i )
    \n+
    421 {
    \n+
    422 Field *const end = it + baseSizes[ k-i ];
    \n+
    423 assert( (unsigned int)(end - values) <= offsets[ k ] );
    \n+
    424 for( ; it != end; ++row0, ++it )
    \n+
    425 *it = (*row0) * (Field( i ) * factor);
    \n+
    426 }
    \n+
    427 row0 = row1;
    \n+
    428 }
    \n+
    429 }
    \n+
    430
    \n+
    431 };
    \n+
    \n+
    432
    \n+
    433
    \n+
    434 // MonomialBasis
    \n+
    435 // -------------
    \n+
    436
    \n+
    437 template< GeometryType::Id geometryId, class F >
    \n+
    \n+\n+
    439 : public MonomialBasisImpl< geometryId, F >
    \n+
    440 {
    \n+
    441 static constexpr GeometryType geometry = geometryId;
    \n+\n+\n+
    444
    \n+
    445 public:
    \n+
    446 static const unsigned int dimension = Base::dimDomain;
    \n+
    447 static const unsigned int dimRange = 1;
    \n+
    448
    \n+
    449 typedef typename Base::Field Field;
    \n+
    450
    \n+\n+
    452
    \n+
    453 typedef Dune::FieldVector<Field,dimRange> RangeVector;
    \n+
    454
    \n+\n+
    456
    \n+
    \n+
    457 MonomialBasis (unsigned int order)
    \n+
    458 : Base(),
    \n+
    459 order_(order),
    \n+
    460 size_(Size::instance())
    \n+
    461 {
    \n+
    462 assert(order<=1024); // avoid wrapping of unsigned int (0-1) order=1024 is quite high...)
    \n+
    463 }
    \n+
    \n+
    464
    \n+
    \n+
    465 const unsigned int *sizes ( unsigned int order ) const
    \n+
    466 {
    \n+
    467 size_.computeSizes( order );
    \n+
    468 return size_.numBaseFunctions_;
    \n+
    469 }
    \n+
    \n+
    470
    \n+
    \n+
    471 const unsigned int *sizes () const
    \n+
    472 {
    \n+
    473 return sizes( order_ );
    \n+
    474 }
    \n+
    \n+
    475
    \n+
    \n+
    476 unsigned int size () const
    \n+
    477 {
    \n+
    478 size_.computeSizes( order_ );
    \n+
    479 return size_( order_ );
    \n+
    480 }
    \n+
    \n+
    481
    \n+
    \n+
    482 unsigned int derivSize ( const unsigned int deriv ) const
    \n+
    483 {
    \n+
    484 MonomialBasisSize< GeometryTypes::simplex(dimension).toId() >::instance().computeSizes( deriv );
    \n+
    485 return MonomialBasisSize< GeometryTypes::simplex(dimension).toId() >::instance() ( deriv );
    \n+
    486 }
    \n+
    \n+
    487
    \n+
    \n+
    488 unsigned int order () const
    \n+
    489 {
    \n+
    490 return order_ ;
    \n+
    491 }
    \n+
    \n+
    492
    \n+
    \n+
    493 unsigned int topologyId ( ) const
    \n+
    494 {
    \n+
    495 return geometry.id();
    \n+
    496 }
    \n+
    \n+
    497
    \n+
    \n+
    498 void evaluate ( const unsigned int deriv, const DomainVector &x,
    \n+
    499 Field *const values ) const
    \n+
    500 {
    \n+
    501 Base::evaluate( deriv, order_, x, derivSize( deriv ), sizes( order_ ), values );
    \n+
    502 }
    \n+
    \n+
    503
    \n+
    504 template <unsigned int deriv>
    \n+
    \n+
    505 void evaluate ( const DomainVector &x,
    \n+
    506 Field *const values ) const
    \n+
    507 {
    \n+
    508 evaluate( deriv, x, values );
    \n+
    509 }
    \n+
    \n+
    510
    \n+
    511 template<unsigned int deriv, class Vector >
    \n+
    \n+
    512 void evaluate ( const DomainVector &x,
    \n+
    513 Vector &values ) const
    \n+
    514 {
    \n+
    515 evaluate<deriv>(x,&(values[0]));
    \n+
    516 }
    \n+
    \n+
    517 template<unsigned int deriv, DerivativeLayoutNS::DerivativeLayout layout >
    \n+
    \n+
    518 void evaluate ( const DomainVector &x,
    \n+\n+
    520 {
    \n+
    521 evaluate<deriv>(x,&(values->block()));
    \n+
    522 }
    \n+
    \n+
    523 template< unsigned int deriv >
    \n+
    \n+
    524 void evaluate ( const DomainVector &x,
    \n+\n+
    526 {
    \n+
    527 evaluate(0,x,&(values[0][0]));
    \n+
    528 }
    \n+
    \n+
    529
    \n+
    530 template<class Vector >
    \n+
    \n+
    531 void evaluate ( const DomainVector &x,
    \n+
    532 Vector &values ) const
    \n+
    533 {
    \n+
    534 evaluate<0>(x,&(values[0]));
    \n+
    535 }
    \n+
    \n+
    536
    \n+
    537 template< class DVector, class RVector >
    \n+
    \n+
    538 void evaluate ( const DVector &x, RVector &values ) const
    \n+
    539 {
    \n+
    540 assert( DVector::dimension == dimension);
    \n+
    541 DomainVector bx;
    \n+
    542 for( int d = 0; d < dimension; ++d )
    \n+
    543 field_cast( x[ d ], bx[ d ] );
    \n+
    544 evaluate<0>( bx, values );
    \n+
    545 }
    \n+
    \n+
    546
    \n+
    \n+
    547 void integrate ( Field *const values ) const
    \n+
    548 {
    \n+
    549 Base::integrate( order_, sizes( order_ ), values );
    \n+
    550 }
    \n+
    \n+
    551 template <class Vector>
    \n+
    \n+
    552 void integrate ( Vector &values ) const
    \n+
    553 {
    \n+
    554 integrate( &(values[ 0 ]) );
    \n+
    555 }
    \n+
    \n+
    556 private:
    \n+
    557 MonomialBasis(const This&);
    \n+
    558 This& operator=(const This&);
    \n+
    559 unsigned int order_;
    \n+
    560 Size &size_;
    \n+
    561 };
    \n+
    \n+
    562
    \n+
    563
    \n+
    564
    \n+
    565 // StdMonomialBasis
    \n+
    566 // ----------------
    \n+
    567
    \n+
    568 template< int dim,class F >
    \n+
    \n+\n+
    570 : public MonomialBasis< GeometryTypes::simplex(dim).toId() , F >
    \n+
    571 {
    \n+\n+
    573 typedef MonomialBasis< GeometryTypes::simplex(dim).toId(), F > Base;
    \n+
    574
    \n+
    575 public:
    \n+
    576 static constexpr GeometryType geometry = GeometryTypes::simplex(dim);
    \n+
    577 static const int dimension = dim;
    \n+
    578
    \n+
    \n+\n+
    580 : Base( order )
    \n+
    581 {}
    \n+
    \n+
    582 };
    \n+
    \n+
    583
    \n+
    584
    \n+
    585
    \n+
    586 // StandardBiMonomialBasis
    \n+
    587 // -----------------------
    \n+
    588
    \n+
    589 template< int dim, class F >
    \n+
    \n+\n+
    591 : public MonomialBasis< GeometryTypes::cube(dim).toId() , F >
    \n+
    592 {
    \n+\n+
    594 typedef MonomialBasis< GeometryTypes::cube(dim).toId() , F > Base;
    \n+
    595
    \n+
    596 public:
    \n+
    597 static constexpr GeometryType geometry = GeometryTypes::cube(dim);
    \n+
    598 static const int dimension = dim;
    \n+
    599
    \n+
    \n+\n+
    601 : Base( order )
    \n+
    602 {}
    \n+
    \n+
    603 };
    \n+
    \n+
    604
    \n+
    605 // -----------------------------------------------------------
    \n+
    606 // -----------------------------------------------------------
    \n+
    607 // VirtualMonomialBasis
    \n+
    608 // -------------------
    \n+
    609
    \n+
    610 template< int dim, class F >
    \n+
    \n+\n+
    612 {
    \n+\n+
    614
    \n+
    615 public:
    \n+
    616 typedef F Field;
    \n+
    617 typedef F StorageField;
    \n+
    618 static const int dimension = dim;
    \n+
    619 static const unsigned int dimRange = 1;
    \n+
    620
    \n+
    621 typedef FieldVector<Field,dimension> DomainVector;
    \n+
    622 typedef FieldVector<Field,dimRange> RangeVector;
    \n+
    623
    \n+
    \n+
    624 explicit VirtualMonomialBasis(const GeometryType& gt,
    \n+
    625 unsigned int order)
    \n+
    626 : order_(order), geometry_(gt) {}
    \n+
    \n+
    627
    \n+\n+
    629
    \n+
    630 virtual const unsigned int *sizes ( ) const = 0;
    \n+
    631
    \n+
    \n+
    632 unsigned int size ( ) const
    \n+
    633 {
    \n+
    634 return sizes( )[ order_ ];
    \n+
    635 }
    \n+
    \n+
    636
    \n+
    \n+
    637 unsigned int order () const
    \n+
    638 {
    \n+
    639 return order_;
    \n+
    640 }
    \n+
    \n+
    641
    \n+
    \n+
    642 GeometryType type() const
    \n+
    643 {
    \n+
    644 return geometry_;
    \n+
    645 }
    \n+
    \n+
    646
    \n+
    647 virtual void evaluate ( const unsigned int deriv, const DomainVector &x,
    \n+
    648 Field *const values ) const = 0;
    \n+
    649 template < unsigned int deriv >
    \n+
    \n+
    650 void evaluate ( const DomainVector &x,
    \n+
    651 Field *const values ) const
    \n+
    652 {
    \n+
    653 evaluate( deriv, x, values );
    \n+
    654 }
    \n+
    \n+
    655 template < unsigned int deriv, int size >
    \n+
    \n+
    656 void evaluate ( const DomainVector &x,
    \n+
    657 Dune::FieldVector<Field,size> *const values ) const
    \n+
    658 {
    \n+
    659 evaluate( deriv, x, &(values[0][0]) );
    \n+
    660 }
    \n+
    \n+
    661 template<unsigned int deriv, DerivativeLayoutNS::DerivativeLayout layout >
    \n+
    \n+
    662 void evaluate ( const DomainVector &x,
    \n+\n+
    664 {
    \n+
    665 evaluate<deriv>(x,&(values->block()));
    \n+
    666 }
    \n+
    \n+
    667 template <unsigned int deriv, class Vector>
    \n+
    \n+
    668 void evaluate ( const DomainVector &x,
    \n+
    669 Vector &values ) const
    \n+
    670 {
    \n+
    671 evaluate<deriv>( x, &(values[ 0 ]) );
    \n+
    672 }
    \n+
    \n+
    673 template< class Vector >
    \n+
    \n+
    674 void evaluate ( const DomainVector &x,
    \n+
    675 Vector &values ) const
    \n+
    676 {
    \n+
    677 evaluate<0>(x,values);
    \n+
    678 }
    \n+
    \n+
    679 template< class DVector, class RVector >
    \n+
    \n+
    680 void evaluate ( const DVector &x, RVector &values ) const
    \n+
    681 {
    \n+
    682 assert( DVector::dimension == dimension);
    \n+
    683 DomainVector bx;
    \n+
    684 for( int d = 0; d < dimension; ++d )
    \n+
    685 field_cast( x[ d ], bx[ d ] );
    \n+
    686 evaluate<0>( bx, values );
    \n+
    687 }
    \n+
    \n+
    688 template< unsigned int deriv, class DVector, class RVector >
    \n+
    \n+
    689 void evaluate ( const DVector &x, RVector &values ) const
    \n+
    690 {
    \n+
    691 assert( DVector::dimension == dimension);
    \n+
    692 DomainVector bx;
    \n+
    693 for( int d = 0; d < dimension; ++d )
    \n+
    694 field_cast( x[ d ], bx[ d ] );
    \n+
    695 evaluate<deriv>( bx, values );
    \n+
    696 }
    \n+
    \n+
    697
    \n+
    698 virtual void integrate ( Field *const values ) const = 0;
    \n+
    699 template <class Vector>
    \n+
    \n+
    700 void integrate ( Vector &values ) const
    \n+
    701 {
    \n+
    702 integrate( &(values[ 0 ]) );
    \n+
    703 }
    \n+
    \n+
    704 protected:
    \n+
    705 unsigned int order_;
    \n+
    706 GeometryType geometry_;
    \n+
    707 };
    \n+
    \n+
    708
    \n+
    709 template< GeometryType::Id geometryId, class F >
    \n+
    \n+\n+
    711 : public VirtualMonomialBasis< static_cast<GeometryType>(geometryId).dim(), F >
    \n+
    712 {
    \n+
    713 static constexpr GeometryType geometry = geometryId;
    \n+
    714 typedef VirtualMonomialBasis< geometry.dim(), F > Base;
    \n+\n+
    716
    \n+
    717 public:
    \n+
    718 typedef typename Base::Field Field;
    \n+\n+
    720
    \n+
    \n+\n+
    722 : Base(geometry,order), basis_(order)
    \n+
    723 {}
    \n+
    \n+
    724
    \n+
    \n+
    725 const unsigned int *sizes ( ) const
    \n+
    726 {
    \n+
    727 return basis_.sizes(order_);
    \n+
    728 }
    \n+
    \n+
    729
    \n+
    \n+
    730 void evaluate ( const unsigned int deriv, const DomainVector &x,
    \n+
    731 Field *const values ) const
    \n+
    732 {
    \n+
    733 basis_.evaluate(deriv,x,values);
    \n+
    734 }
    \n+
    \n+
    735
    \n+
    \n+
    736 void integrate ( Field *const values ) const
    \n+
    737 {
    \n+
    738 basis_.integrate(values);
    \n+
    739 }
    \n+
    \n+
    740
    \n+
    741 private:
    \n+\n+
    743 using Base::order_;
    \n+
    744 };
    \n+
    \n+
    745
    \n+
    746 // MonomialBasisFactory
    \n+
    747 // --------------------
    \n+
    748
    \n+
    749 template< int dim, class F >
    \n+
    \n+\n+
    751 {
    \n+
    752 static const unsigned int dimension = dim;
    \n+
    753 typedef F StorageField;
    \n+
    754
    \n+
    755 typedef unsigned int Key;
    \n+\n+
    757
    \n+
    758 template < int dd, class FF >
    \n+
    \n+\n+
    760 {
    \n+\n+
    762 };
    \n+
    \n+
    763
    \n+
    764 template< GeometryType::Id geometryId >
    \n+
    \n+
    765 static Object* create ( const Key &order )
    \n+
    766 {
    \n+\n+
    768 }
    \n+
    \n+
    769 static void release( Object *object ) { delete object; }
    \n+
    770 };
    \n+
    \n+
    771
    \n+
    772
    \n+
    773
    \n+
    774 // MonomialBasisProvider
    \n+
    775 // ---------------------
    \n+
    776
    \n+
    777 template< int dim, class SF >
    \n+
    \n+\n+
    779 : public TopologySingletonFactory< MonomialBasisFactory< dim, SF > >
    \n+
    780 {
    \n+
    781 static const unsigned int dimension = dim;
    \n+
    782 typedef SF StorageField;
    \n+
    783 template < int dd, class FF >
    \n+
    \n+\n+
    785 {
    \n+\n+
    787 };
    \n+
    \n+
    788 };
    \n+
    \n+
    789
    \n+
    790}
    \n+
    791
    \n+
    792#endif
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    A class representing the unit of a given Field.
    Definition field.hh:30
    \n+
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n+
    Definition monomialbasis.hh:84
    \n+
    unsigned int * numBaseFunctions_
    Definition monomialbasis.hh:100
    \n+
    void computeSizes(unsigned int order)
    Definition monomialbasis.hh:126
    \n+
    unsigned int * sizes_
    Definition monomialbasis.hh:97
    \n+
    MonomialBasisSize()
    Definition monomialbasis.hh:102
    \n+
    ~MonomialBasisSize()
    Definition monomialbasis.hh:110
    \n+
    unsigned int operator()(const unsigned int order) const
    Definition monomialbasis.hh:116
    \n+
    unsigned int maxOrder_
    Definition monomialbasis.hh:94
    \n+
    unsigned int maxOrder() const
    Definition monomialbasis.hh:121
    \n+
    static This & instance()
    Definition monomialbasis.hh:88
    \n+
    Definition monomialbasis.hh:440
    \n+
    unsigned int size() const
    Definition monomialbasis.hh:476
    \n+
    static const unsigned int dimension
    Definition monomialbasis.hh:446
    \n+
    Dune::FieldVector< Field, dimRange > RangeVector
    Definition monomialbasis.hh:453
    \n+
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:498
    \n+
    const unsigned int * sizes() const
    Definition monomialbasis.hh:471
    \n+
    unsigned int topologyId() const
    Definition monomialbasis.hh:493
    \n+
    void integrate(Vector &values) const
    Definition monomialbasis.hh:552
    \n+
    Base::Field Field
    Definition monomialbasis.hh:449
    \n+
    void integrate(Field *const values) const
    Definition monomialbasis.hh:547
    \n+
    static const unsigned int dimRange
    Definition monomialbasis.hh:447
    \n+
    Base::DomainVector DomainVector
    Definition monomialbasis.hh:451
    \n+
    void evaluate(const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:505
    \n+
    void evaluate(const DomainVector &x, Vector &values) const
    Definition monomialbasis.hh:531
    \n+
    void evaluate(const DomainVector &x, FieldVector< Field, Derivatives< Field, dimension, 1, deriv, DerivativeLayoutNS::value >::size > *values) const
    Definition monomialbasis.hh:524
    \n+
    void evaluate(const DomainVector &x, Derivatives< Field, dimension, 1, deriv, layout > *values) const
    Definition monomialbasis.hh:518
    \n+
    void evaluate(const DVector &x, RVector &values) const
    Definition monomialbasis.hh:538
    \n+
    MonomialBasisSize< geometryId > Size
    Definition monomialbasis.hh:455
    \n+
    void evaluate(const DomainVector &x, Vector &values) const
    Definition monomialbasis.hh:512
    \n+
    MonomialBasis(unsigned int order)
    Definition monomialbasis.hh:457
    \n+
    unsigned int derivSize(const unsigned int deriv) const
    Definition monomialbasis.hh:482
    \n+
    const unsigned int * sizes(unsigned int order) const
    Definition monomialbasis.hh:465
    \n+
    unsigned int order() const
    Definition monomialbasis.hh:488
    \n+
    Definition monomialbasis.hh:177
    \n+
    MonomialBasisSize< GeometryTypes::simplex(dim).toId() > Size
    Definition monomialbasis.hh:179
    \n+
    static void copy(const unsigned int deriv, F *&wit, F *&rit, const unsigned int numBaseFunctions, const F &z)
    Definition monomialbasis.hh:181
    \n+
    MonomialBasisSize< GeometryTypes::simplex(mydim).toId() > MySize
    Definition monomialbasis.hh:178
    \n+
    Definition monomialbasis.hh:234
    \n+
    FieldVector< Field, dimDomain > DomainVector
    Definition monomialbasis.hh:242
    \n+
    static constexpr GeometryType geometry
    Definition monomialbasis.hh:238
    \n+
    F Field
    Definition monomialbasis.hh:236
    \n+
    static const unsigned int dimDomain
    Definition monomialbasis.hh:240
    \n+
    Definition monomialbasis.hh:571
    \n+
    static constexpr GeometryType geometry
    Definition monomialbasis.hh:576
    \n+
    StandardMonomialBasis(unsigned int order)
    Definition monomialbasis.hh:579
    \n+
    static const int dimension
    Definition monomialbasis.hh:577
    \n+
    Definition monomialbasis.hh:592
    \n+
    static const int dimension
    Definition monomialbasis.hh:598
    \n+
    static constexpr GeometryType geometry
    Definition monomialbasis.hh:597
    \n+
    StandardBiMonomialBasis(unsigned int order)
    Definition monomialbasis.hh:600
    \n+
    Definition monomialbasis.hh:612
    \n+
    GeometryType geometry_
    Definition monomialbasis.hh:706
    \n+
    FieldVector< Field, dimension > DomainVector
    Definition monomialbasis.hh:621
    \n+
    unsigned int order_
    Definition monomialbasis.hh:705
    \n+
    void evaluate(const DomainVector &x, Vector &values) const
    Definition monomialbasis.hh:674
    \n+
    void evaluate(const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:650
    \n+
    F Field
    Definition monomialbasis.hh:616
    \n+
    void evaluate(const DomainVector &x, Vector &values) const
    Definition monomialbasis.hh:668
    \n+
    void evaluate(const DVector &x, RVector &values) const
    Definition monomialbasis.hh:680
    \n+
    unsigned int order() const
    Definition monomialbasis.hh:637
    \n+
    static const unsigned int dimRange
    Definition monomialbasis.hh:619
    \n+
    F StorageField
    Definition monomialbasis.hh:617
    \n+
    static const int dimension
    Definition monomialbasis.hh:618
    \n+
    unsigned int size() const
    Definition monomialbasis.hh:632
    \n+
    FieldVector< Field, dimRange > RangeVector
    Definition monomialbasis.hh:622
    \n+
    virtual ~VirtualMonomialBasis()
    Definition monomialbasis.hh:628
    \n+
    virtual void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const =0
    \n+
    virtual void integrate(Field *const values) const =0
    \n+
    void evaluate(const DomainVector &x, Dune::FieldVector< Field, size > *const values) const
    Definition monomialbasis.hh:656
    \n+
    void evaluate(const DVector &x, RVector &values) const
    Definition monomialbasis.hh:689
    \n+
    GeometryType type() const
    Definition monomialbasis.hh:642
    \n+
    void evaluate(const DomainVector &x, Derivatives< Field, dimension, 1, deriv, layout > *values) const
    Definition monomialbasis.hh:662
    \n+
    VirtualMonomialBasis(const GeometryType &gt, unsigned int order)
    Definition monomialbasis.hh:624
    \n+
    virtual const unsigned int * sizes() const =0
    \n+
    void integrate(Vector &values) const
    Definition monomialbasis.hh:700
    \n+
    Definition monomialbasis.hh:712
    \n+
    void integrate(Field *const values) const
    Definition monomialbasis.hh:736
    \n+
    const unsigned int * sizes() const
    Definition monomialbasis.hh:725
    \n+
    Base::DomainVector DomainVector
    Definition monomialbasis.hh:719
    \n+
    Base::Field Field
    Definition monomialbasis.hh:718
    \n+
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:730
    \n+
    VirtualMonomialBasisImpl(unsigned int order)
    Definition monomialbasis.hh:721
    \n+
    Definition monomialbasis.hh:751
    \n+
    static void release(Object *object)
    Definition monomialbasis.hh:769
    \n+
    const VirtualMonomialBasis< dimension, F > Object
    Definition monomialbasis.hh:756
    \n+
    static Object * create(const Key &order)
    Definition monomialbasis.hh:765
    \n+
    F StorageField
    Definition monomialbasis.hh:753
    \n+
    static const unsigned int dimension
    Definition monomialbasis.hh:752
    \n+
    unsigned int Key
    Definition monomialbasis.hh:755
    \n+\n+
    MonomialBasisFactory< dd, FF > Type
    Definition monomialbasis.hh:761
    \n+
    Definition monomialbasis.hh:780
    \n+
    static const unsigned int dimension
    Definition monomialbasis.hh:781
    \n+
    SF StorageField
    Definition monomialbasis.hh:782
    \n+\n+
    MonomialBasisProvider< dd, FF > Type
    Definition monomialbasis.hh:786
    \n+
    Definition tensor.hh:180
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,134 +1,1112 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomaslfecache.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+monomialbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH\n+5#ifndef DUNE_MONOMIALBASIS_HH\n+6#define DUNE_MONOMIALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n-16\n-17namespace _\bD_\bu_\bn_\be {\n-18\n-19namespace Impl {\n-20\n-21 // Provide implemented Raviart-Thomas local finite elements\n-22\n-23 template\n-24 struct ImplementedRaviartThomasLocalFiniteElements\n-25 {};\n-26\n-27 template\n-28 struct ImplementedRaviartThomasLocalFiniteElements : public\n-FixedDimLocalGeometryTypeIndex<2>\n-29 {\n-30 using FixedDimLocalGeometryTypeIndex<2>::index;\n-31 static auto getImplementations()\n-32 {\n-33 return std::make_tuple(\n-34 std::make_pair(index(GeometryTypes::triangle), []() { return\n-RT02DLocalFiniteElement(); }),\n-35 std::make_pair(index(GeometryTypes::quadrilateral), []() { return\n-RT0Cube2DLocalFiniteElement(); })\n-36 );\n-37 }\n-38 };\n-39\n-40 template\n-41 struct ImplementedRaviartThomasLocalFiniteElements : public\n-FixedDimLocalGeometryTypeIndex<2>\n-42 {\n-43 using FixedDimLocalGeometryTypeIndex<2>::index;\n-44 static auto getImplementations()\n-45 {\n-46 return std::make_tuple(\n-47 std::make_pair(index(GeometryTypes::triangle), []() { return\n-RT12DLocalFiniteElement(); }),\n-48 std::make_pair(index(GeometryTypes::quadrilateral), []() { return\n-RT1Cube2DLocalFiniteElement(); })\n-49 );\n-50 }\n-51 };\n-52\n-53 template\n-54 struct ImplementedRaviartThomasLocalFiniteElements : public\n-FixedDimLocalGeometryTypeIndex<2>\n-55 {\n-56 using FixedDimLocalGeometryTypeIndex<2>::index;\n-57 static auto getImplementations()\n-58 {\n-59 return std::make_tuple(\n-60 std::make_pair(index(GeometryTypes::quadrilateral), []() { return\n-RT2Cube2DLocalFiniteElement(); })\n-61 );\n-62 }\n-63 };\n-64\n-65 template\n-66 struct ImplementedRaviartThomasLocalFiniteElements : public\n-FixedDimLocalGeometryTypeIndex<3>\n-67 {\n-68 using FixedDimLocalGeometryTypeIndex<3>::index;\n-69 static auto getImplementations()\n-70 {\n-71 return std::make_tuple(\n-72 std::make_pair(index(GeometryTypes::tetrahedron), []() { return\n-RT03DLocalFiniteElement(); }),\n-73 std::make_pair(index(GeometryTypes::hexahedron), []() { return\n-RT0Cube3DLocalFiniteElement(); })\n-74 );\n-75 }\n-76 };\n+8#include \n+9\n+10#include \n+11#include \n+12\n+13#include \n+14#include \n+15\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n+19\n+20namespace _\bD_\bu_\bn_\be\n+21{\n+22 /************************************************\n+23 * Classes for evaluating ''Monomials'' on any order\n+24 * for all reference element type.\n+25 * For a simplex topology these are the normal\n+26 * monomials for cube topologies the bimonomials.\n+27 * The construction follows the construction of the\n+28 * generic geometries using tensor products for\n+29 * prism generation and duffy transform for pyramid\n+30 * construction.\n+31 * A derivative argument can be applied, in which case\n+32 * all derivatives up to the desired order are\n+33 * evaluated. Note that for higher order derivatives\n+34 * only the ''lower'' part of the symmetric tensor\n+35 * is evaluated, e.g., passing derivative equal to 2\n+36 * to the class will provide the vector\n+37 * (d/dxdx p, d/dxydx p, d/dydy p,\n+38 * d/dx p, d/dy p, p)\n+39 * Important:\n+40 * So far the computation of the derivatives has not\n+41 * been fully implemented for general pyramid\n+42 * construction, i.e., in the case where a pyramid is\n+43 * build over a non simplex base geometry.\n+44 *\n+45 * Central classes:\n+46 * 1) template< GeometryType::Id geometryId, class F >\n+47 * class MonomialBasisImpl;\n+48 * Implementation of the monomial evaluation for\n+49 * a given topology and field type.\n+50 * The method evaluate fills a F* vector\n+51 * 2) template< GeometryType::Id geometryId, class F >\n+52 * class MonomialBasis\n+53 * The base class for the static monomial evaluation\n+54 * providing additional evaluate methods including\n+55 * one taking std::vector.\n+56 * 3) template< int dim, class F >\n+57 * class VirtualMonomialBasis\n+58 * Virtualization of the MonomialBasis.\n+59 * 4) template< int dim, class F >\n+60 * struct MonomialBasisFactory;\n+61 * A factory class for the VirtualMonomialBasis\n+62 * 5) template< int dim, class F >\n+63 * struct MonomialBasisProvider\n+64 * A singleton container for the virtual monomial\n+65 * basis\n+66 ************************************************/\n+67\n+68 // Internal Forward Declarations\n+69 // -----------------------------\n+70\n+71 template< GeometryType::Id geometryId >\n+72 class MonomialBasisSize;\n+73\n+74 template< GeometryType::Id geometryId, class F >\n+75 class MonomialBasis;\n+76\n 77\n-78 template\n-79 struct ImplementedRaviartThomasLocalFiniteElements : public\n-FixedDimLocalGeometryTypeIndex<3>\n-80 {\n-81 using FixedDimLocalGeometryTypeIndex<3>::index;\n-82 static auto getImplementations()\n-83 {\n-84 return std::make_tuple(\n-85 std::make_pair(index(GeometryTypes::hexahedron), []()\n-{ RT1Cube3DLocalFiniteElement(); })\n-86 );\n-87 }\n-88 };\n-89\n-90} // namespace Impl\n-91\n-92\n+78\n+79 // MonomialBasisSize\n+80 // -----------------\n+81\n+82 template< GeometryType::Id geometryId >\n+_\b8_\b3 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be\n+84 {\n+85 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b _\b> _\bT_\bh_\bi_\bs;\n+86\n+87 public:\n+_\b8_\b8 static _\bT_\bh_\bi_\bs &_\bi_\bn_\bs_\bt_\ba_\bn_\bc_\be ()\n+89 {\n+90 static _\bT_\bh_\bi_\bs _instance;\n+91 return _instance;\n+92 }\n 93\n-103template\n-_\b1_\b0_\b4using _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be =\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n-_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\be_\bd_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bo_\br_\bd_\be_\br_\b>>;\n-105\n-106} // namespace Dune\n-107\n-108#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b._\bh_\bh\n+_\b9_\b4 unsigned int _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_;\n+95\n+96 // sizes_[ k ]: number of basis functions of exactly order k\n+_\b9_\b7 mutable unsigned int *_\bs_\bi_\bz_\be_\bs_\b_;\n+98\n+99 // numBaseFunctions_[ k ] = sizes_[ 0 ] + ... + sizes_[ k ]\n+_\b1_\b0_\b0 mutable unsigned int *_\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_;\n+101\n+_\b1_\b0_\b2 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be ()\n+103 : _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_( 0 ),\n+104 _\bs_\bi_\bz_\be_\bs_\b_( 0 ),\n+105 _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_( 0 )\n+106 {\n+107 _\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs( 2 );\n+108 }\n+109\n+_\b1_\b1_\b0 _\b~_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be ()\n+111 {\n+112 delete[] _\bs_\bi_\bz_\be_\bs_\b_;\n+113 delete[] _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_;\n+114 }\n+115\n+_\b1_\b1_\b6 unsigned int _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const unsigned int order ) const\n+117 {\n+118 return _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ order ];\n+119 }\n+120\n+_\b1_\b2_\b1 unsigned int _\bm_\ba_\bx_\bO_\br_\bd_\be_\br() const\n+122 {\n+123 return _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_;\n+124 }\n+125\n+_\b1_\b2_\b6 void _\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs ( unsigned int order )\n+127 {\n+128 if (order <= _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_)\n+129 return;\n+130\n+131 _\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_ = order;\n+132\n+133 delete[] _\bs_\bi_\bz_\be_\bs_\b_;\n+134 delete[] _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_;\n+135 _\bs_\bi_\bz_\be_\bs_\b_ = new unsigned int[ order+1 ];\n+136 _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_ = new unsigned int[ order+1 ];\n+137\n+138 constexpr GeometryType geometry = geometryId;\n+139 constexpr auto dim = geometry.dim();\n+140\n+141 _\bs_\bi_\bz_\be_\bs_\b_[ 0 ] = 1;\n+142 for( unsigned int k = 1; k <= order; ++k )\n+143 _\bs_\bi_\bz_\be_\bs_\b_[ k ] = 0;\n+144\n+145 std::fill(_\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_, _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_+order+1, 1);\n+146\n+147 for( int codim=dim-1; codim>=0; codim--)\n+148 {\n+149 if (Impl::isPrism(geometry.id(),dim,codim))\n+150 {\n+151 for( unsigned int k = 1; k <= order; ++k )\n+152 {\n+153 _\bs_\bi_\bz_\be_\bs_\b_[ k ] = _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k ] + k*_\bs_\bi_\bz_\be_\bs_\b_[ k ];\n+154 _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k ] = _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k-1 ] + _\bs_\bi_\bz_\be_\bs_\b_[ k ];\n+155 }\n+156 }\n+157 else\n+158 {\n+159 for( unsigned int k = 1; k <= order; ++k )\n+160 {\n+161 _\bs_\bi_\bz_\be_\bs_\b_[ k ] = _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k ];\n+162 _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k ] = _\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_[ k-1 ] + _\bs_\bi_\bz_\be_\bs_\b_[ k ];\n+163 }\n+164 }\n+165 }\n+166 }\n+167 };\n+168\n+169\n+170\n+171 // MonomialBasisHelper\n+172 // -------------------\n+173\n+174\n+175 template< int mydim, int dim, class F >\n+_\b1_\b7_\b6 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br\n+177 {\n+_\b1_\b7_\b8 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be< GeometryTypes::simplex(mydim).toId() > _\bM_\by_\bS_\bi_\bz_\be;\n+_\b1_\b7_\b9 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be< GeometryTypes::simplex(dim).toId() > _\bS_\bi_\bz_\be;\n+180\n+_\b1_\b8_\b1 static void _\bc_\bo_\bp_\by ( const unsigned int deriv, F *&wit, F *&rit,\n+182 const unsigned int numBaseFunctions, const F &z )\n+183 {\n+184 // n(d,k) = size[d];\n+185 _\bM_\by_\bS_\bi_\bz_\be &mySize = _\bM_\by_\bS_\bi_\bz_\be_\b:_\b:_\bi_\bn_\bs_\bt_\ba_\bn_\bc_\be();\n+186 _\bS_\bi_\bz_\be &size = _\bS_\bi_\bz_\be_\b:_\b:_\bi_\bn_\bs_\bt_\ba_\bn_\bc_\be();\n+187\n+188 const F *const rend = rit + size( deriv )*numBaseFunctions;\n+189 for( ; rit != rend; )\n+190 {\n+191 F *prit = rit;\n+192\n+193 *wit = z * *rit;\n+194 ++rit, ++wit;\n+195\n+196 for( unsigned d = 1; d <= deriv; ++d )\n+197 {\n+198 #ifndef NDEBUG\n+199 const F *const derivEnd = rit + mySize._\bs_\bi_\bz_\be_\bs_\b_[ d ];\n+200 #endif\n+201\n+202 {\n+203 const F *const drend = rit + mySize._\bs_\bi_\bz_\be_\bs_\b_[ d ] - mySize._\bs_\bi_\bz_\be_\bs_\b_[ d-1 ];\n+204 for( ; rit != drend ; ++rit, ++wit )\n+205 *wit = z * *rit;\n+206 }\n+207\n+208 for (unsigned int j=1; j();\n+222 }\n+223 }\n+224 }\n+225 };\n+226\n+227\n+228\n+229 // MonomialBasisImpl\n+230 // -----------------\n+231\n+232 template< GeometryType::Id geometryId, class F>\n+_\b2_\b3_\b3 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n+234 {\n+235 public:\n+_\b2_\b3_\b6 typedef F _\bF_\bi_\be_\bl_\bd;\n+237\n+_\b2_\b3_\b8 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n+239\n+_\b2_\b4_\b0 static const unsigned int _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn = _\bg_\be_\bo_\bm_\be_\bt_\br_\by.dim();\n+241\n+_\b2_\b4_\b2 typedef FieldVector< Field, dimDomain > _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+243\n+244 private:\n+245 friend class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< geometryId, _\bF_\bi_\be_\bl_\bd >;\n+246\n+247 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl ()\n+248 {}\n+249\n+250 template< int dimD >\n+251 void evaluate ( const unsigned int deriv, const unsigned int order,\n+252 const FieldVector< Field, dimD > &x,\n+253 const unsigned int block, const unsigned int *const offsets,\n+254 _\bF_\bi_\be_\bl_\bd *const values ) const\n+255 {\n+256 //start with vertex\n+257 *values = _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\b _\b>();\n+258 F *const end = values + block;\n+259 for( _\bF_\bi_\be_\bl_\bd *it = values+1 ; it != end; ++it )\n+260 *it = _\bZ_\be_\br_\bo_\b<_\b _\bF_\b _\b>();\n+261\n+262 constexpr GeometryType gt = GeometryTypes::vertex;\n+263\n+264 if constexpr ( _\bg_\be_\bo_\bm_\be_\bt_\br_\by == gt)\n+265 return;\n+266 else\n+267 evaluate(deriv, order, x, block, offsets, values );\n+268 }\n+269\n+270 template\n+271 void evaluate ( const unsigned int deriv, const unsigned int order,\n+272 const FieldVector< Field, dimD > &x,\n+273 const unsigned int block, const unsigned int *const offsets,\n+274 _\bF_\bi_\be_\bl_\bd *const values ) const\n+275 {\n+276\n+277 static constexpr GeometryType baseGeometry = baseGeometryId;\n+278\n+279 auto constexpr isPrismatic = _\bg_\be_\bo_\bm_\be_\bt_\br_\by.isPrismatic(baseGeometry.dim());\n+280\n+281 // compute\n+282 typedef MonomialBasisHelper< baseGeometry.dim() + 1, dimD, _\bF_\bi_\be_\bl_\bd > Helper;\n+283 typedef MonomialBasisSize BaseSize;\n+284\n+285 const BaseSize &size = BaseSize::instance();\n+286 const_cast(size).computeSizes(order);\n+287\n+288 const _\bF_\bi_\be_\bl_\bd &z = x[ baseGeometry.dim() ];\n+289\n+290 _\bF_\bi_\be_\bl_\bd *row0 = values;\n+291 for( unsigned int k = 1; k <= order; ++k )\n+292 {\n+293 _\bF_\bi_\be_\bl_\bd *row1 = values + block*offsets[ k-1 ];\n+294 _\bF_\bi_\be_\bl_\bd *wit = row1 + block*size.sizes_[ k ];\n+295 if constexpr ( isPrismatic )\n+296 Helper::copy( deriv, wit, row1, k*size.sizes_[ k ], z );\n+297 Helper::copy( deriv, wit, row0, size( k-1 ), z );\n+298 row0 = row1;\n+299 }\n+300\n+301 // stop if desired dimension is reached\n+302 if constexpr( baseGeometry.dim() == _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn-1)\n+303 return;\n+304 else\n+305 {\n+306 constexpr GeometryType nextGeometry = isPrismatic ? GeometryTypes::\n+prismaticExtension(baseGeometry)\n+307 : GeometryTypes::conicalExtension(baseGeometry);\n+308\n+309 evaluate(deriv, order, x, block, offsets, values\n+);\n+310 }\n+311 }\n+312\n+313 void integrate ( const unsigned int order,\n+314 const unsigned int *const offsets,\n+315 _\bF_\bi_\be_\bl_\bd *const values ) const\n+316 {\n+317 //start with vertex\n+318 values[ 0 ] = Unity< Field >();\n+319 static constexpr GeometryType gt = GeometryTypes::vertex;\n+320\n+321 if constexpr ( _\bg_\be_\bo_\bm_\be_\bt_\br_\by == gt)\n+322 return;\n+323 else\n+324 integrate(order, offsets, values);\n+325 }\n+326\n+327 template\n+328 void integrate ( const unsigned int order,\n+329 const unsigned int *const offsets,\n+330 _\bF_\bi_\be_\bl_\bd *const values) const\n+331 {\n+332 static constexpr GeometryType baseGeometry = baseGeometryId;\n+333\n+334 auto constexpr isPrismatic = _\bg_\be_\bo_\bm_\be_\bt_\br_\by.isPrismatic(baseGeometry.dim());\n+335\n+336 // decide which kind of integration should be performed\n+337 if constexpr ( isPrismatic )\n+338 integratePrismatic(order, offsets, values);\n+339 else\n+340 integrateConical(order, offsets, values);\n+341\n+342 // stop if the desired dimension is reached\n+343 if constexpr( baseGeometry.dim() == _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn-1)\n+344 return;\n+345 else\n+346 {\n+347 static constexpr GeometryType nextGeometry = (isPrismatic ? GeometryTypes::\n+prismaticExtension(baseGeometry)\n+348 : GeometryTypes::conicalExtension(baseGeometry));\n+349\n+350 integrate(order, offsets, values);\n+351 }\n+352\n+353 }\n+354\n+355 template\n+356 void integratePrismatic ( const unsigned int order,\n+357 const unsigned int *const offsets,\n+358 _\bF_\bi_\be_\bl_\bd *const values ) const\n+359 {\n+360 typedef MonomialBasisSize BaseSize;\n+361 static const BaseSize &size = BaseSize::instance();\n+362 const unsigned int *const baseSizes = size.sizes_;\n+363\n+364 static constexpr GeometryType baseGeometry = baseGeometryId;\n+365 static constexpr GeometryType nextGeometry = GeometryTypes::\n+prismaticExtension(baseGeometry);\n+366\n+367 typedef MonomialBasisSize Size;\n+368 static const Size &mySize = Size::instance();\n+369\n+370 _\bF_\bi_\be_\bl_\bd *row0 = values;\n+371 for( unsigned int k = 1; k <= order; ++k )\n+372 {\n+373 _\bF_\bi_\be_\bl_\bd *const row1begin = values + offsets[ k-1 ];\n+374 _\bF_\bi_\be_\bl_\bd *const row1End = row1begin + mySize.sizes_[ k ];\n+375 assert( (unsigned int)(row1End - values) <= offsets[ k ] );\n+376\n+377 _\bF_\bi_\be_\bl_\bd *row1 = row1begin;\n+378 _\bF_\bi_\be_\bl_\bd *it = row1begin + baseSizes[ k ];\n+379 for( unsigned int j = 1; j <= k; ++j )\n+380 {\n+381 _\bF_\bi_\be_\bl_\bd *const end = it + baseSizes[ k ];\n+382 assert( (unsigned int)(end - values) <= offsets[ k ] );\n+383 for( ; it != end; ++row1, ++it )\n+384 *it = (_\bF_\bi_\be_\bl_\bd( j ) / _\bF_\bi_\be_\bl_\bd( j+1 )) * (*row1);\n+385 }\n+386 for( ; it != row1End; ++row0, ++it )\n+387 *it = (_\bF_\bi_\be_\bl_\bd( k ) / _\bF_\bi_\be_\bl_\bd( k+1 )) * (*row0);\n+388 row0 = row1;\n+389 }\n+390 }\n+391\n+392\n+393 template\n+394 void integrateConical ( const unsigned int order,\n+395 const unsigned int *const offsets,\n+396 _\bF_\bi_\be_\bl_\bd *const values) const\n+397 {\n+398 typedef MonomialBasisSize BaseSize;\n+399 static const BaseSize &size = BaseSize::instance();\n+400 const unsigned int *const baseSizes = size.sizes_;\n+401\n+402 static constexpr GeometryType baseGeometry = baseGeometryId;\n+403\n+404 {\n+405 _\bF_\bi_\be_\bl_\bd *const col0End = values + baseSizes[ 0 ];\n+406 for( _\bF_\bi_\be_\bl_\bd *it = values; it != col0End; ++it )\n+407 *it *= _\bF_\bi_\be_\bl_\bd( 1 ) / _\bF_\bi_\be_\bl_\bd( int(baseGeometry.dim()+1) );\n+408 }\n+409\n+410 _\bF_\bi_\be_\bl_\bd *row0 = values;\n+411 for( unsigned int k = 1; k <= order; ++k )\n+412 {\n+413 const _\bF_\bi_\be_\bl_\bd factor = (_\bF_\bi_\be_\bl_\bd( 1 ) / _\bF_\bi_\be_\bl_\bd( k + baseGeometry.dim()+1));\n+414\n+415 _\bF_\bi_\be_\bl_\bd *const row1 = values+offsets[ k-1 ];\n+416 _\bF_\bi_\be_\bl_\bd *const col0End = row1 + baseSizes[ k ];\n+417 _\bF_\bi_\be_\bl_\bd *it = row1;\n+418 for( ; it != col0End; ++it )\n+419 *it *= factor;\n+420 for( unsigned int i = 1; i <= k; ++i )\n+421 {\n+422 _\bF_\bi_\be_\bl_\bd *const end = it + baseSizes[ k-i ];\n+423 assert( (unsigned int)(end - values) <= offsets[ k ] );\n+424 for( ; it != end; ++row0, ++it )\n+425 *it = (*row0) * (_\bF_\bi_\be_\bl_\bd( i ) * factor);\n+426 }\n+427 row0 = row1;\n+428 }\n+429 }\n+430\n+431 };\n+432\n+433\n+434 // MonomialBasis\n+435 // -------------\n+436\n+437 template< GeometryType::Id geometryId, class F >\n+_\b4_\b3_\b8 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+439 : public _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl< geometryId, F >\n+440 {\n+441 static constexpr GeometryType geometry = geometryId;\n+442 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n+443 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b> _\bB_\ba_\bs_\be;\n+444\n+445 public:\n+_\b4_\b4_\b6 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = _\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn;\n+_\b4_\b4_\b7 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = 1;\n+448\n+_\b4_\b4_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd _\bF_\bi_\be_\bl_\bd;\n+450\n+_\b4_\b5_\b1 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+452\n+_\b4_\b5_\b3 typedef Dune::FieldVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n+454\n+_\b4_\b5_\b5 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b> _\bS_\bi_\bz_\be;\n+456\n+_\b4_\b5_\b7 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int _\bo_\br_\bd_\be_\br)\n+458 : _\bB_\ba_\bs_\be(),\n+459 order_(_\bo_\br_\bd_\be_\br),\n+460 size_(_\bS_\bi_\bz_\be::instance())\n+461 {\n+462 assert(_\bo_\br_\bd_\be_\br<=1024); // avoid wrapping of unsigned int (0-1) order=1024 is\n+quite high...)\n+463 }\n+464\n+_\b4_\b6_\b5 const unsigned int *_\bs_\bi_\bz_\be_\bs ( unsigned int _\bo_\br_\bd_\be_\br ) const\n+466 {\n+467 size_._\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs( _\bo_\br_\bd_\be_\br );\n+468 return size_._\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_;\n+469 }\n+470\n+_\b4_\b7_\b1 const unsigned int *_\bs_\bi_\bz_\be_\bs () const\n+472 {\n+473 return _\bs_\bi_\bz_\be_\bs( order_ );\n+474 }\n+475\n+_\b4_\b7_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+477 {\n+478 size_._\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs( order_ );\n+479 return size_( order_ );\n+480 }\n+481\n+_\b4_\b8_\b2 unsigned int _\bd_\be_\br_\bi_\bv_\bS_\bi_\bz_\be ( const unsigned int deriv ) const\n+483 {\n+484 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be< GeometryTypes::simplex(_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn).toId() >::instance\n+()._\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs( deriv );\n+485 return _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be< GeometryTypes::simplex(_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn).toId() >::\n+instance() ( deriv );\n+486 }\n+487\n+_\b4_\b8_\b8 unsigned int _\bo_\br_\bd_\be_\br () const\n+489 {\n+490 return order_ ;\n+491 }\n+492\n+_\b4_\b9_\b3 unsigned int _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd ( ) const\n+494 {\n+495 return geometry.id();\n+496 }\n+497\n+_\b4_\b9_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const unsigned int deriv, const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+499 _\bF_\bi_\be_\bl_\bd *const values ) const\n+500 {\n+501 Base::evaluate( deriv, order_, x, _\bd_\be_\br_\bi_\bv_\bS_\bi_\bz_\be( deriv ), _\bs_\bi_\bz_\be_\bs( order_ ),\n+values );\n+502 }\n+503\n+504 template \n+_\b5_\b0_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+506 _\bF_\bi_\be_\bl_\bd *const values ) const\n+507 {\n+508 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( deriv, x, values );\n+509 }\n+510\n+511 template\n+_\b5_\b1_\b2 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+513 Vector &values ) const\n+514 {\n+515 evaluate(x,&(values[0]));\n+516 }\n+517 template\n+_\b5_\b1_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+519 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> *values ) const\n+520 {\n+521 evaluate(x,&(values->block()));\n+522 }\n+523 template< unsigned int deriv >\n+_\b5_\b2_\b4 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+525 FieldVector<_\bF_\bi_\be_\bl_\bd,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b>_\b:_\b:_\bs_\bi_\bz_\be> *values ) const\n+526 {\n+527 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(0,x,&(values[0][0]));\n+528 }\n+529\n+530 template\n+_\b5_\b3_\b1 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+532 Vector &values ) const\n+533 {\n+534 evaluate<0>(x,&(values[0]));\n+535 }\n+536\n+537 template< class DVector, class RVector >\n+_\b5_\b3_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n+539 {\n+540 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+541 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n+542 for( int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n+543 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n+544 evaluate<0>( bx, values );\n+545 }\n+546\n+_\b5_\b4_\b7 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( _\bF_\bi_\be_\bl_\bd *const values ) const\n+548 {\n+549 Base::integrate( order_, _\bs_\bi_\bz_\be_\bs( order_ ), values );\n+550 }\n+551 template \n+_\b5_\b5_\b2 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( Vector &values ) const\n+553 {\n+554 _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be( &(values[ 0 ]) );\n+555 }\n+556 private:\n+557 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs(const This&);\n+558 This& operator=(const This&);\n+559 unsigned int order_;\n+560 _\bS_\bi_\bz_\be &size_;\n+561 };\n+562\n+563\n+564\n+565 // StdMonomialBasis\n+566 // ----------------\n+567\n+568 template< int dim,class F >\n+_\b5_\b6_\b9 class _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+570 : public _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< GeometryTypes::simplex(dim).toId() , F >\n+571 {\n+572 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n+573 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< GeometryTypes::simplex(dim).toId(), F > _\bB_\ba_\bs_\be;\n+574\n+575 public:\n+_\b5_\b7_\b6 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = GeometryTypes::simplex(dim);\n+_\b5_\b7_\b7 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+578\n+_\b5_\b7_\b9 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs ( unsigned int _\bo_\br_\bd_\be_\br )\n+580 : _\bB_\ba_\bs_\be( _\bo_\br_\bd_\be_\br )\n+581 {}\n+582 };\n+583\n+584\n+585\n+586 // StandardBiMonomialBasis\n+587 // -----------------------\n+588\n+589 template< int dim, class F >\n+_\b5_\b9_\b0 class _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+591 : public _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< GeometryTypes::cube(dim).toId() , F >\n+592 {\n+593 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n+594 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< GeometryTypes::cube(dim).toId() , F > _\bB_\ba_\bs_\be;\n+595\n+596 public:\n+_\b5_\b9_\b7 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = GeometryTypes::cube(dim);\n+_\b5_\b9_\b8 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+599\n+_\b6_\b0_\b0 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs ( unsigned int _\bo_\br_\bd_\be_\br )\n+601 : _\bB_\ba_\bs_\be( _\bo_\br_\bd_\be_\br )\n+602 {}\n+603 };\n+604\n+605 // -----------------------------------------------------------\n+606 // -----------------------------------------------------------\n+607 // VirtualMonomialBasis\n+608 // -------------------\n+609\n+610 template< int dim, class F >\n+_\b6_\b1_\b1 class _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+612 {\n+613 typedef _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n+614\n+615 public:\n+_\b6_\b1_\b6 typedef F _\bF_\bi_\be_\bl_\bd;\n+_\b6_\b1_\b7 typedef F _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+_\b6_\b1_\b8 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+_\b6_\b1_\b9 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = 1;\n+620\n+_\b6_\b2_\b1 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+_\b6_\b2_\b2 typedef FieldVector _\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br;\n+623\n+_\b6_\b2_\b4 explicit _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs(const GeometryType& gt,\n+625 unsigned int _\bo_\br_\bd_\be_\br)\n+626 : _\bo_\br_\bd_\be_\br_\b_(_\bo_\br_\bd_\be_\br), _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b_(gt) {}\n+627\n+_\b6_\b2_\b8 virtual _\b~_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs() {}\n+629\n+_\b6_\b3_\b0 virtual const unsigned int *_\bs_\bi_\bz_\be_\bs ( ) const = 0;\n+631\n+_\b6_\b3_\b2 unsigned int _\bs_\bi_\bz_\be ( ) const\n+633 {\n+634 return _\bs_\bi_\bz_\be_\bs( )[ _\bo_\br_\bd_\be_\br_\b_ ];\n+635 }\n+636\n+_\b6_\b3_\b7 unsigned int _\bo_\br_\bd_\be_\br () const\n+638 {\n+639 return _\bo_\br_\bd_\be_\br_\b_;\n+640 }\n+641\n+_\b6_\b4_\b2 GeometryType _\bt_\by_\bp_\be() const\n+643 {\n+644 return _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b_;\n+645 }\n+646\n+_\b6_\b4_\b7 virtual void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const unsigned int deriv, const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+648 _\bF_\bi_\be_\bl_\bd *const values ) const = 0;\n+649 template < unsigned int deriv >\n+_\b6_\b5_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+651 _\bF_\bi_\be_\bl_\bd *const values ) const\n+652 {\n+653 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( deriv, x, values );\n+654 }\n+655 template < unsigned int deriv, int size >\n+_\b6_\b5_\b6 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+657 Dune::FieldVector *const values ) const\n+658 {\n+659 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( deriv, x, &(values[0][0]) );\n+660 }\n+661 template\n+_\b6_\b6_\b2 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+663 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> *values ) const\n+664 {\n+665 evaluate(x,&(values->block()));\n+666 }\n+667 template \n+_\b6_\b6_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+669 Vector &values ) const\n+670 {\n+671 evaluate( x, &(values[ 0 ]) );\n+672 }\n+673 template< class Vector >\n+_\b6_\b7_\b4 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+675 Vector &values ) const\n+676 {\n+677 evaluate<0>(x,values);\n+678 }\n+679 template< class DVector, class RVector >\n+_\b6_\b8_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n+681 {\n+682 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+683 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n+684 for( int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n+685 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n+686 evaluate<0>( bx, values );\n+687 }\n+688 template< unsigned int deriv, class DVector, class RVector >\n+_\b6_\b8_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n+690 {\n+691 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+692 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n+693 for( int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n+694 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n+695 evaluate( bx, values );\n+696 }\n+697\n+_\b6_\b9_\b8 virtual void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( _\bF_\bi_\be_\bl_\bd *const values ) const = 0;\n+699 template \n+_\b7_\b0_\b0 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( Vector &values ) const\n+701 {\n+702 _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be( &(values[ 0 ]) );\n+703 }\n+704 protected:\n+_\b7_\b0_\b5 unsigned int _\bo_\br_\bd_\be_\br_\b_;\n+_\b7_\b0_\b6 GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b_;\n+707 };\n+708\n+709 template< GeometryType::Id geometryId, class F >\n+_\b7_\b1_\b0 class _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n+711 : public _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< static_cast(geometryId).dim(),\n+F >\n+712 {\n+713 static constexpr GeometryType geometry = geometryId;\n+714 typedef _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< geometry.dim(), F > _\bB_\ba_\bs_\be;\n+715 typedef _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n+716\n+717 public:\n+_\b7_\b1_\b8 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd _\bF_\bi_\be_\bl_\bd;\n+_\b7_\b1_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+720\n+_\b7_\b2_\b1 _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl(unsigned int _\bo_\br_\bd_\be_\br)\n+722 : _\bB_\ba_\bs_\be(geometry,_\bo_\br_\bd_\be_\br), basis_(_\bo_\br_\bd_\be_\br)\n+723 {}\n+724\n+_\b7_\b2_\b5 const unsigned int *_\bs_\bi_\bz_\be_\bs ( ) const\n+726 {\n+727 return basis_._\bs_\bi_\bz_\be_\bs(order_);\n+728 }\n+729\n+_\b7_\b3_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const unsigned int deriv, const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+731 _\bF_\bi_\be_\bl_\bd *const values ) const\n+732 {\n+733 basis_._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(deriv,x,values);\n+734 }\n+735\n+_\b7_\b3_\b6 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( _\bF_\bi_\be_\bl_\bd *const values ) const\n+737 {\n+738 basis_._\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be(values);\n+739 }\n+740\n+741 private:\n+742 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bF_\bi_\be_\bl_\bd_\b> basis_;\n+743 using _\bB_\ba_\bs_\be_\b:_\b:_\bo_\br_\bd_\be_\br_\b_;\n+744 };\n+745\n+746 // MonomialBasisFactory\n+747 // --------------------\n+748\n+749 template< int dim, class F >\n+_\b7_\b5_\b0 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+751 {\n+_\b7_\b5_\b2 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+_\b7_\b5_\b3 typedef F _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+754\n+_\b7_\b5_\b5 typedef unsigned int _\bK_\be_\by;\n+_\b7_\b5_\b6 typedef const _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b> _\bO_\bb_\bj_\be_\bc_\bt;\n+757\n+758 template < int dd, class FF >\n+_\b7_\b5_\b9 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+760 {\n+_\b7_\b6_\b1 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n+762 };\n+763\n+764 template< GeometryType::Id geometryId >\n+_\b7_\b6_\b5 static _\bO_\bb_\bj_\be_\bc_\bt* _\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &order )\n+766 {\n+767 return new _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd_\b _\b>( order );\n+768 }\n+_\b7_\b6_\b9 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+770 };\n+771\n+772\n+773\n+774 // MonomialBasisProvider\n+775 // ---------------------\n+776\n+777 template< int dim, class SF >\n+_\b7_\b7_\b8 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+779 : public TopologySingletonFactory< MonomialBasisFactory< dim, SF > >\n+780 {\n+_\b7_\b8_\b1 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+_\b7_\b8_\b2 typedef SF _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+783 template < int dd, class FF >\n+_\b7_\b8_\b4 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+785 {\n+_\b7_\b8_\b6 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n+787 };\n+788 };\n+789\n+790}\n+791\n+792#endif\n+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-A cache storing a compile time selection of local finite element\n-implementations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by\n+A class representing the unit of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n+A class representing the zero of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bn_\bu_\bm_\bB_\ba_\bs_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b_\n+unsigned int * numBaseFunctions_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bc_\bo_\bm_\bp_\bu_\bt_\be_\bS_\bi_\bz_\be_\bs\n+void computeSizes(unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:126\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bs_\bi_\bz_\be_\bs_\b_\n+unsigned int * sizes_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be\n+MonomialBasisSize()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:102\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\b~_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be\n+~MonomialBasisSize()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+unsigned int operator()(const unsigned int order) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bm_\ba_\bx_\bO_\br_\bd_\be_\br_\b_\n+unsigned int maxOrder_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bm_\ba_\bx_\bO_\br_\bd_\be_\br\n+unsigned int maxOrder() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bS_\bi_\bz_\be_\b:_\b:_\bi_\bn_\bs_\bt_\ba_\bn_\bc_\be\n+static This & instance()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:440\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:476\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:446\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+Dune::FieldVector< Field, dimRange > RangeVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:453\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n+values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:498\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n+const unsigned int * sizes() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:471\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd\n+unsigned int topologyId() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:493\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n+void integrate(Vector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:552\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+Base::Field Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:449\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n+void integrate(Field *const values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:547\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const unsigned int dimRange\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:447\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+Base::DomainVector DomainVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:451\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, Field *const values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:505\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, Vector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:531\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, FieldVector< Field, Derivatives< Field,\n+dimension, 1, deriv, DerivativeLayoutNS::value >::size > *values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:524\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, Derivatives< Field, dimension, 1, deriv,\n+layout > *values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:518\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DVector &x, RVector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:538\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bi_\bz_\be\n+MonomialBasisSize< geometryId > Size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:455\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, Vector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:512\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+MonomialBasis(unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:457\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\be_\br_\bi_\bv_\bS_\bi_\bz_\be\n+unsigned int derivSize(const unsigned int deriv) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:482\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n+const unsigned int * sizes(unsigned int order) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:465\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:488\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:177\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bS_\bi_\bz_\be\n+MonomialBasisSize< GeometryTypes::simplex(dim).toId() > Size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:179\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bc_\bo_\bp_\by\n+static void copy(const unsigned int deriv, F *&wit, F *&rit, const unsigned int\n+numBaseFunctions, const F &z)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:181\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bM_\by_\bS_\bi_\bz_\be\n+MonomialBasisSize< GeometryTypes::simplex(mydim).toId() > MySize\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:178\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:234\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< Field, dimDomain > DomainVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:242\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+static constexpr GeometryType geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:238\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn\n+static const unsigned int dimDomain\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:571\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+static constexpr GeometryType geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:576\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+StandardMonomialBasis(unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:579\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:577\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:592\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:598\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+static constexpr GeometryType geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:597\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bB_\bi_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+StandardBiMonomialBasis(unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:600\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:612\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\b_\n+GeometryType geometry_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:706\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< Field, dimension > DomainVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:621\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n+unsigned int order_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:705\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, Vector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:674\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, Field *const values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:650\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:616\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, Vector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:668\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DVector &x, RVector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:680\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:637\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const unsigned int dimRange\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:619\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n+F StorageField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:617\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:618\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:632\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bV_\be_\bc_\bt_\bo_\br\n+FieldVector< Field, dimRange > RangeVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:622\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\b~_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+virtual ~VirtualMonomialBasis()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:628\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+virtual void evaluate(const unsigned int deriv, const DomainVector &x, Field\n+*const values) const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n+virtual void integrate(Field *const values) const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, Dune::FieldVector< Field, size > *const\n+values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:656\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DVector &x, RVector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:689\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:642\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, Derivatives< Field, dimension, 1, deriv,\n+layout > *values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:662\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+VirtualMonomialBasis(const GeometryType >, unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:624\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n+virtual const unsigned int * sizes() const =0\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n+void integrate(Vector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:700\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:712\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n+void integrate(Field *const values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:736\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bs_\bi_\bz_\be_\bs\n+const unsigned int * sizes() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:725\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+Base::DomainVector DomainVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:719\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+Base::Field Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:718\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n+values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:730\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bI_\bm_\bp_\bl\n+VirtualMonomialBasisImpl(unsigned int order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:721\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:751\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:769\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const VirtualMonomialBasis< dimension, F > Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:756\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:765\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n+F StorageField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:753\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:752\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+unsigned int Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:755\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:760\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n+MonomialBasisFactory< dd, FF > Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:761\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:780\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:781\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n+SF StorageField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:782\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:785\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n+MonomialBasisProvider< dd, FF > Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:786\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:180\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas4cube2dlocalbasis.hh File Reference\n+dune-localfunctions: lfematrix.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,46 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas4cube2dlocalbasis.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    lfematrix.hh File Reference
    \n \n
    \n-
    #include <bitset>
    \n-#include <numeric>
    \n+
    #include <cassert>
    \n #include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+#include "field.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::RT4Cube2DLocalBasis< D, R >
     Second order Raviart-Thomas shape functions on the reference quadrilateral. More...
    class  Dune::LFEMatrix< F >
     
    \n \n \n \n+

    \n Namespaces

    namespace  Dune
     
    \n+\n+\n+\n+\n

    \n+Functions

    template<class Field >
    std::ostream & Dune::operator<< (std::ostream &out, const LFEMatrix< Field > &mat)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,26 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas4cube2dlocalbasis.hh File Reference\n-#include \n-#include \n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+lfematrix.hh File Reference\n+#include \n #include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 Second order Raviart-Thomas shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx< Field >\n+ &mat)\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas4cube2dlocalbasis.hh Source File\n+dune-localfunctions: lfematrix.hh Source File\n \n \n \n \n \n \n \n@@ -70,814 +70,228 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas4cube2dlocalbasis.hh
    \n+
    lfematrix.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \n
    7
    \n-
    8#include <bitset>
    \n-
    9#include <numeric>
    \n-
    10#include <vector>
    \n-
    11
    \n-
    12#include <dune/common/fmatrix.hh>
    \n-
    13
    \n-
    14#include "../../common/localbasis.hh"
    \n+
    8#include <cassert>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include "field.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    27 template<class D, class R>
    \n-
    \n-\n-
    29 {
    \n-
    30
    \n-
    31 public:
    \n-
    32 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    33 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    16 template< class F >
    \n+
    \n+
    17 class [[deprecated("The usage of LFEMatrix is discouraged. Use DynamicMatrix instead")]] LFEMatrix
    \n+
    18 {
    \n+
    19 typedef std::vector< F > Row;
    \n+
    20 typedef std::vector<Row> RealMatrix;
    \n+
    21
    \n+
    22 public:
    \n+
    23 typedef F Field;
    \n+
    24
    \n+
    \n+
    25 operator const RealMatrix & () const
    \n+
    26 {
    \n+
    27 return matrix_;
    \n+
    28 }
    \n+
    \n+
    29
    \n+
    \n+
    30 operator RealMatrix & ()
    \n+
    31 {
    \n+
    32 return matrix_;
    \n+
    33 }
    \n+
    \n
    34
    \n-
    \n-
    40 RT4Cube2DLocalBasis (std::bitset<4> s = 0)
    \n-
    41 {
    \n-
    42 sign0 = (s[0]) ? -1.0 : 1.0;
    \n-
    43 sign1 = (s[1]) ? -1.0 : 1.0;
    \n-
    44 sign2 = (s[2]) ? -1.0 : 1.0;
    \n-
    45 sign3 = (s[3]) ? -1.0 : 1.0;
    \n-
    46 }
    \n-
    \n-
    47
    \n-
    \n-
    49 unsigned int size () const
    \n-
    50 {
    \n-
    51 return 60;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-
    60 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    61 std::vector<typename Traits::RangeType>& out) const
    \n-
    62 {
    \n-
    63 out.resize(60);
    \n-
    64
    \n-
    65 auto const& x = in[0], y = in[1];
    \n+
    35 template <class Vector>
    \n+
    \n+
    36 void row( const unsigned int row, Vector &vec ) const
    \n+
    37 {
    \n+
    38 assert(row<rows());
    \n+
    39 for (int i=0; i<cols(); ++i)
    \n+
    40 field_cast(matrix_[row][i], vec[i]);
    \n+
    41 }
    \n+
    \n+
    42
    \n+
    \n+
    43 const Field &operator() ( const unsigned int row, const unsigned int col ) const
    \n+
    44 {
    \n+
    45 assert(row<rows());
    \n+
    46 assert(col<cols());
    \n+
    47 return matrix_[ row ][ col ];
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    \n+
    50 Field &operator() ( const unsigned int row, const unsigned int col )
    \n+
    51 {
    \n+
    52 assert(row<rows());
    \n+
    53 assert(col<cols());
    \n+
    54 return matrix_[ row ][ col ];
    \n+
    55 }
    \n+
    \n+
    56
    \n+
    \n+
    57 unsigned int rows () const
    \n+
    58 {
    \n+
    59 return rows_;
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+
    62 unsigned int cols () const
    \n+
    63 {
    \n+
    64 return cols_;
    \n+
    65 }
    \n+
    \n
    66
    \n-
    67 const auto l1_x = 2*x - 1;
    \n-
    68 const auto l2_x = x*(6*x - 6) + 1;
    \n-
    69 const auto l3_x = x*(x*(20*x - 30) + 12) - 1;
    \n-
    70 const auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;
    \n-
    71 const auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;
    \n-
    72 const auto l1_y = 2*y - 1;
    \n-
    73 const auto l2_y = y*(6*y - 6) + 1;
    \n-
    74 const auto l3_y = y*(y*(20*y - 30) + 12) - 1;
    \n-
    75 const auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;
    \n-
    76 const auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;
    \n-
    77
    \n-
    78 out[0][0]=sign0*(0.5*(-l4_x)+0.5*l5_x);
    \n-
    79 out[0][1]=0.0;
    \n-
    80 out[1][0]=-(1.5)*l4_x*l1_y+1.5*l5_x*l1_y;
    \n-
    81 out[1][1]=0.0;
    \n-
    82 out[2][0]=sign0*(-(2.5)*l4_x*l2_y+2.5*l5_x*l2_y);
    \n-
    83 out[2][1]=0.0;
    \n-
    84 out[3][0]=-(3.5)*l4_x*l3_y+3.5*l5_x*l3_y;
    \n-
    85 out[3][1]=0.0;
    \n-
    86 out[4][0]=sign0*(-(4.5)*l4_x*l4_y+4.5*l5_x*l4_y);
    \n-
    87 out[4][1]=0.0;
    \n-
    88
    \n-
    89 out[5][0]=sign1*(0.5*l4_x+0.5*l5_x);
    \n-
    90 out[5][1]=0.0;
    \n-
    91 out[6][0]=-(1.5)*l4_x*l1_y-1.5*l5_x*l1_y;
    \n-
    92 out[6][1]=0.0;
    \n-
    93 out[7][0]=sign1*(2.5*l4_x*l2_y+2.5*l5_x*l2_y);
    \n-
    94 out[7][1]=0.0;
    \n-
    95 out[8][0]=-(3.5)*l4_x*l3_y-3.5*l5_x*l3_y;
    \n-
    96 out[8][1]=0.0;
    \n-
    97 out[9][0]=sign1*(4.5*l4_x*l4_y+4.5*l5_x*l4_y);
    \n-
    98 out[9][1]=0.0;
    \n-
    99
    \n-
    100 out[10][0]=0.0;
    \n-
    101 out[10][1]=sign2*(0.5*(-l4_y)+0.5*l5_y);
    \n-
    102 out[11][0]=0.0;
    \n-
    103 out[11][1]=1.5*l1_x*l4_y-1.5*l1_x*l5_y;
    \n-
    104 out[12][0]=0.0;
    \n-
    105 out[12][1]=sign2*(-(2.5)*l2_x*l4_y+2.5*l2_x*l5_y);
    \n-
    106 out[13][0]=0.0;
    \n-
    107 out[13][1]=3.5*l3_x*l4_y-3.5*l3_x*l5_y;
    \n-
    108 out[14][0]=0.0;
    \n-
    109 out[14][1]=sign2*(-(4.5)*l4_x*l4_y+4.5*l4_x*l5_y);
    \n-
    110
    \n-
    111 out[15][0]=0.0;
    \n-
    112 out[15][1]=sign3*(0.5*l4_y+0.5*l5_y);
    \n-
    113 out[16][0]=0.0;
    \n-
    114 out[16][1]=1.5*l1_x*l4_y+1.5*l1_x*l5_y;
    \n-
    115 out[17][0]=0.0;
    \n-
    116 out[17][1]=sign3*(2.5*l2_x*l4_y+2.5*l2_x*l5_y);
    \n-
    117 out[18][0]=0.0;
    \n-
    118 out[18][1]=3.5*l3_x*l4_y+3.5*l3_x*l5_y;
    \n-
    119 out[19][0]=0.0;
    \n-
    120 out[19][1]=sign3*(4.5*l4_x*l4_y+4.5*l4_x*l5_y);
    \n-
    121
    \n-
    122 out[20][0]=1.0-l4_x;
    \n-
    123 out[20][1]=0.0;
    \n-
    124 out[21][0]=3.0*l1_y-3.0*l4_x*l1_y;
    \n-
    125 out[21][1]=0.0;
    \n-
    126 out[22][0]=5.0*l2_y-5.0*l4_x*l2_y;
    \n-
    127 out[22][1]=0.0;
    \n-
    128 out[23][0]=7.0*l3_y-7.0*l4_x*l3_y;
    \n-
    129 out[23][1]=0.0;
    \n-
    130 out[24][0]=9.0*l4_y-9.0*l4_x*l4_y;
    \n-
    131 out[24][1]=0.0;
    \n-
    132 out[25][0]=3.0*l1_x-3.0*l5_x;
    \n-
    133 out[25][1]=0.0;
    \n-
    134 out[26][0]=9.0*l1_x*l1_y-9.0*l5_x*l1_y;
    \n-
    135 out[26][1]=0.0;
    \n-
    136 out[27][0]=15.0*l1_x*l2_y-15.0*l5_x*l2_y;
    \n-
    137 out[27][1]=0.0;
    \n-
    138 out[28][0]=21.0*l1_x*l3_y-21.0*l5_x*l3_y;
    \n-
    139 out[28][1]=0.0;
    \n-
    140 out[29][0]=27.0*l1_x*l4_y-27.0*l5_x*l4_y;
    \n-
    141 out[29][1]=0.0;
    \n-
    142 out[30][0]=5.0*l2_x-5.0*l4_x;
    \n-
    143 out[30][1]=0.0;
    \n-
    144 out[31][0]=15.0*l2_x*l1_y-15.0*l4_x*l1_y;
    \n-
    145 out[31][1]=0.0;
    \n-
    146 out[32][0]=25.0*l2_x*l2_y-25.0*l4_x*l2_y;
    \n-
    147 out[32][1]=0.0;
    \n-
    148 out[33][0]=35.0*l2_x*l3_y-35.0*l4_x*l3_y;
    \n-
    149 out[33][1]=0.0;
    \n-
    150 out[34][0]=45.0*l2_x*l4_y-45.0*l4_x*l4_y;
    \n-
    151 out[34][1]=0.0;
    \n-
    152 out[35][0]=7.0*l3_x-7.0*l5_x;
    \n-
    153 out[35][1]=0.0;
    \n-
    154 out[36][0]=21.0*l3_x*l1_y-21.0*l5_x*l1_y;
    \n-
    155 out[36][1]=0.0;
    \n-
    156 out[37][0]=35.0*l3_x*l2_y-35.0*l5_x*l2_y;
    \n-
    157 out[37][1]=0.0;
    \n-
    158 out[38][0]=49.0*l3_x*l3_y-49.0*l5_x*l3_y;
    \n-
    159 out[38][1]=0.0;
    \n-
    160 out[39][0]=63.0*l3_x*l4_y-63.0*l5_x*l4_y;
    \n-
    161 out[39][1]=0.0;
    \n-
    162 out[40][0]=0.0;
    \n-
    163 out[40][1]=1.0-l4_y;
    \n-
    164 out[41][0]=0.0;
    \n-
    165 out[41][1]=3.0*l1_y-3.0*l5_y;
    \n-
    166 out[42][0]=0.0;
    \n-
    167 out[42][1]=5.0*l2_y-5.0*l4_y;
    \n-
    168 out[43][0]=0.0;
    \n-
    169 out[43][1]=7.0*l3_y-7.0*l5_y;
    \n-
    170 out[44][0]=0.0;
    \n-
    171 out[44][1]=3.0*l1_x-3.0*l1_x*l4_y;
    \n-
    172 out[45][0]=0.0;
    \n-
    173 out[45][1]=9.0*l1_x*l1_y-9.0*l1_x*l5_y;
    \n-
    174 out[46][0]=0.0;
    \n-
    175 out[46][1]=15.0*l1_x*l2_y-15.0*l1_x*l4_y;
    \n-
    176 out[47][0]=0.0;
    \n-
    177 out[47][1]=21.0*l1_x*l3_y-21.0*l1_x*l5_y;
    \n-
    178 out[48][0]=0.0;
    \n-
    179 out[48][1]=5.0*l2_x-5.0*l2_x*l4_y;
    \n-
    180 out[49][0]=0.0;
    \n-
    181 out[49][1]=15.0*l2_x*l1_y-15.0*l2_x*l5_y;
    \n-
    182 out[50][0]=0.0;
    \n-
    183 out[50][1]=25.0*l2_x*l2_y-25.0*l2_x*l4_y;
    \n-
    184 out[51][0]=0.0;
    \n-
    185 out[51][1]=35.0*l2_x*l3_y-35.0*l2_x*l5_y;
    \n-
    186 out[52][0]=0.0;
    \n-
    187 out[52][1]=7.0*l3_x-7.0*l3_x*l4_y;
    \n-
    188 out[53][0]=0.0;
    \n-
    189 out[53][1]=21.0*l3_x*l1_y-21.0*l3_x*l5_y;
    \n-
    190 out[54][0]=0.0;
    \n-
    191 out[54][1]=35.0*l3_x*l2_y-35.0*l3_x*l4_y;
    \n-
    192 out[55][0]=0.0;
    \n-
    193 out[55][1]=49.0*l3_x*l3_y-49.0*l3_x*l5_y;
    \n-
    194 out[56][0]=0.0;
    \n-
    195 out[56][1]=9.0*l4_x-9.0*l4_x*l4_y;
    \n-
    196 out[57][0]=0.0;
    \n-
    197 out[57][1]=27.0*l4_x*l1_y-27.0*l4_x*l5_y;
    \n-
    198 out[58][0]=0.0;
    \n-
    199 out[58][1]=45.0*l4_x*l2_y-45.0*l4_x*l4_y;
    \n-
    200 out[59][0]=0.0;
    \n-
    201 out[59][1]=63.0*l4_x*l3_y-63.0*l4_x*l5_y;
    \n-
    202 }
    \n-
    \n-
    203
    \n-
    \n-
    210 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    211 std::vector<typename Traits::JacobianType>& out) const
    \n-
    212 {
    \n-
    213 out.resize(60);
    \n-
    214 auto const& x = in[0], y = in[1];
    \n-
    215
    \n-
    216 const auto l1_x = 2*x - 1;
    \n-
    217 const auto l2_x = x*(6*x - 6) + 1;
    \n-
    218 const auto l3_x = x*(x*(20*x - 30) + 12) - 1;
    \n-
    219 const auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;
    \n-
    220 const auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;
    \n-
    221 const auto l1_y = 2*y - 1;
    \n-
    222 const auto l2_y = y*(6*y - 6) + 1;
    \n-
    223 const auto l3_y = y*(y*(20*y - 30) + 12) - 1;
    \n-
    224 const auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;
    \n-
    225 const auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;
    \n-
    226
    \n-
    227 const auto dxl1_x = 2.0;
    \n-
    228 const auto dxl2_x = 12*x - 6;
    \n-
    229 const auto dxl3_x = x*(60*x - 60) + 12;
    \n-
    230 const auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;
    \n-
    231 const auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;
    \n-
    232 const auto dyl1_y = 2.0;
    \n-
    233 const auto dyl2_y = 12*y - 6;
    \n-
    234 const auto dyl3_y = y*(60*y - 60) + 12;
    \n-
    235 const auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;
    \n-
    236 const auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;
    \n-
    237
    \n-
    238 // x-component
    \n-
    239 out[0][0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);
    \n-
    240 out[0][1][0]=0.0;
    \n-
    241 out[1][0][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;
    \n-
    242 out[1][1][0]=0.0;
    \n-
    243 out[2][0][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
    \n-
    244 out[2][1][0]=0.0;
    \n-
    245 out[3][0][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;
    \n-
    246 out[3][1][0]=0.0;
    \n-
    247 out[4][0][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
    \n-
    248 out[4][1][0]=0.0;
    \n-
    249
    \n-
    250 out[5][0][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);
    \n-
    251 out[5][1][0]=0.0;
    \n-
    252 out[6][0][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;
    \n-
    253 out[6][1][0]=0.0;
    \n-
    254 out[7][0][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
    \n-
    255 out[7][1][0]=0.0;
    \n-
    256 out[8][0][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;
    \n-
    257 out[8][1][0]=0.0;
    \n-
    258 out[9][0][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
    \n-
    259 out[9][1][0]=0.0;
    \n-
    260
    \n-
    261 out[10][0][0]=0.0;
    \n-
    262 out[10][1][0]=0.0;
    \n-
    263 out[11][0][0]=0.0;
    \n-
    264 out[11][1][0]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;
    \n-
    265 out[12][0][0]=0.0;
    \n-
    266 out[12][1][0]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
    \n-
    267 out[13][0][0]=0.0;
    \n-
    268 out[13][1][0]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;
    \n-
    269 out[14][0][0]=0.0;
    \n-
    270 out[14][1][0]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
    \n-
    271
    \n-
    272 out[15][0][0]=0.0;
    \n-
    273 out[15][1][0]=0.0;
    \n-
    274 out[16][0][0]=0.0;
    \n-
    275 out[16][1][0]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;
    \n-
    276 out[17][0][0]=0.0;
    \n-
    277 out[17][1][0]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
    \n-
    278 out[18][0][0]=0.0;
    \n-
    279 out[18][1][0]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;
    \n-
    280 out[19][0][0]=0.0;
    \n-
    281 out[19][1][0]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
    \n-
    282
    \n-
    283 out[20][0][0]=-dxl4_x;
    \n-
    284 out[20][1][0]=0.0;
    \n-
    285 out[21][0][0]=-3.0*dxl4_x*l1_y;
    \n-
    286 out[21][1][0]=0.0;
    \n-
    287 out[22][0][0]=-5.0*dxl4_x*l2_y;
    \n-
    288 out[22][1][0]=0.0;
    \n-
    289 out[23][0][0]=-7.0*dxl4_x*l3_y;
    \n-
    290 out[23][1][0]=0.0;
    \n-
    291 out[24][0][0]=-9.0*dxl4_x*l4_y;
    \n-
    292 out[24][1][0]=0.0;
    \n-
    293 out[25][0][0]=3.0*dxl1_x-3.0*dxl5_x;
    \n-
    294 out[25][1][0]=0.0;
    \n-
    295 out[26][0][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;
    \n-
    296 out[26][1][0]=0.0;
    \n-
    297 out[27][0][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;
    \n-
    298 out[27][1][0]=0.0;
    \n-
    299 out[28][0][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;
    \n-
    300 out[28][1][0]=0.0;
    \n-
    301 out[29][0][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;
    \n-
    302 out[29][1][0]=0.0;
    \n-
    303 out[30][0][0]=5.0*dxl2_x-5.0*dxl4_x;
    \n-
    304 out[30][1][0]=0.0;
    \n-
    305 out[31][0][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;
    \n-
    306 out[31][1][0]=0.0;
    \n-
    307 out[32][0][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;
    \n-
    308 out[32][1][0]=0.0;
    \n-
    309 out[33][0][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;
    \n-
    310 out[33][1][0]=0.0;
    \n-
    311 out[34][0][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;
    \n-
    312 out[34][1][0]=0.0;
    \n-
    313 out[35][0][0]=7.0*dxl3_x-7.0*dxl5_x;
    \n-
    314 out[35][1][0]=0.0;
    \n-
    315 out[36][0][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;
    \n-
    316 out[36][1][0]=0.0;
    \n-
    317 out[37][0][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;
    \n-
    318 out[37][1][0]=0.0;
    \n-
    319 out[38][0][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;
    \n-
    320 out[38][1][0]=0.0;
    \n-
    321 out[39][0][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;
    \n-
    322 out[39][1][0]=0.0;
    \n-
    323 out[40][0][0]=0.0;
    \n-
    324 out[40][1][0]=0.0;
    \n-
    325 out[41][0][0]=0.0;
    \n-
    326 out[41][1][0]=0.0;
    \n-
    327 out[42][0][0]=0.0;
    \n-
    328 out[42][1][0]=0.0;
    \n-
    329 out[43][0][0]=0.0;
    \n-
    330 out[43][1][0]=0.0;
    \n-
    331 out[44][0][0]=0.0;
    \n-
    332 out[44][1][0]=3.0*dxl1_x-3.0*dxl1_x*l4_y;
    \n-
    333 out[45][0][0]=0.0;
    \n-
    334 out[45][1][0]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;
    \n-
    335 out[46][0][0]=0.0;
    \n-
    336 out[46][1][0]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;
    \n-
    337 out[47][0][0]=0.0;
    \n-
    338 out[47][1][0]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;
    \n-
    339 out[48][0][0]=0.0;
    \n-
    340 out[48][1][0]=5.0*dxl2_x-5.0*dxl2_x*l4_y;
    \n-
    341 out[49][0][0]=0.0;
    \n-
    342 out[49][1][0]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;
    \n-
    343 out[50][0][0]=0.0;
    \n-
    344 out[50][1][0]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;
    \n-
    345 out[51][0][0]=0.0;
    \n-
    346 out[51][1][0]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;
    \n-
    347 out[52][0][0]=0.0;
    \n-
    348 out[52][1][0]=7.0*dxl3_x-7.0*dxl3_x*l4_y;
    \n-
    349 out[53][0][0]=0.0;
    \n-
    350 out[53][1][0]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;
    \n-
    351 out[54][0][0]=0.0;
    \n-
    352 out[54][1][0]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;
    \n-
    353 out[55][0][0]=0.0;
    \n-
    354 out[55][1][0]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;
    \n-
    355 out[56][0][0]=0.0;
    \n-
    356 out[56][1][0]=9.0*dxl4_x-9.0*dxl4_x*l4_y;
    \n-
    357 out[57][0][0]=0.0;
    \n-
    358 out[57][1][0]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;
    \n-
    359 out[58][0][0]=0.0;
    \n-
    360 out[58][1][0]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;
    \n-
    361 out[59][0][0]=0.0;
    \n-
    362 out[59][1][0]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;
    \n-
    363
    \n-
    364 // y-component
    \n-
    365 out[0][0][1]=0.0;
    \n-
    366 out[0][1][1]=0.0;
    \n-
    367 out[1][0][1]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;
    \n-
    368 out[1][1][1]=0.0;
    \n-
    369 out[2][0][1]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
    \n-
    370 out[2][1][1]=0.0;
    \n-
    371 out[3][0][1]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;
    \n-
    372 out[3][1][1]=0.0;
    \n-
    373 out[4][0][1]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
    \n-
    374 out[4][1][1]=0.0;
    \n-
    375
    \n-
    376 out[5][0][1]=0.0;
    \n-
    377 out[5][1][1]=0.0;
    \n-
    378 out[6][0][1]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;
    \n-
    379 out[6][1][1]=0.0;
    \n-
    380 out[7][0][1]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
    \n-
    381 out[7][1][1]=0.0;
    \n-
    382 out[8][0][1]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;
    \n-
    383 out[8][1][1]=0.0;
    \n-
    384 out[9][0][1]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
    \n-
    385 out[9][1][1]=0.0;
    \n-
    386
    \n-
    387 out[10][0][1]=0.0;
    \n-
    388 out[10][1][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);
    \n-
    389 out[11][0][1]=0.0;
    \n-
    390 out[11][1][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;
    \n-
    391 out[12][0][1]=0.0;
    \n-
    392 out[12][1][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
    \n-
    393 out[13][0][1]=0.0;
    \n-
    394 out[13][1][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;
    \n-
    395 out[14][0][1]=0.0;
    \n-
    396 out[14][1][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
    \n-
    397
    \n-
    398 out[15][0][1]=0.0;
    \n-
    399 out[15][1][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);
    \n-
    400 out[16][0][1]=0.0;
    \n-
    401 out[16][1][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;
    \n-
    402 out[17][0][1]=0.0;
    \n-
    403 out[17][1][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
    \n-
    404 out[18][0][1]=0.0;
    \n-
    405 out[18][1][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;
    \n-
    406 out[19][0][1]=0.0;
    \n-
    407 out[19][1][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
    \n-
    408
    \n-
    409 out[20][0][1]=0.0;
    \n-
    410 out[20][1][1]=0.0;
    \n-
    411 out[21][0][1]=3.0*dyl1_y-3.0*l4_x*dyl1_y;
    \n-
    412 out[21][1][1]=0.0;
    \n-
    413 out[22][0][1]=5.0*dyl2_y-5.0*l4_x*dyl2_y;
    \n-
    414 out[22][1][1]=0.0;
    \n-
    415 out[23][0][1]=7.0*dyl3_y-7.0*l4_x*dyl3_y;
    \n-
    416 out[23][1][1]=0.0;
    \n-
    417 out[24][0][1]=9.0*dyl4_y-9.0*l4_x*dyl4_y;
    \n-
    418 out[24][1][1]=0.0;
    \n-
    419 out[25][0][1]=0.0;
    \n-
    420 out[25][1][1]=0.0;
    \n-
    421 out[26][0][1]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;
    \n-
    422 out[26][1][1]=0.0;
    \n-
    423 out[27][0][1]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;
    \n-
    424 out[27][1][1]=0.0;
    \n-
    425 out[28][0][1]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;
    \n-
    426 out[28][1][1]=0.0;
    \n-
    427 out[29][0][1]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;
    \n-
    428 out[29][1][1]=0.0;
    \n-
    429 out[30][0][1]=0.0;
    \n-
    430 out[30][1][1]=0.0;
    \n-
    431 out[31][0][1]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;
    \n-
    432 out[31][1][1]=0.0;
    \n-
    433 out[32][0][1]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;
    \n-
    434 out[32][1][1]=0.0;
    \n-
    435 out[33][0][1]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;
    \n-
    436 out[33][1][1]=0.0;
    \n-
    437 out[34][0][1]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;
    \n-
    438 out[34][1][1]=0.0;
    \n-
    439 out[35][0][1]=0.0;
    \n-
    440 out[35][1][1]=0.0;
    \n-
    441 out[36][0][1]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;
    \n-
    442 out[36][1][1]=0.0;
    \n-
    443 out[37][0][1]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;
    \n-
    444 out[37][1][1]=0.0;
    \n-
    445 out[38][0][1]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;
    \n-
    446 out[38][1][1]=0.0;
    \n-
    447 out[39][0][1]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;
    \n-
    448 out[39][1][1]=0.0;
    \n-
    449 out[40][0][1]=0.0;
    \n-
    450 out[40][1][1]=-dyl4_y;
    \n-
    451 out[41][0][1]=0.0;
    \n-
    452 out[41][1][1]=3.0*dyl1_y-3.0*dyl5_y;
    \n-
    453 out[42][0][1]=0.0;
    \n-
    454 out[42][1][1]=5.0*dyl2_y-5.0*dyl4_y;
    \n-
    455 out[43][0][1]=0.0;
    \n-
    456 out[43][1][1]=7.0*dyl3_y-7.0*dyl5_y;
    \n-
    457 out[44][0][1]=0.0;
    \n-
    458 out[44][1][1]=-3.0*l1_x*dyl4_y;
    \n-
    459 out[45][0][1]=0.0;
    \n-
    460 out[45][1][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;
    \n-
    461 out[46][0][1]=0.0;
    \n-
    462 out[46][1][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;
    \n-
    463 out[47][0][1]=0.0;
    \n-
    464 out[47][1][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;
    \n-
    465 out[48][0][1]=0.0;
    \n-
    466 out[48][1][1]=-5.0*l2_x*dyl4_y;
    \n-
    467 out[49][0][1]=0.0;
    \n-
    468 out[49][1][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;
    \n-
    469 out[50][0][1]=0.0;
    \n-
    470 out[50][1][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;
    \n-
    471 out[51][0][1]=0.0;
    \n-
    472 out[51][1][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;
    \n-
    473 out[52][0][1]=0.0;
    \n-
    474 out[52][1][1]=-7.0*l3_x*dyl4_y;
    \n-
    475 out[53][0][1]=0.0;
    \n-
    476 out[53][1][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;
    \n-
    477 out[54][0][1]=0.0;
    \n-
    478 out[54][1][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;
    \n-
    479 out[55][0][1]=0.0;
    \n-
    480 out[55][1][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;
    \n-
    481 out[56][0][1]=0.0;
    \n-
    482 out[56][1][1]=-9.0*l4_x*dyl4_y;
    \n-
    483 out[57][0][1]=0.0;
    \n-
    484 out[57][1][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;
    \n-
    485 out[58][0][1]=0.0;
    \n-
    486 out[58][1][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;
    \n-
    487 out[59][0][1]=0.0;
    \n-
    488 out[59][1][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;
    \n-
    489 }
    \n-
    \n-
    490
    \n-
    \n-
    492 void partial (const std::array<unsigned int, 2>& order,
    \n-
    493 const typename Traits::DomainType& in, // position
    \n-
    494 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    495 {
    \n-
    496 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    497 if (totalOrder == 0) {
    \n-
    498 evaluateFunction(in, out);
    \n-
    499 } else if (totalOrder == 1) {
    \n-
    500 out.resize(size());
    \n-
    501 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    502 auto const& x = in[0], y = in[1];
    \n-
    503
    \n-
    504 auto l1_x = 2*x - 1;
    \n-
    505 auto l2_x = x*(6*x - 6) + 1;
    \n-
    506 auto l3_x = x*(x*(20*x - 30) + 12) - 1;
    \n-
    507 auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;
    \n-
    508 auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;
    \n-
    509 auto l1_y = 2*y - 1;
    \n-
    510 auto l2_y = y*(6*y - 6) + 1;
    \n-
    511 auto l3_y = y*(y*(20*y - 30) + 12) - 1;
    \n-
    512 auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;
    \n-
    513 auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;
    \n-
    514
    \n-
    515 if (direction == 0) {
    \n-
    516 auto dxl1_x = 2.0;
    \n-
    517 auto dxl2_x = 12*x - 6;
    \n-
    518 auto dxl3_x = x*(60*x - 60) + 12;
    \n-
    519 auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;
    \n-
    520 auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;
    \n-
    521
    \n-
    522 out[0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);
    \n-
    523 out[0][1]=0.0;
    \n-
    524 out[1][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;
    \n-
    525 out[1][1]=0.0;
    \n-
    526 out[2][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
    \n-
    527 out[2][1]=0.0;
    \n-
    528 out[3][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;
    \n-
    529 out[3][1]=0.0;
    \n-
    530 out[4][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
    \n-
    531 out[4][1]=0.0;
    \n-
    532
    \n-
    533 out[5][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);
    \n-
    534 out[5][1]=0.0;
    \n-
    535 out[6][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;
    \n-
    536 out[6][1]=0.0;
    \n-
    537 out[7][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
    \n-
    538 out[7][1]=0.0;
    \n-
    539 out[8][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;
    \n-
    540 out[8][1]=0.0;
    \n-
    541 out[9][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
    \n-
    542 out[9][1]=0.0;
    \n-
    543
    \n-
    544 out[10][0]=0.0;
    \n-
    545 out[10][1]=0.0;
    \n-
    546 out[11][0]=0.0;
    \n-
    547 out[11][1]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;
    \n-
    548 out[12][0]=0.0;
    \n-
    549 out[12][1]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
    \n-
    550 out[13][0]=0.0;
    \n-
    551 out[13][1]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;
    \n-
    552 out[14][0]=0.0;
    \n-
    553 out[14][1]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
    \n-
    554
    \n-
    555 out[15][0]=0.0;
    \n-
    556 out[15][1]=0.0;
    \n-
    557 out[16][0]=0.0;
    \n-
    558 out[16][1]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;
    \n-
    559 out[17][0]=0.0;
    \n-
    560 out[17][1]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
    \n-
    561 out[18][0]=0.0;
    \n-
    562 out[18][1]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;
    \n-
    563 out[19][0]=0.0;
    \n-
    564 out[19][1]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
    \n-
    565
    \n-
    566 out[20][0]=-dxl4_x;
    \n-
    567 out[20][1]=0.0;
    \n-
    568 out[21][0]=-3.0*dxl4_x*l1_y;
    \n-
    569 out[21][1]=0.0;
    \n-
    570 out[22][0]=-5.0*dxl4_x*l2_y;
    \n-
    571 out[22][1]=0.0;
    \n-
    572 out[23][0]=-7.0*dxl4_x*l3_y;
    \n-
    573 out[23][1]=0.0;
    \n-
    574 out[24][0]=-9.0*dxl4_x*l4_y;
    \n-
    575 out[24][1]=0.0;
    \n-
    576 out[25][0]=3.0*dxl1_x-3.0*dxl5_x;
    \n-
    577 out[25][1]=0.0;
    \n-
    578 out[26][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;
    \n-
    579 out[26][1]=0.0;
    \n-
    580 out[27][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;
    \n-
    581 out[27][1]=0.0;
    \n-
    582 out[28][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;
    \n-
    583 out[28][1]=0.0;
    \n-
    584 out[29][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;
    \n-
    585 out[29][1]=0.0;
    \n-
    586 out[30][0]=5.0*dxl2_x-5.0*dxl4_x;
    \n-
    587 out[30][1]=0.0;
    \n-
    588 out[31][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;
    \n-
    589 out[31][1]=0.0;
    \n-
    590 out[32][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;
    \n-
    591 out[32][1]=0.0;
    \n-
    592 out[33][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;
    \n-
    593 out[33][1]=0.0;
    \n-
    594 out[34][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;
    \n-
    595 out[34][1]=0.0;
    \n-
    596 out[35][0]=7.0*dxl3_x-7.0*dxl5_x;
    \n-
    597 out[35][1]=0.0;
    \n-
    598 out[36][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;
    \n-
    599 out[36][1]=0.0;
    \n-
    600 out[37][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;
    \n-
    601 out[37][1]=0.0;
    \n-
    602 out[38][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;
    \n-
    603 out[38][1]=0.0;
    \n-
    604 out[39][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;
    \n-
    605 out[39][1]=0.0;
    \n-
    606 out[40][0]=0.0;
    \n-
    607 out[40][1]=0.0;
    \n-
    608 out[41][0]=0.0;
    \n-
    609 out[41][1]=0.0;
    \n-
    610 out[42][0]=0.0;
    \n-
    611 out[42][1]=0.0;
    \n-
    612 out[43][0]=0.0;
    \n-
    613 out[43][1]=0.0;
    \n-
    614 out[44][0]=0.0;
    \n-
    615 out[44][1]=3.0*dxl1_x-3.0*dxl1_x*l4_y;
    \n-
    616 out[45][0]=0.0;
    \n-
    617 out[45][1]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;
    \n-
    618 out[46][0]=0.0;
    \n-
    619 out[46][1]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;
    \n-
    620 out[47][0]=0.0;
    \n-
    621 out[47][1]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;
    \n-
    622 out[48][0]=0.0;
    \n-
    623 out[48][1]=5.0*dxl2_x-5.0*dxl2_x*l4_y;
    \n-
    624 out[49][0]=0.0;
    \n-
    625 out[49][1]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;
    \n-
    626 out[50][0]=0.0;
    \n-
    627 out[50][1]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;
    \n-
    628 out[51][0]=0.0;
    \n-
    629 out[51][1]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;
    \n-
    630 out[52][0]=0.0;
    \n-
    631 out[52][1]=7.0*dxl3_x-7.0*dxl3_x*l4_y;
    \n-
    632 out[53][0]=0.0;
    \n-
    633 out[53][1]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;
    \n-
    634 out[54][0]=0.0;
    \n-
    635 out[54][1]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;
    \n-
    636 out[55][0]=0.0;
    \n-
    637 out[55][1]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;
    \n-
    638 out[56][0]=0.0;
    \n-
    639 out[56][1]=9.0*dxl4_x-9.0*dxl4_x*l4_y;
    \n-
    640 out[57][0]=0.0;
    \n-
    641 out[57][1]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;
    \n-
    642 out[58][0]=0.0;
    \n-
    643 out[58][1]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;
    \n-
    644 out[59][0]=0.0;
    \n-
    645 out[59][1]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;
    \n-
    646
    \n-
    647 } else if (direction == 1) {
    \n-
    648 auto dyl1_y = 2.0;
    \n-
    649 auto dyl2_y = 12*y - 6;
    \n-
    650 auto dyl3_y = y*(60*y - 60) + 12;
    \n-
    651 auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;
    \n-
    652 auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;
    \n-
    653
    \n-
    654 out[0][0]=0.0;
    \n-
    655 out[0][1]=0.0;
    \n-
    656 out[1][0]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;
    \n-
    657 out[1][1]=0.0;
    \n-
    658 out[2][0]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
    \n-
    659 out[2][1]=0.0;
    \n-
    660 out[3][0]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;
    \n-
    661 out[3][1]=0.0;
    \n-
    662 out[4][0]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
    \n-
    663 out[4][1]=0.0;
    \n-
    664
    \n-
    665 out[5][0]=0.0;
    \n-
    666 out[5][1]=0.0;
    \n-
    667 out[6][0]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;
    \n-
    668 out[6][1]=0.0;
    \n-
    669 out[7][0]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
    \n-
    670 out[7][1]=0.0;
    \n-
    671 out[8][0]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;
    \n-
    672 out[8][1]=0.0;
    \n-
    673 out[9][0]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
    \n-
    674 out[9][1]=0.0;
    \n-
    675
    \n-
    676 out[10][0]=0.0;
    \n-
    677 out[10][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);
    \n-
    678 out[11][0]=0.0;
    \n-
    679 out[11][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;
    \n-
    680 out[12][0]=0.0;
    \n-
    681 out[12][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
    \n-
    682 out[13][0]=0.0;
    \n-
    683 out[13][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;
    \n-
    684 out[14][0]=0.0;
    \n-
    685 out[14][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
    \n-
    686
    \n-
    687 out[15][0]=0.0;
    \n-
    688 out[15][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);
    \n-
    689 out[16][0]=0.0;
    \n-
    690 out[16][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;
    \n-
    691 out[17][0]=0.0;
    \n-
    692 out[17][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
    \n-
    693 out[18][0]=0.0;
    \n-
    694 out[18][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;
    \n-
    695 out[19][0]=0.0;
    \n-
    696 out[19][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
    \n-
    697
    \n-
    698 out[20][0]=0.0;
    \n-
    699 out[20][1]=0.0;
    \n-
    700 out[21][0]=3.0*dyl1_y-3.0*l4_x*dyl1_y;
    \n-
    701 out[21][1]=0.0;
    \n-
    702 out[22][0]=5.0*dyl2_y-5.0*l4_x*dyl2_y;
    \n-
    703 out[22][1]=0.0;
    \n-
    704 out[23][0]=7.0*dyl3_y-7.0*l4_x*dyl3_y;
    \n-
    705 out[23][1]=0.0;
    \n-
    706 out[24][0]=9.0*dyl4_y-9.0*l4_x*dyl4_y;
    \n-
    707 out[24][1]=0.0;
    \n-
    708 out[25][0]=0.0;
    \n-
    709 out[25][1]=0.0;
    \n-
    710 out[26][0]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;
    \n-
    711 out[26][1]=0.0;
    \n-
    712 out[27][0]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;
    \n-
    713 out[27][1]=0.0;
    \n-
    714 out[28][0]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;
    \n-
    715 out[28][1]=0.0;
    \n-
    716 out[29][0]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;
    \n-
    717 out[29][1]=0.0;
    \n-
    718 out[30][0]=0.0;
    \n-
    719 out[30][1]=0.0;
    \n-
    720 out[31][0]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;
    \n-
    721 out[31][1]=0.0;
    \n-
    722 out[32][0]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;
    \n-
    723 out[32][1]=0.0;
    \n-
    724 out[33][0]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;
    \n-
    725 out[33][1]=0.0;
    \n-
    726 out[34][0]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;
    \n-
    727 out[34][1]=0.0;
    \n-
    728 out[35][0]=0.0;
    \n-
    729 out[35][1]=0.0;
    \n-
    730 out[36][0]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;
    \n-
    731 out[36][1]=0.0;
    \n-
    732 out[37][0]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;
    \n-
    733 out[37][1]=0.0;
    \n-
    734 out[38][0]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;
    \n-
    735 out[38][1]=0.0;
    \n-
    736 out[39][0]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;
    \n-
    737 out[39][1]=0.0;
    \n-
    738 out[40][0]=0.0;
    \n-
    739 out[40][1]=-dyl4_y;
    \n-
    740 out[41][0]=0.0;
    \n-
    741 out[41][1]=3.0*dyl1_y-3.0*dyl5_y;
    \n-
    742 out[42][0]=0.0;
    \n-
    743 out[42][1]=5.0*dyl2_y-5.0*dyl4_y;
    \n-
    744 out[43][0]=0.0;
    \n-
    745 out[43][1]=7.0*dyl3_y-7.0*dyl5_y;
    \n-
    746 out[44][0]=0.0;
    \n-
    747 out[44][1]=-3.0*l1_x*dyl4_y;
    \n-
    748 out[45][0]=0.0;
    \n-
    749 out[45][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;
    \n-
    750 out[46][0]=0.0;
    \n-
    751 out[46][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;
    \n-
    752 out[47][0]=0.0;
    \n-
    753 out[47][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;
    \n-
    754 out[48][0]=0.0;
    \n-
    755 out[48][1]=-5.0*l2_x*dyl4_y;
    \n-
    756 out[49][0]=0.0;
    \n-
    757 out[49][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;
    \n-
    758 out[50][0]=0.0;
    \n-
    759 out[50][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;
    \n-
    760 out[51][0]=0.0;
    \n-
    761 out[51][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;
    \n-
    762 out[52][0]=0.0;
    \n-
    763 out[52][1]=-7.0*l3_x*dyl4_y;
    \n-
    764 out[53][0]=0.0;
    \n-
    765 out[53][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;
    \n-
    766 out[54][0]=0.0;
    \n-
    767 out[54][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;
    \n-
    768 out[55][0]=0.0;
    \n-
    769 out[55][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;
    \n-
    770 out[56][0]=0.0;
    \n-
    771 out[56][1]=-9.0*l4_x*dyl4_y;
    \n-
    772 out[57][0]=0.0;
    \n-
    773 out[57][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;
    \n-
    774 out[58][0]=0.0;
    \n-
    775 out[58][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;
    \n-
    776 out[59][0]=0.0;
    \n-
    777 out[59][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;
    \n-
    778 } else {
    \n-
    779 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    780 }
    \n-
    781 } else {
    \n-
    782 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    783 }
    \n-
    784 }
    \n-
    \n-
    785
    \n-
    \n-
    787 unsigned int order () const
    \n-
    788 {
    \n-
    789 return 9;
    \n-
    790 }
    \n-
    \n-
    791
    \n-
    792 private:
    \n-
    793 R sign0, sign1, sign2, sign3;
    \n-
    794 };
    \n-
    \n-
    795}
    \n-
    796
    \n-
    797#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n+
    \n+
    67 const Field *rowPtr ( const unsigned int row ) const
    \n+
    68 {
    \n+
    69 assert(row<rows());
    \n+
    70 return &(matrix_[row][0]);
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    \n+
    73 Field *rowPtr ( const unsigned int row )
    \n+
    74 {
    \n+
    75 assert(row<rows());
    \n+
    76 return &(matrix_[row][0]);
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    \n+
    79 void resize ( const unsigned int rows, const unsigned int cols )
    \n+
    80 {
    \n+
    81 matrix_.resize(rows);
    \n+
    82 for (unsigned int i=0; i<rows; ++i)
    \n+
    83 matrix_[i].resize(cols);
    \n+
    84 rows_ = rows;
    \n+
    85 cols_ = cols;
    \n+
    86 }
    \n+
    \n+
    87
    \n+
    \n+
    88 bool invert ()
    \n+
    89 {
    \n+
    90 using std::abs;
    \n+
    91 assert( rows() == cols() );
    \n+
    92 std::vector<unsigned int> p(rows());
    \n+
    93 for (unsigned int j=0; j<rows(); ++j)
    \n+
    94 p[j] = j;
    \n+
    95 for (unsigned int j=0; j<rows(); ++j)
    \n+
    96 {
    \n+
    97 // pivot search
    \n+
    98 unsigned int r = j;
    \n+
    99 Field max = abs( (*this)(j,j) );
    \n+
    100 for (unsigned int i=j+1; i<rows(); ++i)
    \n+
    101 {
    \n+
    102 if ( abs( (*this)(i,j) ) > max )
    \n+
    103 {
    \n+
    104 max = abs( (*this)(i,j) );
    \n+
    105 r = i;
    \n+
    106 }
    \n+
    107 }
    \n+
    108 if (max == Zero<Field>())
    \n+
    109 return false;
    \n+
    110 // row swap
    \n+
    111 if (r > j)
    \n+
    112 {
    \n+
    113 for (unsigned int k=0; k<cols(); ++k)
    \n+
    114 std::swap( (*this)(j,k), (*this)(r,k) );
    \n+
    115 std::swap( p[j], p[r] );
    \n+
    116 }
    \n+
    117 // transformation
    \n+
    118 Field hr = Unity<Field>()/(*this)(j,j);
    \n+
    119 for (unsigned int i=0; i<rows(); ++i)
    \n+
    120 (*this)(i,j) *= hr;
    \n+
    121 (*this)(j,j) = hr;
    \n+
    122 for (unsigned int k=0; k<cols(); ++k)
    \n+
    123 {
    \n+
    124 if (k==j) continue;
    \n+
    125 for (unsigned int i=0; i<rows(); ++i)
    \n+
    126 {
    \n+
    127 if (i==j) continue;
    \n+
    128 (*this)(i,k) -= (*this)(i,j)*(*this)(j,k);
    \n+
    129 }
    \n+
    130 (*this)(j,k) *= -hr;
    \n+
    131 }
    \n+
    132 }
    \n+
    133 // column exchange
    \n+
    134 Row hv(rows());
    \n+
    135 for (unsigned int i=0; i<rows(); ++i)
    \n+
    136 {
    \n+
    137 for (unsigned int k=0; k<rows(); ++k)
    \n+
    138 hv[ p[k] ] = (*this)(i,k);
    \n+
    139 for (unsigned int k=0; k<rows(); ++k)
    \n+
    140 (*this)(i,k) = hv[k];
    \n+
    141 }
    \n+
    142 return true;
    \n+
    143 }
    \n+
    \n+
    144
    \n+
    145 private:
    \n+
    146 RealMatrix matrix_;
    \n+
    147 unsigned int cols_,rows_;
    \n+
    148 };
    \n+
    \n+
    149
    \n+
    150 template< class Field >
    \n+
    \n+
    151 inline std::ostream &operator<<(std::ostream &out, const LFEMatrix<Field> &mat)
    \n+
    152 {
    \n+
    153 for (unsigned int r=0; r<mat.rows(); ++r)
    \n+
    154 {
    \n+
    155 out << field_cast<double>(mat(r,0));
    \n+
    156 for (unsigned int c=1; c<mat.cols(); ++c)
    \n+
    157 {
    \n+
    158 out << " , " << field_cast<double>(mat(r,c));
    \n+
    159 }
    \n+
    160 out << std::endl;
    \n+
    161 }
    \n+
    162 return out;
    \n+
    163 }
    \n+
    \n+
    164}
    \n+
    165
    \n+
    166#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas4cube2dlocalbasis.hh:29
    \n-
    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 raviartthomas4cube2dlocalbasis.hh:492
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas4cube2dlocalbasis.hh:60
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas4cube2dlocalbasis.hh:33
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas4cube2dlocalbasis.hh:49
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas4cube2dlocalbasis.hh:787
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas4cube2dlocalbasis.hh:210
    \n-
    RT4Cube2DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas4cube2dlocalbasis.hh:40
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)
    Definition lfematrix.hh:151
    \n+
    A class representing the unit of a given Field.
    Definition field.hh:30
    \n+
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n+
    Definition lfematrix.hh:18
    \n+
    Field * rowPtr(const unsigned int row)
    Definition lfematrix.hh:73
    \n+
    unsigned int cols() const
    Definition lfematrix.hh:62
    \n+
    const Field * rowPtr(const unsigned int row) const
    Definition lfematrix.hh:67
    \n+
    void resize(const unsigned int rows, const unsigned int cols)
    Definition lfematrix.hh:79
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition lfematrix.hh:36
    \n+
    unsigned int rows() const
    Definition lfematrix.hh:57
    \n+
    bool invert()
    Definition lfematrix.hh:88
    \n+
    F Field
    Definition lfematrix.hh:23
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,826 +1,223 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas4cube2dlocalbasis.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+lfematrix.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH\n+6#define DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include \n-13\n-14#include \"../../common/localbasis.hh\"\n+8#include \n+9#include \n+10\n+11#include \"_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n 15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-27 template\n-_\b2_\b8 class _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-29 {\n-30\n-31 public:\n-32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n-FieldVector,\n-_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+16 template< class F >\n+_\b1_\b7 class [[deprecated(\"The usage of LFEMatrix is discouraged. Use DynamicMatrix\n+instead\")]] _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx\n+18 {\n+19 typedef std::vector< F > Row;\n+20 typedef std::vector RealMatrix;\n+21\n+22 public:\n+_\b2_\b3 typedef F _\bF_\bi_\be_\bl_\bd;\n+24\n+_\b2_\b5 operator const RealMatrix & () const\n+26 {\n+27 return matrix_;\n+28 }\n+29\n+_\b3_\b0 operator RealMatrix & ()\n+31 {\n+32 return matrix_;\n+33 }\n 34\n-_\b4_\b0 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n-41 {\n-42 sign0 = (s[0]) ? -1.0 : 1.0;\n-43 sign1 = (s[1]) ? -1.0 : 1.0;\n-44 sign2 = (s[2]) ? -1.0 : 1.0;\n-45 sign3 = (s[3]) ? -1.0 : 1.0;\n-46 }\n-47\n-_\b4_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-50 {\n-51 return 60;\n-52 }\n-53\n-_\b6_\b0 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-61 std::vector& out) const\n-62 {\n-63 out.resize(60);\n-64\n-65 auto const& x = in[0], y = in[1];\n+35 template \n+_\b3_\b6 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n+37 {\n+38 assert(row& out) const\n-212 {\n-213 out.resize(60);\n-214 auto const& x = in[0], y = in[1];\n-215\n-216 const auto l1_x = 2*x - 1;\n-217 const auto l2_x = x*(6*x - 6) + 1;\n-218 const auto l3_x = x*(x*(20*x - 30) + 12) - 1;\n-219 const auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;\n-220 const auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;\n-221 const auto l1_y = 2*y - 1;\n-222 const auto l2_y = y*(6*y - 6) + 1;\n-223 const auto l3_y = y*(y*(20*y - 30) + 12) - 1;\n-224 const auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;\n-225 const auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;\n-226\n-227 const auto dxl1_x = 2.0;\n-228 const auto dxl2_x = 12*x - 6;\n-229 const auto dxl3_x = x*(60*x - 60) + 12;\n-230 const auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;\n-231 const auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;\n-232 const auto dyl1_y = 2.0;\n-233 const auto dyl2_y = 12*y - 6;\n-234 const auto dyl3_y = y*(60*y - 60) + 12;\n-235 const auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;\n-236 const auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;\n-237\n-238 // x-component\n-239 out[0][0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);\n-240 out[0][1][0]=0.0;\n-241 out[1][0][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;\n-242 out[1][1][0]=0.0;\n-243 out[2][0][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);\n-244 out[2][1][0]=0.0;\n-245 out[3][0][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;\n-246 out[3][1][0]=0.0;\n-247 out[4][0][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);\n-248 out[4][1][0]=0.0;\n-249\n-250 out[5][0][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);\n-251 out[5][1][0]=0.0;\n-252 out[6][0][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;\n-253 out[6][1][0]=0.0;\n-254 out[7][0][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);\n-255 out[7][1][0]=0.0;\n-256 out[8][0][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;\n-257 out[8][1][0]=0.0;\n-258 out[9][0][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);\n-259 out[9][1][0]=0.0;\n-260\n-261 out[10][0][0]=0.0;\n-262 out[10][1][0]=0.0;\n-263 out[11][0][0]=0.0;\n-264 out[11][1][0]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;\n-265 out[12][0][0]=0.0;\n-266 out[12][1][0]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);\n-267 out[13][0][0]=0.0;\n-268 out[13][1][0]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;\n-269 out[14][0][0]=0.0;\n-270 out[14][1][0]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);\n-271\n-272 out[15][0][0]=0.0;\n-273 out[15][1][0]=0.0;\n-274 out[16][0][0]=0.0;\n-275 out[16][1][0]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;\n-276 out[17][0][0]=0.0;\n-277 out[17][1][0]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);\n-278 out[18][0][0]=0.0;\n-279 out[18][1][0]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;\n-280 out[19][0][0]=0.0;\n-281 out[19][1][0]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);\n-282\n-283 out[20][0][0]=-dxl4_x;\n-284 out[20][1][0]=0.0;\n-285 out[21][0][0]=-3.0*dxl4_x*l1_y;\n-286 out[21][1][0]=0.0;\n-287 out[22][0][0]=-5.0*dxl4_x*l2_y;\n-288 out[22][1][0]=0.0;\n-289 out[23][0][0]=-7.0*dxl4_x*l3_y;\n-290 out[23][1][0]=0.0;\n-291 out[24][0][0]=-9.0*dxl4_x*l4_y;\n-292 out[24][1][0]=0.0;\n-293 out[25][0][0]=3.0*dxl1_x-3.0*dxl5_x;\n-294 out[25][1][0]=0.0;\n-295 out[26][0][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;\n-296 out[26][1][0]=0.0;\n-297 out[27][0][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;\n-298 out[27][1][0]=0.0;\n-299 out[28][0][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;\n-300 out[28][1][0]=0.0;\n-301 out[29][0][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;\n-302 out[29][1][0]=0.0;\n-303 out[30][0][0]=5.0*dxl2_x-5.0*dxl4_x;\n-304 out[30][1][0]=0.0;\n-305 out[31][0][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;\n-306 out[31][1][0]=0.0;\n-307 out[32][0][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;\n-308 out[32][1][0]=0.0;\n-309 out[33][0][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;\n-310 out[33][1][0]=0.0;\n-311 out[34][0][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;\n-312 out[34][1][0]=0.0;\n-313 out[35][0][0]=7.0*dxl3_x-7.0*dxl5_x;\n-314 out[35][1][0]=0.0;\n-315 out[36][0][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;\n-316 out[36][1][0]=0.0;\n-317 out[37][0][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;\n-318 out[37][1][0]=0.0;\n-319 out[38][0][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;\n-320 out[38][1][0]=0.0;\n-321 out[39][0][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;\n-322 out[39][1][0]=0.0;\n-323 out[40][0][0]=0.0;\n-324 out[40][1][0]=0.0;\n-325 out[41][0][0]=0.0;\n-326 out[41][1][0]=0.0;\n-327 out[42][0][0]=0.0;\n-328 out[42][1][0]=0.0;\n-329 out[43][0][0]=0.0;\n-330 out[43][1][0]=0.0;\n-331 out[44][0][0]=0.0;\n-332 out[44][1][0]=3.0*dxl1_x-3.0*dxl1_x*l4_y;\n-333 out[45][0][0]=0.0;\n-334 out[45][1][0]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;\n-335 out[46][0][0]=0.0;\n-336 out[46][1][0]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;\n-337 out[47][0][0]=0.0;\n-338 out[47][1][0]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;\n-339 out[48][0][0]=0.0;\n-340 out[48][1][0]=5.0*dxl2_x-5.0*dxl2_x*l4_y;\n-341 out[49][0][0]=0.0;\n-342 out[49][1][0]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;\n-343 out[50][0][0]=0.0;\n-344 out[50][1][0]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;\n-345 out[51][0][0]=0.0;\n-346 out[51][1][0]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;\n-347 out[52][0][0]=0.0;\n-348 out[52][1][0]=7.0*dxl3_x-7.0*dxl3_x*l4_y;\n-349 out[53][0][0]=0.0;\n-350 out[53][1][0]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;\n-351 out[54][0][0]=0.0;\n-352 out[54][1][0]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;\n-353 out[55][0][0]=0.0;\n-354 out[55][1][0]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;\n-355 out[56][0][0]=0.0;\n-356 out[56][1][0]=9.0*dxl4_x-9.0*dxl4_x*l4_y;\n-357 out[57][0][0]=0.0;\n-358 out[57][1][0]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;\n-359 out[58][0][0]=0.0;\n-360 out[58][1][0]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;\n-361 out[59][0][0]=0.0;\n-362 out[59][1][0]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;\n-363\n-364 // y-component\n-365 out[0][0][1]=0.0;\n-366 out[0][1][1]=0.0;\n-367 out[1][0][1]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;\n-368 out[1][1][1]=0.0;\n-369 out[2][0][1]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);\n-370 out[2][1][1]=0.0;\n-371 out[3][0][1]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;\n-372 out[3][1][1]=0.0;\n-373 out[4][0][1]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);\n-374 out[4][1][1]=0.0;\n-375\n-376 out[5][0][1]=0.0;\n-377 out[5][1][1]=0.0;\n-378 out[6][0][1]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;\n-379 out[6][1][1]=0.0;\n-380 out[7][0][1]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);\n-381 out[7][1][1]=0.0;\n-382 out[8][0][1]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;\n-383 out[8][1][1]=0.0;\n-384 out[9][0][1]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);\n-385 out[9][1][1]=0.0;\n-386\n-387 out[10][0][1]=0.0;\n-388 out[10][1][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);\n-389 out[11][0][1]=0.0;\n-390 out[11][1][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;\n-391 out[12][0][1]=0.0;\n-392 out[12][1][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);\n-393 out[13][0][1]=0.0;\n-394 out[13][1][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;\n-395 out[14][0][1]=0.0;\n-396 out[14][1][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);\n-397\n-398 out[15][0][1]=0.0;\n-399 out[15][1][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);\n-400 out[16][0][1]=0.0;\n-401 out[16][1][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;\n-402 out[17][0][1]=0.0;\n-403 out[17][1][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);\n-404 out[18][0][1]=0.0;\n-405 out[18][1][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;\n-406 out[19][0][1]=0.0;\n-407 out[19][1][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);\n-408\n-409 out[20][0][1]=0.0;\n-410 out[20][1][1]=0.0;\n-411 out[21][0][1]=3.0*dyl1_y-3.0*l4_x*dyl1_y;\n-412 out[21][1][1]=0.0;\n-413 out[22][0][1]=5.0*dyl2_y-5.0*l4_x*dyl2_y;\n-414 out[22][1][1]=0.0;\n-415 out[23][0][1]=7.0*dyl3_y-7.0*l4_x*dyl3_y;\n-416 out[23][1][1]=0.0;\n-417 out[24][0][1]=9.0*dyl4_y-9.0*l4_x*dyl4_y;\n-418 out[24][1][1]=0.0;\n-419 out[25][0][1]=0.0;\n-420 out[25][1][1]=0.0;\n-421 out[26][0][1]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;\n-422 out[26][1][1]=0.0;\n-423 out[27][0][1]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;\n-424 out[27][1][1]=0.0;\n-425 out[28][0][1]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;\n-426 out[28][1][1]=0.0;\n-427 out[29][0][1]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;\n-428 out[29][1][1]=0.0;\n-429 out[30][0][1]=0.0;\n-430 out[30][1][1]=0.0;\n-431 out[31][0][1]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;\n-432 out[31][1][1]=0.0;\n-433 out[32][0][1]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;\n-434 out[32][1][1]=0.0;\n-435 out[33][0][1]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;\n-436 out[33][1][1]=0.0;\n-437 out[34][0][1]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;\n-438 out[34][1][1]=0.0;\n-439 out[35][0][1]=0.0;\n-440 out[35][1][1]=0.0;\n-441 out[36][0][1]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;\n-442 out[36][1][1]=0.0;\n-443 out[37][0][1]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;\n-444 out[37][1][1]=0.0;\n-445 out[38][0][1]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;\n-446 out[38][1][1]=0.0;\n-447 out[39][0][1]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;\n-448 out[39][1][1]=0.0;\n-449 out[40][0][1]=0.0;\n-450 out[40][1][1]=-dyl4_y;\n-451 out[41][0][1]=0.0;\n-452 out[41][1][1]=3.0*dyl1_y-3.0*dyl5_y;\n-453 out[42][0][1]=0.0;\n-454 out[42][1][1]=5.0*dyl2_y-5.0*dyl4_y;\n-455 out[43][0][1]=0.0;\n-456 out[43][1][1]=7.0*dyl3_y-7.0*dyl5_y;\n-457 out[44][0][1]=0.0;\n-458 out[44][1][1]=-3.0*l1_x*dyl4_y;\n-459 out[45][0][1]=0.0;\n-460 out[45][1][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;\n-461 out[46][0][1]=0.0;\n-462 out[46][1][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;\n-463 out[47][0][1]=0.0;\n-464 out[47][1][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;\n-465 out[48][0][1]=0.0;\n-466 out[48][1][1]=-5.0*l2_x*dyl4_y;\n-467 out[49][0][1]=0.0;\n-468 out[49][1][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;\n-469 out[50][0][1]=0.0;\n-470 out[50][1][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;\n-471 out[51][0][1]=0.0;\n-472 out[51][1][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;\n-473 out[52][0][1]=0.0;\n-474 out[52][1][1]=-7.0*l3_x*dyl4_y;\n-475 out[53][0][1]=0.0;\n-476 out[53][1][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;\n-477 out[54][0][1]=0.0;\n-478 out[54][1][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;\n-479 out[55][0][1]=0.0;\n-480 out[55][1][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;\n-481 out[56][0][1]=0.0;\n-482 out[56][1][1]=-9.0*l4_x*dyl4_y;\n-483 out[57][0][1]=0.0;\n-484 out[57][1][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;\n-485 out[58][0][1]=0.0;\n-486 out[58][1][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;\n-487 out[59][0][1]=0.0;\n-488 out[59][1][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;\n-489 }\n-490\n-_\b4_\b9_\b2 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-493 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-494 std::vector& out) const // return value\n-495 {\n-496 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-497 if (totalOrder == 0) {\n-498 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-499 } else if (totalOrder == 1) {\n-500 out.resize(_\bs_\bi_\bz_\be());\n-501 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-502 auto const& x = in[0], y = in[1];\n-503\n-504 auto l1_x = 2*x - 1;\n-505 auto l2_x = x*(6*x - 6) + 1;\n-506 auto l3_x = x*(x*(20*x - 30) + 12) - 1;\n-507 auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;\n-508 auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;\n-509 auto l1_y = 2*y - 1;\n-510 auto l2_y = y*(6*y - 6) + 1;\n-511 auto l3_y = y*(y*(20*y - 30) + 12) - 1;\n-512 auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;\n-513 auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;\n-514\n-515 if (direction == 0) {\n-516 auto dxl1_x = 2.0;\n-517 auto dxl2_x = 12*x - 6;\n-518 auto dxl3_x = x*(60*x - 60) + 12;\n-519 auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;\n-520 auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;\n-521\n-522 out[0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);\n-523 out[0][1]=0.0;\n-524 out[1][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;\n-525 out[1][1]=0.0;\n-526 out[2][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);\n-527 out[2][1]=0.0;\n-528 out[3][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;\n-529 out[3][1]=0.0;\n-530 out[4][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);\n-531 out[4][1]=0.0;\n-532\n-533 out[5][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);\n-534 out[5][1]=0.0;\n-535 out[6][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;\n-536 out[6][1]=0.0;\n-537 out[7][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);\n-538 out[7][1]=0.0;\n-539 out[8][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;\n-540 out[8][1]=0.0;\n-541 out[9][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);\n-542 out[9][1]=0.0;\n-543\n-544 out[10][0]=0.0;\n-545 out[10][1]=0.0;\n-546 out[11][0]=0.0;\n-547 out[11][1]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;\n-548 out[12][0]=0.0;\n-549 out[12][1]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);\n-550 out[13][0]=0.0;\n-551 out[13][1]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;\n-552 out[14][0]=0.0;\n-553 out[14][1]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);\n-554\n-555 out[15][0]=0.0;\n-556 out[15][1]=0.0;\n-557 out[16][0]=0.0;\n-558 out[16][1]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;\n-559 out[17][0]=0.0;\n-560 out[17][1]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);\n-561 out[18][0]=0.0;\n-562 out[18][1]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;\n-563 out[19][0]=0.0;\n-564 out[19][1]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);\n-565\n-566 out[20][0]=-dxl4_x;\n-567 out[20][1]=0.0;\n-568 out[21][0]=-3.0*dxl4_x*l1_y;\n-569 out[21][1]=0.0;\n-570 out[22][0]=-5.0*dxl4_x*l2_y;\n-571 out[22][1]=0.0;\n-572 out[23][0]=-7.0*dxl4_x*l3_y;\n-573 out[23][1]=0.0;\n-574 out[24][0]=-9.0*dxl4_x*l4_y;\n-575 out[24][1]=0.0;\n-576 out[25][0]=3.0*dxl1_x-3.0*dxl5_x;\n-577 out[25][1]=0.0;\n-578 out[26][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;\n-579 out[26][1]=0.0;\n-580 out[27][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;\n-581 out[27][1]=0.0;\n-582 out[28][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;\n-583 out[28][1]=0.0;\n-584 out[29][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;\n-585 out[29][1]=0.0;\n-586 out[30][0]=5.0*dxl2_x-5.0*dxl4_x;\n-587 out[30][1]=0.0;\n-588 out[31][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;\n-589 out[31][1]=0.0;\n-590 out[32][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;\n-591 out[32][1]=0.0;\n-592 out[33][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;\n-593 out[33][1]=0.0;\n-594 out[34][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;\n-595 out[34][1]=0.0;\n-596 out[35][0]=7.0*dxl3_x-7.0*dxl5_x;\n-597 out[35][1]=0.0;\n-598 out[36][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;\n-599 out[36][1]=0.0;\n-600 out[37][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;\n-601 out[37][1]=0.0;\n-602 out[38][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;\n-603 out[38][1]=0.0;\n-604 out[39][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;\n-605 out[39][1]=0.0;\n-606 out[40][0]=0.0;\n-607 out[40][1]=0.0;\n-608 out[41][0]=0.0;\n-609 out[41][1]=0.0;\n-610 out[42][0]=0.0;\n-611 out[42][1]=0.0;\n-612 out[43][0]=0.0;\n-613 out[43][1]=0.0;\n-614 out[44][0]=0.0;\n-615 out[44][1]=3.0*dxl1_x-3.0*dxl1_x*l4_y;\n-616 out[45][0]=0.0;\n-617 out[45][1]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;\n-618 out[46][0]=0.0;\n-619 out[46][1]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;\n-620 out[47][0]=0.0;\n-621 out[47][1]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;\n-622 out[48][0]=0.0;\n-623 out[48][1]=5.0*dxl2_x-5.0*dxl2_x*l4_y;\n-624 out[49][0]=0.0;\n-625 out[49][1]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;\n-626 out[50][0]=0.0;\n-627 out[50][1]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;\n-628 out[51][0]=0.0;\n-629 out[51][1]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;\n-630 out[52][0]=0.0;\n-631 out[52][1]=7.0*dxl3_x-7.0*dxl3_x*l4_y;\n-632 out[53][0]=0.0;\n-633 out[53][1]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;\n-634 out[54][0]=0.0;\n-635 out[54][1]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;\n-636 out[55][0]=0.0;\n-637 out[55][1]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;\n-638 out[56][0]=0.0;\n-639 out[56][1]=9.0*dxl4_x-9.0*dxl4_x*l4_y;\n-640 out[57][0]=0.0;\n-641 out[57][1]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;\n-642 out[58][0]=0.0;\n-643 out[58][1]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;\n-644 out[59][0]=0.0;\n-645 out[59][1]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;\n-646\n-647 } else if (direction == 1) {\n-648 auto dyl1_y = 2.0;\n-649 auto dyl2_y = 12*y - 6;\n-650 auto dyl3_y = y*(60*y - 60) + 12;\n-651 auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;\n-652 auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;\n-653\n-654 out[0][0]=0.0;\n-655 out[0][1]=0.0;\n-656 out[1][0]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;\n-657 out[1][1]=0.0;\n-658 out[2][0]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);\n-659 out[2][1]=0.0;\n-660 out[3][0]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;\n-661 out[3][1]=0.0;\n-662 out[4][0]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);\n-663 out[4][1]=0.0;\n-664\n-665 out[5][0]=0.0;\n-666 out[5][1]=0.0;\n-667 out[6][0]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;\n-668 out[6][1]=0.0;\n-669 out[7][0]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);\n-670 out[7][1]=0.0;\n-671 out[8][0]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;\n-672 out[8][1]=0.0;\n-673 out[9][0]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);\n-674 out[9][1]=0.0;\n-675\n-676 out[10][0]=0.0;\n-677 out[10][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);\n-678 out[11][0]=0.0;\n-679 out[11][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;\n-680 out[12][0]=0.0;\n-681 out[12][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);\n-682 out[13][0]=0.0;\n-683 out[13][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;\n-684 out[14][0]=0.0;\n-685 out[14][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);\n-686\n-687 out[15][0]=0.0;\n-688 out[15][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);\n-689 out[16][0]=0.0;\n-690 out[16][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;\n-691 out[17][0]=0.0;\n-692 out[17][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);\n-693 out[18][0]=0.0;\n-694 out[18][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;\n-695 out[19][0]=0.0;\n-696 out[19][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);\n-697\n-698 out[20][0]=0.0;\n-699 out[20][1]=0.0;\n-700 out[21][0]=3.0*dyl1_y-3.0*l4_x*dyl1_y;\n-701 out[21][1]=0.0;\n-702 out[22][0]=5.0*dyl2_y-5.0*l4_x*dyl2_y;\n-703 out[22][1]=0.0;\n-704 out[23][0]=7.0*dyl3_y-7.0*l4_x*dyl3_y;\n-705 out[23][1]=0.0;\n-706 out[24][0]=9.0*dyl4_y-9.0*l4_x*dyl4_y;\n-707 out[24][1]=0.0;\n-708 out[25][0]=0.0;\n-709 out[25][1]=0.0;\n-710 out[26][0]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;\n-711 out[26][1]=0.0;\n-712 out[27][0]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;\n-713 out[27][1]=0.0;\n-714 out[28][0]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;\n-715 out[28][1]=0.0;\n-716 out[29][0]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;\n-717 out[29][1]=0.0;\n-718 out[30][0]=0.0;\n-719 out[30][1]=0.0;\n-720 out[31][0]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;\n-721 out[31][1]=0.0;\n-722 out[32][0]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;\n-723 out[32][1]=0.0;\n-724 out[33][0]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;\n-725 out[33][1]=0.0;\n-726 out[34][0]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;\n-727 out[34][1]=0.0;\n-728 out[35][0]=0.0;\n-729 out[35][1]=0.0;\n-730 out[36][0]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;\n-731 out[36][1]=0.0;\n-732 out[37][0]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;\n-733 out[37][1]=0.0;\n-734 out[38][0]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;\n-735 out[38][1]=0.0;\n-736 out[39][0]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;\n-737 out[39][1]=0.0;\n-738 out[40][0]=0.0;\n-739 out[40][1]=-dyl4_y;\n-740 out[41][0]=0.0;\n-741 out[41][1]=3.0*dyl1_y-3.0*dyl5_y;\n-742 out[42][0]=0.0;\n-743 out[42][1]=5.0*dyl2_y-5.0*dyl4_y;\n-744 out[43][0]=0.0;\n-745 out[43][1]=7.0*dyl3_y-7.0*dyl5_y;\n-746 out[44][0]=0.0;\n-747 out[44][1]=-3.0*l1_x*dyl4_y;\n-748 out[45][0]=0.0;\n-749 out[45][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;\n-750 out[46][0]=0.0;\n-751 out[46][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;\n-752 out[47][0]=0.0;\n-753 out[47][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;\n-754 out[48][0]=0.0;\n-755 out[48][1]=-5.0*l2_x*dyl4_y;\n-756 out[49][0]=0.0;\n-757 out[49][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;\n-758 out[50][0]=0.0;\n-759 out[50][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;\n-760 out[51][0]=0.0;\n-761 out[51][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;\n-762 out[52][0]=0.0;\n-763 out[52][1]=-7.0*l3_x*dyl4_y;\n-764 out[53][0]=0.0;\n-765 out[53][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;\n-766 out[54][0]=0.0;\n-767 out[54][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;\n-768 out[55][0]=0.0;\n-769 out[55][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;\n-770 out[56][0]=0.0;\n-771 out[56][1]=-9.0*l4_x*dyl4_y;\n-772 out[57][0]=0.0;\n-773 out[57][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;\n-774 out[58][0]=0.0;\n-775 out[58][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;\n-776 out[59][0]=0.0;\n-777 out[59][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;\n-778 } else {\n-779 DUNE_THROW(RangeError, \"Component out of range.\");\n-780 }\n-781 } else {\n-782 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-783 }\n-784 }\n-785\n-_\b7_\b8_\b7 unsigned int _\bo_\br_\bd_\be_\br () const\n-788 {\n-789 return 9;\n-790 }\n-791\n-792 private:\n-793 R sign0, sign1, sign2, sign3;\n-794 };\n-795}\n-796\n-797#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH\n+_\b6_\b7 const _\bF_\bi_\be_\bl_\bd *_\br_\bo_\bw_\bP_\bt_\br ( const unsigned int row ) const\n+68 {\n+69 assert(row p(rows());\n+93 for (unsigned int j=0; j max )\n+103 {\n+104 max = abs( (*this)(i,j) );\n+105 r = i;\n+106 }\n+107 }\n+108 if (max == _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>())\n+109 return false;\n+110 // row swap\n+111 if (r > j)\n+112 {\n+113 for (unsigned int k=0; k()/(*this)(j,j);\n+119 for (unsigned int i=0; i\n+_\b1_\b5_\b1 inline std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream &out, const _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b>\n+&mat)\n+152 {\n+153 for (unsigned int r=0; r(mat(r,0));\n+156 for (unsigned int c=1; c(mat(r,c));\n+159 }\n+160 out << std::endl;\n+161 }\n+162 return out;\n+163 }\n+164}\n+165\n+166#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Second order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:492\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:787\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:210\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT4Cube2DLocalBasis(std::bitset< 4 > s=0)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n+std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by\n+A class representing the unit of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n+A class representing the zero of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bP_\bt_\br\n+Field * rowPtr(const unsigned int row)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\bs\n+unsigned int cols() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bP_\bt_\br\n+const Field * rowPtr(const unsigned int row) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize(const unsigned int rows, const unsigned int cols)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw\n+void row(const unsigned int row, Vector &vec) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs\n+unsigned int rows() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt\n+bool invert()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:23\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas4cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: basismatrix.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas4cube2dlocalinterpolation.hh File Reference
    \n+
    basismatrix.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+
    #include <fstream>
    \n+#include <dune/common/dynmatrix.hh>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/localfunctions/utility/monomialbasis.hh>
    \n+#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT4Cube2DLocalInterpolation< LB >
     Second order Raviart-Thomas shape functions on the reference triangle. More...
    struct  Dune::BasisMatrixBase< PreBasis, Interpolation, Field >
     
    struct  Dune::BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field >
     
    struct  Dune::BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field >
     
    struct  Dune::BasisMatrix< const PolynomialBasis< Eval, CM, D, R >, Interpolation, Field >
     
    struct  Dune::BasisMatrix< const PolynomialBasisWithMatrix< Eval, CM >, Interpolation, Field >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,35 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas4cube2dlocalinterpolation.hh File Reference\n-#include \n-#include \n+basismatrix.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 Second order Raviart-Thomas shape functions on the reference triangle.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\b _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,\n+ _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,\n+ _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,\n+ _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,\n+ _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas4cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: basismatrix.hh Source File\n \n \n \n \n \n \n \n@@ -70,173 +70,277 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas4cube2dlocalinterpolation.hh
    \n+
    basismatrix.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_BASISMATRIX_HH
    \n+
    6#define DUNE_BASISMATRIX_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    8#include <fstream>
    \n+
    9#include <dune/common/dynmatrix.hh>
    \n+
    10#include <dune/common/exceptions.hh>
    \n
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n+\n+\n
    14
    \n-
    23 template<class LB>
    \n-
    \n-\n-
    25 {
    \n-
    26
    \n-
    27 public:
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17 /****************************************
    \n+
    18 * A dense matrix representation of a ''polynomial''
    \n+
    19 * basis. Its represent a basis as a linear
    \n+
    20 * combination of a second basis, i.e., a
    \n+
    21 * monomial basis. It is simular to the PolynomialBasis
    \n+
    22 * but it not derived from the LocalBasis class.
    \n+
    23 * It is used to define a ''pre basis''.
    \n+
    24 ****************************************/
    \n+
    25 template< class PreBasis, class Interpolation,
    \n+
    26 class Field >
    \n+\n
    28
    \n-
    \n-
    34 RT4Cube2DLocalInterpolation (unsigned int s = 0)
    \n-
    35 {
    \n-
    36 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n-
    37 if (s & 1)
    \n-
    38 {
    \n-
    39 sign0 *= -1.0;
    \n-
    40 }
    \n-
    41 if (s & 2)
    \n-
    42 {
    \n-
    43 sign1 *= -1.0;
    \n-
    44 }
    \n-
    45 if (s & 4)
    \n-
    46 {
    \n-
    47 sign2 *= -1.0;
    \n-
    48 }
    \n-
    49 if (s & 8)
    \n-
    50 {
    \n-
    51 sign3 *= -1.0;
    \n-
    52 }
    \n-
    53
    \n-
    54 n0[0] = -1.0;
    \n-
    55 n0[1] = 0.0;
    \n-
    56 n1[0] = 1.0;
    \n-
    57 n1[1] = 0.0;
    \n-
    58 n2[0] = 0.0;
    \n-
    59 n2[1] = -1.0;
    \n-
    60 n3[0] = 0.0;
    \n-
    61 n3[1] = 1.0;
    \n-
    62 }
    \n+
    29 template< class PreBasis, class Interpolation,
    \n+
    30 class Field >
    \n+
    \n+
    31 struct BasisMatrixBase : public DynamicMatrix<Field>
    \n+
    32 {
    \n+
    33 typedef DynamicMatrix<Field> Matrix;
    \n+
    34
    \n+
    \n+
    35 BasisMatrixBase( const PreBasis& preBasis,
    \n+
    36 const Interpolation& localInterpolation )
    \n+
    37 : cols_(preBasis.size())
    \n+
    38 {
    \n+
    39 localInterpolation.interpolate( preBasis, *this );
    \n+
    40 this->invert();
    \n+
    41 }
    \n+
    \n+
    \n+
    42 unsigned int cols () const
    \n+
    43 {
    \n+
    44 return cols_;
    \n+
    45 }
    \n+
    \n+
    \n+
    46 unsigned int rows () const
    \n+
    47 {
    \n+
    48 return Matrix::rows();
    \n+
    49 }
    \n
    \n+
    50 private:
    \n+
    51 unsigned int cols_;
    \n+
    52 };
    \n+
    \n+
    53
    \n+
    54 template< GeometryType::Id geometryId, class F,
    \n+
    55 class Interpolation,
    \n+
    56 class Field >
    \n+
    \n+
    57 struct BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field >
    \n+
    58 : public BasisMatrixBase< const MonomialBasis< geometryId, F >, Interpolation, Field >
    \n+
    59 {
    \n+\n+\n+
    62 typedef typename Base::Matrix Matrix;
    \n
    63
    \n-
    72 template<typename F, typename C>
    \n-
    \n-
    73 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    74 {
    \n-
    75 // f gives v*outer normal at a point on the edge!
    \n-
    76 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    77 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    78
    \n-
    79 out.resize(60);
    \n-
    80 fill(out.begin(), out.end(), 0.0);
    \n-
    81
    \n-
    82 const int qOrder = 12;
    \n-
    83 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    84
    \n-
    85 for (typename QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n-
    86 {
    \n-
    87 Scalar qPos = it->position();
    \n-
    88 typename LB::Traits::DomainType localPos;
    \n-
    89
    \n-
    90 localPos[0] = 0.0;
    \n-
    91 localPos[1] = qPos;
    \n-
    92 auto y = f(localPos);
    \n-
    93 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n-
    94 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    95 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0;
    \n-
    96 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos + 12.0*qPos - 1.0)*it->weight();
    \n-
    97 out[4] += (y[0]*n0[0] + y[1]*n0[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign0;
    \n-
    98
    \n-
    99 localPos[0] = 1.0;
    \n-
    100 localPos[1] = qPos;
    \n-
    101 y = f(localPos);
    \n-
    102 out[5] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
    \n-
    103 out[6] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    104 out[7] += (y[0]*n1[0] + y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1;
    \n-
    105 out[8] += (y[0]*n1[0] + y[1]*n1[1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos - 12.0*qPos + 1.0)*it->weight();
    \n-
    106 out[9] += (y[0]*n1[0] + y[1]*n1[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign1;
    \n-
    107
    \n-
    108 localPos[0] = qPos;
    \n-
    109 localPos[1] = 0.0;
    \n-
    110 y = f(localPos);
    \n-
    111 out[10] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n-
    112 out[11] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    113 out[12] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2;
    \n-
    114 out[13] += (y[0]*n2[0] + y[1]*n2[1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos - 12.0*qPos + 1.0)*it->weight();
    \n-
    115 out[14] += (y[0]*n2[0] + y[1]*n2[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign2;
    \n-
    116
    \n-
    117 localPos[0] = qPos;
    \n-
    118 localPos[1] = 1.0;
    \n-
    119 y = f(localPos);
    \n-
    120 out[15] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n-
    121 out[16] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    122 out[17] += (y[0]*n3[0] + y[1]*n3[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign3;
    \n-
    123 out[18] += (y[0]*n3[0] + y[1]*n3[1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos + 12.0*qPos - 1.0)*it->weight();
    \n-
    124 out[19] += (y[0]*n3[0] + y[1]*n3[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign3;
    \n-
    125 }
    \n-
    126
    \n-
    127 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    128
    \n-
    129 for (typename QuadratureRule<Vector,2>::const_iterator it = rule2.begin();
    \n-
    130 it != rule2.end(); ++it)
    \n-
    131 {
    \n-
    132 FieldVector<double,2> qPos = it->position();
    \n-
    133
    \n-
    134 auto y = f(qPos);
    \n-
    135 std::vector<std::vector<double> > l(2,std::vector<double> (5));
    \n-
    136 l[0][0]=1.0;
    \n-
    137 l[1][0]=1.0;
    \n-
    138 l[0][1]=2.0*qPos[0]-1.0;
    \n-
    139 l[1][1]=2.0*qPos[1]-1.0;
    \n-
    140 l[0][2]=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;
    \n-
    141 l[1][2]=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;
    \n-
    142 l[0][3]=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0] - 1.0;
    \n-
    143 l[1][3]=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1] - 1.0;
    \n-
    144 l[0][4]=1.0-20.0*qPos[0]+90.0*pow(qPos[0],2)-140.0*pow(qPos[0],3)+70.0*pow(qPos[0],4);
    \n-
    145 l[1][4]=1.0-20.0*qPos[1]+90.0*pow(qPos[1],2)-140.0*pow(qPos[1],3)+70.0*pow(qPos[1],4);
    \n-
    146
    \n-
    147 for (int i=0;i<4;i++)
    \n-
    148 for (int j=0;j<5;j++)
    \n-
    149 out[20+i*5+j] +=y[0]*l[0][i]*l[1][j]*it->weight();
    \n-
    150
    \n-
    151 for (int i=0;i<5;i++)
    \n-
    152 for (int j=0;j<4;j++)
    \n-
    153 out[40+i*4+j] +=y[1]*l[0][i]*l[1][j]*it->weight();
    \n-
    154 }
    \n-
    155 }
    \n-
    \n-
    156
    \n-
    157 private:
    \n-
    158 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n-
    159 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n-
    160 };
    \n-
    \n-
    161}
    \n-
    162
    \n-
    163#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    \n+
    64 BasisMatrix( const PreBasis& preBasis,
    \n+
    65 const Interpolation& localInterpolation )
    \n+
    66 : Base(preBasis, localInterpolation)
    \n+
    67 {}
    \n+
    \n+
    68 template <class Vector>
    \n+
    \n+
    69 void row( const unsigned int row, Vector &vec ) const
    \n+
    70 {
    \n+
    71 const unsigned int N = Matrix::rows();
    \n+
    72 assert( Matrix::cols() == N && vec.size() == N );
    \n+
    73 // note: that the transposed matrix is computed,
    \n+
    74 // and is square
    \n+
    75 for (unsigned int i=0; i<N; ++i)
    \n+
    76 field_cast((*this)[i][row],vec[i]);
    \n+
    77 }
    \n+
    \n+
    78 };
    \n+
    \n+
    79 template< int dim, class F,
    \n+
    80 class Interpolation,
    \n+
    81 class Field >
    \n+
    \n+
    82 struct BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field >
    \n+
    83 : public BasisMatrixBase< const VirtualMonomialBasis< dim, F >, Interpolation, Field >
    \n+
    84 {
    \n+\n+\n+
    87 typedef typename Base::Matrix Matrix;
    \n+
    88
    \n+
    \n+
    89 BasisMatrix( const PreBasis& preBasis,
    \n+
    90 const Interpolation& localInterpolation )
    \n+
    91 : Base(preBasis, localInterpolation)
    \n+
    92 {}
    \n+
    \n+
    93 template <class Vector>
    \n+
    \n+
    94 void row( const unsigned int row, Vector &vec ) const
    \n+
    95 {
    \n+
    96 const unsigned int N = Matrix::rows();
    \n+
    97 assert( Matrix::cols() == N && vec.size() == N );
    \n+
    98 // note: that the transposed matrix is computed,
    \n+
    99 // and is square
    \n+
    100 for (unsigned int i=0; i<N; ++i)
    \n+
    101 field_cast((*this)[i][row],vec[i]);
    \n+
    102 }
    \n+
    \n+
    103 };
    \n+
    \n+
    104 template< class Eval, class CM, class D, class R,
    \n+
    105 class Interpolation,
    \n+
    106 class Field >
    \n+
    \n+
    107 struct BasisMatrix< const PolynomialBasis<Eval,CM,D,R>, Interpolation, Field >
    \n+
    108 : public BasisMatrixBase< const PolynomialBasis<Eval,CM,D,R>, Interpolation, Field >
    \n+
    109 {
    \n+\n+\n+
    112 typedef typename Base::Matrix Matrix;
    \n+
    113
    \n+
    \n+
    114 BasisMatrix( const PreBasis& preBasis,
    \n+
    115 const Interpolation& localInterpolation )
    \n+
    116 : Base(preBasis, localInterpolation),
    \n+
    117 preBasis_(preBasis)
    \n+
    118 {}
    \n+
    \n+
    \n+
    119 unsigned int cols() const
    \n+
    120 {
    \n+
    121 return preBasis_.matrix().baseSize() ;
    \n+
    122 }
    \n+
    \n+
    123 template <class Vector>
    \n+
    \n+
    124 void row( const unsigned int row, Vector &vec ) const
    \n+
    125 {
    \n+
    126 assert( Matrix::rows() == Matrix::cols() );
    \n+
    127 assert( vec.size() == preBasis_.matrix().baseSize() );
    \n+
    128 assert( Matrix::cols() == preBasis_.size() );
    \n+
    129 for (unsigned int j=0; j<Matrix::cols(); ++j)
    \n+
    130 vec[j] = 0;
    \n+
    131 for (unsigned int i=0; i<Matrix::rows(); ++i)
    \n+
    132 preBasis_.matrix().
    \n+
    133 addRow(i,(*this)[i][row],vec);
    \n+
    134 }
    \n+
    \n+
    135 private:
    \n+
    136 const PreBasis& preBasis_;
    \n+
    137 };
    \n+
    \n+
    138 template< class Eval, class CM,
    \n+
    139 class Interpolation,
    \n+
    140 class Field >
    \n+
    \n+
    141 struct BasisMatrix< const PolynomialBasisWithMatrix<Eval,CM>, Interpolation, Field >
    \n+
    142 : public BasisMatrixBase< const PolynomialBasisWithMatrix<Eval,CM>, Interpolation, Field >
    \n+
    143 {
    \n+\n+\n+
    146 typedef typename Base::Matrix Matrix;
    \n+
    147
    \n+
    \n+
    148 BasisMatrix( const PreBasis& preBasis,
    \n+
    149 const Interpolation& localInterpolation )
    \n+
    150 : Base(preBasis, localInterpolation),
    \n+
    151 preBasis_(preBasis)
    \n+
    152 {}
    \n+
    \n+
    \n+
    153 unsigned int cols() const
    \n+
    154 {
    \n+
    155 return preBasis_.matrix().baseSize() ;
    \n+
    156 }
    \n+
    \n+
    \n+
    157 unsigned int rows () const
    \n+
    158 {
    \n+
    159 assert( Matrix::rows() == preBasis_.matrix().size() );
    \n+
    160 return preBasis_.matrix().size()*CM::blockSize ;
    \n+
    161 }
    \n+
    \n+
    162 template <class Vector>
    \n+
    \n+
    163 void row( const unsigned int row, Vector &vec ) const
    \n+
    164 {
    \n+
    165 unsigned int r = row / CM::blockSize;
    \n+
    166 assert( r < Matrix::rows() );
    \n+
    167 assert( Matrix::rows() == Matrix::cols() );
    \n+
    168 assert( vec.size() == preBasis_.matrix().baseSize() );
    \n+
    169 assert( Matrix::cols() == preBasis_.size() );
    \n+
    170 for (unsigned int j=0; j<vec.size(); ++j)
    \n+
    171 vec[j] = 0;
    \n+
    172 for (unsigned int i=0; i<Matrix::rows(); ++i)
    \n+
    173 preBasis_.matrix().
    \n+
    174 addRow(i*CM::blockSize+row%CM::blockSize,(*this)[i][r],vec);
    \n+
    175 }
    \n+
    \n+
    176 private:
    \n+
    177 const PreBasis& preBasis_;
    \n+
    178 };
    \n+
    \n+
    179}
    \n+
    180
    \n+
    181#endif // DUNE_BASISMATRIX_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas4cube2dlocalinterpolation.hh:25
    \n-
    RT4Cube2DLocalInterpolation(unsigned int s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas4cube2dlocalinterpolation.hh:34
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas4cube2dlocalinterpolation.hh:73
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    Definition basismatrix.hh:27
    \n+
    Definition basismatrix.hh:32
    \n+
    unsigned int cols() const
    Definition basismatrix.hh:42
    \n+
    DynamicMatrix< Field > Matrix
    Definition basismatrix.hh:33
    \n+
    unsigned int rows() const
    Definition basismatrix.hh:46
    \n+
    BasisMatrixBase(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:35
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:69
    \n+
    const MonomialBasis< geometryId, F > PreBasis
    Definition basismatrix.hh:60
    \n+\n+
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:64
    \n+
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:61
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:94
    \n+
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:86
    \n+\n+
    const VirtualMonomialBasis< dim, F > PreBasis
    Definition basismatrix.hh:85
    \n+
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:89
    \n+\n+
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:111
    \n+
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:114
    \n+\n+
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:124
    \n+
    const PolynomialBasis< Eval, CM, D, R > PreBasis
    Definition basismatrix.hh:110
    \n+
    const PolynomialBasisWithMatrix< Eval, CM > PreBasis
    Definition basismatrix.hh:144
    \n+
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:145
    \n+\n+\n+
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:148
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:163
    \n+\n+
    Definition monomialbasis.hh:440
    \n+
    Definition monomialbasis.hh:612
    \n+
    Definition polynomialbasis.hh:65
    \n+
    Definition polynomialbasis.hh:348
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,187 +1,326 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas4cube2dlocalinterpolation.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+basismatrix.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_BASISMATRIX_HH\n+6#define DUNE_BASISMATRIX_HH\n 7\n-8#include \n-9\n-10#include \n+8#include \n+9#include \n+10#include \n 11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n 14\n-23 template\n-_\b2_\b4 class _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-25 {\n-26\n-27 public:\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17 /****************************************\n+18 * A dense matrix representation of a ''polynomial''\n+19 * basis. Its represent a basis as a linear\n+20 * combination of a second basis, i.e., a\n+21 * monomial basis. It is simular to the PolynomialBasis\n+22 * but it not derived from the LocalBasis class.\n+23 * It is used to define a ''pre basis''.\n+24 ****************************************/\n+25 template< class PreBasis, class Interpolation,\n+26 class Field >\n+_\b2_\b7 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx;\n 28\n-_\b3_\b4 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (unsigned int s = 0)\n-35 {\n-36 sign0 = sign1 = sign2 = sign3 = 1.0;\n-37 if (s & 1)\n+29 template< class PreBasis, class Interpolation,\n+30 class Field >\n+_\b3_\b1 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be : public DynamicMatrix\n+32 {\n+_\b3_\b3 typedef DynamicMatrix _\bM_\ba_\bt_\br_\bi_\bx;\n+34\n+_\b3_\b5 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be( const PreBasis& preBasis,\n+36 const Interpolation& localInterpolation )\n+37 : cols_(preBasis.size())\n 38 {\n-39 sign0 *= -1.0;\n-40 }\n-41 if (s & 2)\n-42 {\n-43 sign1 *= -1.0;\n-44 }\n-45 if (s & 4)\n-46 {\n-47 sign2 *= -1.0;\n-48 }\n-49 if (s & 8)\n-50 {\n-51 sign3 *= -1.0;\n-52 }\n+39 localInterpolation.interpolate( preBasis, *this );\n+40 this->invert();\n+41 }\n+_\b4_\b2 unsigned int _\bc_\bo_\bl_\bs () const\n+43 {\n+44 return cols_;\n+45 }\n+_\b4_\b6 unsigned int _\br_\bo_\bw_\bs () const\n+47 {\n+48 return Matrix::rows();\n+49 }\n+50 private:\n+51 unsigned int cols_;\n+52 };\n 53\n-54 n0[0] = -1.0;\n-55 n0[1] = 0.0;\n-56 n1[0] = 1.0;\n-57 n1[1] = 0.0;\n-58 n2[0] = 0.0;\n-59 n2[1] = -1.0;\n-60 n3[0] = 0.0;\n-61 n3[1] = 1.0;\n-62 }\n+54 template< GeometryType::Id geometryId, class F,\n+55 class Interpolation,\n+56 class Field >\n+_\b5_\b7 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx< const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< geometryId, F >, Interpolation,\n+Field >\n+58 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const MonomialBasis< geometryId, F >,\n+Interpolation, Field >\n+59 {\n+_\b6_\b0 typedef const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b> _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n+_\b6_\b1 typedef _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n+_\b6_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n 63\n-72 template\n-_\b7_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-74 {\n-75 // f gives v*outer normal at a point on the edge!\n-76 typedef typename LB::Traits::RangeFieldType Scalar;\n-77 typedef typename LB::Traits::DomainFieldType Vector;\n-78\n-79 out.resize(60);\n-80 fill(out.begin(), out.end(), 0.0);\n-81\n-82 const int qOrder = 12;\n-83 const QuadratureRule& rule = QuadratureRules::rule\n-(GeometryTypes::cube(1), qOrder);\n-84\n-85 for (typename QuadratureRule::const_iterator it=rule.begin();\n-it!=rule.end(); ++it)\n-86 {\n-87 Scalar qPos = it->position();\n-88 typename LB::Traits::DomainType localPos;\n-89\n-90 localPos[0] = 0.0;\n-91 localPos[1] = qPos;\n-92 auto y = f(localPos);\n-93 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n-94 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n-95 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign0;\n-96 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos +\n-12.0*qPos - 1.0)*it->weight();\n-97 out[4] += (y[0]*n0[0] + y[1]*n0[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-\n-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign0;\n-98\n-99 localPos[0] = 1.0;\n-100 localPos[1] = qPos;\n-101 y = f(localPos);\n-102 out[5] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;\n-103 out[6] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n-104 out[7] += (y[0]*n1[0] + y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign1;\n-105 out[8] += (y[0]*n1[0] + y[1]*n1[1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos\n-- 12.0*qPos + 1.0)*it->weight();\n-106 out[9] += (y[0]*n1[0] + y[1]*n1[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-\n-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign1;\n-107\n-108 localPos[0] = qPos;\n-109 localPos[1] = 0.0;\n-110 y = f(localPos);\n-111 out[10] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n-112 out[11] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n-113 out[12] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign2;\n-114 out[13] += (y[0]*n2[0] + y[1]*n2[1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos\n-- 12.0*qPos + 1.0)*it->weight();\n-115 out[14] += (y[0]*n2[0] + y[1]*n2[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-\n-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign2;\n-116\n-117 localPos[0] = qPos;\n-118 localPos[1] = 1.0;\n-119 y = f(localPos);\n-120 out[15] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n-121 out[16] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n-122 out[17] += (y[0]*n3[0] + y[1]*n3[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign3;\n-123 out[18] += (y[0]*n3[0] + y[1]*n3[1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos\n-+ 12.0*qPos - 1.0)*it->weight();\n-124 out[19] += (y[0]*n3[0] + y[1]*n3[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-\n-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign3;\n-125 }\n-126\n-127 const QuadratureRule& rule2 = QuadratureRules::rule\n-(GeometryTypes::cube(2), qOrder);\n-128\n-129 for (typename QuadratureRule::const_iterator it = rule2.begin();\n-130 it != rule2.end(); ++it)\n-131 {\n-132 FieldVector qPos = it->position();\n-133\n-134 auto y = f(qPos);\n-135 std::vector > l(2,std::vector (5));\n-136 l[0][0]=1.0;\n-137 l[1][0]=1.0;\n-138 l[0][1]=2.0*qPos[0]-1.0;\n-139 l[1][1]=2.0*qPos[1]-1.0;\n-140 l[0][2]=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;\n-141 l[1][2]=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;\n-142 l[0][3]=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0]\n-- 1.0;\n-143 l[1][3]=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1]\n-- 1.0;\n-144 l[0][4]=1.0-20.0*qPos[0]+90.0*pow(qPos[0],2)-140.0*pow(qPos[0],3)+70.0*pow\n-(qPos[0],4);\n-145 l[1][4]=1.0-20.0*qPos[1]+90.0*pow(qPos[1],2)-140.0*pow(qPos[1],3)+70.0*pow\n-(qPos[1],4);\n-146\n-147 for (int i=0;i<4;i++)\n-148 for (int j=0;j<5;j++)\n-149 out[20+i*5+j] +=y[0]*l[0][i]*l[1][j]*it->weight();\n-150\n-151 for (int i=0;i<5;i++)\n-152 for (int j=0;j<4;j++)\n-153 out[40+i*4+j] +=y[1]*l[0][i]*l[1][j]*it->weight();\n-154 }\n-155 }\n-156\n-157 private:\n-158 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n-159 typename LB::Traits::DomainType n0, n1, n2, n3;\n-160 };\n-161}\n-162\n-163#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n+_\b6_\b4 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n+65 const Interpolation& localInterpolation )\n+66 : _\bB_\ba_\bs_\be(preBasis, localInterpolation)\n+67 {}\n+68 template \n+_\b6_\b9 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n+70 {\n+71 const unsigned int N = Matrix::rows();\n+72 assert( Matrix::cols() == N && vec.size() == N );\n+73 // note: that the transposed matrix is computed,\n+74 // and is square\n+75 for (unsigned int i=0; i\n+_\b8_\b2 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx< const _\bD_\bu_\bn_\be::_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< dim, F >,\n+Interpolation, Field >\n+83 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const VirtualMonomialBasis< dim, F >,\n+Interpolation, Field >\n+84 {\n+_\b8_\b5 typedef const _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n+_\b8_\b6 typedef _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n+_\b8_\b7 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n+88\n+_\b8_\b9 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n+90 const Interpolation& localInterpolation )\n+91 : _\bB_\ba_\bs_\be(preBasis, localInterpolation)\n+92 {}\n+93 template \n+_\b9_\b4 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n+95 {\n+96 const unsigned int N = Matrix::rows();\n+97 assert( Matrix::cols() == N && vec.size() == N );\n+98 // note: that the transposed matrix is computed,\n+99 // and is square\n+100 for (unsigned int i=0; i\n+_\b1_\b0_\b7 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx< const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs, Interpolation,\n+Field >\n+108 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const PolynomialBasis,\n+Interpolation, Field >\n+109 {\n+_\b1_\b1_\b0 typedef const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bE_\bv_\ba_\bl_\b,_\bC_\bM_\b,_\bD_\b,_\bR_\b> _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n+_\b1_\b1_\b1 typedef _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n+_\b1_\b1_\b2 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n+113\n+_\b1_\b1_\b4 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n+115 const Interpolation& localInterpolation )\n+116 : _\bB_\ba_\bs_\be(preBasis, localInterpolation),\n+117 preBasis_(preBasis)\n+118 {}\n+_\b1_\b1_\b9 unsigned int _\bc_\bo_\bl_\bs() const\n+120 {\n+121 return preBasis_.matrix().baseSize() ;\n+122 }\n+123 template \n+_\b1_\b2_\b4 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n+125 {\n+126 assert( Matrix::rows() == Matrix::cols() );\n+127 assert( vec.size() == preBasis_.matrix().baseSize() );\n+128 assert( Matrix::cols() == preBasis_.size() );\n+129 for (unsigned int j=0; j\n+_\b1_\b4_\b1 struct _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx< const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx,\n+Interpolation, Field >\n+142 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const PolynomialBasisWithMatrix,\n+Interpolation, Field >\n+143 {\n+_\b1_\b4_\b4 typedef const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bE_\bv_\ba_\bl_\b,_\bC_\bM_\b> _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n+_\b1_\b4_\b5 typedef _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b<_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n+_\b1_\b4_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n+147\n+_\b1_\b4_\b8 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n+149 const Interpolation& localInterpolation )\n+150 : _\bB_\ba_\bs_\be(preBasis, localInterpolation),\n+151 preBasis_(preBasis)\n+152 {}\n+_\b1_\b5_\b3 unsigned int _\bc_\bo_\bl_\bs() const\n+154 {\n+155 return preBasis_.matrix().baseSize() ;\n+156 }\n+_\b1_\b5_\b7 unsigned int _\br_\bo_\bw_\bs () const\n+158 {\n+159 assert( Matrix::rows() == preBasis_.matrix().size() );\n+160 return preBasis_.matrix().size()*CM::blockSize ;\n+161 }\n+162 template \n+_\b1_\b6_\b3 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n+164 {\n+165 unsigned int r = row / CM::blockSize;\n+166 assert( r < Matrix::rows() );\n+167 assert( Matrix::rows() == Matrix::cols() );\n+168 assert( vec.size() == preBasis_.matrix().baseSize() );\n+169 assert( Matrix::cols() == preBasis_.size() );\n+170 for (unsigned int j=0; j &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalinterpolation.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b:_\b:_\bc_\bo_\bl_\bs\n+unsigned int cols() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+DynamicMatrix< Field > Matrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b:_\b:_\br_\bo_\bw_\bs\n+unsigned int rows() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be\n+BasisMatrixBase(const PreBasis &preBasis, const Interpolation\n+&localInterpolation)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n+_\b>_\b:_\b:_\br_\bo_\bw\n+void row(const unsigned int row, Vector &vec) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n+_\b>_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n+const MonomialBasis< geometryId, F > PreBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n+_\b>_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+Base::Matrix Matrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n+_\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n+BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:64\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd\n+_\b>_\b:_\b:_\bB_\ba_\bs_\be\n+BasisMatrixBase< PreBasis, Interpolation, Field > Base\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\br_\bo_\bw\n+void row(const unsigned int row, Vector &vec) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n+BasisMatrixBase< PreBasis, Interpolation, Field > Base\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:86\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+Base::Matrix Matrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n+const VirtualMonomialBasis< dim, F > PreBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n+BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+Base::Matrix Matrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n+BasisMatrixBase< PreBasis, Interpolation, Field > Base\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n+BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:114\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bc_\bo_\bl_\bs\n+unsigned int cols() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\br_\bo_\bw\n+void row(const unsigned int row, Vector &vec) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:124\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n+const PolynomialBasis< Eval, CM, D, R > PreBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n+const PolynomialBasisWithMatrix< Eval, CM > PreBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:144\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n+BasisMatrixBase< PreBasis, Interpolation, Field > Base\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\br_\bo_\bw_\bs\n+unsigned int rows() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:157\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+Base::Matrix Matrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:146\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n+BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\br_\bo_\bw\n+void row(const unsigned int row, Vector &vec) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bc_\bo_\bn_\bs_\bt_\b _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b>_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,\n+_\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bc_\bo_\bl_\bs\n+unsigned int cols() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:153\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:440\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:612\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas4cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: multiindex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,78 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas4cube2dlocalcoefficients.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    multiindex.hh File Reference
    \n \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \n+
    #include <vector>
    \n+#include <ostream>
    \n+#include <dune/common/ftraits.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT4Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-4 elements on quadrilaterals. More...
    class  Dune::MultiIndex< dim, Field >
     
    struct  Dune::FieldTraits< MultiIndex< dim, Field > >
     
    struct  Dune::Unity< MultiIndex< dim, F > >
     
    struct  Dune::Zero< MultiIndex< dim, F > >
     
    \n \n \n \n+

    \n Namespaces

    namespace  Dune
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    template<int dim, class Field >
    std::ostream & Dune::operator<< (std::ostream &, const MultiIndex< dim, Field > &)
     
    template<int dim, class Field , class F >
    MultiIndex< dim, Field > Dune::operator* (const F &f, const MultiIndex< dim, Field > &m)
     
    template<int dim, class Field , class F >
    MultiIndex< dim, Field > Dune::operator/ (const F &f, const MultiIndex< dim, Field > &m)
     
    template<int d, class F >
    std::ostream & Dune::operator<< (std::ostream &out, const std::vector< MultiIndex< d, F > > &y)
     
    template<int d, class F , int dimR>
    std::ostream & Dune::operator<< (std::ostream &out, const std::vector< Dune::FieldVector< MultiIndex< d, F >, dimR > > &y)
     
    template<int d, class F , int dimR1, int dimR2>
    std::ostream & Dune::operator<< (std::ostream &out, const std::vector< Dune::FieldMatrix< MultiIndex< d, F >, dimR1, dimR2 > > &y)
     
    template<int d, class F >
    std::ostream & Dune::operator<< (std::ostream &out, const MultiIndex< d, F > &val)
     
    template<int dim, class Field >
    bool Dune::operator< (const Zero< MultiIndex< dim, Field > > &, const MultiIndex< dim, Field > &)
     
    template<int dim, class Field >
    bool Dune::operator< (const MultiIndex< dim, Field > &f, const Zero< MultiIndex< dim, Field > > &)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,68 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas4cube2dlocalcoefficients.hh File Reference\n-#include \n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+multiindex.hh File Reference\n #include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Raviart-Thomas-4 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+ std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx<\n+ dim, Field > &)\n+\u00a0\n+template\n+_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b* (const F &f, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim,\n+ Field > &m)\n+\u00a0\n+template\n+_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field >\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/ (const F &f, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim,\n+ Field > &m)\n+\u00a0\n+template\n+ std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const std::\n+ vector< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< d, F > > &y)\n+\u00a0\n+template\n+ std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const std::\n+ vector< Dune::FieldVector< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< d, F >, dimR >\n+ > &y)\n+\u00a0\n+template\n+ std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const std::\n+ vector< Dune::FieldMatrix< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< d, F >, dimR1,\n+ dimR2 > > &y)\n+\u00a0\n+template\n+ std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const\n+ _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< d, F > &val)\n+\u00a0\n+template\n+ bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b< (const _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field >\n+ > &, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field > &)\n+\u00a0\n+template\n+ bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b< (const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field > &f,\n+ const _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, Field > > &)\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas4cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: multiindex.hh Source File\n \n \n \n \n \n \n \n@@ -70,85 +70,657 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas4cube2dlocalcoefficients.hh
    \n+
    multiindex.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_MULTIINDEX_HH
    \n+
    6#define DUNE_MULTIINDEX_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n+
    8#include <vector>
    \n+
    9#include <ostream>
    \n
    10
    \n-
    11#include "../../common/localkey.hh"
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    \n-\n-
    23 {
    \n+
    11#include <dune/common/ftraits.hh>
    \n+
    12#include <dune/common/fvector.hh>
    \n+
    13
    \n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18 /****************************************************************
    \n+
    19 * Provide a Field class which can be used in evaluation methods
    \n+
    20 * to produce MultiIndex presentation of polynomials.
    \n+
    21 ****************************************************************/
    \n+
    22 // Internal Forward Declarations
    \n+
    23 // -----------------------------
    \n
    24
    \n-
    25 public:
    \n-
    \n-\n-
    28 {
    \n-
    29 for (std::size_t i = 0; i < 4; i++)
    \n-
    30 {
    \n-
    31 li[5*i] = LocalKey(i,1,0);
    \n-
    32 li[5*i + 1] = LocalKey(i,1,1);
    \n-
    33 li[5*i + 2] = LocalKey(i,1,2);
    \n-
    34 li[5*i + 3] = LocalKey(i,1,3);
    \n-
    35 li[5*i + 4] = LocalKey(i,1,4);
    \n-
    36 }
    \n-
    37
    \n-
    38 for (std::size_t i=0; i<40; i++)
    \n-
    39 {
    \n-
    40 li[20 + i] = LocalKey(0,0,i);
    \n-
    41 }
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    \n-
    45 std::size_t size () const
    \n-
    46 {
    \n-
    47 return 60;
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    \n-
    51 const LocalKey& localKey (std::size_t i) const
    \n-
    52 {
    \n-
    53 return li[i];
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    56 private:
    \n-
    57 std::vector<LocalKey> li;
    \n-
    58 };
    \n-
    \n-
    59}
    \n-
    60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    25 template< int dim, class Field >
    \n+
    26 class MultiIndex;
    \n+
    27
    \n+
    28 template< int dim, class Field >
    \n+
    29 std::ostream &operator<< ( std::ostream &, const MultiIndex< dim,Field > & );
    \n+
    30
    \n+
    31
    \n+
    32
    \n+
    33 // MultiIndex
    \n+
    34 // ----------
    \n+
    35
    \n+
    36 template< int dim,class Field >
    \n+
    \n+\n+
    38 {
    \n+\n+
    40
    \n+
    41 friend std::ostream &operator<<<> ( std::ostream &, const This & );
    \n+
    42
    \n+
    43 public:
    \n+
    44 static const int dimension = dim;
    \n+
    45
    \n+
    \n+\n+
    47 : vecZ_( 0 ),
    \n+
    48 vecOMZ_( 0 ),
    \n+
    49 factor_( 1. ),
    \n+
    50 next_( 0 )
    \n+
    51 {}
    \n+
    \n+
    52 template <class F>
    \n+
    \n+
    53 explicit MultiIndex (const F &f)
    \n+
    54 : vecZ_( 0 ),
    \n+
    55 vecOMZ_( 0 ),
    \n+
    56 factor_( field_cast<Field>(f) ),
    \n+
    57 next_( 0 )
    \n+
    58 {}
    \n+
    \n+
    59
    \n+
    \n+
    60 MultiIndex ( int, const This &other )
    \n+
    61 : vecZ_( other.vecOMZ_ ),
    \n+
    62 vecOMZ_( other.vecZ_ ),
    \n+
    63 factor_( other.factor_ )
    \n+
    64 {
    \n+
    65 assert(!other.next_);
    \n+
    66 if (other.next_)
    \n+
    67 {
    \n+
    68 next_ = new This( *(other.next_) );
    \n+
    69 }
    \n+
    70 else
    \n+
    71 next_ = 0;
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    \n+
    74 MultiIndex ( const This &other )
    \n+
    75 : vecZ_( other.vecZ_ ),
    \n+
    76 vecOMZ_( other.vecOMZ_ ),
    \n+
    77 factor_( other.factor_ )
    \n+
    78 {
    \n+
    79 if (other.next_)
    \n+
    80 {
    \n+
    81 next_ = new This( *(other.next_) );
    \n+
    82 }
    \n+
    83 else
    \n+
    84 next_ = 0;
    \n+
    85 }
    \n+
    \n+
    86
    \n+
    \n+\n+
    88 {
    \n+
    89 remove();
    \n+
    90 }
    \n+
    \n+
    91
    \n+
    \n+
    92 int z(int i) const
    \n+
    93 {
    \n+
    94 return vecZ_[i];
    \n+
    95 }
    \n+
    \n+
    \n+
    96 int omz(int i) const
    \n+
    97 {
    \n+
    98 return vecOMZ_[i];
    \n+
    99 }
    \n+
    \n+
    \n+
    100 const Field &factor() const
    \n+
    101 {
    \n+
    102 return factor_;
    \n+
    103 }
    \n+
    \n+
    104
    \n+
    \n+
    105 This &operator= ( const This &other )
    \n+
    106 {
    \n+
    107 remove();
    \n+
    108 vecZ_ = other.vecZ_;
    \n+
    109 vecOMZ_ = other.vecOMZ_;
    \n+
    110 factor_ = other.factor_;
    \n+
    111 if (other.next_)
    \n+
    112 next_ = new This(*(other.next_));
    \n+
    113 return *this;
    \n+
    114 }
    \n+
    \n+
    \n+\n+
    116 {
    \n+
    117 remove();
    \n+
    118 vecZ_ = 0;
    \n+
    119 vecOMZ_ = 0;
    \n+
    120 factor_ = 0.;
    \n+
    121 return *this;
    \n+
    122 }
    \n+
    \n+
    \n+\n+
    124 {
    \n+
    125 remove();
    \n+
    126 vecZ_ = 0;
    \n+
    127 vecOMZ_ = 0;
    \n+
    128 factor_ = 1.;
    \n+
    129 return *this;
    \n+
    130 }
    \n+
    \n+
    131 template <class F>
    \n+
    \n+
    132 This &operator= ( const F &f )
    \n+
    133 {
    \n+
    134 remove();
    \n+
    135 vecZ_ = 0;
    \n+
    136 vecOMZ_ = 0;
    \n+
    137 factor_ = field_cast<Field>(f);
    \n+
    138 return *this;
    \n+
    139 }
    \n+
    \n+
    140
    \n+
    \n+
    141 bool operator== (const This &other) const
    \n+
    142 {
    \n+
    143 assert(!next_ && !other.next_);
    \n+
    144 return (vecZ_==other.vecZ_ && vecOMZ_==other.vecOMZ_ && factor_==other.factor_);
    \n+
    145 }
    \n+
    \n+
    146
    \n+
    147 template <class F>
    \n+
    \n+
    148 This &operator*= ( const F &f )
    \n+
    149 {
    \n+
    150 factor_ *= field_cast<Field>(f);
    \n+
    151 if (next_)
    \n+
    152 (*next_) *= f;
    \n+
    153 return *this;
    \n+
    154 }
    \n+
    \n+
    155 template <class F>
    \n+
    \n+
    156 This &operator/= ( const F &f )
    \n+
    157 {
    \n+
    158 factor_ /= field_cast<Field>(f);
    \n+
    159 if (next_)
    \n+
    160 (*next_) /= f;
    \n+
    161 return *this;
    \n+
    162 }
    \n+
    \n+
    163
    \n+
    \n+
    164 This &operator*= ( const This &other )
    \n+
    165 {
    \n+
    166 assert(!other.next_);
    \n+
    167 vecZ_ += other.vecZ_;
    \n+
    168 vecOMZ_ += other.vecOMZ_;
    \n+
    169 factor_ *= other.factor_;
    \n+
    170 if (next_)
    \n+
    171 (*next_) *= other;
    \n+
    172 return *this;
    \n+
    173 }
    \n+
    \n+
    \n+
    174 This &operator/= ( const This &other )
    \n+
    175 {
    \n+
    176 assert(!other.next_);
    \n+
    177 vecZ_ -= other.vecZ_;
    \n+
    178 vecOMZ_ -= other.vecOMZ_;
    \n+
    179 factor_ /= other.factor_;
    \n+
    180 if (next_)
    \n+
    181 (*next_) /= other;
    \n+
    182 return *this;
    \n+
    183 }
    \n+
    \n+
    184
    \n+
    \n+
    185 This &operator+= ( const This &other )
    \n+
    186 {
    \n+
    187 assert(!other.next_);
    \n+
    188 if (std::abs(other.factor_)<1e-10)
    \n+
    189 return *this;
    \n+
    190 if (std::abs(factor_)<1e-10)
    \n+
    191 {
    \n+
    192 *this = other;
    \n+
    193 return *this;
    \n+
    194 }
    \n+
    195 if (!sameMultiIndex(other))
    \n+
    196 {
    \n+
    197 if (next_)
    \n+
    198 (*next_)+=other;
    \n+
    199 else
    \n+
    200 {
    \n+
    201 next_ = new This(other);
    \n+
    202 }
    \n+
    203 }
    \n+
    204 else
    \n+
    205 factor_ += other.factor_;
    \n+
    206 return *this;
    \n+
    207 }
    \n+
    \n+
    \n+
    208 This &operator-= ( const This &other )
    \n+
    209 {
    \n+
    210 assert(!other.next_);
    \n+
    211 if (!sameMultiIndex(other))
    \n+
    212 {
    \n+
    213 if (next_)
    \n+
    214 next_-=other;
    \n+
    215 else
    \n+
    216 {
    \n+
    217 next_ = new This(other);
    \n+
    218 }
    \n+
    219 }
    \n+
    220 else
    \n+
    221 factor_ -= other.factor_;
    \n+
    222 return *this;
    \n+
    223 }
    \n+
    \n+
    224
    \n+
    225 template <class F>
    \n+
    \n+
    226 This operator* ( const F &f ) const
    \n+
    227 {
    \n+
    228 This z = *this;
    \n+
    229 return (z *= f);
    \n+
    230 }
    \n+
    \n+
    231 template <class F>
    \n+
    \n+
    232 This operator/ ( const F &f ) const
    \n+
    233 {
    \n+
    234 This z = *this;
    \n+
    235 return (z /= f);
    \n+
    236 }
    \n+
    \n+
    237
    \n+
    \n+
    238 This operator* ( const This &other ) const
    \n+
    239 {
    \n+
    240 This z = *this;
    \n+
    241 return (z *= other);
    \n+
    242 }
    \n+
    \n+
    \n+
    243 This operator/ ( const This &other ) const
    \n+
    244 {
    \n+
    245 This z = *this;
    \n+
    246 return (z /= other);
    \n+
    247 }
    \n+
    \n+
    248
    \n+
    \n+
    249 This operator+ ( const This &other ) const
    \n+
    250 {
    \n+
    251 This z = *this;
    \n+
    252 return (z += other);
    \n+
    253 }
    \n+
    \n+
    \n+
    254 This operator- ( const This &other ) const
    \n+
    255 {
    \n+
    256 This z = *this;
    \n+
    257 return (z -= other);
    \n+
    258 }
    \n+
    \n+
    259
    \n+
    \n+
    260 void set ( int d, int power = 1 )
    \n+
    261 {
    \n+
    262 vecZ_[ d ] = power;
    \n+
    263 }
    \n+
    \n+
    264
    \n+
    \n+
    265 int absZ () const
    \n+
    266 {
    \n+
    267 int ret = 0;
    \n+
    268 for( int i = 0; i < dimension; ++i )
    \n+
    269 ret += std::abs( vecZ_[ i ] );
    \n+
    270 return ret;
    \n+
    271 }
    \n+
    \n+
    272
    \n+
    \n+
    273 int absOMZ() const
    \n+
    274 {
    \n+
    275 int ret = 0;
    \n+
    276 for( int i = 0; i < dimension; ++i )
    \n+
    277 ret += std::abs( vecOMZ_[ i ] );
    \n+
    278 return ret;
    \n+
    279 }
    \n+
    \n+
    280
    \n+
    \n+
    281 bool sameMultiIndex(const This &ind)
    \n+
    282 {
    \n+
    283 for( int i = 0; i < dimension; ++i )
    \n+
    284 {
    \n+
    285 if ( vecZ_[i] != ind.vecZ_[i] ||
    \n+
    286 vecOMZ_[i] != vecOMZ_[i] )
    \n+
    287 return false;
    \n+
    288 }
    \n+
    289 return true;
    \n+
    290 }
    \n+
    \n+
    291
    \n+
    292 private:
    \n+
    293 void remove()
    \n+
    294 {
    \n+
    295 if (next_)
    \n+
    296 {
    \n+
    297 next_->remove();
    \n+
    298 delete next_;
    \n+
    299 next_ = 0;
    \n+
    300 }
    \n+
    301 }
    \n+
    302
    \n+
    303 typedef Dune::FieldVector< int, dimension > Vector;
    \n+
    304
    \n+
    305 Vector vecZ_;
    \n+
    306 Vector vecOMZ_;
    \n+
    307 Field factor_;
    \n+
    308
    \n+
    309 This *next_;
    \n+
    310 };
    \n+
    \n+
    311
    \n+
    312
    \n+
    313 template< int dim,class Field >
    \n+
    \n+
    314 struct FieldTraits<MultiIndex<dim,Field>>
    \n+
    315 {
    \n+
    316 using field_type = Field;
    \n+
    317 using real_type = typename FieldTraits<field_type>::real_type;
    \n+
    318 };
    \n+
    \n+
    319
    \n+
    320 template <int dim, class Field, class F>
    \n+
    \n+\n+
    322 const MultiIndex<dim,Field> &m)
    \n+
    323 {
    \n+\n+
    325 return (z *= f);
    \n+
    326 }
    \n+
    \n+
    327 template <int dim, class Field, class F>
    \n+
    \n+\n+
    329 const MultiIndex<dim,Field> &m)
    \n+
    330 {
    \n+\n+
    332 return (z /= f);
    \n+
    333 }
    \n+
    \n+
    334
    \n+
    335 template <int d, class F>
    \n+
    \n+
    336 std::ostream &operator<<(std::ostream& out,const std::vector<MultiIndex<d,F> >& y) {
    \n+
    337 for (unsigned int r=0; r<y.size(); ++r) {
    \n+
    338 out << "f_{" << r << "}(" << char('a');
    \n+
    339 for (int i=1; i<d; ++i)
    \n+
    340 out << "," << char('a'+i);
    \n+
    341 out << ")=";
    \n+
    342 out << y[r] << std::endl;
    \n+
    343 }
    \n+
    344 return out;
    \n+
    345 }
    \n+
    \n+
    346 template <int d,class F,int dimR>
    \n+
    \n+
    347 std::ostream &operator<<(std::ostream& out,
    \n+
    348 const std::vector<Dune::FieldVector<MultiIndex<d,F>,dimR> >& y) {
    \n+
    349 out << "\\\\begin{eqnarray*}" << std::endl;
    \n+
    350 for (unsigned int k=0; k<y.size(); ++k) {
    \n+
    351 out << "f_{" << k << "}(" << char('a');
    \n+
    352 for (int i=1; i<d; ++i)
    \n+
    353 out << "," << char('a'+i);
    \n+
    354 out << ") &=& ( ";
    \n+
    355 out << y[k][0] ;
    \n+
    356 for (unsigned int r=1; r<dimR; ++r) {
    \n+
    357 out << " , " << y[k][r] ;
    \n+
    358 }
    \n+
    359 out << " ) \\\\\\\\" << std::endl;
    \n+
    360 }
    \n+
    361 out << "\\\\end{eqnarray*}" << std::endl;
    \n+
    362 return out;
    \n+
    363 }
    \n+
    \n+
    364 template <int d,class F,int dimR1,int dimR2>
    \n+
    \n+
    365 std::ostream &operator<<(std::ostream& out,
    \n+
    366 const std::vector<Dune::FieldMatrix<MultiIndex<d,F>,dimR1,dimR2> >& y) {
    \n+
    367 out << "\\\\begin{eqnarray*}" << std::endl;
    \n+
    368 for (unsigned int k=0; k<y.size(); ++k) {
    \n+
    369 for (int q=0; q<dimR2; q++) {
    \n+
    370 out << "d_{" << char('a'+q) << "}f_{" << k << "}(" << char('a');
    \n+
    371 for (int i=1; i<d; ++i)
    \n+
    372 out << "," << char('a'+i);
    \n+
    373 out << ") &=& ( ";
    \n+
    374 out << y[k][0][q] ;
    \n+
    375 for (unsigned int r=1; r<dimR1; ++r) {
    \n+
    376 out << " , " << y[k][r][q] ;
    \n+
    377 }
    \n+
    378 out << " ) \\\\\\\\" << std::endl;
    \n+
    379 }
    \n+
    380 }
    \n+
    381 out << "\\\\end{eqnarray*}" << std::endl;
    \n+
    382 return out;
    \n+
    383 }
    \n+
    \n+
    384 template <int d, class F>
    \n+
    \n+
    385 std::ostream &operator<<(std::ostream& out,const MultiIndex<d,F>& val)
    \n+
    386 {
    \n+
    387 bool first = true;
    \n+
    388 const MultiIndex<d,F> *m = &val;
    \n+
    389 do {
    \n+
    390 if (m->absZ()==0 && std::abs(m->factor())<1e-10)
    \n+
    391 {
    \n+
    392 if (!m->next_ || !first)
    \n+
    393 {
    \n+
    394 out << "0";
    \n+
    395 break;
    \n+
    396 }
    \n+
    397 else {
    \n+
    398 m = m->next_;
    \n+
    399 continue;
    \n+
    400 }
    \n+
    401 }
    \n+
    402 if (m->factor()>0 && !first)
    \n+
    403 out << " + ";
    \n+
    404 else if (m->factor()<0)
    \n+
    405 if (!first)
    \n+
    406 out << " - ";
    \n+
    407 else
    \n+
    408 out << "- ";
    \n+
    409 else
    \n+
    410 out << " ";
    \n+
    411 first = false;
    \n+
    412 F f = std::abs(m->factor());
    \n+
    413 if (m->absZ()==0)
    \n+
    414 out << f;
    \n+
    415 else {
    \n+
    416 if ( std::abs(f)<1e-10)
    \n+
    417 out << 0;
    \n+
    418 else
    \n+
    419 {
    \n+
    420 F f_1(f);
    \n+
    421 f_1 -= 1.; // better Unity<F>();
    \n+
    422 if ( std::abs(f_1)>1e-10)
    \n+
    423 out << f;
    \n+
    424 int absVal = 0;
    \n+
    425 for (int i=0; i<d; ++i) {
    \n+
    426 if (m->vecZ_[i]==0)
    \n+
    427 continue;
    \n+
    428 else if (m->vecZ_[i]==1)
    \n+
    429 out << char('a'+i);
    \n+
    430 else if (m->vecZ_[i]>0)
    \n+
    431 out << char('a'+i) << "^" << m->vecZ_[i] << "";
    \n+
    432 else if (m->vecZ_[i]<0)
    \n+
    433 out << char('a'+i) << "^" << m->vecZ_[i] << "";
    \n+
    434 absVal += m->vecZ_[i];
    \n+
    435 if (absVal<m->absZ()) out << "";
    \n+
    436 }
    \n+
    437 }
    \n+
    438 }
    \n+
    439 /*
    \n+
    440 if (mi.absOMZ()>0) {
    \n+
    441 for (int i=0;i<=mi.absZ();++i) {
    \n+
    442 if (mi.vecOMZ_[i]==0)
    \n+
    443 continue;
    \n+
    444 else if (mi.vecOMZ_[i]==1)
    \n+
    445 out << (1-char('a'+i));
    \n+
    446 else if (mi.vecOMZ_[i]>0)
    \n+
    447 out << (1-char('a'+i)) << "^" << mi.vecOMZ_[i];
    \n+
    448 else if (mi.vecOMZ_[i]<0)
    \n+
    449 out << (1-char('a'+i)) << "^" << mi.vecOMZ_[i];
    \n+
    450 if (i==mi.absZ()+1) out << "*";
    \n+
    451 }
    \n+
    452 }
    \n+
    453 */
    \n+
    454 m = m->next_;
    \n+
    455 } while (m);
    \n+
    456 return out;
    \n+
    457 }
    \n+
    \n+
    458
    \n+
    459 template< int dim, class F>
    \n+
    \n+
    460 struct Unity< MultiIndex< dim, F > >
    \n+
    461 {
    \n+\n+
    463
    \n+
    \n+
    464 operator Field () const
    \n+
    465 {
    \n+
    466 return Field();
    \n+
    467 }
    \n+
    \n+
    468
    \n+
    \n+
    469 Field operator- ( const Field &other ) const
    \n+
    470 {
    \n+
    471 return Field( 1, other );
    \n+
    472 }
    \n+
    \n+
    473
    \n+
    \n+
    474 Field operator/ ( const Field &other ) const
    \n+
    475 {
    \n+
    476 return Field() / other;
    \n+
    477 }
    \n+
    \n+
    478 };
    \n+
    \n+
    479
    \n+
    480
    \n+
    481
    \n+
    482 template< int dim, class F >
    \n+
    \n+
    483 struct Zero< MultiIndex< dim,F > >
    \n+
    484 {
    \n+\n+
    486
    \n+
    487 // zero does not actually exist
    \n+
    \n+
    488 operator Field ()
    \n+
    489 {
    \n+
    490 return Field(0);
    \n+
    491 }
    \n+
    \n+
    492 };
    \n+
    \n+
    493
    \n+
    494 template< int dim, class Field >
    \n+
    \n+\n+
    496 {
    \n+
    497 return true;
    \n+
    498 }
    \n+
    \n+
    499
    \n+
    500 template< int dim, class Field >
    \n+
    \n+\n+
    502 {
    \n+
    503 return true;
    \n+
    504 }
    \n+
    \n+
    505
    \n+
    506}
    \n+
    507
    \n+
    508#endif // #ifndef DUNE_MULTIINDEX_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for Raviart-Thomas-4 elements on quadrilaterals.
    Definition raviartthomas4cube2dlocalcoefficients.hh:23
    \n-
    RT4Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas4cube2dlocalcoefficients.hh:27
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas4cube2dlocalcoefficients.hh:45
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas4cube2dlocalcoefficients.hh:51
    \n+
    Field operator-(const Unity< Field > &u, const Field &f)
    Definition field.hh:44
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    bool operator<(const Zero< Field > &, const Field &f)
    Definition field.hh:119
    \n+
    Field operator/(const Unity< Field > &u, const Field &f)
    Definition field.hh:56
    \n+
    std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)
    Definition lfematrix.hh:151
    \n+
    Field operator*(const Unity< Field > &u, const Field &f)
    Definition field.hh:50
    \n+
    A class representing the unit of a given Field.
    Definition field.hh:30
    \n+
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n+
    Definition multiindex.hh:38
    \n+
    This operator+(const This &other) const
    Definition multiindex.hh:249
    \n+
    int absOMZ() const
    Definition multiindex.hh:273
    \n+
    ~MultiIndex()
    Definition multiindex.hh:87
    \n+
    This & operator-=(const This &other)
    Definition multiindex.hh:208
    \n+
    MultiIndex(int, const This &other)
    Definition multiindex.hh:60
    \n+
    static const int dimension
    Definition multiindex.hh:44
    \n+
    int absZ() const
    Definition multiindex.hh:265
    \n+
    int omz(int i) const
    Definition multiindex.hh:96
    \n+
    This & operator+=(const This &other)
    Definition multiindex.hh:185
    \n+
    bool operator==(const This &other) const
    Definition multiindex.hh:141
    \n+
    bool sameMultiIndex(const This &ind)
    Definition multiindex.hh:281
    \n+
    This & operator=(const This &other)
    Definition multiindex.hh:105
    \n+
    MultiIndex(const This &other)
    Definition multiindex.hh:74
    \n+
    This & operator*=(const F &f)
    Definition multiindex.hh:148
    \n+
    const Field & factor() const
    Definition multiindex.hh:100
    \n+
    This operator/(const F &f) const
    Definition multiindex.hh:232
    \n+
    MultiIndex(const F &f)
    Definition multiindex.hh:53
    \n+
    This & operator/=(const F &f)
    Definition multiindex.hh:156
    \n+
    This operator*(const F &f) const
    Definition multiindex.hh:226
    \n+
    void set(int d, int power=1)
    Definition multiindex.hh:260
    \n+
    This operator-(const This &other) const
    Definition multiindex.hh:254
    \n+
    int z(int i) const
    Definition multiindex.hh:92
    \n+
    MultiIndex()
    Definition multiindex.hh:46
    \n+
    Field field_type
    Definition multiindex.hh:316
    \n+
    typename FieldTraits< field_type >::real_type real_type
    Definition multiindex.hh:317
    \n+
    MultiIndex< dim, F > Field
    Definition multiindex.hh:462
    \n+
    MultiIndex< dim, F > Field
    Definition multiindex.hh:485
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,83 +1,636 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n-raviartthomas4cube2dlocalcoefficients.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+multiindex.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_MULTIINDEX_HH\n+6#define DUNE_MULTIINDEX_HH\n 7\n-8#include \n-9#include \n+8#include \n+9#include \n 10\n-11#include \"../../common/localkey.hh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-_\b2_\b2 class _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-23 {\n+11#include \n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18 /****************************************************************\n+19 * Provide a Field class which can be used in evaluation methods\n+20 * to produce MultiIndex presentation of polynomials.\n+21 ****************************************************************/\n+22 // Internal Forward Declarations\n+23 // -----------------------------\n 24\n-25 public:\n-_\b2_\b7 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(60)\n-28 {\n-29 for (std::size_t i = 0; i < 4; i++)\n-30 {\n-31 li[5*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-32 li[5*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-33 li[5*i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n-34 li[5*i + 3] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,3);\n-35 li[5*i + 4] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,4);\n-36 }\n-37\n-38 for (std::size_t i=0; i<40; i++)\n-39 {\n-40 li[20 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n-41 }\n-42 }\n-43\n-_\b4_\b5 std::size_t _\bs_\bi_\bz_\be () const\n-46 {\n-47 return 60;\n-48 }\n-49\n-_\b5_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-52 {\n-53 return li[i];\n-54 }\n-55\n-56 private:\n-57 std::vector li;\n-58 };\n-59}\n-60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH\n+25 template< int dim, class Field >\n+26 class MultiIndex;\n+27\n+28 template< int dim, class Field >\n+_\b2_\b9 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b _\b> &\n+);\n+30\n+31\n+32\n+33 // MultiIndex\n+34 // ----------\n+35\n+36 template< int dim,class Field >\n+_\b3_\b7 class _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+38 {\n+39 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> _\bT_\bh_\bi_\bs;\n+40\n+_\b4_\b1 friend std::ostream &operator<<<> ( std::ostream &, const _\bT_\bh_\bi_\bs & );\n+42\n+43 public:\n+_\b4_\b4 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+45\n+_\b4_\b6 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ()\n+47 : vecZ_( 0 ),\n+48 vecOMZ_( 0 ),\n+49 factor_( 1. ),\n+50 next_( 0 )\n+51 {}\n+52 template \n+_\b5_\b3 explicit _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx (const F &f)\n+54 : vecZ_( 0 ),\n+55 vecOMZ_( 0 ),\n+56 factor_( _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(f) ),\n+57 next_( 0 )\n+58 {}\n+59\n+_\b6_\b0 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ( int, const _\bT_\bh_\bi_\bs &other )\n+61 : vecZ_( other.vecOMZ_ ),\n+62 vecOMZ_( other.vecZ_ ),\n+63 factor_( other.factor_ )\n+64 {\n+65 assert(!other.next_);\n+66 if (other.next_)\n+67 {\n+68 next_ = new _\bT_\bh_\bi_\bs( *(other.next_) );\n+69 }\n+70 else\n+71 next_ = 0;\n+72 }\n+73\n+_\b7_\b4 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ( const _\bT_\bh_\bi_\bs &other )\n+75 : vecZ_( other.vecZ_ ),\n+76 vecOMZ_( other.vecOMZ_ ),\n+77 factor_( other.factor_ )\n+78 {\n+79 if (other.next_)\n+80 {\n+81 next_ = new _\bT_\bh_\bi_\bs( *(other.next_) );\n+82 }\n+83 else\n+84 next_ = 0;\n+85 }\n+86\n+_\b8_\b7 _\b~_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx()\n+88 {\n+89 remove();\n+90 }\n+91\n+_\b9_\b2 int _\bz(int i) const\n+93 {\n+94 return vecZ_[i];\n+95 }\n+_\b9_\b6 int _\bo_\bm_\bz(int i) const\n+97 {\n+98 return vecOMZ_[i];\n+99 }\n+_\b1_\b0_\b0 const Field &_\bf_\ba_\bc_\bt_\bo_\br() const\n+101 {\n+102 return factor_;\n+103 }\n+104\n+_\b1_\b0_\b5 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+106 {\n+107 remove();\n+108 vecZ_ = other.vecZ_;\n+109 vecOMZ_ = other.vecOMZ_;\n+110 factor_ = other.factor_;\n+111 if (other.next_)\n+112 next_ = new _\bT_\bh_\bi_\bs(*(other.next_));\n+113 return *this;\n+114 }\n+_\b1_\b1_\b5 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bZ_\be_\br_\bo_\b<_\bT_\bh_\bi_\bs_\b> &f )\n+116 {\n+117 remove();\n+118 vecZ_ = 0;\n+119 vecOMZ_ = 0;\n+120 factor_ = 0.;\n+121 return *this;\n+122 }\n+_\b1_\b2_\b3 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\bT_\bh_\bi_\bs_\b> &f )\n+124 {\n+125 remove();\n+126 vecZ_ = 0;\n+127 vecOMZ_ = 0;\n+128 factor_ = 1.;\n+129 return *this;\n+130 }\n+131 template \n+_\b1_\b3_\b2 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const F &f )\n+133 {\n+134 remove();\n+135 vecZ_ = 0;\n+136 vecOMZ_ = 0;\n+137 factor_ = field_cast(f);\n+138 return *this;\n+139 }\n+140\n+_\b1_\b4_\b1 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b (const _\bT_\bh_\bi_\bs &other) const\n+142 {\n+143 assert(!next_ && !other.next_);\n+144 return (vecZ_==other.vecZ_ && vecOMZ_==other.vecOMZ_ &&\n+factor_==other.factor_);\n+145 }\n+146\n+147 template \n+_\b1_\b4_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const F &f )\n+149 {\n+150 factor_ *= field_cast(f);\n+151 if (next_)\n+152 (*next_) *= f;\n+153 return *this;\n+154 }\n+155 template \n+_\b1_\b5_\b6 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b=_\b ( const F &f )\n+157 {\n+158 factor_ /= field_cast(f);\n+159 if (next_)\n+160 (*next_) /= f;\n+161 return *this;\n+162 }\n+163\n+_\b1_\b6_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+165 {\n+166 assert(!other.next_);\n+167 vecZ_ += other.vecZ_;\n+168 vecOMZ_ += other.vecOMZ_;\n+169 factor_ *= other.factor_;\n+170 if (next_)\n+171 (*next_) *= other;\n+172 return *this;\n+173 }\n+_\b1_\b7_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+175 {\n+176 assert(!other.next_);\n+177 vecZ_ -= other.vecZ_;\n+178 vecOMZ_ -= other.vecOMZ_;\n+179 factor_ /= other.factor_;\n+180 if (next_)\n+181 (*next_) /= other;\n+182 return *this;\n+183 }\n+184\n+_\b1_\b8_\b5 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+186 {\n+187 assert(!other.next_);\n+188 if (std::abs(other.factor_)<1e-10)\n+189 return *this;\n+190 if (std::abs(factor_)<1e-10)\n+191 {\n+192 *this = other;\n+193 return *this;\n+194 }\n+195 if (!_\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(other))\n+196 {\n+197 if (next_)\n+198 (*next_)+=other;\n+199 else\n+200 {\n+201 next_ = new _\bT_\bh_\bi_\bs(other);\n+202 }\n+203 }\n+204 else\n+205 factor_ += other.factor_;\n+206 return *this;\n+207 }\n+_\b2_\b0_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+209 {\n+210 assert(!other.next_);\n+211 if (!_\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(other))\n+212 {\n+213 if (next_)\n+214 next_-=other;\n+215 else\n+216 {\n+217 next_ = new _\bT_\bh_\bi_\bs(other);\n+218 }\n+219 }\n+220 else\n+221 factor_ -= other.factor_;\n+222 return *this;\n+223 }\n+224\n+225 template \n+_\b2_\b2_\b6 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const F &f ) const\n+227 {\n+228 _\bT_\bh_\bi_\bs _\bz = *this;\n+229 return (_\bz *= f);\n+230 }\n+231 template \n+_\b2_\b3_\b2 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const F &f ) const\n+233 {\n+234 _\bT_\bh_\bi_\bs _\bz = *this;\n+235 return (_\bz /= f);\n+236 }\n+237\n+_\b2_\b3_\b8 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+239 {\n+240 _\bT_\bh_\bi_\bs _\bz = *this;\n+241 return (_\bz *= other);\n+242 }\n+_\b2_\b4_\b3 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+244 {\n+245 _\bT_\bh_\bi_\bs _\bz = *this;\n+246 return (_\bz /= other);\n+247 }\n+248\n+_\b2_\b4_\b9 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+250 {\n+251 _\bT_\bh_\bi_\bs _\bz = *this;\n+252 return (_\bz += other);\n+253 }\n+_\b2_\b5_\b4 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+255 {\n+256 _\bT_\bh_\bi_\bs _\bz = *this;\n+257 return (_\bz -= other);\n+258 }\n+259\n+_\b2_\b6_\b0 void _\bs_\be_\bt ( int d, int power = 1 )\n+261 {\n+262 vecZ_[ d ] = power;\n+263 }\n+264\n+_\b2_\b6_\b5 int _\ba_\bb_\bs_\bZ () const\n+266 {\n+267 int ret = 0;\n+268 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n+269 ret += std::abs( vecZ_[ i ] );\n+270 return ret;\n+271 }\n+272\n+_\b2_\b7_\b3 int _\ba_\bb_\bs_\bO_\bM_\bZ() const\n+274 {\n+275 int ret = 0;\n+276 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n+277 ret += std::abs( vecOMZ_[ i ] );\n+278 return ret;\n+279 }\n+280\n+_\b2_\b8_\b1 bool _\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(const _\bT_\bh_\bi_\bs &ind)\n+282 {\n+283 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n+284 {\n+285 if ( vecZ_[i] != ind.vecZ_[i] ||\n+286 vecOMZ_[i] != vecOMZ_[i] )\n+287 return false;\n+288 }\n+289 return true;\n+290 }\n+291\n+292 private:\n+293 void remove()\n+294 {\n+295 if (next_)\n+296 {\n+297 next_->remove();\n+298 delete next_;\n+299 next_ = 0;\n+300 }\n+301 }\n+302\n+303 typedef Dune::FieldVector< int, dimension > Vector;\n+304\n+305 Vector vecZ_;\n+306 Vector vecOMZ_;\n+307 Field factor_;\n+308\n+309 This *next_;\n+310 };\n+311\n+312\n+313 template< int dim,class Field >\n+_\b3_\b1_\b4 struct FieldTraits<_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx>\n+315 {\n+_\b3_\b1_\b6 using _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be = Field;\n+_\b3_\b1_\b7 using _\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be = typename FieldTraits::real_type;\n+318 };\n+319\n+320 template \n+_\b3_\b2_\b1 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const F &f,\n+322 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> &m)\n+323 {\n+324 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> z = m;\n+325 return (z *= f);\n+326 }\n+327 template \n+_\b3_\b2_\b8 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const F &f,\n+329 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> &m)\n+330 {\n+331 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> z = m;\n+332 return (z /= f);\n+333 }\n+334\n+335 template \n+_\b3_\b3_\b6 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,const std::\n+vector<_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\b,_\bF_\b> >& y) {\n+337 for (unsigned int r=0; r\n+_\b3_\b4_\b7 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,\n+348 const std::vector,dimR> >& y) {\n+349 out << \"\\\\begin{eqnarray*}\" << std::endl;\n+350 for (unsigned int k=0; k\n+_\b3_\b6_\b5 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,\n+366 const std::vector,dimR1,dimR2> >& y) {\n+367 out << \"\\\\begin{eqnarray*}\" << std::endl;\n+368 for (unsigned int k=0; k\n+_\b3_\b8_\b5 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\b,_\bF_\b>& val)\n+386 {\n+387 bool first = true;\n+388 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\b,_\bF_\b> *m = &val;\n+389 do {\n+390 if (m->_\ba_\bb_\bs_\bZ()==0 && std::abs(m->_\bf_\ba_\bc_\bt_\bo_\br())<1e-10)\n+391 {\n+392 if (!m->next_ || !first)\n+393 {\n+394 out << \"0\";\n+395 break;\n+396 }\n+397 else {\n+398 m = m->next_;\n+399 continue;\n+400 }\n+401 }\n+402 if (m->_\bf_\ba_\bc_\bt_\bo_\br()>0 && !first)\n+403 out << \" + \";\n+404 else if (m->_\bf_\ba_\bc_\bt_\bo_\br()<0)\n+405 if (!first)\n+406 out << \" - \";\n+407 else\n+408 out << \"- \";\n+409 else\n+410 out << \" \";\n+411 first = false;\n+412 F f = std::abs(m->_\bf_\ba_\bc_\bt_\bo_\br());\n+413 if (m->_\ba_\bb_\bs_\bZ()==0)\n+414 out << f;\n+415 else {\n+416 if ( std::abs(f)<1e-10)\n+417 out << 0;\n+418 else\n+419 {\n+420 F f_1(f);\n+421 f_1 -= 1.; // better Unity();\n+422 if ( std::abs(f_1)>1e-10)\n+423 out << f;\n+424 int absVal = 0;\n+425 for (int i=0; ivecZ_[i]==0)\n+427 continue;\n+428 else if (m->vecZ_[i]==1)\n+429 out << char('a'+i);\n+430 else if (m->vecZ_[i]>0)\n+431 out << char('a'+i) << \"^\" << m->vecZ_[i] << \"\";\n+432 else if (m->vecZ_[i]<0)\n+433 out << char('a'+i) << \"^\" << m->vecZ_[i] << \"\";\n+434 absVal += m->vecZ_[i];\n+435 if (absValabsZ()) out << \"\";\n+436 }\n+437 }\n+438 }\n+439 /*\n+440 if (mi.absOMZ()>0) {\n+441 for (int i=0;i<=mi.absZ();++i) {\n+442 if (mi.vecOMZ_[i]==0)\n+443 continue;\n+444 else if (mi.vecOMZ_[i]==1)\n+445 out << (1-char('a'+i));\n+446 else if (mi.vecOMZ_[i]>0)\n+447 out << (1-char('a'+i)) << \"^\" << mi.vecOMZ_[i];\n+448 else if (mi.vecOMZ_[i]<0)\n+449 out << (1-char('a'+i)) << \"^\" << mi.vecOMZ_[i];\n+450 if (i==mi.absZ()+1) out << \"*\";\n+451 }\n+452 }\n+453 */\n+454 m = m->next_;\n+455 } while (m);\n+456 return out;\n+457 }\n+458\n+459 template< int dim, class F>\n+_\b4_\b6_\b0 struct _\bU_\bn_\bi_\bt_\by< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, F > >\n+461 {\n+_\b4_\b6_\b2 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b> _\bF_\bi_\be_\bl_\bd;\n+463\n+_\b4_\b6_\b4 operator _\bF_\bi_\be_\bl_\bd () const\n+465 {\n+466 return _\bF_\bi_\be_\bl_\bd();\n+467 }\n+468\n+_\b4_\b6_\b9 _\bF_\bi_\be_\bl_\bd _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bF_\bi_\be_\bl_\bd &other ) const\n+470 {\n+471 return _\bF_\bi_\be_\bl_\bd( 1, other );\n+472 }\n+473\n+_\b4_\b7_\b4 _\bF_\bi_\be_\bl_\bd _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bF_\bi_\be_\bl_\bd &other ) const\n+475 {\n+476 return _\bF_\bi_\be_\bl_\bd() / other;\n+477 }\n+478 };\n+479\n+480\n+481\n+482 template< int dim, class F >\n+_\b4_\b8_\b3 struct _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim,F > >\n+484 {\n+_\b4_\b8_\b5 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\bF_\b _\b> _\bF_\bi_\be_\bl_\bd;\n+486\n+487 // zero does not actually exist\n+_\b4_\b8_\b8 operator _\bF_\bi_\be_\bl_\bd ()\n+489 {\n+490 return _\bF_\bi_\be_\bl_\bd(0);\n+491 }\n+492 };\n+493\n+494 template< int dim, class Field >\n+_\b4_\b9_\b5 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b _\b> > &, const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<\n+_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b _\b> & )\n+496 {\n+497 return true;\n+498 }\n+499\n+500 template< int dim, class Field >\n+_\b5_\b0_\b1 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &f, const _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<\n+_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b _\b> > & )\n+502 {\n+503 return true;\n+504 }\n+505\n+506}\n+507\n+508#endif // #ifndef DUNE_MULTIINDEX_HH\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-4 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT4Cube2DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-\n+Field operator-(const Unity< Field > &u, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n+bool operator<(const Zero< Field > &, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/\n+Field operator/(const Unity< Field > &u, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n+std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n+Field operator*(const Unity< Field > &u, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by\n+A class representing the unit of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n+A class representing the zero of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+\n+This operator+(const This &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\ba_\bb_\bs_\bO_\bM_\bZ\n+int absOMZ() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:273\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\b~_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+~MultiIndex()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b=\n+This & operator-=(const This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:208\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+MultiIndex(int, const This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\ba_\bb_\bs_\bZ\n+int absZ() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:265\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bm_\bz\n+int omz(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b=\n+This & operator+=(const This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n+bool operator==(const This &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+bool sameMultiIndex(const This &ind)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:281\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+MultiIndex(const This &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=\n+This & operator*=(const F &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bf_\ba_\bc_\bt_\bo_\br\n+const Field & factor() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/\n+This operator/(const F &f) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:232\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+MultiIndex(const F &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b=\n+This & operator/=(const F &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:156\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n+This operator*(const F &f) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:226\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bs_\be_\bt\n+void set(int d, int power=1)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:260\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-\n+This operator-(const This &other) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:254\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bz\n+int z(int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:92\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+MultiIndex()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n+Field field_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:316\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be\n+typename FieldTraits< field_type >::real_type real_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:317\n+_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+MultiIndex< dim, F > Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:462\n+_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo_\b<_\b _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+MultiIndex< dim, F > Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:485\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomassimplex.hh File Reference\n+dune-localfunctions: field.hh File Reference\n \n \n \n \n \n \n \n@@ -65,45 +65,129 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomassimplex.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    field.hh File Reference
    \n \n
    \n-\n-

    Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension. \n-More...

    \n-
    #include <dune/localfunctions/utility/localfiniteelement.hh>
    \n-#include "raviartthomassimplex/raviartthomassimplexbasis.hh"
    \n+
    #include <dune/common/gmpfield.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RaviartThomasSimplexLocalFiniteElement< dimDomain, D, R, SF, CF >
     Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension. More...
    struct  Dune::Unity< Field >
     A class representing the unit of a given Field. More...
     
    struct  Dune::Zero< Field >
     A class representing the zero of a given Field. More...
     
    struct  Dune::FieldCast< F2, V >
     
    struct  Dune::FieldCast< F2, Dune::FieldVector< F1, dim > >
     
    struct  Dune::FieldCast< F2, Dune::FieldMatrix< F1, dim1, dim2 > >
     
    struct  Dune::Precision< double >
     
    struct  Dune::Precision< long double >
     
    struct  Dune::Precision< float >
     
    struct  Dune::ComputeField< Field, sum >
     
    \n \n \n \n+

    \n Namespaces

    namespace  Dune
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    template<class Field >
    Field Dune::operator+ (const Unity< Field > &u, const Field &f)
     
    template<class Field >
    Field Dune::operator- (const Unity< Field > &u, const Field &f)
     
    template<class Field >
    Field Dune::operator* (const Unity< Field > &u, const Field &f)
     
    template<class Field >
    Field Dune::operator/ (const Unity< Field > &u, const Field &f)
     
    template<class Field >
    bool Dune::operator== (const Zero< Field > &, const Field &f)
     
    template<class Field >
    bool Dune::operator== (const Field &f, const Zero< Field > &z)
     
    template<class Field >
    bool Dune::operator< (const Zero< Field > &, const Field &f)
     
    template<class Field >
    bool Dune::operator< (const Field &f, const Zero< Field > &)
     
    template<class Field >
    bool Dune::operator> (const Zero< Field > &z, const Field &f)
     
    template<class Field >
    bool Dune::operator> (const Field &f, const Zero< Field > &z)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const F1 &f1, F2 &f2)
     a helper class to cast from one field to another
     
    template<class F2 , class F1 , int dim>
    void Dune::field_cast (const Dune::FieldVector< F1, dim > &f1, Dune::FieldVector< F2, dim > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldVector< F1, 1 > &f1, F2 &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const F1 &f1, Dune::FieldVector< F2, 1 > &f2)
     
    template<class F2 , class F1 , int rdim, int cdim>
    void Dune::field_cast (const Dune::FieldMatrix< F1, rdim, cdim > &f1, Dune::FieldMatrix< F2, rdim, cdim > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldMatrix< F1, 1, 1 > &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldMatrix< F1, 1, 1 > &f1, F2 &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const F1 &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldVector< F1, 1 > &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldMatrix< F1, 1, 1 > &f1, Dune::FieldVector< F2, 1 > &f2)
     
    template<class F2 , class F1 >
    void Dune::field_cast (const Dune::FieldVector< F1, 1 > &f1, Dune::FieldVector< F2, 1 > &f2)
     
    template<class F2 , class V >
    FieldCast< F2, V >::type Dune::field_cast (const V &f1)
     
    \n-

    Detailed Description

    \n-

    Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,127 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomassimplex.hh File Reference\n-Raviart-Thomas local finite elements of arbitrary order for simplices of\n-arbitrary dimension. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+field.hh File Reference\n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bD_\b,_\b _\bR_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n-\u00a0 Raviart-Thomas local finite elements of arbitrary order for simplices\n- of arbitrary dimension. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0 A class representing the unit of a given Field. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0 A class representing the zero of a given Field. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bV_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\b1_\b,_\b _\bd_\bi_\bm_\b2_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b<_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b<_\b _\bl_\bo_\bn_\bg_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\b<_\b _\bf_\bl_\bo_\ba_\bt_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bs_\bu_\bm_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Raviart-Thomas local finite elements of arbitrary order for simplices of\n-arbitrary dimension.\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+ Field\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+ (const _\bU_\bn_\bi_\bt_\by< Field > &u, const Field\n+ &f)\n+\u00a0\n+template\n+ Field\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b- (const _\bU_\bn_\bi_\bt_\by< Field > &u, const Field\n+ &f)\n+\u00a0\n+template\n+ Field\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b* (const _\bU_\bn_\bi_\bt_\by< Field > &u, const Field\n+ &f)\n+\u00a0\n+template\n+ Field\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/ (const _\bU_\bn_\bi_\bt_\by< Field > &u, const Field\n+ &f)\n+\u00a0\n+template\n+ bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b= (const _\bZ_\be_\br_\bo< Field > &, const Field\n+ &f)\n+\u00a0\n+template\n+ bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b= (const Field &f, const _\bZ_\be_\br_\bo< Field >\n+ &z)\n+\u00a0\n+template\n+ bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b< (const _\bZ_\be_\br_\bo< Field > &, const Field\n+ &f)\n+\u00a0\n+template\n+ bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b< (const Field &f, const _\bZ_\be_\br_\bo< Field >\n+ &)\n+\u00a0\n+template\n+ bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b> (const _\bZ_\be_\br_\bo< Field > &z, const Field\n+ &f)\n+\u00a0\n+template\n+ bool\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b> (const Field &f, const _\bZ_\be_\br_\bo< Field >\n+ &z)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const F1 &f1, F2 &f2)\n+\u00a0 a helper class to cast from one field to another\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldVector< F1, dim >\n+ &f1, Dune::FieldVector< F2, dim > &f2)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldVector< F1, 1 >\n+ &f1, F2 &f2)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const F1 &f1, Dune::FieldVector<\n+ F2, 1 > &f2)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldMatrix< F1, rdim,\n+ cdim > &f1, Dune::FieldMatrix< F2, rdim, cdim > &f2)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldMatrix< F1, 1, 1 >\n+ &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldMatrix< F1, 1, 1 >\n+ &f1, F2 &f2)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const F1 &f1, Dune::FieldMatrix<\n+ F2, 1, 1 > &f2)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldVector< F1, 1 >\n+ &f1, Dune::FieldMatrix< F2, 1, 1 > &f2)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldMatrix< F1, 1, 1 >\n+ &f1, Dune::FieldVector< F2, 1 > &f2)\n+\u00a0\n+template\n+ void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const Dune::FieldVector< F1, 1 >\n+ &f1, Dune::FieldVector< F2, 1 > &f2)\n+\u00a0\n+template\n+_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt< F2, V >::type\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt (const V &f1)\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomassimplex.hh Source File\n+dune-localfunctions: field.hh Source File\n \n \n \n \n \n \n \n@@ -70,66 +70,385 @@\n \n \n \n \n \n \n \n
    \n-
    raviartthomassimplex.hh
    \n+
    field.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH
    \n
    7
    \n-\n-\n-
    10
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    35 template<unsigned int dimDomain, class D, class R,
    \n-
    36 class SF=R, class CF=SF>
    \n-
    \n-\n-
    38 : public GenericLocalFiniteElement<RaviartThomasBasisFactory<dimDomain, SF, CF>,
    \n-
    39 RaviartThomasCoefficientsFactory<dimDomain>,
    \n-
    40 RaviartThomasL2InterpolationFactory<dimDomain, SF> >
    \n-
    41 {
    \n-\n-\n-\n-
    45 public:
    \n-
    46 using typename Base::Traits;
    \n-
    47
    \n-
    \n-
    49 RaviartThomasSimplexLocalFiniteElement(const GeometryType &gt, unsigned int order)
    \n-
    50 : Base(gt, order)
    \n-
    51 {}
    \n+
    8#include <dune/common/gmpfield.hh>
    \n+
    9#include <dune/common/fvector.hh>
    \n+
    10#include <dune/common/fmatrix.hh>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    15 // Unity
    \n+
    16 // -----
    \n+
    17
    \n+
    28 template< class Field >
    \n+
    \n+
    29 struct Unity
    \n+
    30 {
    \n+
    \n+
    31 operator Field () const
    \n+
    32 {
    \n+
    33 return Field( 1 );
    \n+
    34 }
    \n
    \n-
    52 };
    \n+
    35 };
    \n+
    \n+
    36
    \n+
    37 template< class Field >
    \n+
    \n+
    38 Field operator+ ( const Unity< Field > &u, const Field &f )
    \n+
    39 {
    \n+
    40 return (Field)u + f;
    \n+
    41 }
    \n+
    \n+
    42
    \n+
    43 template< class Field >
    \n+
    \n+
    44 Field operator- ( const Unity< Field > &u, const Field &f )
    \n+
    45 {
    \n+
    46 return (Field)u - f;
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    49 template< class Field >
    \n+
    \n+
    50 Field operator* ( const Unity< Field > &u, const Field &f )
    \n+
    51 {
    \n+
    52 return f;
    \n+
    53 }
    \n
    \n-
    53} // namespace Dune
    \n
    54
    \n-
    55#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH
    \n-\n+
    55 template< class Field >
    \n+
    \n+
    56 Field operator/ ( const Unity< Field > &u, const Field &f )
    \n+
    57 {
    \n+
    58 return (Field)u / f;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    61
    \n+
    62
    \n+
    63 // Zero
    \n+
    64 // ----
    \n+
    65
    \n+
    77 template< class Field >
    \n+
    \n+
    78 struct Zero
    \n+
    79 {
    \n+
    \n+
    80 operator Field () const
    \n+
    81 {
    \n+
    82 return Field( 0 );
    \n+
    83 }
    \n+
    \n+
    \n+
    84 static const Field epsilon()
    \n+
    85 {
    \n+
    86 return Field(1e-12);
    \n+
    87 }
    \n+
    \n+
    88 };
    \n+
    \n+
    89
    \n+
    90#if HAVE_GMP
    \n+
    91 template< unsigned int precision >
    \n+
    92 struct Zero< GMPField< precision > >
    \n+
    93 {
    \n+
    94 typedef GMPField< precision > Field;
    \n+
    95 operator Field () const
    \n+
    96 {
    \n+
    97 return Field( 0 );
    \n+
    98 }
    \n+
    99 static const Field epsilon()
    \n+
    100 {
    \n+
    101 return Field(1e-20);
    \n+
    102 }
    \n+
    103 };
    \n+
    104#endif
    \n+
    105
    \n+
    106 template< class Field >
    \n+
    \n+
    107 inline bool operator == ( const Zero< Field > &, const Field &f )
    \n+
    108 {
    \n+
    109 return ( f < Zero<Field>::epsilon() && f > -Zero<Field>::epsilon() );
    \n+
    110 }
    \n+
    \n+
    111
    \n+
    112 template< class Field >
    \n+
    \n+
    113 inline bool operator == ( const Field &f, const Zero< Field > &z)
    \n+
    114 {
    \n+
    115 return ( z == f );
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    118 template< class Field >
    \n+
    \n+
    119 inline bool operator< ( const Zero< Field > &, const Field &f )
    \n+
    120 {
    \n+
    121 return f > Zero<Field>::epsilon();
    \n+
    122 }
    \n+
    \n+
    123
    \n+
    124 template< class Field >
    \n+
    \n+
    125 inline bool operator< ( const Field &f, const Zero< Field > & )
    \n+
    126 {
    \n+
    127 return f < -Zero<Field>::epsilon();
    \n+
    128 }
    \n+
    \n+
    129
    \n+
    130 template< class Field >
    \n+
    \n+
    131 inline bool operator> ( const Zero< Field > &z, const Field &f )
    \n+
    132 {
    \n+
    133 return f < z;
    \n+
    134 }
    \n+
    \n+
    135
    \n+
    136 template< class Field >
    \n+
    \n+
    137 inline bool operator> ( const Field &f, const Zero< Field > &z )
    \n+
    138 {
    \n+
    139 return z < f;
    \n+
    140 }
    \n+
    \n+
    141
    \n+
    142
    \n+
    143 // field_cast
    \n+
    144 // ----------
    \n+
    145
    \n+
    158 template< class F2, class F1 >
    \n+
    \n+
    159 inline void field_cast ( const F1 &f1, F2 &f2 )
    \n+
    160 {
    \n+
    161 f2 = f1;
    \n+
    162 }
    \n+
    \n+
    163
    \n+
    164#if HAVE_GMP
    \n+
    165 template< unsigned int precision >
    \n+
    166 inline void field_cast ( const Dune::GMPField< precision > &f1, double &f2 )
    \n+
    167 {
    \n+
    168 f2 = f1.get_d();
    \n+
    169 }
    \n+
    170
    \n+
    171 template< unsigned int precision >
    \n+
    172 inline void field_cast ( const Dune::GMPField< precision > &f1, long double &f2 )
    \n+
    173 {
    \n+
    174 f2 = f1.get_d();
    \n+
    175 }
    \n+
    176#endif
    \n+
    177
    \n+
    178 template< class F2, class F1, int dim >
    \n+
    \n+
    179 inline void field_cast ( const Dune::FieldVector< F1, dim > &f1, Dune::FieldVector< F2, dim > &f2 )
    \n+
    180 {
    \n+
    181 for( int d = 0; d < dim; ++d )
    \n+
    182 field_cast( f1[ d ], f2[ d ] );
    \n+
    183 }
    \n+
    \n+
    184 template< class F2, class F1 >
    \n+
    \n+
    185 inline void field_cast ( const Dune::FieldVector< F1, 1 > &f1, F2 &f2 )
    \n+
    186 {
    \n+
    187 field_cast( f1[ 0 ], f2 );
    \n+
    188 }
    \n+
    \n+
    189 template< class F2, class F1 >
    \n+
    \n+
    190 inline void field_cast ( const F1 &f1, Dune::FieldVector< F2, 1 > &f2 )
    \n+
    191 {
    \n+
    192 field_cast( f1, f2[ 0 ] );
    \n+
    193 }
    \n+
    \n+
    194
    \n+
    195 template< class F2, class F1, int rdim, int cdim >
    \n+
    \n+
    196 inline void field_cast ( const Dune::FieldMatrix< F1, rdim, cdim > &f1, Dune::FieldMatrix< F2, rdim, cdim > &f2 )
    \n+
    197 {
    \n+
    198 for( int r = 0; r < rdim; ++r )
    \n+
    199 field_cast( f1[ r ], f2[ r ] );
    \n+
    200 }
    \n+
    \n+
    201 template< class F2, class F1 >
    \n+
    \n+
    202 inline void field_cast ( const Dune::FieldMatrix<F1,1,1> &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )
    \n+
    203 {
    \n+
    204 field_cast( f1[ 0 ][ 0 ], f2[ 0 ][ 0 ] );
    \n+
    205 }
    \n+
    \n+
    206 template< class F2, class F1 >
    \n+
    \n+
    207 inline void field_cast ( const Dune::FieldMatrix< F1, 1,1 > &f1, F2 &f2 )
    \n+
    208 {
    \n+
    209 field_cast( f1[ 0 ][ 0 ], f2 );
    \n+
    210 }
    \n+
    \n+
    211 template< class F2, class F1 >
    \n+
    \n+
    212 inline void field_cast ( const F1 &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )
    \n+
    213 {
    \n+
    214 field_cast( f1, f2[ 0 ][ 0 ] );
    \n+
    215 }
    \n+
    \n+
    216 template< class F2, class F1 >
    \n+
    \n+
    217 inline void field_cast ( const Dune::FieldVector<F1,1> &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )
    \n+
    218 {
    \n+
    219 field_cast( f1[ 0 ], f2[ 0 ][ 0 ] );
    \n+
    220 }
    \n+
    \n+
    221 template< class F2, class F1 >
    \n+
    \n+
    222 inline void field_cast ( const Dune::FieldMatrix<F1,1,1> &f1, Dune::FieldVector< F2, 1 > &f2 )
    \n+
    223 {
    \n+
    224 field_cast( f1[ 0 ][ 0 ], f2[ 0 ] );
    \n+
    225 }
    \n+
    \n+
    226
    \n+
    227 template< class F2, class F1 >
    \n+
    \n+
    228 inline void field_cast ( const Dune::FieldVector< F1, 1 > &f1, Dune::FieldVector<F2, 1> &f2 )
    \n+
    229 {
    \n+
    230 field_cast( f1[ 0 ], f2[ 0 ] );
    \n+
    231 }
    \n+
    \n+
    232
    \n+
    233 template< class F2,class V >
    \n+
    \n+\n+
    235 {
    \n+
    236 typedef F2 type;
    \n+
    237 };
    \n+
    \n+
    238 template< class F2,class F1,int dim >
    \n+
    \n+
    239 struct FieldCast< F2, Dune::FieldVector<F1,dim> >
    \n+
    240 {
    \n+
    241 typedef Dune::FieldVector<F2,dim> type;
    \n+
    242 };
    \n+
    \n+
    243 template< class F2,class F1,int dim1, int dim2>
    \n+
    \n+
    244 struct FieldCast< F2, Dune::FieldMatrix<F1,dim1,dim2> >
    \n+
    245 {
    \n+
    246 typedef Dune::FieldMatrix<F2,dim1,dim2> type;
    \n+
    247 };
    \n+
    \n+
    248 template< class F2,class V >
    \n+
    \n+
    249 inline typename FieldCast<F2,V>::type field_cast ( const V &f1 )
    \n+
    250 {
    \n+
    251 typename FieldCast<F2,V>::type f2;
    \n+
    252 field_cast( f1, f2 );
    \n+
    253 return f2;
    \n+
    254 }
    \n+
    \n+
    255
    \n+
    256
    \n+
    257 // Precision
    \n+
    258 // this is not a perfect solution to obtain the
    \n+
    259 // precision of a field - definition is not clear
    \n+
    260 // to be removed
    \n+
    261 // ---------
    \n+
    262
    \n+
    263 template <class Field>
    \n+
    264 struct Precision;
    \n+
    265
    \n+
    266 template<>
    \n+
    \n+
    267 struct Precision< double >
    \n+
    268 {
    \n+
    269 static const unsigned int value = 64;
    \n+
    270 };
    \n+
    \n+
    271
    \n+
    272 template<>
    \n+
    \n+
    273 struct Precision< long double >
    \n+
    274 {
    \n+
    275 static const unsigned int value = 80;
    \n+
    276 };
    \n+
    \n+
    277
    \n+
    278 template<>
    \n+
    \n+
    279 struct Precision< float >
    \n+
    280 {
    \n+
    281 static const unsigned int value = 32;
    \n+
    282 };
    \n+
    \n+
    283
    \n+
    284#if HAVE_GMP
    \n+
    285 template< unsigned int precision >
    \n+
    286 struct Precision< GMPField< precision > >
    \n+
    287 {
    \n+
    288 static const unsigned int value = precision;
    \n+
    289 };
    \n+
    290#endif
    \n+
    291
    \n+
    292 // ComputeField
    \n+
    293 // ------------
    \n+
    294
    \n+
    295 template <class Field,unsigned int sum>
    \n+
    \n+\n+
    297 {
    \n+
    298 typedef Field Type;
    \n+
    299 };
    \n+
    \n+
    300
    \n+
    301#if HAVE_GMP
    \n+
    302 template< unsigned int precision, unsigned int sum >
    \n+
    303 struct ComputeField< GMPField< precision >, sum >
    \n+
    304 {
    \n+
    305 typedef GMPField<precision+sum> Type;
    \n+
    306 };
    \n+
    307#endif
    \n+
    308} // namespace Dune
    \n+
    309
    \n+
    310#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension.
    Definition raviartthomassimplex.hh:41
    \n-
    RaviartThomasSimplexLocalFiniteElement(const GeometryType &gt, unsigned int order)
    Definition raviartthomassimplex.hh:49
    \n-
    Definition raviartthomassimplexinterpolation.hh:423
    \n-
    Definition raviartthomassimplexinterpolation.hh:70
    \n-
    A LocalFiniteElement implementation based on three TopologyFactories providing the LocalBasis,...
    Definition localfunctions/utility/localfiniteelement.hh:25
    \n-
    LocalFiniteElementTraits< typename BasisF::Object, typename CoeffF::Object, typename InterpolF::Object > Traits
    Definition localfunctions/utility/localfiniteelement.hh:29
    \n-\n+
    Field operator-(const Unity< Field > &u, const Field &f)
    Definition field.hh:44
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    bool operator<(const Zero< Field > &, const Field &f)
    Definition field.hh:119
    \n+
    bool operator==(const Zero< Field > &, const Field &f)
    Definition field.hh:107
    \n+
    bool operator>(const Zero< Field > &z, const Field &f)
    Definition field.hh:131
    \n+
    Field operator+(const Unity< Field > &u, const Field &f)
    Definition field.hh:38
    \n+
    Field operator/(const Unity< Field > &u, const Field &f)
    Definition field.hh:56
    \n+
    Field operator*(const Unity< Field > &u, const Field &f)
    Definition field.hh:50
    \n+
    A class representing the unit of a given Field.
    Definition field.hh:30
    \n+
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n+
    static const Field epsilon()
    Definition field.hh:84
    \n+
    Definition field.hh:235
    \n+
    F2 type
    Definition field.hh:236
    \n+
    Dune::FieldVector< F2, dim > type
    Definition field.hh:241
    \n+
    Dune::FieldMatrix< F2, dim1, dim2 > type
    Definition field.hh:246
    \n+
    Definition field.hh:264
    \n+
    Definition field.hh:297
    \n+
    Field Type
    Definition field.hh:298
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,72 +1,351 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomassimplex.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+field.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH\n+6#define DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-9#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-10\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-35 template\n-_\b3_\b7 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-38 : public _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt,\n-39 RaviartThomasCoefficientsFactory,\n-40 RaviartThomasL2InterpolationFactory >\n-41 {\n-42 typedef _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,\n-_\bC_\bF_\b>,\n-43 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b>,\n-44 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b> > _\bB_\ba_\bs_\be;\n-45 public:\n-46 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs;\n-47\n-_\b4_\b9 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const GeometryType >, unsigned int\n-order)\n-50 : _\bB_\ba_\bs_\be(gt, order)\n-51 {}\n-52 };\n-53} // namespace Dune\n+8#include \n+9#include \n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+15 // Unity\n+16 // -----\n+17\n+28 template< class Field >\n+_\b2_\b9 struct _\bU_\bn_\bi_\bt_\by\n+30 {\n+_\b3_\b1 operator Field () const\n+32 {\n+33 return Field( 1 );\n+34 }\n+35 };\n+36\n+37 template< class Field >\n+_\b3_\b8 Field _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &u, const Field &f )\n+39 {\n+40 return (Field)u + f;\n+41 }\n+42\n+43 template< class Field >\n+_\b4_\b4 Field _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &u, const Field &f )\n+45 {\n+46 return (Field)u - f;\n+47 }\n+48\n+49 template< class Field >\n+_\b5_\b0 Field _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &u, const Field &f )\n+51 {\n+52 return f;\n+53 }\n 54\n-55#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+55 template< class Field >\n+_\b5_\b6 Field _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bU_\bn_\bi_\bt_\by_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &u, const Field &f )\n+57 {\n+58 return (Field)u / f;\n+59 }\n+60\n+61\n+62\n+63 // Zero\n+64 // ----\n+65\n+77 template< class Field >\n+_\b7_\b8 struct _\bZ_\be_\br_\bo\n+79 {\n+_\b8_\b0 operator Field () const\n+81 {\n+82 return Field( 0 );\n+83 }\n+_\b8_\b4 static const Field _\be_\bp_\bs_\bi_\bl_\bo_\bn()\n+85 {\n+86 return Field(1e-12);\n+87 }\n+88 };\n+89\n+90#if HAVE_GMP\n+91 template< unsigned int precision >\n+92 struct Zero< GMPField< precision > >\n+93 {\n+94 typedef GMPField< precision > Field;\n+95 operator Field () const\n+96 {\n+97 return Field( 0 );\n+98 }\n+99 static const Field _\be_\bp_\bs_\bi_\bl_\bo_\bn()\n+100 {\n+101 return Field(1e-20);\n+102 }\n+103 };\n+104#endif\n+105\n+106 template< class Field >\n+_\b1_\b0_\b7 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b ( const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &, const Field &f )\n+108 {\n+109 return ( f < _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn() && f > -_\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn() );\n+110 }\n+111\n+112 template< class Field >\n+_\b1_\b1_\b3 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b ( const Field &f, const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &z)\n+114 {\n+115 return ( z == f );\n+116 }\n+117\n+118 template< class Field >\n+_\b1_\b1_\b9 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &, const Field &f )\n+120 {\n+121 return f > _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn();\n+122 }\n+123\n+124 template< class Field >\n+_\b1_\b2_\b5 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b ( const Field &f, const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> & )\n+126 {\n+127 return f < -_\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn();\n+128 }\n+129\n+130 template< class Field >\n+_\b1_\b3_\b1 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b>_\b ( const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &z, const Field &f )\n+132 {\n+133 return f < z;\n+134 }\n+135\n+136 template< class Field >\n+_\b1_\b3_\b7 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b>_\b ( const Field &f, const _\bZ_\be_\br_\bo_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b> &z )\n+138 {\n+139 return z < f;\n+140 }\n+141\n+142\n+143 // field_cast\n+144 // ----------\n+145\n+158 template< class F2, class F1 >\n+_\b1_\b5_\b9 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const F1 &f1, F2 &f2 )\n+160 {\n+161 f2 = f1;\n+162 }\n+163\n+164#if HAVE_GMP\n+165 template< unsigned int precision >\n+166 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::GMPField< precision > &f1, double &f2\n+)\n+167 {\n+168 f2 = f1.get_d();\n+169 }\n+170\n+171 template< unsigned int precision >\n+172 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::GMPField< precision > &f1, long double\n+&f2 )\n+173 {\n+174 f2 = f1.get_d();\n+175 }\n+176#endif\n+177\n+178 template< class F2, class F1, int dim >\n+_\b1_\b7_\b9 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldVector< F1, dim > &f1, Dune::\n+FieldVector< F2, dim > &f2 )\n+180 {\n+181 for( int d = 0; d < dim; ++d )\n+182 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ d ], f2[ d ] );\n+183 }\n+184 template< class F2, class F1 >\n+_\b1_\b8_\b5 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldVector< F1, 1 > &f1, F2 &f2 )\n+186 {\n+187 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ], f2 );\n+188 }\n+189 template< class F2, class F1 >\n+_\b1_\b9_\b0 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const F1 &f1, Dune::FieldVector< F2, 1 > &f2 )\n+191 {\n+192 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1, f2[ 0 ] );\n+193 }\n+194\n+195 template< class F2, class F1, int rdim, int cdim >\n+_\b1_\b9_\b6 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldMatrix< F1, rdim, cdim > &f1,\n+Dune::FieldMatrix< F2, rdim, cdim > &f2 )\n+197 {\n+198 for( int r = 0; r < rdim; ++r )\n+199 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ r ], f2[ r ] );\n+200 }\n+201 template< class F2, class F1 >\n+_\b2_\b0_\b2 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldMatrix &f1, Dune::\n+FieldMatrix< F2, 1,1 > &f2 )\n+203 {\n+204 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ][ 0 ], f2[ 0 ][ 0 ] );\n+205 }\n+206 template< class F2, class F1 >\n+_\b2_\b0_\b7 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldMatrix< F1, 1,1 > &f1, F2 &f2 )\n+208 {\n+209 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ][ 0 ], f2 );\n+210 }\n+211 template< class F2, class F1 >\n+_\b2_\b1_\b2 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const F1 &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )\n+213 {\n+214 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1, f2[ 0 ][ 0 ] );\n+215 }\n+216 template< class F2, class F1 >\n+_\b2_\b1_\b7 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldVector &f1, Dune::\n+FieldMatrix< F2, 1,1 > &f2 )\n+218 {\n+219 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ], f2[ 0 ][ 0 ] );\n+220 }\n+221 template< class F2, class F1 >\n+_\b2_\b2_\b2 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldMatrix &f1, Dune::\n+FieldVector< F2, 1 > &f2 )\n+223 {\n+224 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ][ 0 ], f2[ 0 ] );\n+225 }\n+226\n+227 template< class F2, class F1 >\n+_\b2_\b2_\b8 inline void _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const Dune::FieldVector< F1, 1 > &f1, Dune::\n+FieldVector &f2 )\n+229 {\n+230 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1[ 0 ], f2[ 0 ] );\n+231 }\n+232\n+233 template< class F2,class V >\n+_\b2_\b3_\b4 struct _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt\n+235 {\n+_\b2_\b3_\b6 typedef F2 _\bt_\by_\bp_\be;\n+237 };\n+238 template< class F2,class F1,int dim >\n+_\b2_\b3_\b9 struct _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt< F2, _\bD_\bu_\bn_\be::FieldVector >\n+240 {\n+_\b2_\b4_\b1 typedef Dune::FieldVector _\bt_\by_\bp_\be;\n+242 };\n+243 template< class F2,class F1,int dim1, int dim2>\n+_\b2_\b4_\b4 struct _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt< F2, _\bD_\bu_\bn_\be::FieldMatrix >\n+245 {\n+_\b2_\b4_\b6 typedef Dune::FieldMatrix _\bt_\by_\bp_\be;\n+247 };\n+248 template< class F2,class V >\n+_\b2_\b4_\b9 inline typename _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\bF_\b2_\b,_\bV_\b>_\b:_\b:_\bt_\by_\bp_\be _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt ( const V &f1 )\n+250 {\n+251 typename _\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\bF_\b2_\b,_\bV_\b>_\b:_\b:_\bt_\by_\bp_\be f2;\n+252 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( f1, f2 );\n+253 return f2;\n+254 }\n+255\n+256\n+257 // Precision\n+258 // this is not a perfect solution to obtain the\n+259 // precision of a field - definition is not clear\n+260 // to be removed\n+261 // ---------\n+262\n+263 template \n+_\b2_\b6_\b4 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn;\n+265\n+266 template<>\n+_\b2_\b6_\b7 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn< double >\n+268 {\n+_\b2_\b6_\b9 static const unsigned int value = 64;\n+270 };\n+271\n+272 template<>\n+_\b2_\b7_\b3 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn< long double >\n+274 {\n+_\b2_\b7_\b5 static const unsigned int value = 80;\n+276 };\n+277\n+278 template<>\n+_\b2_\b7_\b9 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn< float >\n+280 {\n+_\b2_\b8_\b1 static const unsigned int value = 32;\n+282 };\n+283\n+284#if HAVE_GMP\n+285 template< unsigned int precision >\n+286 struct _\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn< GMPField< precision > >\n+287 {\n+288 static const unsigned int value = precision;\n+289 };\n+290#endif\n+291\n+292 // ComputeField\n+293 // ------------\n+294\n+295 template \n+_\b2_\b9_\b6 struct _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd\n+297 {\n+_\b2_\b9_\b8 typedef Field _\bT_\by_\bp_\be;\n+299 };\n+300\n+301#if HAVE_GMP\n+302 template< unsigned int precision, unsigned int sum >\n+303 struct _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd< GMPField< precision >, sum >\n+304 {\n+305 typedef GMPField _\bT_\by_\bp_\be;\n+306 };\n+307#endif\n+308} // namespace Dune\n+309\n+310#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_FIELD_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Raviart-Thomas local finite elements of arbitrary order for simplices of\n-arbitrary dimension.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplex.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n-_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RaviartThomasSimplexLocalFiniteElement(const GeometryType >, unsigned int\n-order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplex.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:423\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-A LocalFiniteElement implementation based on three TopologyFactories providing\n-the LocalBasis,...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< typename BasisF::Object, typename CoeffF::Object,\n-typename InterpolF::Object > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:29\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-\n+Field operator-(const Unity< Field > &u, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n+bool operator<(const Zero< Field > &, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n+bool operator==(const Zero< Field > &, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b>\n+bool operator>(const Zero< Field > &z, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+\n+Field operator+(const Unity< Field > &u, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/\n+Field operator/(const Unity< Field > &u, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n+Field operator*(const Unity< Field > &u, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bU_\bn_\bi_\bt_\by\n+A class representing the unit of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n+A class representing the zero of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo_\b:_\b:_\be_\bp_\bs_\bi_\bl_\bo_\bn\n+static const Field epsilon()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:235\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b:_\b:_\bt_\by_\bp_\be\n+F2 type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\b _\b>_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+Dune::FieldVector< F2, dim > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:241\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bC_\ba_\bs_\bt_\b<_\b _\bF_\b2_\b,_\b _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\b1_\b,_\b _\bd_\bi_\bm_\b2_\b _\b>_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n+Dune::FieldMatrix< F2, dim1, dim2 > type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:246\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:264\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:297\n+_\bD_\bu_\bn_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd_\b:_\b:_\bT_\by_\bp_\be\n+Field Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:298\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas03dlocalcoefficients.hh File Reference\n+dune-localfunctions: basisevaluator.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,46 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    raviartthomas03dlocalcoefficients.hh File Reference
    \n+
    basisevaluator.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <iostream>
    \n-#include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+
    #include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n+#include <dune/localfunctions/utility/multiindex.hh>
    \n+#include <dune/localfunctions/utility/tensor.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT03DLocalCoefficients
    struct  Dune::MonomialEvaluator< B >
     
    struct  Dune::MonomialEvaluator< B >::Iterator< deriv >
     
    struct  Dune::MonomialEvaluator< B >::BaseIterator< Deriv >
     
    struct  Dune::StandardEvaluator< B >
     
    struct  Dune::StandardEvaluator< B >::Iterator< deriv >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,34 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas03dlocalcoefficients.hh File Reference\n-#include \n-#include \n+basisevaluator.hh File Reference\n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bD_\be_\br_\bi_\bv_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bB_\b _\b>_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas03dlocalcoefficients.hh Source File\n+dune-localfunctions: basisevaluator.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,279 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas03dlocalcoefficients.hh
    \n+
    basisevaluator.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_BASISEVALUATOR_HH
    \n+
    6#define DUNE_BASISEVALUATOR_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <iostream>
    \n-
    10#include <vector>
    \n-
    11
    \n-\n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/common/fmatrix.hh>
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12#include <dune/common/typetraits.hh>
    \n
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    \n-\n-
    25 {
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for (std::size_t i=0; i<4; i++)
    \n-
    31 li[i] = LocalKey(i,1,0);
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    \n-
    35 std::size_t size () const
    \n-
    36 {
    \n-
    37 return 4;
    \n-
    38 }
    \n-
    \n+
    14#include <dune/geometry/type.hh>
    \n+
    15
    \n+\n+\n+\n+
    19
    \n+
    20namespace Dune
    \n+
    21{
    \n+
    22 /*******************************************
    \n+
    23 * Should be removed as soon as the Tensor
    \n+
    24 * classes have been revisited. See remarks
    \n+
    25 * in tensor.hh (also hold true here).
    \n+
    26 *******************************************/
    \n+
    27
    \n+
    28
    \n+
    29 template <class B>
    \n+
    \n+\n+
    31 {
    \n+
    32 typedef B Basis;
    \n+
    33 typedef typename Basis::Field Field;
    \n+
    34 typedef typename Basis::DomainVector DomainVector;
    \n+
    35 static const int dimension = Basis::dimension;
    \n+
    36 static const int dimRange = Basis::dimRange;
    \n+
    37
    \n+
    38 typedef std::vector<Field> Container;
    \n
    39
    \n-
    \n-
    41 const LocalKey& localKey (std::size_t i) const
    \n-
    42 {
    \n-
    43 return li[i];
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    46 private:
    \n-
    47 std::vector<LocalKey> li;
    \n-
    48 };
    \n+
    40 template< class Deriv >
    \n+
    41 struct BaseIterator;
    \n+
    42
    \n+
    43 template <unsigned int deriv>
    \n+\n
    49
    \n-
    50}
    \n-
    51
    \n-
    52#endif
    \n-\n+
    \n+
    50 unsigned int size() const
    \n+
    51 {
    \n+
    52 return size_;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    55 protected:
    \n+
    \n+
    56 MonomialEvaluator(const Basis &basis,unsigned int order,unsigned int size)
    \n+
    57 : basis_(basis),
    \n+
    58 order_(order),
    \n+
    59 size_(size),
    \n+
    60 container_(0)
    \n+
    61 {}
    \n+
    \n+
    62 template <int deriv>
    \n+
    \n+
    63 void resize()
    \n+
    64 {
    \n+\n+
    66 container_.resize(totalSize);
    \n+
    67 }
    \n+
    \n+\n+
    69 const Basis &basis_;
    \n+
    70 unsigned int order_,size_;
    \n+\n+
    72 };
    \n+
    \n+
    73
    \n+
    74
    \n+
    75 template< class B >
    \n+
    76 template< class Deriv >
    \n+
    \n+\n+
    78 {
    \n+
    79 typedef Deriv Derivatives;
    \n+
    80 typedef typename Deriv::Field Field;
    \n+
    81 static const unsigned int blockSize = Deriv::size;
    \n+
    82 typedef Dune::FieldVector<Field,blockSize> Block;
    \n+
    83 static const DerivativeLayoutNS::DerivativeLayout layout = Deriv::layout;
    \n+
    84 static const unsigned int dimDomain = Deriv::dimDomain;
    \n+
    85 static const unsigned int dimRange = Deriv::dimRange;
    \n+
    86
    \n+
    87 typedef std::vector<Field> Container;
    \n+
    88 typedef typename Container::iterator CIter;
    \n+
    89
    \n+
    \n+
    90 explicit BaseIterator ( Container &container )
    \n+
    91 : pos_( container.begin() ),
    \n+
    92 end_( container.end() )
    \n+
    93 {}
    \n+
    \n+
    94
    \n+
    \n+
    95 const Deriv &operator*() const
    \n+
    96 {
    \n+
    97 assert(!done());
    \n+
    98 return reinterpret_cast<const Deriv&>(*pos_);
    \n+
    99 }
    \n+
    \n+
    100
    \n+
    \n+
    101 const Deriv *operator->() const
    \n+
    102 {
    \n+
    103 return &(operator*());
    \n+
    104 }
    \n+
    \n+
    105
    \n+
    \n+
    106 bool done () const
    \n+
    107 {
    \n+
    108 return pos_ == end_;
    \n+
    109 }
    \n+
    \n+
    110
    \n+
    \n+
    111 BaseIterator &operator++ ()
    \n+
    112 {
    \n+
    113 pos_ += blockSize;
    \n+
    114 return *this;
    \n+
    115 }
    \n+
    \n+
    116
    \n+
    \n+
    117 BaseIterator &operator+= ( unsigned int skip )
    \n+
    118 {
    \n+
    119 pos_ += skip*blockSize;
    \n+
    120 return *this;
    \n+
    121 }
    \n+
    \n+
    122
    \n+
    123 private:
    \n+
    124 CIter pos_;
    \n+
    125 const CIter end_;
    \n+
    126 };
    \n+
    \n+
    127
    \n+
    128 template< class B >
    \n+
    \n+\n+
    130 : public MonomialEvaluator< B >
    \n+
    131 {
    \n+
    132 typedef B Basis;
    \n+
    133 typedef typename Basis::Field Field;
    \n+
    134 typedef typename Basis::DomainVector DomainVector;
    \n+
    135 typedef std::vector<Field> Container;
    \n+
    136 static const int dimension = Basis::dimension;
    \n+
    137 static const int dimRange = Basis::dimRange;
    \n+\n+
    139
    \n+
    140 template <unsigned int deriv>
    \n+
    \n+
    141 struct Iterator : public Base::template Iterator<deriv>
    \n+
    142 {};
    \n+
    \n+
    143
    \n+
    \n+\n+
    145 : Base(basis,basis.order(),basis.size())
    \n+
    146 {}
    \n+
    \n+
    147 template <unsigned int deriv,class DVector>
    \n+
    \n+
    148 typename Iterator<deriv>::All evaluate(const DVector &x)
    \n+
    149 {
    \n+
    150 Base::template resize<deriv>();
    \n+
    151 basis_.template evaluate<deriv>(x,&(container_[0]));
    \n+
    152 return typename Iterator<deriv>::All(container_);
    \n+
    153 }
    \n+
    \n+
    \n+\n+
    155 {
    \n+
    156 Base::template resize<0>();
    \n+
    157 basis_.integrate(&(container_[0]));
    \n+
    158 return typename Iterator<0>::Integrate(container_);
    \n+
    159 }
    \n+
    \n+
    160
    \n+
    161 protected:
    \n+
    \n+
    162 StandardEvaluator ( const Basis &basis, unsigned int size )
    \n+
    163 : Base( basis, basis.order(), size )
    \n+
    164 {}
    \n+
    \n+
    165
    \n+
    166 private:
    \n+\n+
    168 using Base::basis_;
    \n+
    169 using Base::container_;
    \n+
    170 };
    \n+
    \n+
    171
    \n+
    172}
    \n+
    173
    \n+
    174#endif
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Definition raviartthomas03dlocalcoefficients.hh:25
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas03dlocalcoefficients.hh:41
    \n-
    RT03DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas03dlocalcoefficients.hh:28
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas03dlocalcoefficients.hh:35
    \n+
    Field operator*(const Unity< Field > &u, const Field &f)
    Definition field.hh:50
    \n+
    DerivativeLayout
    Definition tensor.hh:176
    \n+
    Definition basisevaluator.hh:31
    \n+
    static const int dimRange
    Definition basisevaluator.hh:36
    \n+
    B Basis
    Definition basisevaluator.hh:32
    \n+
    unsigned int order_
    Definition basisevaluator.hh:70
    \n+
    const Basis & basis_
    Definition basisevaluator.hh:69
    \n+
    MonomialEvaluator(const Basis &basis, unsigned int order, unsigned int size)
    Definition basisevaluator.hh:56
    \n+
    Basis::Field Field
    Definition basisevaluator.hh:33
    \n+
    unsigned int size_
    Definition basisevaluator.hh:70
    \n+
    Basis::DomainVector DomainVector
    Definition basisevaluator.hh:34
    \n+
    void resize()
    Definition basisevaluator.hh:63
    \n+
    Container container_
    Definition basisevaluator.hh:71
    \n+
    unsigned int size() const
    Definition basisevaluator.hh:50
    \n+
    std::vector< Field > Container
    Definition basisevaluator.hh:38
    \n+
    MonomialEvaluator(const MonomialEvaluator &)
    \n+
    static const int dimension
    Definition basisevaluator.hh:35
    \n+
    Definition basisevaluator.hh:78
    \n+
    BaseIterator(Container &container)
    Definition basisevaluator.hh:90
    \n+
    const Deriv & operator*() const
    Definition basisevaluator.hh:95
    \n+
    Dune::FieldVector< Field, blockSize > Block
    Definition basisevaluator.hh:82
    \n+
    bool done() const
    Definition basisevaluator.hh:106
    \n+
    Container::iterator CIter
    Definition basisevaluator.hh:88
    \n+
    const Deriv * operator->() const
    Definition basisevaluator.hh:101
    \n+
    Deriv Derivatives
    Definition basisevaluator.hh:79
    \n+
    std::vector< Field > Container
    Definition basisevaluator.hh:87
    \n+
    Deriv::Field Field
    Definition basisevaluator.hh:80
    \n+
    Definition basisevaluator.hh:45
    \n+
    BaseIterator< Derivatives< Field, dimension, 1, 0, DerivativeLayoutNS::value > > Integrate
    Definition basisevaluator.hh:47
    \n+
    BaseIterator< Derivatives< Field, dimension, dimRange, deriv, DerivativeLayoutNS::derivative > > All
    Definition basisevaluator.hh:46
    \n+
    Definition basisevaluator.hh:131
    \n+
    Basis::Field Field
    Definition basisevaluator.hh:133
    \n+
    Basis::DomainVector DomainVector
    Definition basisevaluator.hh:134
    \n+
    Iterator< deriv >::All evaluate(const DVector &x)
    Definition basisevaluator.hh:148
    \n+
    MonomialEvaluator< B > Base
    Definition basisevaluator.hh:138
    \n+
    StandardEvaluator(const Basis &basis)
    Definition basisevaluator.hh:144
    \n+
    static const int dimRange
    Definition basisevaluator.hh:137
    \n+
    std::vector< Field > Container
    Definition basisevaluator.hh:135
    \n+
    Iterator< 0 >::Integrate integrate()
    Definition basisevaluator.hh:154
    \n+
    B Basis
    Definition basisevaluator.hh:132
    \n+
    StandardEvaluator(const Basis &basis, unsigned int size)
    Definition basisevaluator.hh:162
    \n+
    static const int dimension
    Definition basisevaluator.hh:136
    \n+
    Definition basisevaluator.hh:142
    \n+
    Definition tensor.hh:180
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,77 +1,323 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n-raviartthomas03dlocalcoefficients.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+basisevaluator.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_BASISEVALUATOR_HH\n+6#define DUNE_BASISEVALUATOR_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+8#include \n+9\n+10#include \n+11#include \n+12#include \n 13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-_\b2_\b4 class _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-25 {\n-26 public:\n-_\b2_\b8 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(4)\n-29 {\n-30 for (std::size_t i=0; i<4; i++)\n-31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-32 }\n-33\n-_\b3_\b5 std::size_t _\bs_\bi_\bz_\be () const\n-36 {\n-37 return 4;\n-38 }\n+14#include \n+15\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n+19\n+20namespace _\bD_\bu_\bn_\be\n+21{\n+22 /*******************************************\n+23 * Should be removed as soon as the Tensor\n+24 * classes have been revisited. See remarks\n+25 * in tensor.hh (also hold true here).\n+26 *******************************************/\n+27\n+28\n+29 template \n+_\b3_\b0 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+31 {\n+_\b3_\b2 typedef B _\bB_\ba_\bs_\bi_\bs;\n+_\b3_\b3 typedef typename Basis::Field _\bF_\bi_\be_\bl_\bd;\n+_\b3_\b4 typedef typename Basis::DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+_\b3_\b5 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Basis::dimension;\n+_\b3_\b6 static const int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Basis::dimRange;\n+37\n+_\b3_\b8 typedef std::vector _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br;\n 39\n-_\b4_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-42 {\n-43 return li[i];\n-44 }\n-45\n-46 private:\n-47 std::vector li;\n+40 template< class Deriv >\n+41 struct _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br;\n+42\n+43 template \n+_\b4_\b4 struct _\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+45 {\n+_\b4_\b6 typedef\n+_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> > _\bA_\bl_\bl;\n+_\b4_\b7 typedef _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b1_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b> > _\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\be;\n 48 };\n 49\n-50}\n-51\n-52#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\b5_\b0 unsigned int _\bs_\bi_\bz_\be() const\n+51 {\n+52 return _\bs_\bi_\bz_\be_\b_;\n+53 }\n+54\n+55 protected:\n+_\b5_\b6 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(const _\bB_\ba_\bs_\bi_\bs &basis,unsigned int order,unsigned int _\bs_\bi_\bz_\be)\n+57 : _\bb_\ba_\bs_\bi_\bs_\b_(basis),\n+58 _\bo_\br_\bd_\be_\br_\b_(order),\n+59 _\bs_\bi_\bz_\be_\b_(_\bs_\bi_\bz_\be),\n+60 _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_(0)\n+61 {}\n+62 template \n+_\b6_\b3 void _\br_\be_\bs_\bi_\bz_\be()\n+64 {\n+65 const int totalSize =\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>_\b:_\b:\n+_\bs_\bi_\bz_\be*_\bs_\bi_\bz_\be_\b_;\n+66 _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_.resize(totalSize);\n+67 }\n+_\b6_\b8 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br&);\n+_\b6_\b9 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs_\b_;\n+_\b7_\b0 unsigned int _\bo_\br_\bd_\be_\br_\b_,_\bs_\bi_\bz_\be_\b_;\n+_\b7_\b1 _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_;\n+72 };\n+73\n+74\n+75 template< class B >\n+76 template< class Deriv >\n+_\b7_\b7 struct _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br< B >::_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+78 {\n+_\b7_\b9 typedef Deriv _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs;\n+_\b8_\b0 typedef typename Deriv::Field _\bF_\bi_\be_\bl_\bd;\n+_\b8_\b1 static const unsigned int blockSize = Deriv::size;\n+_\b8_\b2 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n+_\b8_\b3 static const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt layout = Deriv::layout;\n+_\b8_\b4 static const unsigned int dimDomain = Deriv::dimDomain;\n+_\b8_\b5 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Deriv::dimRange;\n+86\n+_\b8_\b7 typedef std::vector _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br;\n+_\b8_\b8 typedef typename Container::iterator _\bC_\bI_\bt_\be_\br;\n+89\n+_\b9_\b0 explicit _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br ( _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br &container )\n+91 : pos_( container.begin() ),\n+92 end_( container.end() )\n+93 {}\n+94\n+_\b9_\b5 const Deriv &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*() const\n+96 {\n+97 assert(!done());\n+98 return reinterpret_cast(*pos_);\n+99 }\n+100\n+_\b1_\b0_\b1 const Deriv *_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>() const\n+102 {\n+103 return &(_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*());\n+104 }\n+105\n+_\b1_\b0_\b6 bool _\bd_\bo_\bn_\be () const\n+107 {\n+108 return pos_ == end_;\n+109 }\n+110\n+_\b1_\b1_\b1 _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &operator++ ()\n+112 {\n+113 pos_ += blockSize;\n+114 return *this;\n+115 }\n+116\n+_\b1_\b1_\b7 _\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br &operator+= ( unsigned int skip )\n+118 {\n+119 pos_ += skip*blockSize;\n+120 return *this;\n+121 }\n+122\n+123 private:\n+124 CIter pos_;\n+125 const CIter end_;\n+126 };\n+127\n+128 template< class B >\n+_\b1_\b2_\b9 struct _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+130 : public _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br< B >\n+131 {\n+_\b1_\b3_\b2 typedef B _\bB_\ba_\bs_\bi_\bs;\n+_\b1_\b3_\b3 typedef typename Basis::Field _\bF_\bi_\be_\bl_\bd;\n+_\b1_\b3_\b4 typedef typename Basis::DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+_\b1_\b3_\b5 typedef std::vector _\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br;\n+_\b1_\b3_\b6 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Basis::dimension;\n+_\b1_\b3_\b7 static const int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Basis::dimRange;\n+_\b1_\b3_\b8 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\bB_\b> _\bB_\ba_\bs_\be;\n+139\n+140 template \n+_\b1_\b4_\b1 struct _\bI_\bt_\be_\br_\ba_\bt_\bo_\br : public Base::template _\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+142 {};\n+143\n+_\b1_\b4_\b4 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(const _\bB_\ba_\bs_\bi_\bs &basis)\n+145 : _\bB_\ba_\bs_\be(basis,basis.order(),basis._\bs_\bi_\bz_\be())\n+146 {}\n+147 template \n+_\b1_\b4_\b8 typename _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bd_\be_\br_\bi_\bv_\b>_\b:_\b:_\bA_\bl_\bl _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DVector &x)\n+149 {\n+150 Base::template resize();\n+151 basis_.template evaluate(x,&(container_[0]));\n+152 return typename _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\bd_\be_\br_\bi_\bv_\b>_\b:_\b:_\bA_\bl_\bl(container_);\n+153 }\n+_\b1_\b5_\b4 typename _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b0_\b>_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\be _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be()\n+155 {\n+156 Base::template resize<0>();\n+157 basis_.integrate(&(container_[0]));\n+158 return typename _\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b<_\b0_\b>_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\be(container_);\n+159 }\n+160\n+161 protected:\n+_\b1_\b6_\b2 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br ( const _\bB_\ba_\bs_\bi_\bs &basis, unsigned int _\bs_\bi_\bz_\be )\n+163 : _\bB_\ba_\bs_\be( basis, basis.order(), _\bs_\bi_\bz_\be )\n+164 {}\n+165\n+166 private:\n+167 _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(const _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br&);\n+168 using _\bB_\ba_\bs_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_;\n+169 using _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_;\n+170 };\n+171\n+172}\n+173\n+174#endif\n+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT03DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n+Field operator*(const Unity< Field > &u, const Field &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt\n+DerivativeLayout\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const int dimRange\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+B Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n+unsigned int order_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_\n+const Basis & basis_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+MonomialEvaluator(const Basis &basis, unsigned int order, unsigned int size)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+Basis::Field Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be_\b_\n+unsigned int size_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+Basis::DomainVector DomainVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bc_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b_\n+Container container_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+std::vector< Field > Container\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+MonomialEvaluator(const MonomialEvaluator &)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+BaseIterator(Container &container)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*\n+const Deriv & operator*() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n+Dune::FieldVector< Field, blockSize > Block\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bo_\bn_\be\n+bool done() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bI_\bt_\be_\br\n+Container::iterator CIter\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b>\n+const Deriv * operator->() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+Deriv Derivatives\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+std::vector< Field > Container\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+Deriv::Field Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n+BaseIterator< Derivatives< Field, dimension, 1, 0, DerivativeLayoutNS::value >\n+> Integrate\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br_\b:_\b:_\bA_\bl_\bl\n+BaseIterator< Derivatives< Field, dimension, dimRange, deriv,\n+DerivativeLayoutNS::derivative > > All\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+Basis::Field Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+Basis::DomainVector DomainVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:134\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+Iterator< deriv >::All evaluate(const DVector &x)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:148\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\be\n+MonomialEvaluator< B > Base\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+StandardEvaluator(const Basis &basis)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:144\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const int dimRange\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:137\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+std::vector< Field > Container\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n+Iterator< 0 >::Integrate integrate()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:154\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+B Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+StandardEvaluator(const Basis &basis, unsigned int size)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:162\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:136\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bt_\be_\br_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:142\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:180\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas03dlocalbasis.hh File Reference\n+dune-localfunctions: tensor.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,132 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas03dlocalbasis.hh File Reference
    \n+Namespaces |\n+Enumerations |\n+Functions
    \n+
    tensor.hh File Reference
    \n \n
    \n-
    #include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n+
    #include <ostream>
    \n+#include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT03DLocalBasis< D, R >
    class  Dune::LFETensor< F, dimD, deriv >
     
    struct  Dune::FieldTraits< LFETensor< F, dimD, deriv > >
     
    struct  Dune::LFETensor< F, 0, deriv >
     
    struct  Dune::LFETensor< F, 0, 0 >
     
    class  Dune::LFETensor< F, dimD, 0 >
     
    struct  Dune::FieldTraits< Derivatives< F, dimD, dimR, deriv, layout > >
     
    struct  Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value >
     
    struct  Dune::Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value >
     
    struct  Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative >
     
    struct  Dune::LFETensorAxpy< Vec1, Vec2, deriv >
     
    struct  Dune::LFETensorAxpy< Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value >, Vec2, deriv >
     
    struct  Dune::LFETensorAxpy< Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative >, Vec2, deriv >
     
    struct  Dune::LFETensorAxpy< Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivative >, Vec2, deriv >
     
    struct  Dune::LFETensorAxpy< Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value >, Vec2, deriv >
     
    struct  Dune::DerivativeAssign< Vec1, Vec2 >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, layout >, Derivatives< F2, dimD, dimR, deriv, layout > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, layout >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, layout >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, layout >, F2 >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value >, FieldVector< F2, dimR > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, dimR > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, FieldVector< F2, dimR > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, dimR > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, FieldVector< F2, 1 > >
     
    struct  Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, 1 > >
     
    \n \n \n \n+\n+\n+

    \n Namespaces

    namespace  Dune
     
    namespace  Dune::DerivativeLayoutNS
     
    \n+\n+\n+\n+

    \n+Enumerations

    enum  Dune::DerivativeLayoutNS::DerivativeLayout { Dune::DerivativeLayoutNS::value\n+, Dune::DerivativeLayoutNS::derivative\n+ }
     
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    template<class F , int dimD, unsigned int deriv>
    std::ostream & Dune::operator<< (std::ostream &out, const LFETensor< F, dimD, deriv > &tensor)
     
    template<class F , int dimD, int dimR, unsigned int deriv>
    std::ostream & Dune::operator<< (std::ostream &out, const Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &d)
     
    template<class F , int dimD, int dimR, unsigned int deriv>
    std::ostream & Dune::operator<< (std::ostream &out, const Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > &d)
     
    template<class F , int dimD, int dimR>
    std::ostream & Dune::operator<< (std::ostream &out, const Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::derivative > &d)
     
    template<class F , int dimD, int dimR>
    std::ostream & Dune::operator<< (std::ostream &out, const Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > &d)
     
    template<class F , int dimD, int dimR, unsigned int deriv, DerivativeLayoutNS::DerivativeLayout layout>
    std::ostream & Dune::operator<< (std::ostream &out, const std::vector< Derivatives< F, dimD, dimR, deriv, layout > > &y)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,141 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas03dlocalbasis.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bE_\bn_\bu_\bm_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+tensor.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\b0_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\b0_\b,_\b _\b0_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+ _\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bV_\be_\bc_\b1_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+ _\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+ _\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bV_\be_\bc_\b1_\b,_\b _\bV_\be_\bc_\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bF_\b2\n+ _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS\n+\u00a0\n+E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n+enum \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt { _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+ _\bv_\ba_\bl_\bu_\be , _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be }\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br< F, dimD,\n+ deriv > &tensor)\n+\u00a0\n+template\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F,\n+ dimD, dimR, deriv, _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be > &d)\n+\u00a0\n+template\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F,\n+ dimD, dimR, deriv, _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be > &d)\n+\u00a0\n+template\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F,\n+ dimD, dimR, 0, _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be > &d)\n+\u00a0\n+template\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F,\n+ dimD, dimR, 0, _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be > &d)\n+\u00a0\n+template\n+std::ostream &\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b< (std::ostream &out, const std::vector<\n+ _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs< F, dimD, dimR, deriv, layout > > &y)\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas03dlocalbasis.hh Source File\n+dune-localfunctions: tensor.hh Source File\n \n \n \n \n \n \n \n@@ -70,143 +70,1417 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas03dlocalbasis.hh
    \n+
    tensor.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH
    \n-
    7
    \n-
    8#include <numeric>
    \n-
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n+
    5
    \n+
    6#ifndef DUNE_TENSOR_HH
    \n+
    7#define DUNE_TENSOR_HH
    \n+
    8
    \n+
    9#include <ostream>
    \n+
    10#include <vector>
    \n
    11
    \n-\n+
    12#include <dune/common/fvector.hh>
    \n
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n-
    28 public:
    \n-
    29 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n-
    30 Dune::FieldMatrix<R,3,3> > Traits;
    \n-
    31
    \n-
    \n-
    33 RT03DLocalBasis (std::bitset<4> s = 0)
    \n-
    34 {
    \n-
    35 for (int i=0; i<4; i++)
    \n-
    36 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    37 }
    \n-
    \n-
    38
    \n-
    \n-
    40 unsigned int size () const
    \n-
    41 {
    \n-
    42 return 4;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-
    46 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    47 std::vector<typename Traits::RangeType>& out) const
    \n-
    48 {
    \n-
    49 out.resize(4);
    \n-
    50 auto c = std::sqrt(2.0);
    \n-
    51 out[0] = {sign_[0]*c* in[0], sign_[0]*c* in[1], sign_[0]*c*(in[2]-D(1))};
    \n-
    52 out[1] = {sign_[1]*c* in[0], sign_[1]*c*(in[1]-D(1)), sign_[1]*c* in[2] };
    \n-
    53 out[2] = {sign_[2]*c*(in[0]-D(1)), sign_[2]*c* in[1], sign_[2]*c* in[2] };
    \n-
    54 out[3] = {sign_[3]*c* in[0], sign_[3]*c* in[1], sign_[3]*c* in[2] };
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    58 inline void
    \n-
    \n-
    59 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    60 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    61 {
    \n-
    62 out.resize(4);
    \n-
    63 for (int i=0; i<4; i++)
    \n-
    64 {
    \n-
    65 auto c = std::sqrt(2.0);
    \n-
    66 out[i][0] = {c*sign_[i], 0, 0};
    \n-
    67 out[i][1] = { 0,c*sign_[i], 0};
    \n-
    68 out[i][2] = { 0, 0,c*sign_[i]};
    \n-
    69 }
    \n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18 /***********************************************
    \n+
    19 * The classes here are work in progress.
    \n+
    20 * Basically they provide tensor structures for
    \n+
    21 * higher order derivatives of vector valued function.
    \n+
    22 * Two storage structures are provided
    \n+
    23 * (either based on the components of the vector valued
    \n+
    24 * functions or on the order of the derivative).
    \n+
    25 * Conversions are supplied between the two storage
    \n+
    26 * structures and simple operations, which make the
    \n+
    27 * code difficult to use and requires rewriting...
    \n+
    28 ***************************************************/
    \n+
    29
    \n+
    30 // Structure for scalar tensor of order deriv
    \n+
    31 template <class F,int dimD,unsigned int deriv>
    \n+
    \n+\n+
    33 {
    \n+\n+
    35 typedef LFETensor<F,dimD-1,deriv> BaseDim;
    \n+
    36 typedef LFETensor<F,dimD,deriv-1> BaseDeriv;
    \n+
    37
    \n+
    38 public:
    \n+
    39 typedef F field_type;
    \n+
    40 static const unsigned int size = BaseDim::size+BaseDeriv::size;
    \n+
    41 typedef Dune::FieldVector<F,size> Block;
    \n+
    42
    \n+
    43 template< class FF >
    \n+
    \n+
    44 This &operator= ( const FF &f )
    \n+
    45 {
    \n+
    46 block() = field_cast< F >( f );
    \n+
    47 return *this;
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    \n+
    50 This &operator= ( const Block &b )
    \n+
    51 {
    \n+
    52 block() = b;
    \n+
    53 return *this;
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    \n+\n+
    57 {
    \n+
    58 block() *= f;
    \n+
    59 return *this;
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+
    62 const field_type &operator[] ( const unsigned int i ) const
    \n+
    63 {
    \n+
    64 return block()[ i ];
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    \n+
    67 field_type &operator[] ( const unsigned int i )
    \n+
    68 {
    \n+
    69 return block()[ i ];
    \n
    70 }
    \n
    \n
    71
    \n-
    \n-
    73 void partial (const std::array<unsigned int, 3>& order,
    \n-
    74 const typename Traits::DomainType& in, // position
    \n-
    75 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    76 {
    \n-
    77 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    78 if (totalOrder == 0) {
    \n-
    79 evaluateFunction(in, out);
    \n-
    80 } else if (totalOrder == 1) {
    \n-
    81 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    82 out.resize(size());
    \n-
    83
    \n-
    84 for (int i=0; i<size(); i++)
    \n-
    85 {
    \n-
    86 out[i][direction] = sign_[i]* std::sqrt(2.0) ;
    \n-
    87 out[i][(direction+1)%3] = 0;
    \n-
    88 out[i][(direction+2)%3] = 0;
    \n-
    89 }
    \n-
    90 } else {
    \n-
    91 out.resize(size());
    \n-
    92 for (std::size_t i = 0; i < size(); ++i)
    \n-
    93 for (std::size_t j = 0; j < 3; ++j)
    \n-
    94 out[i][j] = 0;
    \n-
    95 }
    \n-
    96
    \n-
    97 }
    \n-
    \n-
    98
    \n-
    \n-
    100 unsigned int order () const
    \n-
    101 {
    \n-
    102 return 1;
    \n-
    103 }
    \n+
    \n+\n+
    73 {
    \n+
    74 return block_;
    \n+
    75 }
    \n+
    \n+
    \n+
    76 const Block &block() const
    \n+
    77 {
    \n+
    78 return block_;
    \n+
    79 }
    \n+
    \n+
    \n+
    80 void axpy(const F& a, const This &y)
    \n+
    81 {
    \n+
    82 block().axpy(a,y.block());
    \n+
    83 }
    \n+
    \n+
    84 template <class Fy>
    \n+
    \n+\n+
    86 {
    \n+
    87 field_cast(y.block(),block());
    \n+
    88 }
    \n+
    \n+\n+
    90 };
    \n+
    \n+
    91
    \n+
    92
    \n+
    93 template <class F,int dimD,unsigned int deriv>
    \n+
    \n+
    94 struct FieldTraits<LFETensor<F,dimD,deriv>>
    \n+
    95 {
    \n+
    96 using field_type = F;
    \n+
    97 using real_type = typename FieldTraits<field_type>::real_type;
    \n+
    98 };
    \n+
    \n+
    99
    \n+
    100 // ******************************************
    \n+
    101 template <class F,unsigned int deriv>
    \n+
    \n+
    102 struct LFETensor<F,0,deriv>
    \n+
    103 {
    \n+
    104 static const int size = 0;
    \n+
    105 };
    \n
    \n-
    104
    \n-
    105 private:
    \n
    106
    \n-
    107 // Signs of the face normals
    \n-
    108 std::array<R,4> sign_;
    \n-
    109 };
    \n+
    107 template <class F>
    \n+
    \n+
    108 struct LFETensor<F,0,0>
    \n+
    109 {
    \n+
    110 static const int size = 1;
    \n+
    111 };
    \n+
    \n+
    112
    \n+
    113 template <class F,int dimD>
    \n+
    \n+
    114 class LFETensor<F,dimD,0>
    \n+
    115 {
    \n+\n+
    117
    \n+
    118 public:
    \n+
    119 typedef F field_type;
    \n+
    120 static const int size = 1;
    \n+
    121 typedef Dune::FieldVector<F,size> Block;
    \n+
    122
    \n+
    123 template< class FF >
    \n+
    \n+
    124 This &operator= ( const FF &f )
    \n+
    125 {
    \n+
    126 block() = field_cast< F >( f );
    \n+
    127 return *this;
    \n+
    128 }
    \n+
    \n+
    129
    \n+
    \n+
    130 This &operator= ( const Block &b )
    \n+
    131 {
    \n+
    132 block() = b;
    \n+
    133 return *this;
    \n+
    134 }
    \n+
    \n+
    135
    \n+
    \n+\n+
    137 {
    \n+
    138 block() *= f;
    \n+
    139 return *this;
    \n+
    140 }
    \n+
    \n+
    141
    \n+
    \n+
    142 const F &operator[] ( const unsigned int i ) const
    \n+
    143 {
    \n+
    144 return block()[ i ];
    \n+
    145 }
    \n+
    \n+
    146
    \n+
    \n+
    147 F &operator[] ( const unsigned int i )
    \n+
    148 {
    \n+
    149 return block()[ i ];
    \n+
    150 }
    \n+
    \n+
    151
    \n+
    \n+
    152 void axpy(const F& a, const This &y)
    \n+
    153 {
    \n+
    154 block().axpy(a,y.block());
    \n+
    155 }
    \n+
    \n+
    156 template <class Fy>
    \n+
    \n+\n+
    158 {
    \n+
    159 field_cast(y.block(),block());
    \n+
    160 }
    \n+
    \n+
    161
    \n+
    \n+\n+
    163 {
    \n+
    164 return block_;
    \n+
    165 }
    \n+
    \n+
    \n+
    166 const Block &block() const
    \n+
    167 {
    \n+
    168 return block_;
    \n+
    169 }
    \n+
    \n+\n+
    171 };
    \n+
    \n+
    172 // ***********************************************************
    \n+
    173 // Structure for all derivatives up to order deriv
    \n+
    174 // for vector valued function
    \n+
    \n+
    175 namespace DerivativeLayoutNS {
    \n+\n+
    177 }
    \n+
    \n+
    178 template <class F,int dimD,int dimR,unsigned int deriv,
    \n+\n+\n+
    181
    \n+
    182 template <class F,int dimD,int dimR,unsigned int deriv,
    \n+\n+
    \n+
    184 struct FieldTraits<Derivatives<F,dimD,dimR,deriv,layout>>
    \n+
    185 {
    \n+
    186 using field_type = F;
    \n+
    187 using real_type = typename FieldTraits<field_type>::real_type;
    \n+
    188 };
    \n+
    \n+
    189
    \n+
    190 // Implemnetation for valued based layout
    \n+
    191 template <class F,int dimD,int dimR,unsigned int deriv>
    \n+
    \n+
    192 struct Derivatives<F,dimD,dimR,deriv,DerivativeLayoutNS::value>
    \n+
    193 : public Derivatives<F,dimD,dimR,deriv-1,DerivativeLayoutNS::value>
    \n+
    194 {
    \n+\n+
    196 typedef Derivatives<F,dimD,dimR,deriv-1,DerivativeLayoutNS::value> Base;
    \n+\n+
    198
    \n+
    199 typedef F Field;
    \n+
    200 typedef F field_type;
    \n+
    201
    \n+\n+
    203 static const unsigned int dimDomain = dimD;
    \n+
    204 static const unsigned int dimRange = dimR;
    \n+
    205 constexpr static int size = Base::size+ThisLFETensor::size*dimR;
    \n+
    206 typedef Dune::FieldVector<F,size> Block;
    \n+
    207
    \n+
    \n+
    208 This &operator=(const F& f)
    \n+
    209 {
    \n+
    210 block() = f;
    \n+
    211 return *this;
    \n+
    212 }
    \n+
    \n+
    \n+
    213 This &operator=(const Dune::FieldVector<ThisLFETensor,dimR> &t)
    \n+
    214 {
    \n+
    215 tensor_ = t;
    \n+
    216 return *this;
    \n+
    217 }
    \n+
    \n+
    218 template <unsigned int dorder>
    \n+
    \n+
    219 This &operator=(const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &t)
    \n+
    220 {
    \n+
    221 tensor<dorder>() = t;
    \n+
    222 return *this;
    \n+
    223 }
    \n+
    \n+
    \n+\n+
    225 {
    \n+
    226 block() = t;
    \n+
    227 return *this;
    \n+
    228 }
    \n+
    \n+
    229
    \n+
    \n+
    230 This &operator*= ( const field_type &f )
    \n+
    231 {
    \n+
    232 block() *= f;
    \n+
    233 return *this;
    \n+
    234 }
    \n+
    \n+
    235
    \n+
    \n+
    236 void axpy(const F &a, const This &y)
    \n+
    237 {
    \n+
    238 block().axpy(a,y.block());
    \n+
    239 }
    \n+
    \n+
    240
    \n+
    241 // assign with same layout (only different Field)
    \n+
    242 template <class Fy>
    \n+
    \n+\n+
    244 {
    \n+
    245 field_cast(y.block(),block());
    \n+
    246 }
    \n+
    \n+
    247 // assign with different layout (same dimRange)
    \n+
    248 template <class Fy>
    \n+
    \n+\n+
    250 {
    \n+
    251 Base::assign(y);
    \n+
    252 for (int rr=0; rr<dimR; ++rr)
    \n+
    253 tensor_[rr] = y[rr].template tensor<deriv>()[0];
    \n+
    254 }
    \n+
    \n+
    255 // assign with rth component of function
    \n+
    256 template <class Fy,int dimRy>
    \n+
    \n+\n+
    258 {
    \n+
    259 assign<Fy,dimRy>(y.block(),r);
    \n+
    260 }
    \n+
    \n+
    261 // assign with scalar functions to component r
    \n+
    262 template <class Fy>
    \n+
    \n+\n+
    264 {
    \n+
    265 assign(r,y.block());
    \n+
    266 }
    \n+
    \n+
    267 template <class Fy>
    \n+
    \n+\n+
    269 {
    \n+
    270 assign(r,y[0]);
    \n+
    271 }
    \n+
    \n+
    272
    \n+
    \n+\n+
    274 {
    \n+
    275 return reinterpret_cast<Block&>(*this);
    \n+
    276 }
    \n+
    \n+
    \n+
    277 const Block &block() const
    \n+
    278 {
    \n+
    279 return reinterpret_cast<const Block&>(*this);
    \n+
    280 }
    \n+
    \n+
    281
    \n+
    282 template <unsigned int dorder>
    \n+
    \n+
    283 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &tensor() const
    \n+
    284 {
    \n+
    285 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n+
    286 const std::integral_constant<int,dorder> a = {};
    \n+
    287 return tensor(a);
    \n+
    288 }
    \n+
    \n+
    289 template <unsigned int dorder>
    \n+
    \n+
    290 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &tensor()
    \n+
    291 {
    \n+
    292 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n+
    293 return tensor(std::integral_constant<int,dorder>());
    \n+
    294 }
    \n+
    \n+
    295 template <unsigned int dorder>
    \n+
    \n+
    296 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block() const
    \n+
    297 {
    \n+
    298 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n+
    299 const std::integral_constant<int,dorder> a = {};
    \n+
    300 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n+
    301 }
    \n+
    \n+
    302 template <unsigned int dorder>
    \n+
    \n+
    303 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block()
    \n+
    304 {
    \n+
    305 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n+
    306 const std::integral_constant<int,dorder> a = {};
    \n+
    307 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n+
    308 }
    \n+
    \n+
    \n+\n+
    310 return tensor_[r];
    \n+
    311 }
    \n+
    \n+
    \n+
    312 const ThisLFETensor &operator[](int r) const {
    \n+
    313 return tensor_[r];
    \n+
    314 }
    \n+
    \n+
    315 protected:
    \n+
    316 template <class Fy,int dimRy>
    \n+
    \n+
    317 void assign(const FieldVector<Fy,size*dimRy> &y,unsigned int r)
    \n+
    318 {
    \n+
    319 Base::template assign<Fy,dimRy>(reinterpret_cast<const FieldVector<Fy,Base::size*dimRy>&>(y),r);
    \n+
    320 tensor_[0] = reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&>(y[Base::size*dimRy+r*ThisLFETensor::size]);
    \n+
    321 }
    \n+
    \n+
    322 template <class Fy>
    \n+
    \n+
    323 void assign(unsigned int r,const FieldVector<Fy,size/dimR> &y)
    \n+
    324 {
    \n+
    325 Base::assign(r,reinterpret_cast<const FieldVector<Fy,Base::size/dimR>&>(y));
    \n+
    326 tensor_[r] = reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&>(y[Base::size/dimR]);
    \n+
    327 }
    \n+
    \n+
    328 // assign with different layout (same dimRange)
    \n+
    329 template <class Fy,unsigned int dy>
    \n+
    \n+\n+
    331 {
    \n+
    332 Base::assign(y);
    \n+
    333 for (int rr=0; rr<dimR; ++rr)
    \n+
    334 tensor_[rr] = y[rr].template tensor<deriv>()[0];
    \n+
    335 }
    \n+
    \n+
    336
    \n+
    337 template <int dorder>
    \n+
    338 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
    \n+
    \n+
    339 tensor(const std::integral_constant<int,dorder> &dorderVar) const
    \n+
    340 {
    \n+
    341 return Base::tensor(dorderVar);
    \n+
    342 }
    \n+
    \n+
    343 const Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
    \n+
    \n+
    344 tensor(const std::integral_constant<int,deriv> &dorderVar) const
    \n+
    345 {
    \n+
    346 return tensor_;
    \n+
    347 }
    \n+
    \n+
    348 template <int dorder>
    \n+
    349 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
    \n+
    \n+
    350 tensor(const std::integral_constant<int,dorder> &dorderVar)
    \n+
    351 {
    \n+
    352 return Base::tensor(dorderVar);
    \n+
    353 }
    \n+
    \n+
    354 Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
    \n+
    \n+
    355 tensor(const std::integral_constant<int,deriv> &dorderVar)
    \n+
    356 {
    \n+
    357 return tensor_;
    \n+
    358 }
    \n+
    \n+
    359 Dune::FieldVector<ThisLFETensor,dimR> tensor_;
    \n+
    360 };
    \n+
    \n+
    361
    \n+
    362 template <class F,int dimD,int dimR>
    \n+
    \n+
    363 struct Derivatives<F,dimD,dimR,0,DerivativeLayoutNS::value>
    \n+
    364 {
    \n+\n+\n+
    367
    \n+
    368 typedef F Field;
    \n+
    369 typedef F field_type;
    \n+
    370
    \n+\n+
    372 static const unsigned int dimDomain = dimD;
    \n+
    373 static const unsigned int dimRange = dimR;
    \n+
    374 constexpr static int size = ThisLFETensor::size*dimR;
    \n+
    375 typedef Dune::FieldVector<F,size> Block;
    \n+
    376
    \n+
    377 template <class FF>
    \n+
    \n+
    378 This &operator=(const FF& f)
    \n+
    379 {
    \n+
    380 for (int r=0; r<dimR; ++r)
    \n+
    381 tensor_[r] = field_cast<F>(f);
    \n+
    382 return *this;
    \n+
    383 }
    \n+
    \n+
    \n+
    384 This &operator=(const Dune::FieldVector<ThisLFETensor,dimR> &t)
    \n+
    385 {
    \n+
    386 tensor_ = t;
    \n+
    387 return *this;
    \n+
    388 }
    \n+
    \n+
    389
    \n+
    \n+\n+
    391 {
    \n+
    392 block() = t;
    \n+
    393 return *this;
    \n+
    394 }
    \n+
    \n+
    395
    \n+
    \n+
    396 This &operator*= ( const field_type &f )
    \n+
    397 {
    \n+
    398 block() *= f;
    \n+
    399 return *this;
    \n+
    400 }
    \n+
    \n+
    401
    \n+
    \n+
    402 void axpy(const F &a, const This &y)
    \n+
    403 {
    \n+
    404 block().axpy(a,y.block());
    \n+
    405 }
    \n+
    \n+
    406 template <class Fy>
    \n+
    \n+\n+
    408 {
    \n+
    409 field_cast(y.block(),block());
    \n+
    410 }
    \n+
    \n+
    411 template <class Fy>
    \n+
    \n+\n+
    413 {
    \n+
    414 for (int rr=0; rr<dimR; ++rr)
    \n+
    415 tensor_[rr] = y[rr].template tensor<0>()[0];
    \n+
    416 }
    \n+
    \n+
    417 template <class Fy,int dimRy>
    \n+
    \n+\n+
    419 {
    \n+
    420 assign<Fy,dimRy>(y.block(),r);
    \n+
    421 }
    \n+
    \n+
    422 template <class Fy>
    \n+
    \n+\n+
    424 {
    \n+
    425 tensor_[r].assign(y[0]);
    \n+
    426 }
    \n+
    \n+
    427 template <class Fy>
    \n+
    \n+\n+
    429 {
    \n+
    430 tensor_[r].assign(y[0][0]);
    \n+
    431 }
    \n+
    \n+
    432
    \n+
    \n+\n+
    434 {
    \n+
    435 return reinterpret_cast<Block&>(*this);
    \n+
    436 }
    \n+
    \n+
    \n+
    437 const Block &block() const
    \n+
    438 {
    \n+
    439 return reinterpret_cast<const Block&>(*this);
    \n+
    440 }
    \n+
    \n+
    441
    \n+
    \n+\n+
    443 return tensor_[r];
    \n+
    444 }
    \n+
    \n+
    \n+
    445 const ThisLFETensor &operator[](int r) const {
    \n+
    446 return tensor_[r];
    \n+
    447 }
    \n+
    \n+
    448 template <int dorder>
    \n+
    \n+
    449 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &tensor() const
    \n+
    450 {
    \n+
    451 return tensor_;
    \n+
    452 }
    \n+
    \n+
    \n+
    453 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &tensor()
    \n+
    454 {
    \n+
    455 return tensor_;
    \n+
    456 }
    \n+
    \n+
    457 template <unsigned int dorder>
    \n+
    \n+
    458 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block() const
    \n+
    459 {
    \n+
    460 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n+
    461 const std::integral_constant<int,dorder> a = {};
    \n+
    462 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n+
    463 }
    \n+
    \n+
    464 template <unsigned int dorder>
    \n+
    \n+
    465 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block()
    \n+
    466 {
    \n+
    467 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n+
    468 const std::integral_constant<int,dorder> a = {};
    \n+
    469 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n+
    470 }
    \n+
    \n+
    471
    \n+
    472 protected:
    \n+
    473 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
    \n+
    \n+
    474 tensor(const std::integral_constant<int,0> &dorderVar) const
    \n+
    475 {
    \n+
    476 return tensor_;
    \n+
    477 }
    \n+
    \n+
    478 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
    \n+
    \n+
    479 tensor(const std::integral_constant<int,0> &dorderVar)
    \n+
    480 {
    \n+
    481 return tensor_;
    \n+
    482 }
    \n+
    \n+
    483 template <class Fy,unsigned int dy>
    \n+
    \n+\n+
    485 {
    \n+
    486 for (int rr=0; rr<dimR; ++rr)
    \n+
    487 tensor_[rr] = y[rr].template tensor<0>()[0];
    \n+
    488 }
    \n+
    \n+
    489 template <class Fy,int dimRy>
    \n+
    \n+
    490 void assign(const FieldVector<Fy,size*dimRy> &y,unsigned int r)
    \n+
    491 {
    \n+
    492 tensor_[0] = reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&>(y[r*ThisLFETensor::size]);
    \n+
    493 }
    \n+
    \n+
    494 template <class Fy>
    \n+
    \n+
    495 void assign(unsigned int r,const FieldVector<Fy,size/dimR> &y)
    \n+
    496 {
    \n+
    497 tensor_[r] = y;
    \n+
    498 }
    \n+
    \n+
    499 Dune::FieldVector<ThisLFETensor,dimR> tensor_;
    \n+
    500 };
    \n+
    \n+
    501
    \n+
    502 // Implemnetation for DerivativeLayoutNS::derivative based layout
    \n+
    503 template <class F,int dimD,int dimR,unsigned int deriv>
    \n+
    \n+
    504 struct Derivatives<F,dimD,dimR,deriv,DerivativeLayoutNS::derivative>
    \n+
    505 {
    \n+\n+\n+
    508
    \n+
    509 typedef F Field;
    \n+
    510 typedef F field_type;
    \n+
    511
    \n+\n+
    513 static const unsigned int dimDomain = dimD;
    \n+
    514 static const unsigned int dimRange = dimR;
    \n+
    515 constexpr static int size = ScalarDeriv::size*dimR;
    \n+
    516 typedef Dune::FieldVector<F,size> Block;
    \n+
    517
    \n+
    518 template <class FF>
    \n+
    \n+
    519 This &operator=(const FF& f)
    \n+
    520 {
    \n+
    521 block() = field_cast<F>(f);
    \n+
    522 return *this;
    \n+
    523 }
    \n+
    \n+
    \n+\n+
    525 {
    \n+
    526 block() = t;
    \n+
    527 return *this;
    \n+
    528 }
    \n+
    \n+
    529
    \n+
    \n+
    530 This &operator*= ( const field_type &f )
    \n+
    531 {
    \n+
    532 block() *= f;
    \n+
    533 return *this;
    \n+
    534 }
    \n+
    \n+
    535
    \n+
    536 template <class FF>
    \n+
    \n+
    537 void axpy(const FF &a, const This &y)
    \n+
    538 {
    \n+
    539 block().axpy(field_cast<F>(a),y.block());
    \n+
    540 }
    \n+
    \n+
    541 // assign with same layout (only different Field)
    \n+
    542 template <class Fy>
    \n+
    \n+\n+
    544 {
    \n+
    545 field_cast(y.block(),block());
    \n+
    546 }
    \n+
    \n+
    547 // assign with different layout (same dimRange)
    \n+
    548 template <class Fy>
    \n+
    \n+\n+
    550 {
    \n+
    551 for (unsigned int rr=0; rr<dimR; ++rr)
    \n+
    552 deriv_[rr].assign(y,rr);
    \n+
    553 }
    \n+
    \n+
    554 // assign with scalar functions to component r
    \n+
    555 template <class Fy,DerivativeLayoutNS::DerivativeLayout layouty>
    \n+
    \n+
    556 void assign(unsigned int r,const Derivatives<Fy,dimD,1,deriv,layouty> &y)
    \n+
    557 {
    \n+
    558 deriv_[r].assign(r,y);
    \n+
    559 }
    \n+
    \n+
    560
    \n+
    \n+\n+
    562 {
    \n+
    563 return reinterpret_cast<Block&>(*this);
    \n+
    564 }
    \n+
    \n+
    \n+
    565 const Block &block() const
    \n+
    566 {
    \n+
    567 return reinterpret_cast<const Block&>(*this);
    \n+
    568 }
    \n+
    \n+
    569
    \n+
    \n+\n+
    571 return deriv_[r];
    \n+
    572 }
    \n+
    \n+
    \n+
    573 const ScalarDeriv &operator[](int r) const {
    \n+
    574 return deriv_[r];
    \n+
    575 }
    \n+
    \n+
    576 protected:
    \n+
    577 Dune::FieldVector<ScalarDeriv,dimR> deriv_;
    \n+
    578 };
    \n+
    \n+
    579
    \n+
    580 // ******************************************
    \n+
    581 // AXPY *************************************
    \n+
    582 // ******************************************
    \n+
    583 template <class Vec1,class Vec2,unsigned int deriv>
    \n+
    \n+\n+
    585 {
    \n+
    586 template <class Field>
    \n+
    \n+
    587 static void apply(unsigned int r,const Field &a,
    \n+
    588 const Vec1 &x, Vec2 &y)
    \n+
    589 {
    \n+
    590 y.axpy(a,x);
    \n+
    591 }
    \n+
    \n+
    592 };
    \n+
    \n+
    593 template <class F1,int dimD,int dimR,
    \n+
    594 unsigned int d,
    \n+
    595 class Vec2,
    \n+
    596 unsigned int deriv>
    \n+
    \n+
    597 struct LFETensorAxpy<Derivatives<F1,dimD,dimR,d,DerivativeLayoutNS::value>,Vec2,deriv>
    \n+
    598 {
    \n+\n+
    600 template <class Field>
    \n+
    \n+
    601 static void apply(unsigned int r,const Field &a,
    \n+
    602 const Vec1 &x, Vec2 &y)
    \n+
    603 {
    \n+
    604 const FieldVector<F1,Vec2::size> &xx = x.template block<deriv>();
    \n+
    605 for (int i=0; i<y.size; ++i)
    \n+
    606 y[i] += xx[i]*a;
    \n+
    607 }
    \n+
    \n+
    608 };
    \n+
    \n+
    609 template <class F1,int dimD,int dimR,
    \n+
    610 unsigned int d,
    \n+
    611 class Vec2,
    \n+
    612 unsigned int deriv>
    \n+
    \n+
    613 struct LFETensorAxpy<Derivatives<F1,dimD,dimR,d,DerivativeLayoutNS::derivative>,Vec2,deriv>
    \n+
    614 {
    \n+\n+
    616 template <class Field>
    \n+
    \n+
    617 static void apply(unsigned int r,const Field &a,
    \n+
    618 const Vec1 &x, Vec2 &y)
    \n+
    619 {
    \n+
    620 for (int rr=0; rr<dimR; ++rr)
    \n+\n+
    622 Vec2,deriv>::apply(rr,a,x[rr],y);
    \n+
    623 }
    \n+
    \n+
    624 };
    \n+
    \n+
    625 template <class F1,int dimD,
    \n+
    626 unsigned int d,
    \n+
    627 class Vec2,
    \n+
    628 unsigned int deriv>
    \n+
    \n+
    629 struct LFETensorAxpy<Derivatives<F1,dimD,1,d,DerivativeLayoutNS::derivative>,Vec2,deriv>
    \n+
    630 {
    \n+\n+
    632 template <class Field>
    \n+
    \n+
    633 static void apply(unsigned int r,const Field &a,
    \n+
    634 const Vec1 &x, Vec2 &y)
    \n+
    635 {
    \n+\n+
    637 Vec2,deriv>::apply(r,a,x[0],y);
    \n+
    638 }
    \n+
    \n+
    639 };
    \n+
    \n+
    640 template <class F1,int dimD,
    \n+
    641 unsigned int d,
    \n+
    642 class Vec2,
    \n+
    643 unsigned int deriv>
    \n+
    \n+
    644 struct LFETensorAxpy<Derivatives<F1,dimD,1,d,DerivativeLayoutNS::value>,Vec2,deriv>
    \n+
    645 {
    \n+\n+
    647 template <class Field>
    \n+
    \n+
    648 static void apply(unsigned int r,const Field &a,
    \n+
    649 const Vec1 &x, Vec2 &y)
    \n+
    650 {
    \n+
    651 typedef LFETensor<F1,dimD,deriv> LFETensorType;
    \n+
    652 const unsigned int rr = r*LFETensorType::size;
    \n+
    653 const FieldVector<F1,LFETensorType::size> &xx = x.template block<deriv>();
    \n+
    654 for (int i=0; i<FieldVector<F1,LFETensorType::size>::dimension; ++i)
    \n+
    655 y[rr+i] += xx[i]*a;
    \n+
    656 }
    \n+
    \n+
    657 };
    \n+
    \n+
    658
    \n+
    659 // ***********************************************
    \n+
    660 // Assign ****************************************
    \n+
    661 // ***********************************************
    \n+
    662 template <class Vec1,class Vec2>
    \n+
    \n+\n+
    664 {
    \n+
    \n+
    665 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    666 {
    \n+
    667 field_cast(vec1,vec2);
    \n+
    668 }
    \n+
    \n+
    669 };
    \n+
    \n+
    670 template <int dimD,int dimR,unsigned int deriv, DerivativeLayoutNS::DerivativeLayout layout,
    \n+
    671 class F1,class F2>
    \n+
    \n+
    672 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,layout>,
    \n+
    673 Derivatives<F2,dimD,dimR,deriv,layout> >
    \n+
    674 {
    \n+\n+\n+
    \n+
    677 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    678 {
    \n+
    679 field_cast(vec1.block(),vec2.block());
    \n+
    680 }
    \n+
    \n+
    681 };
    \n+
    \n+
    682 template <int dimD,int dimR,unsigned int deriv,
    \n+
    683 class F1, class F2>
    \n+
    \n+
    684 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::value>,
    \n+
    685 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::derivative> >
    \n+
    686 {
    \n+\n+\n+
    \n+
    689 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    690 {
    \n+
    691 vec2.assign(vec1);
    \n+
    692 }
    \n+
    \n+
    693 };
    \n+
    \n+
    694 template <int dimD,int dimR,unsigned int deriv,
    \n+
    695 class F1, class F2>
    \n+
    \n+
    696 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::derivative>,
    \n+
    697 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::value> >
    \n+
    698 {
    \n+\n+\n+
    \n+
    701 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    702 {
    \n+
    703 vec2.assign(vec1);
    \n+
    704 }
    \n+
    \n+
    705 };
    \n+
    \n+
    706 template <int dimD,int dimR,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout,
    \n+
    707 class F1, class F2>
    \n+
    \n+
    708 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,layout>,
    \n+
    709 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::value> >
    \n+
    710 {
    \n+\n+\n+
    \n+
    713 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    714 {
    \n+
    715 vec2.assign(r,vec1);
    \n+
    716 }
    \n+
    \n+
    717 };
    \n+
    \n+
    718 template <int dimD,int dimR,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout,
    \n+
    719 class F1, class F2>
    \n+
    \n+
    720 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,layout>,
    \n+
    721 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::derivative> >
    \n+
    722 {
    \n+\n+\n+
    \n+
    725 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    726 {
    \n+
    727 vec2.assign(r,vec1);
    \n+
    728 }
    \n+
    \n+
    729 };
    \n+
    \n+
    730 template <int dimD,unsigned int deriv,
    \n+
    731 class F1, class F2>
    \n+
    \n+
    732 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,
    \n+
    733 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
    \n+
    734 {
    \n+\n+\n+
    \n+
    737 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    738 {
    \n+
    739 field_cast(vec1.block(),vec2.block());
    \n+
    740 }
    \n+
    \n+
    741 };
    \n+
    \n+
    742 template <int dimD,unsigned int deriv,
    \n+
    743 class F1, class F2>
    \n+
    \n+
    744 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,
    \n+
    745 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
    \n+
    746 {
    \n+\n+\n+
    \n+
    749 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    750 {
    \n+
    751 field_cast(vec1.block(),vec2.block());
    \n+
    752 }
    \n+
    \n+
    753 };
    \n+
    \n+
    754 template <int dimD,unsigned int deriv,
    \n+
    755 class F1, class F2>
    \n+
    \n+
    756 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,
    \n+
    757 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
    \n+
    758 {
    \n+\n+\n+
    \n+
    761 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    762 {
    \n+
    763 field_cast(vec1.block(),vec2.block());
    \n+
    764 }
    \n+
    \n+
    765 };
    \n+
    \n+
    766 template <int dimD,unsigned int deriv,
    \n+
    767 class F1, class F2>
    \n+
    \n+
    768 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,
    \n+
    769 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
    \n+
    770 {
    \n+\n+\n+
    \n+
    773 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    774 {
    \n+
    775 field_cast(vec1.block(),vec2.block());
    \n+
    776 }
    \n+
    \n+
    777 };
    \n+
    \n+
    778 template <int dimD,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout,
    \n+
    779 class F1, class F2>
    \n+
    \n+
    780 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,layout>,
    \n+
    781 F2 >
    \n+
    782 {
    \n+\n+
    784 typedef F2 Vec2;
    \n+
    \n+
    785 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    786 {
    \n+
    787 field_cast(vec1.block(),vec2);
    \n+
    788 }
    \n+
    \n+
    789 };
    \n+
    \n+
    790 template <int dimD,int dimR,
    \n+
    791 class F1,unsigned int deriv,
    \n+
    792 class F2>
    \n+
    \n+
    793 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::value>,FieldVector<F2,dimR> >
    \n+
    794 {
    \n+\n+
    796 typedef FieldVector<F2,dimR> Vec2;
    \n+
    \n+
    797 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    798 {
    \n+
    799 field_cast(vec1.template block<0>(),vec2);
    \n+
    800 }
    \n+
    \n+
    801 };
    \n+
    \n+
    802 template <int dimD,int dimR,
    \n+
    803 class F1,unsigned int deriv,
    \n+
    804 class F2>
    \n+
    \n+
    805 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::derivative>,FieldVector<F2,dimR> >
    \n+
    806 {
    \n+\n+
    808 typedef FieldVector<F2,dimR> Vec2;
    \n+
    \n+
    809 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    810 {
    \n+
    811 for (int rr=0; rr<dimR; ++rr)
    \n+
    812 field_cast(vec1[rr].template tensor<0>()[0].block(),vec2[rr]);
    \n+
    813 }
    \n+
    \n+
    814 };
    \n+
    \n+
    815 template <int dimD,
    \n+
    816 class F1,unsigned int deriv,
    \n+
    817 class F2,int dimR>
    \n+
    \n+
    818 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,FieldVector<F2,dimR> >
    \n+
    819 {
    \n+\n+
    821 typedef FieldVector<F2,dimR> Vec2;
    \n+
    \n+
    822 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    823 {
    \n+
    824 field_cast(vec1.template tensor<0>()[0].block(),vec2[r]);
    \n+
    825 }
    \n+
    \n+
    826 };
    \n+
    \n+
    827 template <int dimD,
    \n+
    828 class F1,unsigned int deriv,
    \n+
    829 class F2,int dimR>
    \n+
    \n+
    830 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,FieldVector<F2,dimR> >
    \n+
    831 {
    \n+\n+
    833 typedef FieldVector<F2,dimR> Vec2;
    \n+
    \n+
    834 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    835 {
    \n+
    836 field_cast(vec1[0].template tensor<0>()[0].block(),vec2[r]);
    \n+
    837 }
    \n+
    \n+
    838 };
    \n+
    \n+
    839 template <int dimD,
    \n+
    840 class F1,unsigned int deriv,
    \n+
    841 class F2>
    \n+
    \n+
    842 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,FieldVector<F2,1> >
    \n+
    843 {
    \n+\n+
    845 typedef FieldVector<F2,1> Vec2;
    \n+
    \n+
    846 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n+
    847 {
    \n+
    848 field_cast(vec1.template tensor<0>()[0].block(),vec2);
    \n+
    849 }
    \n+
    \n+
    850 };
    \n+
    \n+
    851 template <int dimD,
    \n+
    852 class F1,unsigned int deriv,
    \n+
    853 class F2>
    \n+
    \n+
    854 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,FieldVector<F2,1> >
    \n+
    855 {
    \n+\n+
    857 typedef FieldVector<F2,1> Vec2;
    \n+
    \n+
    858 static void apply(unsigned int /*r*/,const Vec1 &vec1,Vec2 &vec2)
    \n+
    859 {
    \n+
    860 field_cast(vec1[0].template tensor<0>()[0].block(),vec2);
    \n+
    861 }
    \n+
    \n+
    862 };
    \n+
    \n+
    863
    \n+
    864 // ***********************************************
    \n+
    865 // IO ********************************************
    \n+
    866 // ***********************************************
    \n+
    867 template <class F,int dimD,unsigned int deriv>
    \n+
    \n+
    868 std::ostream &operator<< ( std::ostream &out, const LFETensor< F,dimD,deriv > &tensor )
    \n+
    869 {
    \n+
    870 return out << tensor.block();
    \n+
    871 }
    \n+
    \n+
    872#if 0
    \n+
    873 template <class F,int dimD,unsigned int deriv>
    \n+
    874 std::ostream &operator<< ( std::ostream &out, const ScalarDerivatives< F,dimD,deriv > &d )
    \n+
    875 {
    \n+
    876 out << static_cast<const ScalarDerivatives< F,dimD,deriv-1 > &>(d);
    \n+
    877 out << " , " << d.tensor() << std::endl;
    \n+
    878 return out;
    \n+
    879 }
    \n+
    880 template <class F,int dimD>
    \n+
    881 std::ostream &operator<< ( std::ostream &out, const ScalarDerivatives< F,dimD,0 > &d )
    \n+
    882 {
    \n+
    883 out << d.tensor() << std::endl;
    \n+
    884 return out;
    \n+
    885 }
    \n+
    886#endif
    \n+
    887 template <class F,int dimD,int dimR,unsigned int deriv>
    \n+
    \n+\n+
    889 {
    \n+
    890 out << " ( ";
    \n+
    891 out << d[0];
    \n+
    892 for (int r=1; r<dimR; ++r)
    \n+
    893 {
    \n+
    894 out << " , " << d[r];
    \n+
    895 }
    \n+
    896 out << " ) " << std::endl;
    \n+
    897 return out;
    \n+
    898 }
    \n+
    \n+
    899 template <class F,int dimD,int dimR,unsigned int deriv>
    \n+
    \n+\n+
    901 {
    \n+
    902 out << static_cast<const Derivatives< F,dimD,dimR,deriv-1,DerivativeLayoutNS::value > &>(d);
    \n+
    903 out << " ( ";
    \n+
    904 out << d[0];
    \n+
    905 for (int r=1; r<dimR; ++r)
    \n+
    906 {
    \n+
    907 out << " , " << d[r];
    \n+
    908 }
    \n+
    909 out << " ) " << std::endl;
    \n+
    910 return out;
    \n+
    911 }
    \n+
    \n+
    912 template <class F,int dimD,int dimR>
    \n+
    \n+\n+
    914 {
    \n+
    915 out << " ( ";
    \n+
    916 out << d[0];
    \n+
    917 for (int r=1; r<dimR; ++r)
    \n+
    918 {
    \n+
    919 out << " , " << d[r];
    \n+
    920 }
    \n+
    921 out << " ) " << std::endl;
    \n+
    922 return out;
    \n+
    923 }
    \n+
    \n+
    924 template <class F,int dimD,int dimR>
    \n+
    \n+
    925 std::ostream &operator<< ( std::ostream &out, const Derivatives< F,dimD,dimR,0,DerivativeLayoutNS::value > &d )
    \n+
    926 {
    \n+
    927 out << " ( ";
    \n+
    928 out << d[0];
    \n+
    929 for (int r=1; r<dimR; ++r)
    \n+
    930 {
    \n+
    931 out << " , " << d[r];
    \n+
    932 }
    \n+
    933 out << " ) " << std::endl;
    \n+
    934 return out;
    \n+
    935 }
    \n+
    \n+
    936 template <class F,int dimD,int dimR,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout>
    \n+
    \n+
    937 std::ostream &operator<< ( std::ostream &out, const std::vector<Derivatives< F,dimD,dimR,deriv,layout > > &y )
    \n+
    938 {
    \n+
    939 out << "Number of basis functions: " << y.size() << std::endl;
    \n+
    940 for (unsigned int i=0; i<y.size(); ++i)
    \n+
    941 {
    \n+
    942 out << "Base " << i << " : " << std::endl;
    \n+
    943 out << y[i];
    \n+
    944 out << std::endl;
    \n+
    945 }
    \n+
    946 return out;
    \n+
    947 }
    \n
    \n-
    110}
    \n-
    111#endif
    \n+
    948}
    \n+
    949#endif // DUNE_TENSOR_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Definition raviartthomas03dlocalbasis.hh:27
    \n-
    RT03DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas03dlocalbasis.hh:33
    \n-
    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 raviartthomas03dlocalbasis.hh:73
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas03dlocalbasis.hh:100
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas03dlocalbasis.hh:40
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas03dlocalbasis.hh:59
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas03dlocalbasis.hh:46
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas03dlocalbasis.hh:30
    \n-\n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)
    Definition lfematrix.hh:151
    \n+
    DerivativeLayout
    Definition tensor.hh:176
    \n+
    @ derivative
    Definition tensor.hh:176
    \n+
    @ value
    Definition tensor.hh:176
    \n+
    Definition tensor.hh:33
    \n+
    const Block & block() const
    Definition tensor.hh:76
    \n+
    This & operator*=(const field_type &f)
    Definition tensor.hh:56
    \n+
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:41
    \n+
    This & operator=(const FF &f)
    Definition tensor.hh:44
    \n+
    Block block_
    Definition tensor.hh:89
    \n+
    F field_type
    Definition tensor.hh:39
    \n+
    void axpy(const F &a, const This &y)
    Definition tensor.hh:80
    \n+
    Block & block()
    Definition tensor.hh:72
    \n+
    void assign(const LFETensor< Fy, dimD, deriv > &y)
    Definition tensor.hh:85
    \n+
    static const unsigned int size
    Definition tensor.hh:40
    \n+
    const field_type & operator[](const unsigned int i) const
    Definition tensor.hh:62
    \n+
    typename FieldTraits< field_type >::real_type real_type
    Definition tensor.hh:97
    \n+\n+
    Definition tensor.hh:115
    \n+
    Block & block()
    Definition tensor.hh:162
    \n+
    F field_type
    Definition tensor.hh:119
    \n+
    Block block_
    Definition tensor.hh:170
    \n+
    void assign(const LFETensor< Fy, dimD, 0 > &y)
    Definition tensor.hh:157
    \n+
    const Block & block() const
    Definition tensor.hh:166
    \n+
    void axpy(const F &a, const This &y)
    Definition tensor.hh:152
    \n+
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:121
    \n+
    Definition tensor.hh:180
    \n+\n+
    typename FieldTraits< field_type >::real_type real_type
    Definition tensor.hh:187
    \n+\n+\n+
    Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > This
    Definition tensor.hh:195
    \n+
    This & operator=(const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > &t)
    Definition tensor.hh:219
    \n+\n+
    Derivatives< F, dimD, dimR, deriv-1, DerivativeLayoutNS::value > Base
    Definition tensor.hh:196
    \n+
    const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar) const
    Definition tensor.hh:339
    \n+
    void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
    Definition tensor.hh:317
    \n+
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:243
    \n+
    void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:330
    \n+\n+
    const ThisLFETensor & operator[](int r) const
    Definition tensor.hh:312
    \n+
    Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
    Definition tensor.hh:303
    \n+
    LFETensor< F, dimD, deriv > ThisLFETensor
    Definition tensor.hh:197
    \n+
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:263
    \n+
    const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
    Definition tensor.hh:296
    \n+
    Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar)
    Definition tensor.hh:350
    \n+
    const Block & block() const
    Definition tensor.hh:277
    \n+
    void axpy(const F &a, const This &y)
    Definition tensor.hh:236
    \n+
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:249
    \n+
    This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
    Definition tensor.hh:213
    \n+
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:268
    \n+
    This & operator=(const Block &t)
    Definition tensor.hh:224
    \n+
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:206
    \n+
    Dune::FieldVector< ThisLFETensor, dimR > tensor_
    Definition tensor.hh:359
    \n+
    Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar)
    Definition tensor.hh:355
    \n+
    Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor()
    Definition tensor.hh:290
    \n+
    void assign(const Derivatives< Fy, dimD, dimRy, deriv, DerivativeLayoutNS::value > &y, unsigned int r)
    Definition tensor.hh:257
    \n+
    const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor() const
    Definition tensor.hh:283
    \n+
    const Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar) const
    Definition tensor.hh:344
    \n+
    ThisLFETensor & operator[](int r)
    Definition tensor.hh:309
    \n+\n+
    void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
    Definition tensor.hh:323
    \n+\n+
    ThisLFETensor & operator[](int r)
    Definition tensor.hh:442
    \n+
    LFETensor< F, dimD, 0 > ThisLFETensor
    Definition tensor.hh:366
    \n+
    Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
    Definition tensor.hh:465
    \n+
    Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar)
    Definition tensor.hh:479
    \n+
    void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:407
    \n+\n+
    Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > This
    Definition tensor.hh:365
    \n+
    void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:484
    \n+
    void assign(const Derivatives< Fy, dimD, dimRy, 0, DerivativeLayoutNS::value > &y, unsigned int r)
    Definition tensor.hh:418
    \n+
    const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor() const
    Definition tensor.hh:449
    \n+
    Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor()
    Definition tensor.hh:453
    \n+
    This & operator=(const Block &t)
    Definition tensor.hh:390
    \n+\n+
    const ThisLFETensor & operator[](int r) const
    Definition tensor.hh:445
    \n+
    const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar) const
    Definition tensor.hh:474
    \n+
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:375
    \n+
    const Block & block() const
    Definition tensor.hh:437
    \n+
    const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
    Definition tensor.hh:458
    \n+
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:428
    \n+
    void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:412
    \n+
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:423
    \n+
    This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
    Definition tensor.hh:384
    \n+
    void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
    Definition tensor.hh:490
    \n+
    Dune::FieldVector< ThisLFETensor, dimR > tensor_
    Definition tensor.hh:499
    \n+
    void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
    Definition tensor.hh:495
    \n+
    This & operator=(const FF &f)
    Definition tensor.hh:378
    \n+\n+
    void axpy(const F &a, const This &y)
    Definition tensor.hh:402
    \n+\n+\n+\n+\n+\n+\n+
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, layouty > &y)
    Definition tensor.hh:556
    \n+\n+
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:549
    \n+
    Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > This
    Definition tensor.hh:506
    \n+
    Derivatives< F, dimD, 1, deriv, DerivativeLayoutNS::value > ScalarDeriv
    Definition tensor.hh:507
    \n+
    const ScalarDeriv & operator[](int r) const
    Definition tensor.hh:573
    \n+
    void axpy(const FF &a, const This &y)
    Definition tensor.hh:537
    \n+
    This & operator=(const Block &t)
    Definition tensor.hh:524
    \n+
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:516
    \n+
    Dune::FieldVector< ScalarDeriv, dimR > deriv_
    Definition tensor.hh:577
    \n+
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:543
    \n+
    Definition tensor.hh:585
    \n+
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:587
    \n+
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:601
    \n+
    Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:599
    \n+
    Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:615
    \n+
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:617
    \n+
    Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:631
    \n+
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:633
    \n+
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:648
    \n+
    Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:646
    \n+
    Definition tensor.hh:664
    \n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:665
    \n+\n+\n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:677
    \n+\n+\n+\n+\n+\n+\n+\n+\n+
    Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2
    Definition tensor.hh:712
    \n+\n+\n+
    Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2
    Definition tensor.hh:724
    \n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:785
    \n+
    Derivatives< F1, dimD, 1, deriv, layout > Vec1
    Definition tensor.hh:783
    \n+
    Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:795
    \n+\n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:797
    \n+
    Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:807
    \n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:809
    \n+\n+
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:820
    \n+\n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:822
    \n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:834
    \n+
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:832
    \n+\n+\n+
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:844
    \n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:846
    \n+
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:856
    \n+
    static void apply(unsigned int, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:858
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,156 +1,1635 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n-raviartthomas03dlocalbasis.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+tensor.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH\n-7\n-8#include \n-9\n-10#include \n+5\n+6#ifndef DUNE_TENSOR_HH\n+7#define DUNE_TENSOR_HH\n+8\n+9#include \n+10#include \n 11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+12#include \n 13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-25 template\n-_\b2_\b6 class _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-27 {\n-28 public:\n-29 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n-FieldVector,\n-_\b3_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-31\n-_\b3_\b3 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n-34 {\n-35 for (int i=0; i<4; i++)\n-36 sign_[i] = s[i] ? -1.0 : 1.0;\n-37 }\n-38\n-_\b4_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-41 {\n-42 return 4;\n-43 }\n-44\n-_\b4_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-47 std::vector& out) const\n-48 {\n-49 out.resize(4);\n-50 auto c = std::sqrt(2.0);\n-51 out[0] = {sign_[0]*c* in[0], sign_[0]*c* in[1], sign_[0]*c*(in[2]-D(1))};\n-52 out[1] = {sign_[1]*c* in[0], sign_[1]*c*(in[1]-D(1)), sign_[1]*c* in[2] };\n-53 out[2] = {sign_[2]*c*(in[0]-D(1)), sign_[2]*c* in[1], sign_[2]*c* in[2] };\n-54 out[3] = {sign_[3]*c* in[0], sign_[3]*c* in[1], sign_[3]*c* in[2] };\n-55 }\n-56\n-58 inline void\n-_\b5_\b9 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-60 std::vector& out) const // return value\n-61 {\n-62 out.resize(4);\n-63 for (int i=0; i<4; i++)\n-64 {\n-65 auto c = std::sqrt(2.0);\n-66 out[i][0] = {c*sign_[i], 0, 0};\n-67 out[i][1] = { 0,c*sign_[i], 0};\n-68 out[i][2] = { 0, 0,c*sign_[i]};\n-69 }\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18 /***********************************************\n+19 * The classes here are work in progress.\n+20 * Basically they provide tensor structures for\n+21 * higher order derivatives of vector valued function.\n+22 * Two storage structures are provided\n+23 * (either based on the components of the vector valued\n+24 * functions or on the order of the derivative).\n+25 * Conversions are supplied between the two storage\n+26 * structures and simple operations, which make the\n+27 * code difficult to use and requires rewriting...\n+28 ***************************************************/\n+29\n+30 // Structure for scalar tensor of order deriv\n+31 template \n+_\b3_\b2 class _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n+33 {\n+34 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv_\b> _\bT_\bh_\bi_\bs;\n+35 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br _\bB_\ba_\bs_\be_\bD_\bi_\bm;\n+36 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br _\bB_\ba_\bs_\be_\bD_\be_\br_\bi_\bv;\n+37\n+38 public:\n+_\b3_\b9 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n+_\b4_\b0 static const unsigned int _\bs_\bi_\bz_\be = _\bB_\ba_\bs_\be_\bD_\bi_\bm_\b:_\b:_\bs_\bi_\bz_\be+_\bB_\ba_\bs_\be_\bD_\be_\br_\bi_\bv_\b:_\b:_\bs_\bi_\bz_\be;\n+_\b4_\b1 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n+42\n+43 template< class FF >\n+_\b4_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const FF &f )\n+45 {\n+46 _\bb_\bl_\bo_\bc_\bk() = field_cast< F >( f );\n+47 return *this;\n+48 }\n+49\n+_\b5_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bB_\bl_\bo_\bc_\bk &b )\n+51 {\n+52 _\bb_\bl_\bo_\bc_\bk() = b;\n+53 return *this;\n+54 }\n+55\n+_\b5_\b6 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n+57 {\n+58 _\bb_\bl_\bo_\bc_\bk() *= f;\n+59 return *this;\n+60 }\n+61\n+_\b6_\b2 const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i ) const\n+63 {\n+64 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n+65 }\n+66\n+_\b6_\b7 _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i )\n+68 {\n+69 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n 70 }\n 71\n-_\b7_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-74 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-75 std::vector& out) const // return value\n-76 {\n-77 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-78 if (totalOrder == 0) {\n-79 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-80 } else if (totalOrder == 1) {\n-81 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n-_\bo_\br_\bd_\be_\br.end(), 1));\n-82 out.resize(_\bs_\bi_\bz_\be());\n-83\n-84 for (int i=0; i<_\bs_\bi_\bz_\be(); i++)\n-85 {\n-86 out[i][direction] = sign_[i]* std::sqrt(2.0) ;\n-87 out[i][(direction+1)%3] = 0;\n-88 out[i][(direction+2)%3] = 0;\n-89 }\n-90 } else {\n-91 out.resize(_\bs_\bi_\bz_\be());\n-92 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-93 for (std::size_t j = 0; j < 3; ++j)\n-94 out[i][j] = 0;\n-95 }\n-96\n-97 }\n-98\n-_\b1_\b0_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n-101 {\n-102 return 1;\n-103 }\n-104\n-105 private:\n+_\b7_\b2 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n+73 {\n+74 return _\bb_\bl_\bo_\bc_\bk_\b_;\n+75 }\n+_\b7_\b6 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n+77 {\n+78 return _\bb_\bl_\bo_\bc_\bk_\b_;\n+79 }\n+_\b8_\b0 void _\ba_\bx_\bp_\by(const F& a, const _\bT_\bh_\bi_\bs &y)\n+81 {\n+82 _\bb_\bl_\bo_\bc_\bk().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n+83 }\n+84 template \n+_\b8_\b5 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv_\b> &y)\n+86 {\n+87 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y._\bb_\bl_\bo_\bc_\bk(),_\bb_\bl_\bo_\bc_\bk());\n+88 }\n+_\b8_\b9 _\bB_\bl_\bo_\bc_\bk _\bb_\bl_\bo_\bc_\bk_\b_;\n+90 };\n+91\n+92\n+93 template \n+_\b9_\b4 struct FieldTraits<_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br>\n+95 {\n+_\b9_\b6 using _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be = F;\n+_\b9_\b7 using _\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be = typename FieldTraits::real_type;\n+98 };\n+99\n+100 // ******************************************\n+101 template \n+_\b1_\b0_\b2 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n+103 {\n+_\b1_\b0_\b4 static const int _\bs_\bi_\bz_\be = 0;\n+105 };\n 106\n-107 // Signs of the face normals\n-108 std::array sign_;\n-109 };\n-110}\n-111#endif\n+107 template \n+_\b1_\b0_\b8 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n+109 {\n+_\b1_\b1_\b0 static const int _\bs_\bi_\bz_\be = 1;\n+111 };\n+112\n+113 template \n+_\b1_\b1_\b4 class _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n+115 {\n+116 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\b0_\b> _\bT_\bh_\bi_\bs;\n+117\n+118 public:\n+_\b1_\b1_\b9 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n+_\b1_\b2_\b0 static const int _\bs_\bi_\bz_\be = 1;\n+_\b1_\b2_\b1 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n+122\n+123 template< class FF >\n+_\b1_\b2_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const FF &f )\n+125 {\n+126 _\bb_\bl_\bo_\bc_\bk() = field_cast< F >( f );\n+127 return *this;\n+128 }\n+129\n+_\b1_\b3_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bB_\bl_\bo_\bc_\bk &b )\n+131 {\n+132 _\bb_\bl_\bo_\bc_\bk() = b;\n+133 return *this;\n+134 }\n+135\n+_\b1_\b3_\b6 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n+137 {\n+138 _\bb_\bl_\bo_\bc_\bk() *= f;\n+139 return *this;\n+140 }\n+141\n+_\b1_\b4_\b2 const F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i ) const\n+143 {\n+144 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n+145 }\n+146\n+_\b1_\b4_\b7 F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i )\n+148 {\n+149 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n+150 }\n+151\n+_\b1_\b5_\b2 void _\ba_\bx_\bp_\by(const F& a, const _\bT_\bh_\bi_\bs &y)\n+153 {\n+154 _\bb_\bl_\bo_\bc_\bk().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n+155 }\n+156 template \n+_\b1_\b5_\b7 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b0_\b> &y)\n+158 {\n+159 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y._\bb_\bl_\bo_\bc_\bk(),_\bb_\bl_\bo_\bc_\bk());\n+160 }\n+161\n+_\b1_\b6_\b2 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n+163 {\n+164 return _\bb_\bl_\bo_\bc_\bk_\b_;\n+165 }\n+_\b1_\b6_\b6 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n+167 {\n+168 return _\bb_\bl_\bo_\bc_\bk_\b_;\n+169 }\n+_\b1_\b7_\b0 _\bB_\bl_\bo_\bc_\bk _\bb_\bl_\bo_\bc_\bk_\b_;\n+171 };\n+172 // ***********************************************************\n+173 // Structure for all derivatives up to order deriv\n+174 // for vector valued function\n+_\b1_\b7_\b5 namespace DerivativeLayoutNS {\n+_\b1_\b7_\b6 enum _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt {_\bv_\ba_\bl_\bu_\be,_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be};\n+177 }\n+178 template \n+_\b1_\b8_\b0 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs;\n+181\n+182 template \n+_\b1_\b8_\b4 struct FieldTraits<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs>\n+185 {\n+_\b1_\b8_\b6 using _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be = F;\n+_\b1_\b8_\b7 using _\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be = typename FieldTraits::real_type;\n+188 };\n+189\n+190 // Implemnetation for valued based layout\n+191 template \n+_\b1_\b9_\b2 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+193 : public _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+194 {\n+_\b1_\b9_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bT_\bh_\bi_\bs;\n+_\b1_\b9_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs _\bB_\ba_\bs_\be;\n+_\b1_\b9_\b7 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv_\b> _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br;\n+198\n+_\b1_\b9_\b9 typedef F _\bF_\bi_\be_\bl_\bd;\n+_\b2_\b0_\b0 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n+201\n+_\b2_\b0_\b2 static const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt layout =\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+_\b2_\b0_\b3 static const unsigned int dimDomain = dimD;\n+_\b2_\b0_\b4 static const unsigned int dimRange = dimR;\n+_\b2_\b0_\b5 constexpr static int size = Base::size+ThisLFETensor::size*dimR;\n+_\b2_\b0_\b6 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n+207\n+_\b2_\b0_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const F& f)\n+209 {\n+210 block() = f;\n+211 return *this;\n+212 }\n+_\b2_\b1_\b3 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const Dune::FieldVector &t)\n+214 {\n+215 tensor_ = t;\n+216 return *this;\n+217 }\n+218 template \n+_\b2_\b1_\b9 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const Dune::FieldVector<_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bo_\br_\bd_\be_\br_\b>,dimR> &t)\n+220 {\n+221 tensor() = t;\n+222 return *this;\n+223 }\n+_\b2_\b2_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bB_\bl_\bo_\bc_\bk &t)\n+225 {\n+226 block() = t;\n+227 return *this;\n+228 }\n+229\n+_\b2_\b3_\b0 _\bT_\bh_\bi_\bs &operator*= ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n+231 {\n+232 block() *= f;\n+233 return *this;\n+234 }\n+235\n+_\b2_\b3_\b6 void _\ba_\bx_\bp_\by(const F &a, const _\bT_\bh_\bi_\bs &y)\n+237 {\n+238 block().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n+239 }\n+240\n+241 // assign with same layout (only different Field)\n+242 template \n+_\b2_\b4_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b>\n+&y)\n+244 {\n+245 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y.block(),block());\n+246 }\n+247 // assign with different layout (same dimRange)\n+248 template \n+_\b2_\b4_\b9 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n+250 {\n+251 Base::assign(y);\n+252 for (int rr=0; rr()[0];\n+254 }\n+255 // assign with rth component of function\n+256 template \n+_\b2_\b5_\b7 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\by_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b> &y,unsigned int r)\n+258 {\n+259 assign(y.block(),r);\n+260 }\n+261 // assign with scalar functions to component r\n+262 template \n+_\b2_\b6_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> &y)\n+264 {\n+265 assign(r,y.block());\n+266 }\n+267 template \n+_\b2_\b6_\b8 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n+269 {\n+270 assign(r,y[0]);\n+271 }\n+272\n+_\b2_\b7_\b3 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n+274 {\n+275 return reinterpret_cast<_\bB_\bl_\bo_\bc_\bk&>(*this);\n+276 }\n+_\b2_\b7_\b7 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n+278 {\n+279 return reinterpret_cast(*this);\n+280 }\n+281\n+282 template \n+_\b2_\b8_\b3 const Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br() const\n+284 {\n+285 // use integral_constant here to stay compatible with Int2Type\n+286 const std::integral_constant a = {};\n+287 return tensor(a);\n+288 }\n+289 template \n+_\b2_\b9_\b0 Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br()\n+291 {\n+292 // use integral_constant here to stay compatible with Int2Type\n+293 return tensor(std::integral_constant());\n+294 }\n+295 template \n+_\b2_\b9_\b6 const Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n+const\n+297 {\n+298 // use integral_constant here to stay compatible with Int2Type\n+299 const std::integral_constant a = {};\n+300 return reinterpret_cast::size*dimR>&>(tensor(a));\n+301 }\n+302 template \n+_\b3_\b0_\b3 Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n+304 {\n+305 // use integral_constant here to stay compatible with Int2Type\n+306 const std::integral_constant a = {};\n+307 return reinterpret_cast::\n+size*dimR>&>(tensor(a));\n+308 }\n+_\b3_\b0_\b9 _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) {\n+310 return tensor_[r];\n+311 }\n+_\b3_\b1_\b2 const _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) const {\n+313 return tensor_[r];\n+314 }\n+315 protected:\n+316 template \n+_\b3_\b1_\b7 void _\ba_\bs_\bs_\bi_\bg_\bn(const FieldVector &y,unsigned int r)\n+318 {\n+319 Base::template assign(reinterpret_cast&>(y),r);\n+320 tensor_[0] = reinterpret_cast&>(y\n+[Base::size*dimRy+r*ThisLFETensor::size]);\n+321 }\n+322 template \n+_\b3_\b2_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const FieldVector &y)\n+324 {\n+325 Base::assign(r,reinterpret_cast&>\n+(y));\n+326 tensor_[r] = reinterpret_cast&>(y\n+[Base::size/dimR]);\n+327 }\n+328 // assign with different layout (same dimRange)\n+329 template \n+_\b3_\b3_\b0 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\by_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n+331 {\n+332 Base::assign(y);\n+333 for (int rr=0; rr()[0];\n+335 }\n+336\n+337 template \n+338 const Dune::FieldVector,dimR> &\n+_\b3_\b3_\b9 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar) const\n+340 {\n+341 return Base::tensor(dorderVar);\n+342 }\n+343 const Dune::FieldVector,dimR> &\n+_\b3_\b4_\b4 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar) const\n+345 {\n+346 return tensor_;\n+347 }\n+348 template \n+349 Dune::FieldVector,dimR> &\n+_\b3_\b5_\b0 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar)\n+351 {\n+352 return Base::tensor(dorderVar);\n+353 }\n+354 Dune::FieldVector,dimR> &\n+_\b3_\b5_\b5 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar)\n+356 {\n+357 return tensor_;\n+358 }\n+_\b3_\b5_\b9 Dune::FieldVector _\bt_\be_\bn_\bs_\bo_\br_\b_;\n+360 };\n+361\n+362 template \n+_\b3_\b6_\b3 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+364 {\n+_\b3_\b6_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bT_\bh_\bi_\bs;\n+_\b3_\b6_\b6 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\b0_\b> _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br;\n+367\n+_\b3_\b6_\b8 typedef F _\bF_\bi_\be_\bl_\bd;\n+_\b3_\b6_\b9 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n+370\n+_\b3_\b7_\b1 static const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt layout =\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+_\b3_\b7_\b2 static const unsigned int dimDomain = dimD;\n+_\b3_\b7_\b3 static const unsigned int dimRange = dimR;\n+_\b3_\b7_\b4 constexpr static int size = ThisLFETensor::size*dimR;\n+_\b3_\b7_\b5 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n+376\n+377 template \n+_\b3_\b7_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const FF& f)\n+379 {\n+380 for (int r=0; r(f);\n+382 return *this;\n+383 }\n+_\b3_\b8_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const Dune::FieldVector &t)\n+385 {\n+386 tensor_ = t;\n+387 return *this;\n+388 }\n+389\n+_\b3_\b9_\b0 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bB_\bl_\bo_\bc_\bk &t)\n+391 {\n+392 block() = t;\n+393 return *this;\n+394 }\n+395\n+_\b3_\b9_\b6 _\bT_\bh_\bi_\bs &operator*= ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n+397 {\n+398 block() *= f;\n+399 return *this;\n+400 }\n+401\n+_\b4_\b0_\b2 void _\ba_\bx_\bp_\by(const F &a, const _\bT_\bh_\bi_\bs &y)\n+403 {\n+404 block().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n+405 }\n+406 template \n+_\b4_\b0_\b7 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> &y)\n+408 {\n+409 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y.block(),block());\n+410 }\n+411 template \n+_\b4_\b1_\b2 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n+413 {\n+414 for (int rr=0; rr()[0];\n+416 }\n+417 template \n+_\b4_\b1_\b8 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\by_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b>\n+&y,unsigned int r)\n+419 {\n+420 assign(y.block(),r);\n+421 }\n+422 template \n+_\b4_\b2_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> &y)\n+424 {\n+425 tensor_[r].assign(y[0]);\n+426 }\n+427 template \n+_\b4_\b2_\b8 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n+429 {\n+430 tensor_[r].assign(y[0][0]);\n+431 }\n+432\n+_\b4_\b3_\b3 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n+434 {\n+435 return reinterpret_cast<_\bB_\bl_\bo_\bc_\bk&>(*this);\n+436 }\n+_\b4_\b3_\b7 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n+438 {\n+439 return reinterpret_cast(*this);\n+440 }\n+441\n+_\b4_\b4_\b2 _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) {\n+443 return tensor_[r];\n+444 }\n+_\b4_\b4_\b5 const _\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) const {\n+446 return tensor_[r];\n+447 }\n+448 template \n+_\b4_\b4_\b9 const Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br() const\n+450 {\n+451 return tensor_;\n+452 }\n+_\b4_\b5_\b3 Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br()\n+454 {\n+455 return tensor_;\n+456 }\n+457 template \n+_\b4_\b5_\b8 const Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n+const\n+459 {\n+460 // use integral_constant here to stay compatible with Int2Type\n+461 const std::integral_constant a = {};\n+462 return reinterpret_cast::size*dimR>&>(tensor(a));\n+463 }\n+464 template \n+_\b4_\b6_\b5 Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n+466 {\n+467 // use integral_constant here to stay compatible with Int2Type\n+468 const std::integral_constant a = {};\n+469 return reinterpret_cast::\n+size*dimR>&>(tensor(a));\n+470 }\n+471\n+472 protected:\n+473 const Dune::FieldVector,dimR> &\n+_\b4_\b7_\b4 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar) const\n+475 {\n+476 return tensor_;\n+477 }\n+478 Dune::FieldVector,dimR> &\n+_\b4_\b7_\b9 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar)\n+480 {\n+481 return tensor_;\n+482 }\n+483 template \n+_\b4_\b8_\b4 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\by_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n+485 {\n+486 for (int rr=0; rr()[0];\n+488 }\n+489 template \n+_\b4_\b9_\b0 void _\ba_\bs_\bs_\bi_\bg_\bn(const FieldVector &y,unsigned int r)\n+491 {\n+492 tensor_[0] = reinterpret_cast&>(y\n+[r*ThisLFETensor::size]);\n+493 }\n+494 template \n+_\b4_\b9_\b5 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const FieldVector &y)\n+496 {\n+497 tensor_[r] = y;\n+498 }\n+_\b4_\b9_\b9 Dune::FieldVector _\bt_\be_\bn_\bs_\bo_\br_\b_;\n+500 };\n+501\n+502 // Implemnetation for DerivativeLayoutNS::derivative based layout\n+503 template \n+_\b5_\b0_\b4 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+505 {\n+_\b5_\b0_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bT_\bh_\bi_\bs;\n+_\b5_\b0_\b7 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bS_\bc_\ba_\bl_\ba_\br_\bD_\be_\br_\bi_\bv;\n+508\n+_\b5_\b0_\b9 typedef F _\bF_\bi_\be_\bl_\bd;\n+_\b5_\b1_\b0 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n+511\n+_\b5_\b1_\b2 static const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt layout =\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be;\n+_\b5_\b1_\b3 static const unsigned int dimDomain = dimD;\n+_\b5_\b1_\b4 static const unsigned int dimRange = dimR;\n+_\b5_\b1_\b5 constexpr static int size = ScalarDeriv::size*dimR;\n+_\b5_\b1_\b6 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n+517\n+518 template \n+_\b5_\b1_\b9 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const FF& f)\n+520 {\n+521 block() = field_cast(f);\n+522 return *this;\n+523 }\n+_\b5_\b2_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bB_\bl_\bo_\bc_\bk &t)\n+525 {\n+526 block() = t;\n+527 return *this;\n+528 }\n+529\n+_\b5_\b3_\b0 _\bT_\bh_\bi_\bs &operator*= ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n+531 {\n+532 block() *= f;\n+533 return *this;\n+534 }\n+535\n+536 template \n+_\b5_\b3_\b7 void _\ba_\bx_\bp_\by(const FF &a, const _\bT_\bh_\bi_\bs &y)\n+538 {\n+539 block().axpy(field_cast(a),y._\bb_\bl_\bo_\bc_\bk());\n+540 }\n+541 // assign with same layout (only different Field)\n+542 template \n+_\b5_\b4_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> &y)\n+544 {\n+545 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y.block(),block());\n+546 }\n+547 // assign with different layout (same dimRange)\n+548 template \n+_\b5_\b4_\b9 void _\ba_\bs_\bs_\bi_\bg_\bn(const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b>\n+&y)\n+550 {\n+551 for (unsigned int rr=0; rr\n+_\b5_\b5_\b6 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\by_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\by_\b> &y)\n+557 {\n+558 deriv_[r].assign(r,y);\n+559 }\n+560\n+_\b5_\b6_\b1 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n+562 {\n+563 return reinterpret_cast<_\bB_\bl_\bo_\bc_\bk&>(*this);\n+564 }\n+_\b5_\b6_\b5 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n+566 {\n+567 return reinterpret_cast(*this);\n+568 }\n+569\n+_\b5_\b7_\b0 _\bS_\bc_\ba_\bl_\ba_\br_\bD_\be_\br_\bi_\bv &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) {\n+571 return deriv_[r];\n+572 }\n+_\b5_\b7_\b3 const _\bS_\bc_\ba_\bl_\ba_\br_\bD_\be_\br_\bi_\bv &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) const {\n+574 return deriv_[r];\n+575 }\n+576 protected:\n+_\b5_\b7_\b7 Dune::FieldVector _\bd_\be_\br_\bi_\bv_\b_;\n+578 };\n+579\n+580 // ******************************************\n+581 // AXPY *************************************\n+582 // ******************************************\n+583 template \n+_\b5_\b8_\b4 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by\n+585 {\n+586 template \n+_\b5_\b8_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n+588 const Vec1 &x, Vec2 &y)\n+589 {\n+590 y.axpy(a,x);\n+591 }\n+592 };\n+593 template \n+_\b5_\b9_\b7 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,Vec2,deriv>\n+598 {\n+_\b5_\b9_\b9 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n+600 template \n+_\b6_\b0_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n+602 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n+603 {\n+604 const FieldVector &xx = x.template block();\n+605 for (int i=0; i\n+_\b6_\b1_\b3 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,Vec2,deriv>\n+614 {\n+_\b6_\b1_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n+616 template \n+_\b6_\b1_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n+618 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n+619 {\n+620 for (int rr=0; rr,\n+622 Vec2,deriv>_\b:_\b:_\ba_\bp_\bp_\bl_\by(rr,a,x[rr],y);\n+623 }\n+624 };\n+625 template \n+_\b6_\b2_\b9 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,Vec2,deriv>\n+630 {\n+_\b6_\b3_\b1 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n+632 template \n+_\b6_\b3_\b3 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n+634 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n+635 {\n+636 _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b>,\n+637 Vec2,deriv>_\b:_\b:_\ba_\bp_\bp_\bl_\by(r,a,x[0],y);\n+638 }\n+639 };\n+640 template \n+_\b6_\b4_\b4 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,Vec2,deriv>\n+645 {\n+_\b6_\b4_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n+647 template \n+_\b6_\b4_\b8 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n+649 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n+650 {\n+651 typedef _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv_\b> LFETensorType;\n+652 const unsigned int rr = r*LFETensorType::size;\n+653 const FieldVector &xx = x.template block();\n+654 for (int i=0; i::dimension; ++i)\n+655 y[rr+i] += xx[i]*a;\n+656 }\n+657 };\n+658\n+659 // ***********************************************\n+660 // Assign ****************************************\n+661 // ***********************************************\n+662 template \n+_\b6_\b6_\b3 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn\n+664 {\n+_\b6_\b6_\b5 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Vec1 &vec1,Vec2 &vec2)\n+666 {\n+667 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1,vec2);\n+668 }\n+669 };\n+670 template \n+_\b6_\b7_\b2 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+673 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n+674 {\n+_\b6_\b7_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n+_\b6_\b7_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b2;\n+_\b6_\b7_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+678 {\n+679 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n+680 }\n+681 };\n+682 template \n+_\b6_\b8_\b4 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+685 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n+686 {\n+_\b6_\b8_\b7 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n+_\b6_\b8_\b8 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>\n+_\bV_\be_\bc_\b2;\n+_\b6_\b8_\b9 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+690 {\n+691 vec2.assign(vec1);\n+692 }\n+693 };\n+694 template \n+_\b6_\b9_\b6 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+697 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n+698 {\n+_\b6_\b9_\b9 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>\n+_\bV_\be_\bc_\b1;\n+_\b7_\b0_\b0 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b2;\n+_\b7_\b0_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+702 {\n+703 vec2.assign(vec1);\n+704 }\n+705 };\n+706 template \n+_\b7_\b0_\b8 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+709 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n+710 {\n+_\b7_\b1_\b1 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n+_\b7_\b1_\b2 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b2;\n+_\b7_\b1_\b3 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+714 {\n+715 vec2.assign(r,vec1);\n+716 }\n+717 };\n+718 template \n+_\b7_\b2_\b0 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+721 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n+722 {\n+_\b7_\b2_\b3 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n+_\b7_\b2_\b4 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>\n+_\bV_\be_\bc_\b2;\n+_\b7_\b2_\b5 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+726 {\n+727 vec2.assign(r,vec1);\n+728 }\n+729 };\n+730 template \n+_\b7_\b3_\b2 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+733 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n+734 {\n+_\b7_\b3_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n+_\b7_\b3_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b2;\n+_\b7_\b3_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+738 {\n+739 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n+740 }\n+741 };\n+742 template \n+_\b7_\b4_\b4 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+745 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n+746 {\n+_\b7_\b4_\b7 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n+_\b7_\b4_\b8 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b2;\n+_\b7_\b4_\b9 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+750 {\n+751 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n+752 }\n+753 };\n+754 template \n+_\b7_\b5_\b6 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+757 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n+758 {\n+_\b7_\b5_\b9 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n+_\b7_\b6_\b0 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b2;\n+_\b7_\b6_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+762 {\n+763 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n+764 }\n+765 };\n+766 template \n+_\b7_\b6_\b8 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+769 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n+770 {\n+_\b7_\b7_\b1 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n+_\b7_\b7_\b2 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b2_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b2;\n+_\b7_\b7_\b3 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+774 {\n+775 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n+776 }\n+777 };\n+778 template \n+_\b7_\b8_\b0 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,\n+781 F2 >\n+782 {\n+_\b7_\b8_\b3 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n+_\b7_\b8_\b4 typedef F2 _\bV_\be_\bc_\b2;\n+_\b7_\b8_\b5 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+786 {\n+787 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2);\n+788 }\n+789 };\n+790 template \n+_\b7_\b9_\b3 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n+794 {\n+_\b7_\b9_\b5 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n+_\b7_\b9_\b6 typedef FieldVector _\bV_\be_\bc_\b2;\n+_\b7_\b9_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+798 {\n+799 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.template block<0>(),vec2);\n+800 }\n+801 };\n+802 template \n+_\b8_\b0_\b5 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n+806 {\n+_\b8_\b0_\b7 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>\n+_\bV_\be_\bc_\b1;\n+_\b8_\b0_\b8 typedef FieldVector _\bV_\be_\bc_\b2;\n+_\b8_\b0_\b9 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+810 {\n+811 for (int rr=0; rr()[0].block(),vec2[rr]);\n+813 }\n+814 };\n+815 template \n+_\b8_\b1_\b8 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n+819 {\n+_\b8_\b2_\b0 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n+_\b8_\b2_\b1 typedef FieldVector _\bV_\be_\bc_\b2;\n+_\b8_\b2_\b2 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+823 {\n+824 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.template tensor<0>()[0].block(),vec2[r]);\n+825 }\n+826 };\n+827 template \n+_\b8_\b3_\b0 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n+831 {\n+_\b8_\b3_\b2 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n+_\b8_\b3_\b3 typedef FieldVector _\bV_\be_\bc_\b2;\n+_\b8_\b3_\b4 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+835 {\n+836 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1[0].template tensor<0>()[0].block(),vec2[r]);\n+837 }\n+838 };\n+839 template \n+_\b8_\b4_\b2 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n+843 {\n+_\b8_\b4_\b4 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n+_\b8_\b4_\b5 typedef FieldVector _\bV_\be_\bc_\b2;\n+_\b8_\b4_\b6 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+847 {\n+848 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.template tensor<0>()[0].block(),vec2);\n+849 }\n+850 };\n+851 template \n+_\b8_\b5_\b4 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs,FieldVector >\n+855 {\n+_\b8_\b5_\b6 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\bF_\b1_\b,_\bd_\bi_\bm_\bD_\b,_\b1_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n+_\b8_\b5_\b7 typedef FieldVector _\bV_\be_\bc_\b2;\n+_\b8_\b5_\b8 static void _\ba_\bp_\bp_\bl_\by(unsigned int /*r*/,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n+859 {\n+860 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1[0].template tensor<0>()[0].block(),vec2);\n+861 }\n+862 };\n+863\n+864 // ***********************************************\n+865 // IO ********************************************\n+866 // ***********************************************\n+867 template \n+_\b8_\b6_\b8 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\be_\br_\bi_\bv\n+_\b> &tensor )\n+869 {\n+870 return out << tensor._\bb_\bl_\bo_\bc_\bk();\n+871 }\n+872#if 0\n+873 template \n+874 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const ScalarDerivatives<\n+F,dimD,deriv > &d )\n+875 {\n+876 out << static_cast &>(d);\n+877 out << \" , \" << d.tensor() << std::endl;\n+878 return out;\n+879 }\n+880 template \n+881 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const ScalarDerivatives<\n+F,dimD,0 > &d )\n+882 {\n+883 out << d.tensor() << std::endl;\n+884 return out;\n+885 }\n+886#endif\n+887 template \n+_\b8_\b8_\b8 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b> &d )\n+889 {\n+890 out << \" ( \";\n+891 out << d[0];\n+892 for (int r=1; r\n+_\b9_\b0_\b0 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b> &d )\n+901 {\n+902 out << static_cast &>(d);\n+903 out << \" ( \";\n+904 out << d[0];\n+905 for (int r=1; r\n+_\b9_\b1_\b3 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b> &d )\n+914 {\n+915 out << \" ( \";\n+916 out << d[0];\n+917 for (int r=1; r\n+_\b9_\b2_\b5 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\b0_\b,_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b> &d )\n+926 {\n+927 out << \" ( \";\n+928 out << d[0];\n+929 for (int r=1; r\n+_\b9_\b3_\b7 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const std::\n+vector<_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\bd_\bi_\bm_\bD_\b,_\bd_\bi_\bm_\bR_\b,_\bd_\be_\br_\bi_\bv_\b,_\bl_\ba_\by_\bo_\bu_\bt_\b _\b> > &y )\n+938 {\n+939 out << \"Number of basis functions: \" << y.size() << std::endl;\n+940 for (unsigned int i=0; i s=0)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:100\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n-3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:30\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<\n+std::ostream & operator<<(std::ostream &out, const LFEMatrix< Field > &mat)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:151\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt\n+DerivativeLayout\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be\n+@ derivative\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+@ value\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:176\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+const Block & block() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=\n+This & operator*=(const field_type &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n+Dune::FieldVector< F, size > Block\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const FF &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bb_\bl_\bo_\bc_\bk_\b_\n+Block block_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n+F field_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\ba_\bx_\bp_\by\n+void axpy(const F &a, const This &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+Block & block()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const LFETensor< Fy, dimD, deriv > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n+static const unsigned int size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const field_type & operator[](const unsigned int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be\n+typename FieldTraits< field_type >::real_type real_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n+F field_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:96\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+Block & block()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:162\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n+F field_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk_\b_\n+Block block_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const LFETensor< Fy, dimD, 0 > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:157\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+const Block & block() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\ba_\bx_\bp_\by\n+void axpy(const F &a, const This &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:152\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b0_\b _\b>_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n+Dune::FieldVector< F, size > Block\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:121\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:180\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n+F field_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:186\n+_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\br_\be_\ba_\bl_\b__\bt_\by_\bp_\be\n+typename FieldTraits< field_type >::real_type real_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:194\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs\n+Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > This\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:195\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR >\n+&t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:219\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:\n+_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n+F field_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:200\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n+Derivatives< F, dimD, dimR, deriv-1, DerivativeLayoutNS::value > Base\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const\n+std::integral_constant< int, dorder > &dorderVar) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:339\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:317\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value\n+> &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:243\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::\n+derivative > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:330\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const F &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:208\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br\n+_\b[_\b]\n+const ThisLFETensor & operator[](int r) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:312\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:303\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:\n+_\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n+LFETensor< F, dimD, deriv > ThisLFETensor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv,\n+DerivativeLayoutNS::value > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:263\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block\n+() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:296\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::\n+integral_constant< int, dorder > &dorderVar)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:350\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+const Block & block() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:277\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bx_\bp_\by\n+void axpy(const F &a, const This &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::\n+derivative > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:249\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:213\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv,\n+DerivativeLayoutNS::derivative > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:268\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const Block &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:224\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n+Dune::FieldVector< F, size > Block\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:206\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br_\b_\n+Dune::FieldVector< ThisLFETensor, dimR > tensor_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:359\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::\n+integral_constant< int, deriv > &dorderVar)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:355\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:290\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimRy, deriv, DerivativeLayoutNS::\n+value > &y, unsigned int r)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:257\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:283\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+const Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const\n+std::integral_constant< int, deriv > &dorderVar) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:344\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br\n+_\b[_\b]\n+ThisLFETensor & operator[](int r)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:309\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+Block & block()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:273\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:323\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:364\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+ThisLFETensor & operator[](int r)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:442\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n+LFETensor< F, dimD, 0 > ThisLFETensor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:366\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:465\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::\n+integral_constant< int, 0 > &dorderVar)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:479\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::value >\n+&y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:407\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:368\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs\n+Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > This\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:365\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::\n+derivative > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:484\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimRy, 0, DerivativeLayoutNS::value >\n+&y, unsigned int r)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:418\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:449\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:453\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const Block &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:390\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n+F field_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:369\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const ThisLFETensor & operator[](int r) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:445\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br\n+const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::\n+integral_constant< int, 0 > &dorderVar) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:474\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bB_\bl_\bo_\bc_\bk\n+Dune::FieldVector< F, size > Block\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:375\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+const Block & block() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:437\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block\n+() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:458\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0,\n+DerivativeLayoutNS::derivative > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:428\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::\n+derivative > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:412\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0,\n+DerivativeLayoutNS::value > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:423\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:384\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:490\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bt_\be_\bn_\bs_\bo_\br_\b_\n+Dune::FieldVector< ThisLFETensor, dimR > tensor_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:499\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:495\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const FF &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:378\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\bb_\bl_\bo_\bc_\bk\n+Block & block()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:433\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\b0_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b:_\b:_\ba_\bx_\bp_\by\n+void axpy(const F &a, const This &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:402\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:505\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const FF &f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:519\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bb_\bl_\bo_\bc_\bk\n+Block & block()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:561\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:509\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bb_\bl_\bo_\bc_\bk\n+const Block & block() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:565\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be\n+F field_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:510\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, layouty >\n+&y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:556\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+ScalarDeriv & operator[](int r)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:570\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value\n+> &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:549\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:_\bT_\bh_\bi_\bs\n+Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > This\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:506\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bS_\bc_\ba_\bl_\ba_\br_\bD_\be_\br_\bi_\bv\n+Derivatives< F, dimD, 1, deriv, DerivativeLayoutNS::value > ScalarDeriv\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:507\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const ScalarDeriv & operator[](int r) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:573\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:_\ba_\bx_\bp_\by\n+void axpy(const FF &a, const This &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:537\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+This & operator=(const Block &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:524\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bB_\bl_\bo_\bc_\bk\n+Dune::FieldVector< F, size > Block\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:516\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\b_\n+Dune::FieldVector< ScalarDeriv, dimR > deriv_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:577\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn\n+void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::\n+derivative > &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:543\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:585\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:587\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+_\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:601\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be\n+_\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:599\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:615\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:617\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivative > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:631\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:633\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,\n+_\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:648\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,\n+_\bV_\be_\bc_\b2_\b,_\b _\bd_\be_\br_\bi_\bv_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:646\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:664\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:665\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, dimR, deriv, layout > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:675\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+Derivatives< F2, dimD, dimR, deriv, layout > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:676\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:677\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:687\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:689\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:688\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:700\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:699\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:701\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, layout > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:711\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:713\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:712\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, layout > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:723\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:725\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<\n+_\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:724\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:735\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:736\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:737\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n+_\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:747\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n+_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:749\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>\n+_\b>_\b:_\b:_\bV_\be_\bc_\b2\n+Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:748\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:\n+_\bV_\be_\bc_\b2\n+Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:760\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:\n+_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:761\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b _\b>_\b:_\b:\n+_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:759\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:\n+_\bV_\be_\bc_\b2\n+Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:772\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:\n+_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:773\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b _\b>_\b:_\b:\n+_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:771\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bF_\b2_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+F2 Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:784\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bF_\b2_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:785\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bl_\ba_\by_\bo_\bu_\bt_\b _\b>_\b,_\b _\bF_\b2_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, layout > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:783\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:795\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+FieldVector< F2, dimR > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:796\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:797\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:807\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:809\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\bd_\bi_\bm_\bR_\b,_\b _\bd_\be_\br_\bi_\bv_\b,\n+_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+FieldVector< F2, dimR > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:808\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:820\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+FieldVector< F2, dimR > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:821\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:822\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:834\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:832\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+FieldVector< F2, dimR > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:833\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+FieldVector< F2, 1 > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:845\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:844\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:846\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b1\n+Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:856\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:858\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b<_\b _\bF_\b1_\b,_\b _\bd_\bi_\bm_\bD_\b,_\b _\b1_\b,_\b _\bd_\be_\br_\bi_\bv_\b,_\b _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bL_\ba_\by_\bo_\bu_\bt_\bN_\bS_\b:_\b:\n+_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b _\b>_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\b2_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:_\bV_\be_\bc_\b2\n+FieldVector< F2, 1 > Vec2\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:857\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube2d.hh File Reference\n+dune-localfunctions: l2interpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,41 @@\n
    \n
    \n
    \n \n \n \n \n
    \n \n-
    raviartthomas1cube2d.hh File Reference
    \n+
    l2interpolation.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "raviartthomas1cube2d/raviartthomas1cube2dlocalbasis.hh"
    \n-#include "raviartthomas1cube2d/raviartthomas1cube2dlocalinterpolation.hh"
    \n-#include "raviartthomas1cube2d/raviartthomas1cube2dlocalcoefficients.hh"
    \n+
    #include <dune/common/concept.hh>
    \n+#include <dune/common/dynmatrix.hh>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT1Cube2DLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on quadrilaterals. More...
    class  Dune::LocalL2InterpolationBase< B, Q >
     
    struct  Dune::LocalL2Interpolation< B, Q, true >
     
    struct  Dune::LocalL2Interpolation< B, Q, false >
     
    struct  Dune::LocalL2InterpolationFactory< BasisFactory, onb >
     A factory class for the local l2 interpolations taking a basis factory. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,30 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas1cube2d.hh File Reference\n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+l2interpolation.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bB_\b,_\b _\bQ_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bt_\br_\bu_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bo_\bn_\bb_\b _\b>\n+\u00a0 A factory class for the local l2 interpolations taking a basis\n+ factory. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube2d.hh Source File\n+dune-localfunctions: l2interpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,242 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube2d.hh
    \n+
    l2interpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_L2INTERPOLATION_HH
    \n+
    6#define DUNE_L2INTERPOLATION_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n+
    8#include <dune/common/concept.hh>
    \n+
    9#include <dune/common/dynmatrix.hh>
    \n+
    10
    \n+
    11#include <dune/geometry/quadraturerules.hh>
    \n+
    12
    \n+\n
    14
    \n
    15namespace Dune
    \n
    16{
    \n-
    17
    \n-
    26 template<class D, class R>
    \n-
    \n-\n-
    28 {
    \n-
    29
    \n-
    30 public:
    \n-\n-\n-\n-\n-
    35
    \n-\n+
    32 template< class B, class Q, bool onb >
    \n+\n+
    34
    \n+
    35 template< class B, class Q >
    \n+
    \n+\n+
    37 {
    \n+\n
    39
    \n-
    \n-\n-
    46 basis(s),
    \n-
    47 interpolation(s)
    \n-
    48 {}
    \n-
    \n-
    49
    \n-
    \n-
    50 const typename Traits::LocalBasisType& localBasis () const
    \n-
    51 {
    \n-
    52 return basis;
    \n-
    53 }
    \n-
    \n+
    40 public:
    \n+
    41 typedef B Basis;
    \n+
    42 typedef Q Quadrature;
    \n+
    43
    \n+
    44 static const unsigned int dimension = Basis::dimension;
    \n+
    45
    \n+
    47 template< class Function, class DofField>
    \n+
    \n+
    48 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n+
    49 {
    \n+
    50 typedef FieldVector< DofField, Basis::dimRange > RangeVector;
    \n+
    51
    \n+
    52 const unsigned int size = basis().size();
    \n+
    53 static std::vector< RangeVector > basisValues( size );
    \n
    54
    \n-
    \n-\n-
    56 {
    \n-
    57 return coefficients;
    \n-
    58 }
    \n-
    \n+
    55 coefficients.resize( size );
    \n+
    56 basisValues.resize( size );
    \n+
    57 for( unsigned int i = 0; i < size; ++i )
    \n+
    58 coefficients[ i ] = Zero< DofField >();
    \n
    59
    \n-
    \n-\n-
    61 {
    \n-
    62 return interpolation;
    \n-
    63 }
    \n-
    \n-
    64
    \n-
    \n-
    66 unsigned int size () const
    \n-
    67 {
    \n-
    68 return basis.size();
    \n+
    60 for (auto&& qp : quadrature())
    \n+
    61 {
    \n+
    62 basis().evaluate( qp.position(), basisValues );
    \n+
    63 auto val = function( qp.position() );
    \n+
    64 RangeVector factor = field_cast< DofField >( val );
    \n+
    65 factor *= field_cast< DofField >( qp.weight() );
    \n+
    66 for( unsigned int i = 0; i < size; ++i )
    \n+
    67 coefficients[ i ] += factor * basisValues[ i ];
    \n+
    68 }
    \n
    69 }
    \n
    \n
    70
    \n
    \n-
    71 static constexpr GeometryType type ()
    \n-
    72 {
    \n-
    73 return GeometryTypes::quadrilateral;
    \n+
    71 const Basis &basis () const
    \n+
    72 {
    \n+
    73 return basis_;
    \n
    74 }
    \n
    \n
    75
    \n-
    76 private:
    \n-\n-
    78 RT1Cube2DLocalCoefficients coefficients;
    \n-\n-
    80 };
    \n-
    \n-
    81}
    \n-
    82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+
    \n+
    76 const Quadrature &quadrature () const
    \n+
    77 {
    \n+
    78 return quadrature_;
    \n+
    79 }
    \n+
    \n+
    80
    \n+
    81 protected:
    \n+
    \n+\n+
    83 : basis_( basis ),
    \n+\n+
    85 {}
    \n+
    \n+
    86
    \n+
    87 const Basis &basis_;
    \n+\n+
    89 };
    \n+
    \n+
    90
    \n+
    91 template< class B, class Q >
    \n+
    \n+
    92 struct LocalL2Interpolation<B,Q,true>
    \n+
    93 : public LocalL2InterpolationBase<B,Q>
    \n+
    94 {
    \n+\n+
    96 template< class BasisFactory, bool onb >
    \n+\n+
    98 using typename Base::Basis;
    \n+
    99 using typename Base::Quadrature;
    \n+
    100 private:
    \n+
    101 LocalL2Interpolation ( const typename Base::Basis &basis, const typename Base::Quadrature &quadrature )
    \n+
    102 : Base(basis,quadrature)
    \n+
    103 {}
    \n+
    104 };
    \n+
    \n+
    105 template< class B, class Q >
    \n+
    \n+
    106 struct LocalL2Interpolation<B,Q,false>
    \n+
    107 : public LocalL2InterpolationBase<B,Q>
    \n+
    108 {
    \n+\n+
    110 template< class BasisFactory, bool onb >
    \n+\n+
    112 using typename Base::Basis;
    \n+
    113 using typename Base::Quadrature;
    \n+
    114 template< class Function, class DofField >
    \n+
    \n+
    115 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n+
    116 {
    \n+
    117 const unsigned size = Base::basis().size();
    \n+
    118 Base::interpolate(function,val_);
    \n+
    119 coefficients.resize( size );
    \n+
    120 for (unsigned int i=0; i<size; ++i)
    \n+
    121 {
    \n+
    122 coefficients[i] = 0;
    \n+
    123 for (unsigned int j=0; j<size; ++j)
    \n+
    124 {
    \n+
    125 coefficients[i] += field_cast<DofField>(massMatrix_[i][j]*val_[j]);
    \n+
    126 }
    \n+
    127 }
    \n+
    128 }
    \n+
    \n+
    129 private:
    \n+
    130 LocalL2Interpolation ( const typename Base::Basis &basis, const typename Base::Quadrature &quadrature )
    \n+
    131 : Base(basis,quadrature),
    \n+
    132 val_(basis.size()),
    \n+
    133 massMatrix_(basis.size(),basis.size(),Field(0))
    \n+
    134 {
    \n+
    135 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;
    \n+
    136 typedef typename Base::Quadrature::iterator Iterator;
    \n+
    137 const unsigned size = basis.size();
    \n+
    138 std::vector< RangeVector > basisValues( size );
    \n+
    139
    \n+
    140 const Iterator end = Base::quadrature().end();
    \n+
    141 for( Iterator it = Base::quadrature().begin(); it != end; ++it )
    \n+
    142 {
    \n+
    143 Base::basis().evaluate( it->position(), basisValues );
    \n+
    144 for (unsigned int i=0; i<size; ++i)
    \n+
    145 for (unsigned int j=0; j<size; ++j)
    \n+
    146 massMatrix_[i][j] += (basisValues[i]*basisValues[j])*it->weight();
    \n+
    147 }
    \n+
    148 massMatrix_.invert();
    \n+
    149 }
    \n+
    150 typedef typename Base::Basis::StorageField Field;
    \n+
    151 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;
    \n+
    152 typedef DynamicMatrix<Field> MassMatrix;
    \n+
    153 mutable std::vector<Field> val_;
    \n+
    154 MassMatrix massMatrix_;
    \n+
    155 };
    \n+
    \n+
    156
    \n+
    161 template< class BasisFactory, bool onb >
    \n+
    \n+\n+
    163 {
    \n+
    164 static const unsigned int dimension = BasisFactory::dimension;
    \n+
    165 typedef typename BasisFactory::Key Key;
    \n+
    166 typedef typename BasisFactory::Object Basis;
    \n+
    167 typedef double Field;
    \n+
    168 typedef QuadratureRule<Field,dimension> Quadrature;
    \n+
    169 typedef QuadratureRules<Field,dimension> QuadratureProvider;
    \n+\n+\n+
    172
    \n+
    173 template< GeometryType::Id geometryId >
    \n+
    \n+
    174 static Object *create ( const Key &key )
    \n+
    175 {
    \n+
    176 constexpr Dune::GeometryType geometry = geometryId;
    \n+
    177 const Basis *basis = BasisFactory::template create< geometry >( key );
    \n+
    178 const Quadrature & quadrature = QuadratureProvider::rule(geometry, 2*basis->order()+1);
    \n+
    179 return new Object( *basis, quadrature );
    \n+
    180 }
    \n+
    \n+
    \n+
    181 static void release ( Object *object )
    \n+
    182 {
    \n+
    183 const Basis &basis = object->basis();
    \n+
    184 BasisFactory::release( &basis );
    \n+
    185 delete object;
    \n+
    186 }
    \n+
    \n+
    187 };
    \n+
    \n+
    188
    \n+
    189}
    \n+
    190
    \n+
    191#endif // #ifndef DUNE_L2INTERPOLATION_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    First order Raviart-Thomas shape functions on quadrilaterals.
    Definition raviartthomas1cube2d.hh:28
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas1cube2d.hh:71
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas1cube2d.hh:55
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas1cube2d.hh:60
    \n-
    LocalFiniteElementTraits< RT1Cube2DLocalBasis< D, R >, RT1Cube2DLocalCoefficients, RT1Cube2DLocalInterpolation< RT1Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas1cube2d.hh:34
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas1cube2d.hh:66
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas1cube2d.hh:50
    \n-
    RT1Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas1cube2d.hh:45
    \n-
    RT1Cube2DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas1cube2d.hh:37
    \n-
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalbasis.hh:28
    \n-
    Layout map for Raviart-Thomas-1 elements on quadrilaterals.
    Definition raviartthomas1cube2dlocalcoefficients.hh:24
    \n-
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalinterpolation.hh:26
    \n+
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n+
    A local L2 interpolation taking a test basis and a quadrature rule.
    Definition l2interpolation.hh:33
    \n+
    Definition l2interpolation.hh:37
    \n+
    LocalL2InterpolationBase(const Basis &basis, const Quadrature &quadrature)
    Definition l2interpolation.hh:82
    \n+
    const Basis & basis() const
    Definition l2interpolation.hh:71
    \n+
    const Quadrature & quadrature_
    Definition l2interpolation.hh:88
    \n+
    void interpolate(const Function &function, std::vector< DofField > &coefficients) const
    Interpolate a function that implements Range operator()(Domain)
    Definition l2interpolation.hh:48
    \n+
    const Basis & basis_
    Definition l2interpolation.hh:87
    \n+
    static const unsigned int dimension
    Definition l2interpolation.hh:44
    \n+
    const Quadrature & quadrature() const
    Definition l2interpolation.hh:76
    \n+
    Q Quadrature
    Definition l2interpolation.hh:42
    \n+
    B Basis
    Definition l2interpolation.hh:41
    \n+
    LocalL2InterpolationBase< B, Q > Base
    Definition l2interpolation.hh:95
    \n+
    void interpolate(const Function &function, std::vector< DofField > &coefficients) const
    Definition l2interpolation.hh:115
    \n+
    LocalL2InterpolationBase< B, Q > Base
    Definition l2interpolation.hh:109
    \n+
    A factory class for the local l2 interpolations taking a basis factory.
    Definition l2interpolation.hh:163
    \n+
    static const unsigned int dimension
    Definition l2interpolation.hh:164
    \n+
    static void release(Object *object)
    Definition l2interpolation.hh:181
    \n+
    BasisFactory::Object Basis
    Definition l2interpolation.hh:166
    \n+
    double Field
    Definition l2interpolation.hh:167
    \n+
    QuadratureRules< Field, dimension > QuadratureProvider
    Definition l2interpolation.hh:169
    \n+
    QuadratureRule< Field, dimension > Quadrature
    Definition l2interpolation.hh:168
    \n+
    static Object * create(const Key &key)
    Definition l2interpolation.hh:174
    \n+
    BasisFactory::Key Key
    Definition l2interpolation.hh:165
    \n+
    const LocalInterpolation Object
    Definition l2interpolation.hh:171
    \n+
    LocalL2Interpolation< Basis, Quadrature, onb > LocalInterpolation
    Definition l2interpolation.hh:170
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,137 +1,272 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas1cube2d.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+l2interpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_L2INTERPOLATION_HH\n+6#define DUNE_L2INTERPOLATION_HH\n 7\n-8#include \n-9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+8#include \n+9#include \n+10\n+11#include \n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n 14\n 15namespace _\bD_\bu_\bn_\be\n 16{\n-17\n-26 template\n-_\b2_\b7 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-28 {\n-29\n-30 public:\n-31 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-32 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-33 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b4 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-35\n-_\b3_\b7 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-38 {}\n+32 template< class B, class Q, bool onb >\n+_\b3_\b3 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+34\n+35 template< class B, class Q >\n+_\b3_\b6 class _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+37 {\n+38 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bB_\b,_\b _\bQ_\b _\b> _\bT_\bh_\bi_\bs;\n 39\n-_\b4_\b5 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-46 basis(s),\n-47 interpolation(s)\n-48 {}\n-49\n-_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-51 {\n-52 return basis;\n-53 }\n+40 public:\n+_\b4_\b1 typedef B _\bB_\ba_\bs_\bi_\bs;\n+_\b4_\b2 typedef Q _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n+43\n+_\b4_\b4 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Basis::dimension;\n+45\n+47 template< class Function, class DofField>\n+_\b4_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, std::vector< DofField >\n+&coefficients ) const\n+49 {\n+50 typedef FieldVector< DofField, Basis::dimRange > RangeVector;\n+51\n+52 const unsigned int size = _\bb_\ba_\bs_\bi_\bs().size();\n+53 static std::vector< RangeVector > basisValues( size );\n 54\n-_\b5_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-56 {\n-57 return coefficients;\n-58 }\n+55 coefficients.resize( size );\n+56 basisValues.resize( size );\n+57 for( unsigned int i = 0; i < size; ++i )\n+58 coefficients[ i ] = _\bZ_\be_\br_\bo_\b<_\b _\bD_\bo_\bf_\bF_\bi_\be_\bl_\bd_\b _\b>();\n 59\n-_\b6_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+60 for (auto&& qp : _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be())\n 61 {\n-62 return interpolation;\n-63 }\n-64\n-_\b6_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-67 {\n-68 return basis.size();\n+62 _\bb_\ba_\bs_\bi_\bs().evaluate( qp.position(), basisValues );\n+63 auto val = function( qp.position() );\n+64 RangeVector factor = field_cast< DofField >( val );\n+65 factor *= field_cast< DofField >( qp.weight() );\n+66 for( unsigned int i = 0; i < size; ++i )\n+67 coefficients[ i ] += factor * basisValues[ i ];\n+68 }\n 69 }\n 70\n-_\b7_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+_\b7_\b1 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs () const\n 72 {\n-73 return GeometryTypes::quadrilateral;\n+73 return _\bb_\ba_\bs_\bi_\bs_\b_;\n 74 }\n 75\n-76 private:\n-77 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-78 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-79 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-80 };\n-81}\n-82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\b7_\b6 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be () const\n+77 {\n+78 return _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_;\n+79 }\n+80\n+81 protected:\n+_\b8_\b2 _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be ( const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs, const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be\n+)\n+83 : _\bb_\ba_\bs_\bi_\bs_\b_( _\bb_\ba_\bs_\bi_\bs ),\n+84 _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_( _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be )\n+85 {}\n+86\n+_\b8_\b7 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs_\b_;\n+_\b8_\b8 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_;\n+89 };\n+90\n+91 template< class B, class Q >\n+_\b9_\b2 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+93 : public _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+94 {\n+_\b9_\b5 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\bB_\b,_\bQ_\b> _\bB_\ba_\bs_\be;\n+96 template< class BasisFactory, bool onb >\n+_\b9_\b7 friend class _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+98 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs;\n+99 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n+100 private:\n+101 _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ( const typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs &basis, const typename\n+_\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &quadrature )\n+102 : _\bB_\ba_\bs_\be(basis,quadrature)\n+103 {}\n+104 };\n+105 template< class B, class Q >\n+_\b1_\b0_\b6 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+107 : public _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+108 {\n+_\b1_\b0_\b9 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\bB_\b,_\bQ_\b> _\bB_\ba_\bs_\be;\n+110 template< class BasisFactory, bool onb >\n+_\b1_\b1_\b1 friend class _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+112 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs;\n+113 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n+114 template< class Function, class DofField >\n+_\b1_\b1_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, std::vector< DofField >\n+&coefficients ) const\n+116 {\n+117 const unsigned size = Base::basis().size();\n+118 Base::interpolate(function,val_);\n+119 coefficients.resize( size );\n+120 for (unsigned int i=0; i(massMatrix_[i][j]*val_[j]);\n+126 }\n+127 }\n+128 }\n+129 private:\n+130 _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ( const typename Base::Basis &basis, const typename\n+Base::Quadrature &quadrature )\n+131 : Base(basis,quadrature),\n+132 val_(basis.size()),\n+133 massMatrix_(basis.size(),basis.size(),Field(0))\n+134 {\n+135 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;\n+136 typedef typename Base::Quadrature::iterator Iterator;\n+137 const unsigned size = basis.size();\n+138 std::vector< RangeVector > basisValues( size );\n+139\n+140 const Iterator end = Base::quadrature().end();\n+141 for( Iterator it = Base::quadrature().begin(); it != end; ++it )\n+142 {\n+143 Base::basis().evaluate( it->position(), basisValues );\n+144 for (unsigned int i=0; iweight();\n+147 }\n+148 massMatrix_.invert();\n+149 }\n+150 typedef typename Base::Basis::StorageField Field;\n+151 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;\n+152 typedef DynamicMatrix MassMatrix;\n+153 mutable std::vector val_;\n+154 MassMatrix massMatrix_;\n+155 };\n+156\n+161 template< class BasisFactory, bool onb >\n+_\b1_\b6_\b2 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+163 {\n+_\b1_\b6_\b4 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = BasisFactory::dimension;\n+_\b1_\b6_\b5 typedef typename BasisFactory::Key _\bK_\be_\by;\n+_\b1_\b6_\b6 typedef typename BasisFactory::Object _\bB_\ba_\bs_\bi_\bs;\n+_\b1_\b6_\b7 typedef double _\bF_\bi_\be_\bl_\bd;\n+_\b1_\b6_\b8 typedef QuadratureRule _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n+_\b1_\b6_\b9 typedef QuadratureRules _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br;\n+_\b1_\b7_\b0 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\ba_\bs_\bi_\bs_\b,_\b _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b,_\b _\bo_\bn_\bb_\b _\b> _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+_\b1_\b7_\b1 typedef const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bO_\bb_\bj_\be_\bc_\bt;\n+172\n+173 template< GeometryType::Id geometryId >\n+_\b1_\b7_\b4 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n+175 {\n+176 constexpr Dune::GeometryType geometry = geometryId;\n+177 const _\bB_\ba_\bs_\bi_\bs *basis = BasisFactory::template create< geometry >( key );\n+178 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be & quadrature = QuadratureProvider::rule(geometry, 2*basis-\n+>order()+1);\n+179 return new _\bO_\bb_\bj_\be_\bc_\bt( *basis, quadrature );\n+180 }\n+_\b1_\b8_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be ( _\bO_\bb_\bj_\be_\bc_\bt *object )\n+182 {\n+183 const _\bB_\ba_\bs_\bi_\bs &basis = object->basis();\n+184 BasisFactory::release( &basis );\n+185 delete object;\n+186 }\n+187 };\n+188\n+189}\n+190\n+191#endif // #ifndef DUNE_L2INTERPOLATION_HH\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Raviart-Thomas shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT1Cube2DLocalBasis< D, R >,\n-RT1Cube2DLocalCoefficients, RT1Cube2DLocalInterpolation< RT1Cube2DLocalBasis<\n-D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT1Cube2DLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT1Cube2DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalinterpolation.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n+A class representing the zero of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+A local L2 interpolation taking a test basis and a quadrature rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+LocalL2InterpolationBase(const Basis &basis, const Quadrature &quadrature)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n+const Basis & basis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_\n+const Quadrature & quadrature_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const Function &function, std::vector< DofField >\n+&coefficients) const\n+Interpolate a function that implements Range operator()(Domain)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_\n+const Basis & basis_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be\n+const Quadrature & quadrature() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be\n+Q Quadrature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+B Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bt_\br_\bu_\be_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n+LocalL2InterpolationBase< B, Q > Base\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const Function &function, std::vector< DofField >\n+&coefficients) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\b,_\b _\bQ_\b,_\b _\bf_\ba_\bl_\bs_\be_\b _\b>_\b:_\b:_\bB_\ba_\bs_\be\n+LocalL2InterpolationBase< B, Q > Base\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+A factory class for the local l2 interpolations taking a basis factory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:163\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:164\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:181\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+BasisFactory::Object Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+double Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:167\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+QuadratureRules< Field, dimension > QuadratureProvider\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:169\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be\n+QuadratureRule< Field, dimension > Quadrature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:168\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:174\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+BasisFactory::Key Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:165\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const LocalInterpolation Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:171\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+LocalL2Interpolation< Basis, Quadrature, onb > LocalInterpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:170\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas02dlocalcoefficients.hh File Reference\n+dune-localfunctions: coeffmatrix.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,40 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas02dlocalcoefficients.hh File Reference
    \n+
    coeffmatrix.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n+
    #include <cassert>
    \n #include <iostream>
    \n #include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n+#include <dune/localfunctions/utility/tensor.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT02DLocalCoefficients
    struct  Dune::Mult< Field, Field2 >
     
    struct  Dune::Mult< Field, FieldVector< Field2, dimRange > >
     
    class  Dune::SparseCoeffMatrix< F, bSize >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas02dlocalcoefficients.hh File Reference\n-#include \n+coeffmatrix.hh File Reference\n+#include \n #include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\b2_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\bi_\be_\bl_\bd_\b2_\b,_\b _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b _\b>_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b,_\b _\bb_\bS_\bi_\bz_\be_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas02dlocalcoefficients.hh Source File\n+dune-localfunctions: coeffmatrix.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,338 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas02dlocalcoefficients.hh
    \n+
    coeffmatrix.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RT0TRIANGLELOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_RT0TRIANGLELOCALCOEFFICIENTS_HH
    \n-
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <iostream>
    \n-
    10#include <vector>
    \n-
    11
    \n-\n+
    5#ifndef DUNE_COEFFMATRIX_HH
    \n+
    6#define DUNE_COEFFMATRIX_HH
    \n+
    7#include <cassert>
    \n+
    8#include <iostream>
    \n+
    9#include <vector>
    \n+
    10#include <dune/common/fvector.hh>
    \n+\n+\n
    13
    \n
    14namespace Dune
    \n
    15{
    \n-
    16
    \n-
    \n-\n-
    25 {
    \n-
    26 public:
    \n+
    16 /*************************************************
    \n+
    17 * Default class for storing a coefficient matrix
    \n+
    18 * for the PolynomialBasis. Basically a simple
    \n+
    19 * CRS structure is used. The additional complexity
    \n+
    20 * is due to the storage and efficient evaluation
    \n+
    21 * of higher order derivatives. See the remarks
    \n+
    22 * in tensor.hh which also hold true for this file.
    \n+
    23 *************************************************/
    \n+
    24 template <class Field, class Field2>
    \n+
    \n+
    25 struct Mult
    \n+
    26 {
    \n+
    27 typedef Field2 BasisEntry;
    \n
    \n-\n-
    29 {
    \n-
    30 for (std::size_t i=0; i<3; i++)
    \n-
    31 li[i] = LocalKey(i,1,0);
    \n+
    28 static void add(const Field &vec1, const BasisEntry &vec2,
    \n+
    29 BasisEntry &res)
    \n+
    30 {
    \n+
    31 res += vec1*vec2;
    \n
    32 }
    \n
    \n-
    33
    \n-
    \n-
    35 std::size_t size () const
    \n-
    36 {
    \n-
    37 return 3;
    \n-
    38 }
    \n-
    \n-
    39
    \n-
    \n-
    41 const LocalKey& localKey (std::size_t i) const
    \n-
    42 {
    \n-
    43 return li[i];
    \n-
    44 }
    \n+
    33 };
    \n+
    \n+
    34
    \n+
    35 template <class Field,class Field2, int dimRange>
    \n+
    \n+
    36 struct Mult< Field,FieldVector<Field2,dimRange> >
    \n+
    37 {
    \n+
    38 typedef FieldVector<Field2,dimRange> BasisEntry;
    \n+
    \n+
    39 static void add(const Field &vec1, const BasisEntry &vec2,
    \n+
    40 BasisEntry &res)
    \n+
    41 {
    \n+
    42 res.axpy(vec1,vec2);
    \n+
    43 }
    \n+
    \n+
    44 };
    \n
    \n
    45
    \n-
    46 private:
    \n-
    47 std::vector<LocalKey> li;
    \n-
    48 };
    \n-
    \n-
    49
    \n-
    50}
    \n-
    51
    \n-
    52#endif
    \n-\n+
    46 template< class F , unsigned int bSize >
    \n+
    \n+\n+
    48 {
    \n+
    49 public:
    \n+
    50 typedef F Field;
    \n+
    51 static const unsigned int blockSize = bSize;
    \n+\n+
    53
    \n+
    \n+\n+
    55 : coeff_(0),
    \n+
    56 rows_(0),
    \n+
    57 skip_(0),
    \n+
    58 numRows_(0),
    \n+
    59 numCols_(0)
    \n+
    60 {}
    \n+
    \n+
    61
    \n+
    \n+\n+
    63 {
    \n+
    64 delete [] coeff_;
    \n+
    65 delete [] rows_;
    \n+
    66 delete [] skip_;
    \n+
    67 }
    \n+
    \n+
    68
    \n+
    \n+
    69 unsigned int size () const
    \n+
    70 {
    \n+
    71 return numRows_/blockSize;
    \n+
    72 }
    \n+
    \n+
    \n+
    73 unsigned int baseSize () const
    \n+
    74 {
    \n+
    75 return numCols_;
    \n+
    76 }
    \n+
    \n+
    77
    \n+
    78 template< class BasisIterator, class FF>
    \n+
    \n+
    79 void mult ( const BasisIterator &x,
    \n+
    80 unsigned int numLsg,
    \n+
    81 FF *y ) const
    \n+
    82 {
    \n+
    83 typedef typename BasisIterator::Derivatives XDerivatives;
    \n+
    84 assert( numLsg*blockSize <= (size_t)numRows_ );
    \n+
    85 unsigned int row = 0;
    \n+
    86 Field *pos = rows_[ 0 ];
    \n+
    87 unsigned int *skipIt = skip_;
    \n+
    88 XDerivatives val;
    \n+
    89 for( size_t i = 0; i < numLsg; ++i)
    \n+
    90 {
    \n+
    91 for( unsigned int r = 0; r < blockSize; ++r, ++row )
    \n+
    92 {
    \n+
    93 val = 0;
    \n+
    94 BasisIterator itx = x;
    \n+
    95 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )
    \n+
    96 {
    \n+
    97 itx += *skipIt;
    \n+
    98 val.axpy(*pos,*itx);
    \n+
    99 }
    \n+
    100 DerivativeAssign<XDerivatives,FF>::apply(r,val,*(y+i*XDerivatives::size*blockSize));
    \n+
    101 }
    \n+
    102 }
    \n+
    103 }
    \n+
    \n+
    104 template< class BasisIterator, class Vector>
    \n+
    \n+
    105 void mult ( const BasisIterator &x,
    \n+
    106 Vector &y ) const
    \n+
    107 {
    \n+
    108 typedef typename Vector::value_type YDerivatives;
    \n+
    109 typedef typename BasisIterator::Derivatives XDerivatives;
    \n+
    110 size_t numLsg = y.size();
    \n+
    111 assert( numLsg*blockSize <= (size_t)numRows_ );
    \n+
    112 unsigned int row = 0;
    \n+
    113 Field *pos = rows_[ 0 ];
    \n+
    114 unsigned int *skipIt = skip_;
    \n+
    115 XDerivatives val;
    \n+
    116 for( size_t i = 0; i < numLsg; ++i)
    \n+
    117 {
    \n+
    118 for( unsigned int r = 0; r < blockSize; ++r, ++row )
    \n+
    119 {
    \n+
    120 val = 0;
    \n+
    121 BasisIterator itx = x;
    \n+
    122 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )
    \n+
    123 {
    \n+
    124 itx += *skipIt;
    \n+
    125 val.axpy(*pos,*itx);
    \n+
    126 }
    \n+\n+
    128 }
    \n+
    129 }
    \n+
    130 }
    \n+
    \n+
    131 template <unsigned int deriv, class BasisIterator, class Vector>
    \n+
    \n+
    132 void mult ( const BasisIterator &x,
    \n+
    133 Vector &y ) const
    \n+
    134 {
    \n+
    135 typedef typename Vector::value_type YDerivatives;
    \n+
    136 typedef typename BasisIterator::Derivatives XDerivatives;
    \n+
    137 typedef FieldVector<typename XDerivatives::Field,YDerivatives::dimension> XLFETensor;
    \n+
    138 size_t numLsg = y.size();
    \n+
    139 assert( numLsg*blockSize <= (size_t)numRows_ );
    \n+
    140 unsigned int row = 0;
    \n+
    141 Field *pos = rows_[ 0 ];
    \n+
    142 unsigned int *skipIt = skip_;
    \n+
    143 for( size_t i = 0; i < numLsg; ++i)
    \n+
    144 {
    \n+
    145 XLFETensor val(typename XDerivatives::Field(0));
    \n+
    146 for( unsigned int r = 0; r < blockSize; ++r, ++row )
    \n+
    147 {
    \n+
    148 BasisIterator itx = x;
    \n+
    149 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )
    \n+
    150 {
    \n+
    151 itx += *skipIt;
    \n+\n+
    153 }
    \n+
    154 }
    \n+
    155 field_cast(val,y[i]);
    \n+
    156 }
    \n+
    157 }
    \n+
    \n+
    158
    \n+
    159 template< class RowMatrix >
    \n+
    \n+
    160 void fill ( const RowMatrix &mat, bool verbose=false )
    \n+
    161 {
    \n+
    162 numRows_ = mat.rows();
    \n+
    163 numCols_ = mat.cols();
    \n+
    164 unsigned int size = numRows_*numCols_;
    \n+
    165
    \n+
    166 delete [] coeff_;
    \n+
    167 delete [] rows_;
    \n+
    168 delete [] skip_;
    \n+
    169
    \n+
    170 Field* coeff = new Field[ size ];
    \n+
    171 // we always initialize the next skip entry to zero,
    \n+
    172 // including the one following the end, so allocate
    \n+
    173 // size+1 entries so we will stay within the bounds.
    \n+
    174 unsigned int *skip = new unsigned int[ size+1 ];
    \n+
    175 rows_ = new Field*[ numRows_+1 ];
    \n+
    176 std::vector<Field> row( numCols_ );
    \n+
    177
    \n+
    178 rows_[ 0 ] = coeff;
    \n+
    179 Field *cit = coeff;
    \n+
    180 unsigned int *sit = skip;
    \n+
    181 for( unsigned int r = 0; r < numRows_; ++r )
    \n+
    182 {
    \n+
    183 *sit = 0;
    \n+
    184 mat.row( r, row );
    \n+
    185 for( unsigned int c = 0; c < numCols_; ++c )
    \n+
    186 {
    \n+
    187 const Field &val = row[c];
    \n+
    188 if (val < Zero<Field>() || Zero<Field>() < val)
    \n+
    189 {
    \n+
    190 *cit = val;
    \n+
    191 ++sit;
    \n+
    192 ++cit;
    \n+
    193 *sit = 1;
    \n+
    194 } else
    \n+
    195 {
    \n+
    196 ++(*sit);
    \n+
    197 }
    \n+
    198 }
    \n+
    199 rows_[ r+1 ] = cit;
    \n+
    200 }
    \n+
    201 assert( size_t(rows_[numRows_]-rows_[0]) <= size_t(size) );
    \n+
    202 size = rows_[numRows_]-rows_[0];
    \n+
    203 coeff_ = new Field[ size ];
    \n+
    204 skip_ = new unsigned int[ size ];
    \n+
    205 for (unsigned int i=0; i<size; ++i)
    \n+
    206 {
    \n+
    207 coeff_[i] = coeff[i];
    \n+
    208 skip_[i] = skip[i];
    \n+
    209 }
    \n+
    210 for (unsigned int i=0; i<=numRows_; ++i)
    \n+
    211 rows_[ i ] = coeff_ + (rows_[ i ] - coeff);
    \n+
    212
    \n+
    213 delete [] coeff;
    \n+
    214 delete [] skip;
    \n+
    215
    \n+
    216 if (verbose)
    \n+
    217 std::cout << "Entries: " << (rows_[numRows_]-rows_[0])
    \n+
    218 << " full: " << numCols_*numRows_
    \n+
    219 << std::endl;
    \n+
    220 }
    \n+
    \n+
    221 // b += a*C[k]
    \n+
    222 template <class Vector>
    \n+
    \n+
    223 void addRow( unsigned int k, const Field &a, Vector &b) const
    \n+
    224 {
    \n+
    225 assert(k<numRows_);
    \n+
    226 unsigned int j=0;
    \n+
    227 unsigned int *skipIt = skip_ + (rows_[ k ]-rows_[ 0 ]);
    \n+
    228 for( Field *pos = rows_[ k ];
    \n+
    229 pos != rows_[ k+1 ];
    \n+
    230 ++pos, ++skipIt )
    \n+
    231 {
    \n+
    232 j += *skipIt;
    \n+
    233 assert( j < b.size() );
    \n+
    234 b[j] += field_cast<typename Vector::value_type>( (*pos)*a ); // field_cast
    \n+
    235 }
    \n+
    236 }
    \n+
    \n+
    237 private:
    \n+
    238 SparseCoeffMatrix ( const This &other )
    \n+
    239 : numRows_( other.numRows_ ),
    \n+
    240 numCols_( other.numCols_ )
    \n+
    241 {
    \n+
    242 const unsigned int size = other.rows_[numRows_]-other.rows_[0];
    \n+
    243 coeff_ = new Field[ size ];
    \n+
    244 rows_ = new Field*[ numRows_+1 ];
    \n+
    245 skip_ = new unsigned int[ size ];
    \n+
    246 for (unsigned int i=0; i<size; ++i)
    \n+
    247 {
    \n+
    248 coeff_[i] = other.coeff_[i];
    \n+
    249 skip_[i] = other.skip_[i];
    \n+
    250 }
    \n+
    251 for (unsigned int i=0; i<=numRows_; ++i)
    \n+
    252 rows_[ i ] = coeff_ + (other.rows_[ i ] - other.coeff_);
    \n+
    253 }
    \n+
    254
    \n+
    255 This &operator= (const This&);
    \n+
    256 Field *coeff_;
    \n+
    257 Field **rows_;
    \n+
    258 unsigned int *skip_;
    \n+
    259 unsigned int numRows_,numCols_;
    \n+
    260 };
    \n+
    \n+
    261
    \n+
    262}
    \n+
    263
    \n+
    264#endif // DUNE_COEFFMATRIX_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Definition raviartthomas02dlocalcoefficients.hh:25
    \n-
    RT02DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas02dlocalcoefficients.hh:28
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas02dlocalcoefficients.hh:41
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas02dlocalcoefficients.hh:35
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    Definition coeffmatrix.hh:26
    \n+
    static void add(const Field &vec1, const BasisEntry &vec2, BasisEntry &res)
    Definition coeffmatrix.hh:28
    \n+
    Field2 BasisEntry
    Definition coeffmatrix.hh:27
    \n+
    FieldVector< Field2, dimRange > BasisEntry
    Definition coeffmatrix.hh:38
    \n+
    static void add(const Field &vec1, const BasisEntry &vec2, BasisEntry &res)
    Definition coeffmatrix.hh:39
    \n+
    Definition coeffmatrix.hh:48
    \n+
    static const unsigned int blockSize
    Definition coeffmatrix.hh:51
    \n+
    SparseCoeffMatrix()
    Definition coeffmatrix.hh:54
    \n+
    F Field
    Definition coeffmatrix.hh:50
    \n+
    unsigned int baseSize() const
    Definition coeffmatrix.hh:73
    \n+
    SparseCoeffMatrix< Field, blockSize > This
    Definition coeffmatrix.hh:52
    \n+
    unsigned int size() const
    Definition coeffmatrix.hh:69
    \n+
    void fill(const RowMatrix &mat, bool verbose=false)
    Definition coeffmatrix.hh:160
    \n+
    void addRow(unsigned int k, const Field &a, Vector &b) const
    Definition coeffmatrix.hh:223
    \n+
    void mult(const BasisIterator &x, unsigned int numLsg, FF *y) const
    Definition coeffmatrix.hh:79
    \n+
    void mult(const BasisIterator &x, Vector &y) const
    Definition coeffmatrix.hh:132
    \n+
    void mult(const BasisIterator &x, Vector &y) const
    Definition coeffmatrix.hh:105
    \n+
    ~SparseCoeffMatrix()
    Definition coeffmatrix.hh:62
    \n+
    A class representing the zero of a given Field.
    Definition field.hh:79
    \n+
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:587
    \n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:665
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,75 +1,347 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n-raviartthomas02dlocalcoefficients.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+coeffmatrix.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RT0TRIANGLELOCALCOEFFICIENTS_HH\n-6#define DUNE_RT0TRIANGLELOCALCOEFFICIENTS_HH\n-7\n-8#include \n-9#include \n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+5#ifndef DUNE_COEFFMATRIX_HH\n+6#define DUNE_COEFFMATRIX_HH\n+7#include \n+8#include \n+9#include \n+10#include \n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh>\n 13\n 14namespace _\bD_\bu_\bn_\be\n 15{\n-16\n-_\b2_\b4 class _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-25 {\n-26 public:\n-_\b2_\b8 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(3)\n-29 {\n-30 for (std::size_t i=0; i<3; i++)\n-31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+16 /*************************************************\n+17 * Default class for storing a coefficient matrix\n+18 * for the PolynomialBasis. Basically a simple\n+19 * CRS structure is used. The additional complexity\n+20 * is due to the storage and efficient evaluation\n+21 * of higher order derivatives. See the remarks\n+22 * in tensor.hh which also hold true for this file.\n+23 *************************************************/\n+24 template \n+_\b2_\b5 struct _\bM_\bu_\bl_\bt\n+26 {\n+_\b2_\b7 typedef Field2 _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by;\n+_\b2_\b8 static void _\ba_\bd_\bd(const Field &vec1, const _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by &vec2,\n+29 _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by &res)\n+30 {\n+31 res += vec1*vec2;\n 32 }\n-33\n-_\b3_\b5 std::size_t _\bs_\bi_\bz_\be () const\n-36 {\n-37 return 3;\n-38 }\n-39\n-_\b4_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-42 {\n-43 return li[i];\n-44 }\n+33 };\n+34\n+35 template \n+_\b3_\b6 struct _\bM_\bu_\bl_\bt< Field,FieldVector >\n+37 {\n+_\b3_\b8 typedef FieldVector _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by;\n+_\b3_\b9 static void _\ba_\bd_\bd(const Field &vec1, const _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by &vec2,\n+40 _\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by &res)\n+41 {\n+42 res.axpy(vec1,vec2);\n+43 }\n+44 };\n 45\n-46 private:\n-47 std::vector li;\n-48 };\n-49\n-50}\n-51\n-52#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+46 template< class F , unsigned int bSize >\n+_\b4_\b7 class _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n+48 {\n+49 public:\n+_\b5_\b0 typedef F _\bF_\bi_\be_\bl_\bd;\n+_\b5_\b1 static const unsigned int _\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be = bSize;\n+_\b5_\b2 typedef _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be_\b> _\bT_\bh_\bi_\bs;\n+53\n+_\b5_\b4 _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx()\n+55 : coeff_(0),\n+56 rows_(0),\n+57 skip_(0),\n+58 numRows_(0),\n+59 numCols_(0)\n+60 {}\n+61\n+_\b6_\b2 _\b~_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx()\n+63 {\n+64 delete [] coeff_;\n+65 delete [] rows_;\n+66 delete [] skip_;\n+67 }\n+68\n+_\b6_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+70 {\n+71 return numRows_/_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be;\n+72 }\n+_\b7_\b3 unsigned int _\bb_\ba_\bs_\be_\bS_\bi_\bz_\be () const\n+74 {\n+75 return numCols_;\n+76 }\n+77\n+78 template< class BasisIterator, class FF>\n+_\b7_\b9 void _\bm_\bu_\bl_\bt ( const BasisIterator &x,\n+80 unsigned int numLsg,\n+81 FF *y ) const\n+82 {\n+83 typedef typename BasisIterator::Derivatives XDerivatives;\n+84 assert( numLsg*_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be <= (size_t)numRows_ );\n+85 unsigned int row = 0;\n+86 _\bF_\bi_\be_\bl_\bd *pos = rows_[ 0 ];\n+87 unsigned int *skipIt = skip_;\n+88 XDerivatives val;\n+89 for( size_t i = 0; i < numLsg; ++i)\n+90 {\n+91 for( unsigned int r = 0; r < _\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be; ++r, ++row )\n+92 {\n+93 val = 0;\n+94 BasisIterator itx = x;\n+95 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )\n+96 {\n+97 itx += *skipIt;\n+98 val.axpy(*pos,*itx);\n+99 }\n+100 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\bX_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b,_\bF_\bF_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by(r,val,*(y+i*XDerivatives::\n+size*_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be));\n+101 }\n+102 }\n+103 }\n+104 template< class BasisIterator, class Vector>\n+_\b1_\b0_\b5 void _\bm_\bu_\bl_\bt ( const BasisIterator &x,\n+106 Vector &y ) const\n+107 {\n+108 typedef typename Vector::value_type YDerivatives;\n+109 typedef typename BasisIterator::Derivatives XDerivatives;\n+110 size_t numLsg = y.size();\n+111 assert( numLsg*_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be <= (size_t)numRows_ );\n+112 unsigned int row = 0;\n+113 _\bF_\bi_\be_\bl_\bd *pos = rows_[ 0 ];\n+114 unsigned int *skipIt = skip_;\n+115 XDerivatives val;\n+116 for( size_t i = 0; i < numLsg; ++i)\n+117 {\n+118 for( unsigned int r = 0; r < _\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be; ++r, ++row )\n+119 {\n+120 val = 0;\n+121 BasisIterator itx = x;\n+122 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )\n+123 {\n+124 itx += *skipIt;\n+125 val.axpy(*pos,*itx);\n+126 }\n+127 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b<_\bX_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b,_\bY_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by(r,val,y[i]);\n+128 }\n+129 }\n+130 }\n+131 template \n+_\b1_\b3_\b2 void _\bm_\bu_\bl_\bt ( const BasisIterator &x,\n+133 Vector &y ) const\n+134 {\n+135 typedef typename Vector::value_type YDerivatives;\n+136 typedef typename BasisIterator::Derivatives XDerivatives;\n+137 typedef FieldVector\n+XLFETensor;\n+138 size_t numLsg = y.size();\n+139 assert( numLsg*_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be <= (size_t)numRows_ );\n+140 unsigned int row = 0;\n+141 _\bF_\bi_\be_\bl_\bd *pos = rows_[ 0 ];\n+142 unsigned int *skipIt = skip_;\n+143 for( size_t i = 0; i < numLsg; ++i)\n+144 {\n+145 XLFETensor val(typename XDerivatives::Field(0));\n+146 for( unsigned int r = 0; r < _\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be; ++r, ++row )\n+147 {\n+148 BasisIterator itx = x;\n+149 for( ; pos != rows_[ row+1 ]; ++pos, ++skipIt )\n+150 {\n+151 itx += *skipIt;\n+152 _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b<_\bX_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs_\b,_\bX_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b,_\bd_\be_\br_\bi_\bv_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by(r,*pos,*itx,val);\n+153 }\n+154 }\n+155 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(val,y[i]);\n+156 }\n+157 }\n+158\n+159 template< class RowMatrix >\n+_\b1_\b6_\b0 void _\bf_\bi_\bl_\bl ( const RowMatrix &mat, bool verbose=false )\n+161 {\n+162 numRows_ = mat.rows();\n+163 numCols_ = mat.cols();\n+164 unsigned int _\bs_\bi_\bz_\be = numRows_*numCols_;\n+165\n+166 delete [] coeff_;\n+167 delete [] rows_;\n+168 delete [] skip_;\n+169\n+170 _\bF_\bi_\be_\bl_\bd* coeff = new _\bF_\bi_\be_\bl_\bd[ _\bs_\bi_\bz_\be ];\n+171 // we always initialize the next skip entry to zero,\n+172 // including the one following the end, so allocate\n+173 // size+1 entries so we will stay within the bounds.\n+174 unsigned int *skip = new unsigned int[ _\bs_\bi_\bz_\be+1 ];\n+175 rows_ = new _\bF_\bi_\be_\bl_\bd*[ numRows_+1 ];\n+176 std::vector row( numCols_ );\n+177\n+178 rows_[ 0 ] = coeff;\n+179 _\bF_\bi_\be_\bl_\bd *cit = coeff;\n+180 unsigned int *sit = skip;\n+181 for( unsigned int r = 0; r < numRows_; ++r )\n+182 {\n+183 *sit = 0;\n+184 mat.row( r, row );\n+185 for( unsigned int c = 0; c < numCols_; ++c )\n+186 {\n+187 const _\bF_\bi_\be_\bl_\bd &val = row[c];\n+188 if (val < _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>() || _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>() < val)\n+189 {\n+190 *cit = val;\n+191 ++sit;\n+192 ++cit;\n+193 *sit = 1;\n+194 } else\n+195 {\n+196 ++(*sit);\n+197 }\n+198 }\n+199 rows_[ r+1 ] = cit;\n+200 }\n+201 assert( size_t(rows_[numRows_]-rows_[0]) <= size_t(_\bs_\bi_\bz_\be) );\n+202 _\bs_\bi_\bz_\be = rows_[numRows_]-rows_[0];\n+203 coeff_ = new _\bF_\bi_\be_\bl_\bd[ _\bs_\bi_\bz_\be ];\n+204 skip_ = new unsigned int[ _\bs_\bi_\bz_\be ];\n+205 for (unsigned int i=0; i<_\bs_\bi_\bz_\be; ++i)\n+206 {\n+207 coeff_[i] = coeff[i];\n+208 skip_[i] = skip[i];\n+209 }\n+210 for (unsigned int i=0; i<=numRows_; ++i)\n+211 rows_[ i ] = coeff_ + (rows_[ i ] - coeff);\n+212\n+213 delete [] coeff;\n+214 delete [] skip;\n+215\n+216 if (verbose)\n+217 std::cout << \"Entries: \" << (rows_[numRows_]-rows_[0])\n+218 << \" full: \" << numCols_*numRows_\n+219 << std::endl;\n+220 }\n+221 // b += a*C[k]\n+222 template \n+_\b2_\b2_\b3 void _\ba_\bd_\bd_\bR_\bo_\bw( unsigned int k, const _\bF_\bi_\be_\bl_\bd &a, Vector &b) const\n+224 {\n+225 assert(k( (*pos)*a ); // field_cast\n+235 }\n+236 }\n+237 private:\n+238 _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx ( const _\bT_\bh_\bi_\bs &other )\n+239 : numRows_( other.numRows_ ),\n+240 numCols_( other.numCols_ )\n+241 {\n+242 const unsigned int _\bs_\bi_\bz_\be = other.rows_[numRows_]-other.rows_[0];\n+243 coeff_ = new _\bF_\bi_\be_\bl_\bd[ _\bs_\bi_\bz_\be ];\n+244 rows_ = new _\bF_\bi_\be_\bl_\bd*[ numRows_+1 ];\n+245 skip_ = new unsigned int[ _\bs_\bi_\bz_\be ];\n+246 for (unsigned int i=0; i<_\bs_\bi_\bz_\be; ++i)\n+247 {\n+248 coeff_[i] = other.coeff_[i];\n+249 skip_[i] = other.skip_[i];\n+250 }\n+251 for (unsigned int i=0; i<=numRows_; ++i)\n+252 rows_[ i ] = coeff_ + (other.rows_[ i ] - other.coeff_);\n+253 }\n+254\n+255 _\bT_\bh_\bi_\bs &operator= (const _\bT_\bh_\bi_\bs&);\n+256 _\bF_\bi_\be_\bl_\bd *coeff_;\n+257 _\bF_\bi_\be_\bl_\bd **rows_;\n+258 unsigned int *skip_;\n+259 unsigned int numRows_,numCols_;\n+260 };\n+261\n+262}\n+263\n+264#endif // DUNE_COEFFMATRIX_HH\n+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT02DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b:_\b:_\ba_\bd_\bd\n+static void add(const Field &vec1, const BasisEntry &vec2, BasisEntry &res)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by\n+Field2 BasisEntry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\bi_\be_\bl_\bd_\b2_\b,_\b _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b _\b>_\b _\b>_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bE_\bn_\bt_\br_\by\n+FieldVector< Field2, dimRange > BasisEntry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\b<_\b _\bF_\bi_\be_\bl_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bF_\bi_\be_\bl_\bd_\b2_\b,_\b _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b _\b>_\b _\b>_\b:_\b:_\ba_\bd_\bd\n+static void add(const Field &vec1, const BasisEntry &vec2, BasisEntry &res)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bb_\bl_\bo_\bc_\bk_\bS_\bi_\bz_\be\n+static const unsigned int blockSize\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n+SparseCoeffMatrix()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bb_\ba_\bs_\be_\bS_\bi_\bz_\be\n+unsigned int baseSize() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bT_\bh_\bi_\bs\n+SparseCoeffMatrix< Field, blockSize > This\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n+void fill(const RowMatrix &mat, bool verbose=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:160\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\ba_\bd_\bd_\bR_\bo_\bw\n+void addRow(unsigned int k, const Field &a, Vector &b) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\bu_\bl_\bt\n+void mult(const BasisIterator &x, unsigned int numLsg, FF *y) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\bu_\bl_\bt\n+void mult(const BasisIterator &x, Vector &y) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\bu_\bl_\bt\n+void mult(const BasisIterator &x, Vector &y) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\b~_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx\n+~SparseCoeffMatrix()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn coeffmatrix.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bZ_\be_\br_\bo\n+A class representing the zero of a given Field.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:587\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:665\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas02dlocalinterpolation.hh File Reference\n+dune-localfunctions: dglocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,37 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas02dlocalinterpolation.hh File Reference
    \n+
    dglocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <cmath>
    \n-#include <array>
    \n-#include <bitset>
    \n+
    #include <cassert>
    \n #include <vector>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT02DLocalInterpolation< LB >
    class  Dune::DGLocalCoefficients
     A class providing local coefficients for dg spaces. More...
     
    struct  Dune::DGLocalCoefficientsFactory< BasisFactory >
     A factory class for the dg local coefficients. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas02dlocalinterpolation.hh File Reference\n-#include \n-#include \n-#include \n+dglocalcoefficients.hh File Reference\n+#include \n #include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 A class providing local coefficients for dg spaces. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b _\b>\n+\u00a0 A factory class for the dg local coefficients. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas02dlocalinterpolation.hh Source File\n+dune-localfunctions: dglocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,94 +70,117 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas02dlocalinterpolation.hh
    \n+
    dglocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RT02DLOCALINTERPOLATION_HH
    \n-
    6#define DUNE_RT02DLOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_DGLOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_DGLOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <cmath>
    \n-
    9#include <array>
    \n-
    10#include <bitset>
    \n-
    11#include <vector>
    \n+
    8#include <cassert>
    \n+
    9#include <vector>
    \n+
    10
    \n+\n
    12
    \n
    13namespace Dune
    \n
    14{
    \n-
    18 template<class LB>
    \n-
    \n-\n-
    20 {
    \n-
    21 public:
    \n-
    22
    \n-
    \n-
    24 RT02DLocalInterpolation (std::bitset<3> s = 0)
    \n-
    25 {
    \n-
    26 using std::sqrt;
    \n-
    27 for (std::size_t i=0; i<sign_.size(); i++)
    \n-
    28 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    29
    \n-
    30 m_[0] = {0.5, 0.0};
    \n-
    31 m_[1] = {0.0, 0.5};
    \n-
    32 m_[2] = {0.5, 0.5};
    \n-
    33 n_[0] = {0.0, -1.0};
    \n-
    34 n_[1] = {-1.0, 0.0};
    \n-
    35 n_[2] = {1.0/sqrt(2.0), 1.0/sqrt(2.0)};
    \n-
    36 c_[0] = ( 0.5*n_[0][0] - 1.0*n_[0][1]);
    \n-
    37 c_[1] = (-1.0*n_[1][0] + 0.5*n_[1][1]);
    \n-
    38 c_[2] = ( 0.5*n_[2][0] + 0.5*n_[2][1]);
    \n+
    15
    \n+
    16 // DGLocalCoefficients
    \n+
    17 // -------------------
    \n+
    18
    \n+
    \n+\n+
    23 {
    \n+\n+
    25
    \n+
    26 public:
    \n+
    \n+
    28 DGLocalCoefficients ( const unsigned int n )
    \n+
    29 : localKey_( n )
    \n+
    30 {
    \n+
    31 for( unsigned i = 0; i < n; ++i )
    \n+
    32 localKey_[ i ] = LocalKey( 0, 0, i );
    \n+
    33 }
    \n+
    \n+
    34
    \n+
    \n+
    35 const LocalKey &localKey ( const unsigned int i ) const
    \n+
    36 {
    \n+
    37 assert( i < size() );
    \n+
    38 return localKey_[ i ];
    \n
    39 }
    \n
    \n
    40
    \n-
    41 template<typename F, typename C>
    \n-
    \n-
    42 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    43 {
    \n-
    44 // f gives v*outer normal at a point on the edge!
    \n+
    \n+
    41 unsigned int size () const
    \n+
    42 {
    \n+
    43 return localKey_.size();
    \n+
    44 }
    \n+
    \n
    45
    \n-
    46 out.resize(3);
    \n-
    47
    \n-
    48 for (int i=0; i<3; i++)
    \n-
    49 {
    \n-
    50 auto y = f(m_[i]);
    \n-
    51 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1])*sign_[i]/c_[i];
    \n-
    52 }
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    55 private:
    \n-
    56 // Edge orientations
    \n-
    57 std::array<typename LB::Traits::RangeFieldType,3> sign_;
    \n-
    58 // Edge midpoints of the reference triangle
    \n-
    59 std::array<typename LB::Traits::DomainType,3> m_;
    \n-
    60 // Unit outer normals of the reference triangle
    \n-
    61 std::array<typename LB::Traits::DomainType,3> n_;
    \n-
    62 // Inverse triangle edge length
    \n-
    63 std::array<typename LB::Traits::RangeFieldType,3> c_;
    \n-
    64 };
    \n-
    \n-
    65}
    \n-
    66
    \n-
    67#endif
    \n+
    46 private:
    \n+
    47 std::vector< LocalKey > localKey_;
    \n+
    48 };
    \n+
    \n+
    49
    \n+
    50
    \n+
    51
    \n+
    52 // DGLocalCoefficientsFactory
    \n+
    53 // --------------------------
    \n+
    57 template< class BasisFactory >
    \n+
    \n+\n+
    59 {
    \n+
    60 static const unsigned int dimension = BasisFactory::dimension;
    \n+
    61 typedef typename BasisFactory::Key Key;
    \n+\n+
    63
    \n+
    64 template< GeometryType::Id geometryId >
    \n+
    \n+
    65 static Object *create ( const Key &key )
    \n+
    66 {
    \n+
    67 const typename BasisFactory::Object *basis
    \n+
    68 = BasisFactory::template create< geometryId >( key );
    \n+
    69 Object *coefficients = new Object( basis->size() );
    \n+
    70 BasisFactory::release( basis );
    \n+
    71 return coefficients;
    \n+
    72 }
    \n+
    \n+
    73 static void release( Object *object ) { delete object; }
    \n+
    74 };
    \n+
    \n+
    75
    \n+
    76}
    \n+
    77
    \n+
    78#endif // #ifndef DUNE_DGLOCALCOEFFICIENTS_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition raviartthomas02dlocalinterpolation.hh:20
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Definition raviartthomas02dlocalinterpolation.hh:42
    \n-
    RT02DLocalInterpolation(std::bitset< 3 > s=0)
    Constructor with given set of edge orientations.
    Definition raviartthomas02dlocalinterpolation.hh:24
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    A class providing local coefficients for dg spaces.
    Definition dglocalcoefficients.hh:23
    \n+
    unsigned int size() const
    Definition dglocalcoefficients.hh:41
    \n+
    const LocalKey & localKey(const unsigned int i) const
    Definition dglocalcoefficients.hh:35
    \n+
    DGLocalCoefficients(const unsigned int n)
    construct local keys for n basis functions
    Definition dglocalcoefficients.hh:28
    \n+
    A factory class for the dg local coefficients.
    Definition dglocalcoefficients.hh:59
    \n+
    static void release(Object *object)
    Definition dglocalcoefficients.hh:73
    \n+
    const DGLocalCoefficients Object
    Definition dglocalcoefficients.hh:62
    \n+
    static Object * create(const Key &key)
    Definition dglocalcoefficients.hh:65
    \n+
    BasisFactory::Key Key
    Definition dglocalcoefficients.hh:61
    \n+
    static const unsigned int dimension
    Definition dglocalcoefficients.hh:60
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,87 +1,120 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n-raviartthomas02dlocalinterpolation.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+dglocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RT02DLOCALINTERPOLATION_HH\n-6#define DUNE_RT02DLOCALINTERPOLATION_HH\n+5#ifndef DUNE_DGLOCALCOEFFICIENTS_HH\n+6#define DUNE_DGLOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n+8#include \n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n 12\n 13namespace _\bD_\bu_\bn_\be\n 14{\n-18 template\n-_\b1_\b9 class _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-20 {\n-21 public:\n-22\n-_\b2_\b4 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<3> s = 0)\n-25 {\n-26 using std::sqrt;\n-27 for (std::size_t i=0; i\n-_\b4_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-43 {\n-44 // f gives v*outer normal at a point on the edge!\n+_\b4_\b1 unsigned int _\bs_\bi_\bz_\be () const\n+42 {\n+43 return localKey_.size();\n+44 }\n 45\n-46 out.resize(3);\n-47\n-48 for (int i=0; i<3; i++)\n-49 {\n-50 auto y = f(m_[i]);\n-51 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1])*sign_[i]/c_[i];\n-52 }\n-53 }\n-54\n-55 private:\n-56 // Edge orientations\n-57 std::array sign_;\n-58 // Edge midpoints of the reference triangle\n-59 std::array m_;\n-60 // Unit outer normals of the reference triangle\n-61 std::array n_;\n-62 // Inverse triangle edge length\n-63 std::array c_;\n-64 };\n-65}\n-66\n-67#endif\n+46 private:\n+47 std::vector< LocalKey > localKey_;\n+48 };\n+49\n+50\n+51\n+52 // DGLocalCoefficientsFactory\n+53 // --------------------------\n+57 template< class BasisFactory >\n+_\b5_\b8 struct _\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+59 {\n+_\b6_\b0 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = BasisFactory::dimension;\n+_\b6_\b1 typedef typename BasisFactory::Key _\bK_\be_\by;\n+_\b6_\b2 typedef const _\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n+63\n+64 template< GeometryType::Id geometryId >\n+_\b6_\b5 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n+66 {\n+67 const typename BasisFactory::Object *basis\n+68 = BasisFactory::template create< geometryId >( key );\n+69 _\bO_\bb_\bj_\be_\bc_\bt *coefficients = new _\bO_\bb_\bj_\be_\bc_\bt( basis->size() );\n+70 BasisFactory::release( basis );\n+71 return coefficients;\n+72 }\n+_\b7_\b3 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+74 };\n+75\n+76}\n+77\n+78#endif // #ifndef DUNE_DGLOCALCOEFFICIENTS_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT02DLocalInterpolation(std::bitset< 3 > s=0)\n-Constructor with given set of edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+A class providing local coefficients for dg spaces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(const unsigned int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+DGLocalCoefficients(const unsigned int n)\n+construct local keys for n basis functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+A factory class for the dg local coefficients.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const DGLocalCoefficients Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+BasisFactory::Key Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:60\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas02dlocalbasis.hh File Reference\n+dune-localfunctions: defaultbasisfactory.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,37 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas02dlocalbasis.hh File Reference
    \n+
    defaultbasisfactory.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n+
    #include <fstream>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/localfunctions/utility/basismatrix.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT02DLocalBasis< D, R >
    struct  Dune::Identity
     
    struct  Dune::DefaultBasisFactory< PreBFactory, InterpolFactory, dim, dimR, SF, CF, PreBasisKeyExtractor >
     
    struct  Dune::DefaultBasisFactory< PreBFactory, InterpolFactory, dim, dimR, SF, CF, PreBasisKeyExtractor >::EvaluationBasisFactory< dd, FF >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas02dlocalbasis.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+defaultbasisfactory.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bb_\ba_\bs_\bi_\bs_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bP_\br_\be_\bB_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bR_\b,\n+ _\bS_\bF_\b,_\b _\bC_\bF_\b,_\b _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bK_\be_\by_\bE_\bx_\bt_\br_\ba_\bc_\bt_\bo_\br_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bP_\br_\be_\bB_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\bF_\ba_\bc_\bt_\bo_\br_\by_\b,_\b _\bd_\bi_\bm_\b,_\b _\bd_\bi_\bm_\bR_\b,\n+ _\bS_\bF_\b,_\b _\bC_\bF_\b,_\b _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bK_\be_\by_\bE_\bx_\bt_\br_\ba_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bd_\b,_\b _\bF_\bF_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas02dlocalbasis.hh Source File\n+dune-localfunctions: defaultbasisfactory.hh Source File\n \n \n \n \n \n \n \n@@ -70,138 +70,151 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas02dlocalbasis.hh
    \n+
    defaultbasisfactory.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RT0TRIANGLELOCALBASIS_HH
    \n-
    6#define DUNE_RT0TRIANGLELOCALBASIS_HH
    \n+
    5#ifndef DUNE_DEFAULTBASISFACTORY_HH
    \n+
    6#define DUNE_DEFAULTBASISFACTORY_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n-
    11
    \n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n-
    28 public:
    \n-
    29 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    30 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    31
    \n-
    \n-
    33 RT02DLocalBasis (std::bitset<3> s = 0)
    \n-
    34 {
    \n-
    35 for (int i=0; i<3; i++)
    \n-
    36 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    37 }
    \n-
    \n-
    38
    \n-
    \n-
    40 unsigned int size () const
    \n-
    41 {
    \n-
    42 return 3;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-
    46 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    47 std::vector<typename Traits::RangeType>& out) const
    \n-
    48 {
    \n-
    49 out.resize(3);
    \n-
    50 out[0] = {sign_[0]*in[0], sign_[0]*(in[1]-D(1))};
    \n-
    51 out[1] = {sign_[1]*(in[0]-D(1)), sign_[1]*in[1]};
    \n-
    52 out[2] = {sign_[2]*in[0], sign_[2]*in[1]};
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    56 inline void
    \n-
    \n-
    57 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    58 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    59 {
    \n-
    60 out.resize(3);
    \n-
    61 for (int i=0; i<3; i++)
    \n-
    62 {
    \n-
    63 out[i][0] = {sign_[i], 0};
    \n-
    64 out[i][1] = { 0, sign_[i]};
    \n-
    65 }
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    69 void partial (const std::array<unsigned int, 2>& order,
    \n-
    70 const typename Traits::DomainType& in, // position
    \n-
    71 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    72 {
    \n-
    73 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    74 if (totalOrder == 0) {
    \n-
    75 evaluateFunction(in, out);
    \n-
    76 } else if (totalOrder == 1) {
    \n-
    77 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    78 out.resize(size());
    \n-
    79
    \n-
    80 for (int i=0; i<3; i++)
    \n-
    81 {
    \n-
    82 out[i][direction] = sign_[i];
    \n-
    83 out[i][1-direction] = 0;
    \n-
    84 }
    \n-
    85 } else {
    \n-
    86 out.resize(size());
    \n-
    87 for (std::size_t i = 0; i < size(); ++i)
    \n-
    88 for (std::size_t j = 0; j < 2; ++j)
    \n-
    89 out[i][j] = 0;
    \n-
    90 }
    \n-
    91
    \n-
    92 }
    \n-
    \n-
    93
    \n-
    \n-
    95 unsigned int order () const
    \n-
    96 {
    \n-
    97 return 1;
    \n-
    98 }
    \n-
    \n-
    99
    \n-
    100 private:
    \n-
    101
    \n-
    102 // Signs of the edge normals
    \n-
    103 std::array<R,3> sign_;
    \n-
    104 };
    \n-
    \n-
    105}
    \n-
    106#endif
    \n+
    8#include <fstream>
    \n+
    9#include <dune/common/exceptions.hh>
    \n+
    10
    \n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    \n+
    15 struct Identity
    \n+
    16 {
    \n+
    17 template <class T>
    \n+
    \n+
    18 static T apply( const T &t )
    \n+
    19 {
    \n+
    20 return t;
    \n+
    21 }
    \n+
    \n+
    22 };
    \n+
    \n+
    23 /************************************************
    \n+
    24 * Class for providing a factory for basis
    \n+
    25 * functions over the set of reference elements.
    \n+
    26 * Is based on the TopologyFactory but additionally
    \n+
    27 * provides rebindes of the field type.
    \n+
    28 * The user provides factories for the pre basis and the
    \n+
    29 * interpolations. The default construction process of
    \n+
    30 * the basis is performed in this class.
    \n+
    31 ************************************************/
    \n+
    32 template< class PreBFactory,
    \n+
    33 class InterpolFactory,
    \n+
    34 unsigned int dim, unsigned int dimR,
    \n+
    35 class SF, class CF,
    \n+
    36 class PreBasisKeyExtractor = Identity >
    \n+
    \n+\n+
    38 {
    \n+
    39 static const unsigned int dimension = dim;
    \n+
    40 static const unsigned int dimRange = dimR;
    \n+
    41 typedef SF StorageField;
    \n+
    42 typedef CF ComputeField;
    \n+
    43 typedef PreBFactory PreBasisFactory;
    \n+
    44 typedef typename PreBasisFactory::Object PreBasis;
    \n+
    45 typedef InterpolFactory InterpolationFactory;
    \n+
    46 typedef typename InterpolationFactory::Object Interpolation;
    \n+
    47 typedef typename PreBasisFactory::template EvaluationBasisFactory<dim,SF>::Type MonomialBasisFactory;
    \n+\n+\n+\n+
    51
    \n+
    52 typedef const Basis Object;
    \n+
    53 typedef typename InterpolationFactory::Key Key;
    \n+
    54 template <unsigned int dd, class FF>
    \n+
    \n+\n+
    56 {
    \n+
    57 typedef typename PreBasisFactory::template EvaluationBasisFactory<dd,FF>::Type
    \n+\n+
    59 };
    \n+
    \n+
    60
    \n+
    61 template< GeometryType::Id geometryId >
    \n+
    \n+
    62 static Object *create ( const Key &key )
    \n+
    63 {
    \n+
    64 const typename PreBasisFactory::Key preBasisKey = PreBasisKeyExtractor::apply(key);
    \n+
    65 const PreBasis *preBasis = PreBasisFactory::template create<geometryId>( preBasisKey );
    \n+
    66 const Interpolation *interpol = InterpolationFactory::template create<geometryId>( key );
    \n+
    67 BasisMatrix< PreBasis, Interpolation, ComputeField > matrix( *preBasis, *interpol );
    \n+
    68
    \n+
    69 const MonomialBasis *monomialBasis = MonomialBasisFactory::template create< geometryId >( preBasis->order() );
    \n+
    70
    \n+
    71 Basis *basis = new Basis( *monomialBasis );
    \n+
    72
    \n+
    73 basis->fill( matrix );
    \n+
    74
    \n+
    75 InterpolationFactory::release(interpol);
    \n+
    76 PreBasisFactory::release(preBasis);
    \n+
    77
    \n+
    78 return basis;
    \n+
    79 }
    \n+
    \n+
    \n+
    81 static void release( Object *object)
    \n+
    82 {
    \n+
    83 const MonomialBasis *monomialBasis = &(object->basis());
    \n+
    84 delete object;
    \n+
    85 MonomialBasisFactory::release( monomialBasis );
    \n+
    86 }
    \n+
    \n+
    87 };
    \n+
    \n+
    88}
    \n+
    89
    \n+
    90#endif // #ifndef DUNE_DEFAULTBASISFACTORY_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Definition raviartthomas02dlocalbasis.hh:27
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas02dlocalbasis.hh:95
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas02dlocalbasis.hh:57
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas02dlocalbasis.hh:30
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas02dlocalbasis.hh:46
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas02dlocalbasis.hh:40
    \n-
    RT02DLocalBasis(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas02dlocalbasis.hh:33
    \n-
    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 raviartthomas02dlocalbasis.hh:69
    \n-\n+
    Definition basisevaluator.hh:131
    \n+
    Definition basismatrix.hh:27
    \n+
    Definition defaultbasisfactory.hh:16
    \n+
    static T apply(const T &t)
    Definition defaultbasisfactory.hh:18
    \n+
    Definition defaultbasisfactory.hh:38
    \n+
    InterpolationFactory::Object Interpolation
    Definition defaultbasisfactory.hh:46
    \n+
    static const unsigned int dimRange
    Definition defaultbasisfactory.hh:40
    \n+
    static void release(Object *object)
    release the object returned by the create methods
    Definition defaultbasisfactory.hh:81
    \n+
    CF ComputeField
    Definition defaultbasisfactory.hh:42
    \n+
    PreBFactory PreBasisFactory
    Definition defaultbasisfactory.hh:43
    \n+
    InterpolationFactory::Key Key
    Definition defaultbasisfactory.hh:53
    \n+
    static const unsigned int dimension
    Definition defaultbasisfactory.hh:39
    \n+
    static Object * create(const Key &key)
    Definition defaultbasisfactory.hh:62
    \n+
    SF StorageField
    Definition defaultbasisfactory.hh:41
    \n+
    MonomialBasisFactory::Object MonomialBasis
    Definition defaultbasisfactory.hh:48
    \n+
    PreBasisFactory::Object PreBasis
    Definition defaultbasisfactory.hh:44
    \n+
    const Basis Object
    Definition defaultbasisfactory.hh:52
    \n+
    StandardEvaluator< MonomialBasis > Evaluator
    Definition defaultbasisfactory.hh:49
    \n+
    InterpolFactory InterpolationFactory
    Definition defaultbasisfactory.hh:45
    \n+
    PreBasisFactory::template EvaluationBasisFactory< dim, SF >::Type MonomialBasisFactory
    Definition defaultbasisfactory.hh:47
    \n+
    PolynomialBasisWithMatrix< Evaluator, SparseCoeffMatrix< SF, dimRange > > Basis
    Definition defaultbasisfactory.hh:50
    \n+
    Definition defaultbasisfactory.hh:56
    \n+
    PreBasisFactory::template EvaluationBasisFactory< dd, FF >::Type Type
    Definition defaultbasisfactory.hh:58
    \n+
    Definition monomialbasis.hh:612
    \n+
    static void release(Object *object)
    Definition monomialbasis.hh:769
    \n+
    Definition polynomialbasis.hh:348
    \n+
    void fill(const Matrix &matrix)
    Definition polynomialbasis.hh:366
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,149 +1,188 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n-raviartthomas02dlocalbasis.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+defaultbasisfactory.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RT0TRIANGLELOCALBASIS_HH\n-6#define DUNE_RT0TRIANGLELOCALBASIS_HH\n+5#ifndef DUNE_DEFAULTBASISFACTORY_HH\n+6#define DUNE_DEFAULTBASISFACTORY_HH\n 7\n-8#include \n-9\n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-25 template\n-_\b2_\b6 class _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-27 {\n-28 public:\n-29 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n-FieldVector,\n-_\b3_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-31\n-_\b3_\b3 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<3> s = 0)\n-34 {\n-35 for (int i=0; i<3; i++)\n-36 sign_[i] = s[i] ? -1.0 : 1.0;\n-37 }\n-38\n-_\b4_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-41 {\n-42 return 3;\n-43 }\n-44\n-_\b4_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-47 std::vector& out) const\n-48 {\n-49 out.resize(3);\n-50 out[0] = {sign_[0]*in[0], sign_[0]*(in[1]-D(1))};\n-51 out[1] = {sign_[1]*(in[0]-D(1)), sign_[1]*in[1]};\n-52 out[2] = {sign_[2]*in[0], sign_[2]*in[1]};\n-53 }\n-54\n-56 inline void\n-_\b5_\b7 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-58 std::vector& out) const // return value\n-59 {\n-60 out.resize(3);\n-61 for (int i=0; i<3; i++)\n-62 {\n-63 out[i][0] = {sign_[i], 0};\n-64 out[i][1] = { 0, sign_[i]};\n-65 }\n-66 }\n-67\n-_\b6_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-70 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-71 std::vector& out) const // return value\n-72 {\n-73 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-74 if (totalOrder == 0) {\n-75 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-76 } else if (totalOrder == 1) {\n-77 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n-_\bo_\br_\bd_\be_\br.end(), 1));\n-78 out.resize(_\bs_\bi_\bz_\be());\n-79\n-80 for (int i=0; i<3; i++)\n-81 {\n-82 out[i][direction] = sign_[i];\n-83 out[i][1-direction] = 0;\n-84 }\n-85 } else {\n-86 out.resize(_\bs_\bi_\bz_\be());\n-87 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-88 for (std::size_t j = 0; j < 2; ++j)\n-89 out[i][j] = 0;\n-90 }\n-91\n-92 }\n-93\n-_\b9_\b5 unsigned int _\bo_\br_\bd_\be_\br () const\n-96 {\n-97 return 1;\n-98 }\n-99\n-100 private:\n-101\n-102 // Signs of the edge normals\n-103 std::array sign_;\n-104 };\n-105}\n-106#endif\n+8#include \n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bb_\ba_\bs_\bi_\bs_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+_\b1_\b5 struct _\bI_\bd_\be_\bn_\bt_\bi_\bt_\by\n+16 {\n+17 template \n+_\b1_\b8 static T _\ba_\bp_\bp_\bl_\by( const T &t )\n+19 {\n+20 return t;\n+21 }\n+22 };\n+23 /************************************************\n+24 * Class for providing a factory for basis\n+25 * functions over the set of reference elements.\n+26 * Is based on the TopologyFactory but additionally\n+27 * provides rebindes of the field type.\n+28 * The user provides factories for the pre basis and the\n+29 * interpolations. The default construction process of\n+30 * the basis is performed in this class.\n+31 ************************************************/\n+32 template< class PreBFactory,\n+33 class InterpolFactory,\n+34 unsigned int dim, unsigned int dimR,\n+35 class SF, class CF,\n+36 class PreBasisKeyExtractor = Identity >\n+_\b3_\b7 struct _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+38 {\n+_\b3_\b9 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+_\b4_\b0 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = dimR;\n+_\b4_\b1 typedef SF _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+_\b4_\b2 typedef CF _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd;\n+_\b4_\b3 typedef PreBFactory _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b4_\b4 typedef typename PreBasisFactory::Object _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs;\n+_\b4_\b5 typedef InterpolFactory _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b4_\b6 typedef typename InterpolationFactory::Object _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+_\b4_\b7 typedef typename PreBasisFactory::template _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bi_\bm_\b,_\bS_\bF_\b>_\b:_\b:\n+_\bT_\by_\bp_\be _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b4_\b8 typedef typename _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs;\n+_\b4_\b9 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\b _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b _\b> _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br;\n+_\b5_\b0 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b,_\b _\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bS_\bF_\b,\n+_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be_\b _\b> > _\bB_\ba_\bs_\bi_\bs;\n+51\n+_\b5_\b2 typedef const _\bB_\ba_\bs_\bi_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n+_\b5_\b3 typedef typename InterpolationFactory::Key _\bK_\be_\by;\n+54 template \n+_\b5_\b5 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+56 {\n+57 typedef typename PreBasisFactory::template _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bd_\b,_\bF_\bF_\b>_\b:_\b:\n+_\bT_\by_\bp_\be\n+_\b5_\b8 _\bT_\by_\bp_\be;\n+59 };\n+60\n+61 template< GeometryType::Id geometryId >\n+_\b6_\b2 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n+63 {\n+64 const typename PreBasisFactory::Key preBasisKey = PreBasisKeyExtractor::\n+apply(key);\n+65 const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs *preBasis = PreBasisFactory::template create\n+( preBasisKey );\n+66 const _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn *interpol = InterpolationFactory::template\n+create( key );\n+67 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b,_\b _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd_\b _\b> matrix( *preBasis,\n+*interpol );\n+68\n+69 const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs *monomialBasis = MonomialBasisFactory::template create<\n+geometryId >( preBasis->order() );\n+70\n+71 _\bB_\ba_\bs_\bi_\bs *basis = new _\bB_\ba_\bs_\bi_\bs( *monomialBasis );\n+72\n+73 basis->_\bf_\bi_\bl_\bl( matrix );\n+74\n+75 InterpolationFactory::release(interpol);\n+76 PreBasisFactory::release(preBasis);\n+77\n+78 return basis;\n+79 }\n+_\b8_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object)\n+82 {\n+83 const _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs *monomialBasis = &(object->basis());\n+84 delete object;\n+85 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( monomialBasis );\n+86 }\n+87 };\n+88}\n+89\n+90#endif // #ifndef DUNE_DEFAULTBASISFACTORY_HH\n+_\bb_\ba_\bs_\bi_\bs_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT02DLocalBasis(std::bitset< 3 > s=0)\n-Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:69\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bd_\be_\bn_\bt_\bi_\bt_\by_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static T apply(const T &t)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+InterpolationFactory::Object Interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const unsigned int dimRange\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+release the object returned by the create methods\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:81\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\bi_\be_\bl_\bd\n+CF ComputeField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+PreBFactory PreBasisFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+InterpolationFactory::Key Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n+SF StorageField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+MonomialBasisFactory::Object MonomialBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs\n+PreBasisFactory::Object PreBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const Basis Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+StandardEvaluator< MonomialBasis > Evaluator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+InterpolFactory InterpolationFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+PreBasisFactory::template EvaluationBasisFactory< dim, SF >::Type\n+MonomialBasisFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+PolynomialBasisWithMatrix< Evaluator, SparseCoeffMatrix< SF, dimRange > > Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n+PreBasisFactory::template EvaluationBasisFactory< dd, FF >::Type Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:612\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:769\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n+void fill(const Matrix &matrix)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:366\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas03d.hh File Reference\n+dune-localfunctions: basisprint.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas03d.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    basisprint.hh File Reference
    \n \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include "raviartthomas03d/raviartthomas03dlocalbasis.hh"
    \n-#include "raviartthomas03d/raviartthomas03dlocalcoefficients.hh"
    \n-#include "raviartthomas03d/raviartthomas03dlocalinterpolation.hh"
    \n+\n

    Go to the source code of this file.

    \n \n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::RT03DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on tetrahedra. More...
     
    \n \n \n \n+

    \n Namespaces

    namespace  Dune
     
    \n+\n+\n+\n+\n+\n+\n+\n

    \n+Functions

    template<int deriv, class BasisFactory , class PrintField , GeometryType::Id geometryId>
    void Dune::basisPrint (std::ostream &out, typename BasisFactory::Object &basis)
     
    template<int deriv, class BasisFactory , class PrintField = typename BasisFactory::StorageField>
    void Dune::basisPrint (std::ostream &out, typename BasisFactory::Key &key)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas03d.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+basisprint.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 _\bZ_\be_\br_\bo order Raviart-Thomas shape functions on tetrahedra. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template\n+void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt (std::ostream &out, typename BasisFactory::Object\n+ &basis)\n+\u00a0\n+template\n+void\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt (std::ostream &out, typename BasisFactory::Key &key)\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas03d.hh Source File\n+dune-localfunctions: basisprint.hh Source File\n \n \n \n \n \n \n \n@@ -70,125 +70,105 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas03d.hh
    \n+
    basisprint.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH
    \n-
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-\n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17
    \n-
    26 template<class D, class R>
    \n-
    \n-
    27 class
    \n-\n-
    29 {
    \n-
    30 public:
    \n-\n-\n-
    33
    \n-
    \n-\n-
    36 {}
    \n-
    \n-
    37
    \n-
    \n-
    43 RT03DLocalFiniteElement (std::bitset<4> s) :
    \n-
    44 basis(s),
    \n-
    45 interpolation(s)
    \n-
    46 {}
    \n-
    \n+
    5#ifndef BASISPRINT
    \n+
    6#define BASISPRINT
    \n+\n+\n+
    9namespace Dune {
    \n+
    10 /**********************************************
    \n+
    11 * Methods for printing a PolynomialBasis.
    \n+
    12 * Is achieved by using the MultiIndex class as
    \n+
    13 * Field type and printing the results.
    \n+
    14 * The basis and higher order derivatives can be
    \n+
    15 * printed. This could be the basis for printing
    \n+
    16 * routings providing C++ or matlab methods
    \n+
    17 * for computing the basisfunctions for given
    \n+
    18 * orders or reference elements.
    \n+
    19 **********************************************/
    \n+
    20 // default argument does not work for gcc 4.1.2
    \n+
    21 // template <int deriv,class BasisFactory,class PrintField=typename BasisFactory::StorageField>
    \n+
    22 template <int deriv,class BasisFactory,class PrintField,GeometryType::Id geometryId>
    \n+
    \n+
    23 void basisPrint(std::ostream &out,
    \n+
    24 typename BasisFactory::Object &basis)
    \n+
    25 {
    \n+
    26 typedef typename BasisFactory::Object Basis;
    \n+
    27 const int dimension = Basis::dimension;
    \n+
    28
    \n+\n+
    30 typedef typename BasisFactory::template EvaluationBasisFactory<dimension,Field>::Type
    \n+
    31 MIBasisFactory;
    \n+
    32 typedef typename MIBasisFactory::Object MIBasis;
    \n+
    33 typedef typename Basis::CoefficientMatrix CMatrix;
    \n+
    34 typedef PolynomialBasis<StandardEvaluator<MIBasis>, CMatrix > PrintBasis;
    \n+
    35
    \n+
    36 MIBasis *miBasis = MIBasisFactory::template create<geometryId>( basis.basis().order());
    \n+
    37 PrintBasis printBasis(*miBasis,basis.matrix(),basis.size());
    \n+
    38
    \n+
    39 unsigned int size = printBasis.size();
    \n+
    40
    \n+
    41 out << "% Number of base functions: " << size << std::endl;
    \n+
    42 out << "% Derivative order: " << deriv << std::endl;
    \n+
    43
    \n+
    44 std::vector< FieldVector<
    \n+
    45 FieldVector<Field,LFETensor<Field,dimension,deriv>::size>,
    \n+
    46 PrintBasis::dimRange> > y( size );
    \n
    47
    \n-
    \n-
    48 const typename Traits::LocalBasisType& localBasis () const
    \n-
    49 {
    \n-
    50 return basis;
    \n-
    51 }
    \n-
    \n-
    52
    \n-
    \n-\n-
    54 {
    \n-
    55 return coefficients;
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    \n-\n-
    59 {
    \n-
    60 return interpolation;
    \n-
    61 }
    \n+
    48 FieldVector< Field, dimension > x;
    \n+
    49 for( int i = 0; i < dimension; ++i )
    \n+
    50 x[ i ].set( i, 1 );
    \n+
    51 printBasis.template evaluateSingle<deriv>( x, y );
    \n+
    52 for (unsigned int i=0; i<size; ++i)
    \n+
    53 {
    \n+
    54 out << "$\\\\varphi_" << i << "(a,b,c)$&$=$&$" << std::endl;
    \n+
    55 out << "( ";
    \n+
    56 for (unsigned int r=0; r<PrintBasis::dimRange; ++r)
    \n+
    57 out << y[i][r] << (r<PrintBasis::dimRange-1 ? " , $ \\\\\\\\ && $" : " )$ \\\\\\\\");
    \n+
    58 out << std::endl;
    \n+
    59 }
    \n+
    60 MIBasisFactory::release(miBasis);
    \n+
    61 }
    \n
    \n
    62
    \n-
    \n-
    63 unsigned int size () const
    \n-
    64 {
    \n-
    65 return 4;
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    68 static constexpr GeometryType type ()
    \n-
    69 {
    \n-
    70 return GeometryTypes::tetrahedron;
    \n-
    71 }
    \n+
    63 template <int deriv,class BasisFactory,class PrintField=typename BasisFactory::StorageField>
    \n+
    \n+
    64 void basisPrint(std::ostream &out,
    \n+
    65 typename BasisFactory::Key &key)
    \n+
    66 {
    \n+
    67 typename BasisFactory::Object *basis = BasisFactory::create(key);
    \n+
    68 basisPrint<deriv,BasisFactory,PrintField>(out,*basis);
    \n+
    69 BasisFactory::release(basis);
    \n+
    70 }
    \n
    \n+
    71}
    \n
    72
    \n-
    73 private:
    \n-\n-
    75 RT03DLocalCoefficients coefficients;
    \n-\n-
    77 };
    \n-
    \n-
    78
    \n-
    79}
    \n-
    80
    \n-
    81#endif
    \n-\n-\n-\n-\n+
    73
    \n+
    74#endif // BASISPRINT
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Zero order Raviart-Thomas shape functions on tetrahedra.
    Definition raviartthomas03d.hh:29
    \n-
    LocalFiniteElementTraits< RT03DLocalBasis< D, R >, RT03DLocalCoefficients, RT03DLocalInterpolation< RT03DLocalBasis< D, R > > > Traits
    Definition raviartthomas03d.hh:32
    \n-
    unsigned int size() const
    Definition raviartthomas03d.hh:63
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas03d.hh:68
    \n-
    RT03DLocalFiniteElement(std::bitset< 4 > s)
    Constructor with explicitly given face orientations.
    Definition raviartthomas03d.hh:43
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas03d.hh:53
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas03d.hh:48
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas03d.hh:58
    \n-
    RT03DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas03d.hh:35
    \n-
    Definition raviartthomas03dlocalbasis.hh:27
    \n-
    Definition raviartthomas03dlocalcoefficients.hh:25
    \n-
    Definition raviartthomas03dlocalinterpolation.hh:17
    \n+
    void basisPrint(std::ostream &out, typename BasisFactory::Object &basis)
    Definition basisprint.hh:23
    \n+
    Definition multiindex.hh:38
    \n+
    Definition polynomialbasis.hh:65
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,134 +1,103 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas03d.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+basisprint.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH\n-7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17\n-26 template\n-_\b2_\b7 class\n-28 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-29 {\n-30 public:\n-31 typedef\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b2 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-33\n-_\b3_\b5 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-36 {}\n-37\n-_\b4_\b3 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset<4> s) :\n-44 basis(s),\n-45 interpolation(s)\n-46 {}\n+5#ifndef BASISPRINT\n+6#define BASISPRINT\n+7#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+9namespace _\bD_\bu_\bn_\be {\n+10 /**********************************************\n+11 * Methods for printing a PolynomialBasis.\n+12 * Is achieved by using the MultiIndex class as\n+13 * Field type and printing the results.\n+14 * The basis and higher order derivatives can be\n+15 * printed. This could be the basis for printing\n+16 * routings providing C++ or matlab methods\n+17 * for computing the basisfunctions for given\n+18 * orders or reference elements.\n+19 **********************************************/\n+20 // default argument does not work for gcc 4.1.2\n+21 // template \n+22 template \n+_\b2_\b3 void _\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt(std::ostream &out,\n+24 typename BasisFactory::Object &basis)\n+25 {\n+26 typedef typename BasisFactory::Object Basis;\n+27 const int dimension = Basis::dimension;\n+28\n+29 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bP_\br_\bi_\bn_\bt_\bF_\bi_\be_\bl_\bd_\b _\b> Field;\n+30 typedef typename BasisFactory::template\n+EvaluationBasisFactory::Type\n+31 MIBasisFactory;\n+32 typedef typename MIBasisFactory::Object MIBasis;\n+33 typedef typename Basis::CoefficientMatrix CMatrix;\n+34 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\bM_\bI_\bB_\ba_\bs_\bi_\bs_\b>, CMatrix > PrintBasis;\n+35\n+36 MIBasis *miBasis = MIBasisFactory::template create( basis.basis\n+().order());\n+37 PrintBasis printBasis(*miBasis,basis.matrix(),basis.size());\n+38\n+39 unsigned int size = printBasis.size();\n+40\n+41 out << \"% Number of base functions: \" << size << std::endl;\n+42 out << \"% Derivative order: \" << deriv << std::endl;\n+43\n+44 std::vector< FieldVector<\n+45 FieldVector::size>,\n+46 PrintBasis::dimRange> > y( size );\n 47\n-_\b4_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-49 {\n-50 return basis;\n-51 }\n-52\n-_\b5_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-54 {\n-55 return coefficients;\n-56 }\n-57\n-_\b5_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-59 {\n-60 return interpolation;\n+48 FieldVector< Field, dimension > x;\n+49 for( int i = 0; i < dimension; ++i )\n+50 x[ i ].set( i, 1 );\n+51 printBasis.template evaluateSingle( x, y );\n+52 for (unsigned int i=0; i\n+_\b6_\b4 void _\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt(std::ostream &out,\n+65 typename BasisFactory::Key &key)\n+66 {\n+67 typename BasisFactory::Object *basis = BasisFactory::create(key);\n+68 basisPrint(out,*basis);\n+69 BasisFactory::release(basis);\n+70 }\n+71}\n 72\n-73 private:\n-74 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-75 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-76 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-77 };\n-78\n-79}\n-80\n-81#endif\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+73\n+74#endif // BASISPRINT\n+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n+_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Zero order Raviart-Thomas shape functions on tetrahedra.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT03DLocalBasis< D, R >, RT03DLocalCoefficients,\n-RT03DLocalInterpolation< RT03DLocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT03DLocalFiniteElement(std::bitset< 4 > s)\n-Constructor with explicitly given face orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT03DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalinterpolation.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\bP_\br_\bi_\bn_\bt\n+void basisPrint(std::ostream &out, typename BasisFactory::Object &basis)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisprint.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube3d.hh File Reference\n+dune-localfunctions: polynomialbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,44 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    raviartthomas1cube3d.hh File Reference
    \n+
    polynomialbasis.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "raviartthomas1cube3d/raviartthomas1cube3dlocalbasis.hh"
    \n-#include "raviartthomas1cube3d/raviartthomas1cube3dlocalcoefficients.hh"
    \n-#include "raviartthomas1cube3d/raviartthomas1cube3dlocalinterpolation.hh"
    \n+
    #include <fstream>
    \n+#include <numeric>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/utility/coeffmatrix.hh>
    \n+#include <dune/localfunctions/utility/monomialbasis.hh>
    \n+#include <dune/localfunctions/utility/multiindex.hh>
    \n+#include <dune/localfunctions/utility/basisevaluator.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT1Cube3DLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on cubes. More...
    class  Dune::PolynomialBasis< Eval, CM, D, R >
     
    struct  Dune::PolynomialBasis< Eval, CM, D, R >::Convert< dummy, DVector >
     
    struct  Dune::PolynomialBasis< Eval, CM, D, R >::Convert< dummy, DomainVector >
     
    class  Dune::PolynomialBasisWithMatrix< Eval, CM, D, R >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,33 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas1cube3d.hh File Reference\n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+polynomialbasis.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bc_\bo_\be_\bf_\bf_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bb_\ba_\bs_\bi_\bs_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\b<_\b _\bd_\bu_\bm_\bm_\by_\b,_\b _\bD_\bV_\be_\bc_\bt_\bo_\br_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\b<_\b _\bd_\bu_\bm_\bm_\by_\b,_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+ _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas1cube3d.hh Source File\n+dune-localfunctions: polynomialbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,481 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube3d.hh
    \n+
    polynomialbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_POLYNOMIALBASIS_HH
    \n+
    6#define DUNE_POLYNOMIALBASIS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n+
    8#include <fstream>
    \n+
    9#include <numeric>
    \n+
    10
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \n+\n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n-
    28
    \n-
    29 public:
    \n-\n-\n-\n-\n-
    34
    \n-\n-
    38
    \n-
    \n-\n-
    45 basis(s),
    \n-
    46 interpolation(s)
    \n-
    47 {}
    \n-
    \n-
    48
    \n-
    \n-
    49 const typename Traits::LocalBasisType& localBasis () const
    \n-
    50 {
    \n-
    51 return basis;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-\n-
    55 {
    \n-
    56 return coefficients;
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-\n-
    60 {
    \n-
    61 return interpolation;
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    \n-
    65 unsigned int size () const
    \n-
    66 {
    \n-
    67 return basis.size();
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    \n-
    70 static constexpr GeometryType type ()
    \n-
    71 {
    \n-
    72 return GeometryTypes::hexahedron;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-\n-
    77 RT1Cube3DLocalCoefficients coefficients;
    \n-\n-
    79 };
    \n-
    \n-
    80}
    \n-
    81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+\n+\n+\n+\n+
    19
    \n+
    20namespace Dune
    \n+
    21{
    \n+
    22
    \n+
    23 // PolynomialBasis
    \n+
    24 // ---------------
    \n+
    25
    \n+
    63 template< class Eval, class CM, class D=double, class R=double >
    \n+
    \n+\n+
    65 {
    \n+\n+
    67 typedef Eval Evaluator;
    \n+
    68
    \n+
    69 public:
    \n+\n+
    71
    \n+
    72 typedef typename CoefficientMatrix::Field StorageField;
    \n+
    73
    \n+
    74 static const unsigned int dimension = Evaluator::dimension;
    \n+
    75 static const unsigned int dimRange = Evaluator::dimRange*CoefficientMatrix::blockSize;
    \n+\n+
    77 R,dimRange,FieldVector<R,dimRange>,
    \n+
    78 FieldMatrix<R,dimRange,dimension> > Traits;
    \n+
    79 typedef typename Evaluator::Basis Basis;
    \n+
    80 typedef typename Evaluator::DomainVector DomainVector;
    \n+
    81 template <class Fy>
    \n+
    82 using HessianFyType = FieldVector<FieldMatrix<Fy,dimension,dimension>,dimRange>;
    \n+\n+
    84
    \n+
    \n+\n+
    86 const CoefficientMatrix &coeffMatrix,
    \n+
    87 unsigned int size)
    \n+
    88 : basis_(basis),
    \n+
    89 coeffMatrix_(&coeffMatrix),
    \n+
    90 eval_(basis),
    \n+\n+
    92 size_(size)
    \n+
    93 {
    \n+
    94 // assert(coeffMatrix_);
    \n+
    95 // assert(size_ <= coeffMatrix.size()); // !!!
    \n+
    96 }
    \n+
    \n+
    97
    \n+
    \n+
    98 const Basis &basis () const
    \n+
    99 {
    \n+
    100 return basis_;
    \n+
    101 }
    \n+
    \n+
    102
    \n+
    \n+
    103 const CoefficientMatrix &matrix () const
    \n+
    104 {
    \n+
    105 return *coeffMatrix_;
    \n+
    106 }
    \n+
    \n+
    107
    \n+
    \n+
    108 unsigned int order () const
    \n+
    109 {
    \n+
    110 return order_;
    \n+
    111 }
    \n+
    \n+
    112
    \n+
    \n+
    113 unsigned int size () const
    \n+
    114 {
    \n+
    115 return size_;
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    \n+
    119 void evaluateFunction (const typename Traits::DomainType& x,
    \n+
    120 std::vector<typename Traits::RangeType>& out) const
    \n+
    121 {
    \n+
    122 out.resize(size());
    \n+
    123 evaluate(x,out);
    \n+
    124 }
    \n+
    \n+
    125
    \n+
    \n+
    127 void evaluateJacobian (const typename Traits::DomainType& x, // position
    \n+
    128 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    129 {
    \n+
    130 out.resize(size());
    \n+
    131 jacobian(x,out);
    \n+
    132 }
    \n+
    \n+
    133
    \n+
    \n+
    135 void evaluateHessian (const typename Traits::DomainType& x, // position
    \n+
    136 std::vector<HessianType>& out) const // return value
    \n+
    137 {
    \n+
    138 out.resize(size());
    \n+
    139 hessian(x,out);
    \n+
    140 }
    \n+
    \n+
    141
    \n+
    \n+
    143 void partial (const std::array<unsigned int, dimension>& order,
    \n+
    144 const typename Traits::DomainType& in, // position
    \n+
    145 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    146 {
    \n+
    147 out.resize(size());
    \n+
    148 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    149 if (totalOrder == 0) {
    \n+
    150 evaluateFunction(in, out);
    \n+
    151 }
    \n+
    152 else if (totalOrder == 1) {
    \n+
    153 std::vector<typename Traits::JacobianType> jacs(out.size());
    \n+
    154 unsigned int k;
    \n+
    155 for (unsigned int i=0;i<order.size();++i)
    \n+
    156 if (order[i]==1) k=i;
    \n+
    157 evaluateJacobian(in, jacs);
    \n+
    158 for (unsigned int i=0;i<out.size();++i)
    \n+
    159 for (unsigned int r=0;r<Traits::RangeType::dimension;++r)
    \n+
    160 out[i][r] = jacs[i][r][k];
    \n+
    161 }
    \n+
    162 else if (totalOrder == 2) {
    \n+
    163 std::vector<HessianType> hesss(out.size());
    \n+
    164 int k=-1,l=-1;
    \n+
    165 for (unsigned int i=0;i<order.size();++i) {
    \n+
    166 if (order[i] >= 1 && k == -1)
    \n+
    167 k = i;
    \n+
    168 else if (order[i]==1) l=i;
    \n+
    169 }
    \n+
    170 if (l==-1) l=k;
    \n+
    171 evaluateHessian(in, hesss);
    \n+
    172 for (unsigned int i=0;i<out.size();++i)
    \n+
    173 for (unsigned int r=0;r<Traits::RangeType::dimension;++r)
    \n+
    174 out[i][r] = hesss[i][r][k][l];
    \n+
    175 }
    \n+
    176 else {
    \n+
    177 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    178 }
    \n+
    179 }
    \n+
    \n+
    180
    \n+
    181 template< unsigned int deriv, class F >
    \n+
    \n+
    182 void evaluate ( const DomainVector &x, F *values ) const
    \n+
    183 {
    \n+
    184 coeffMatrix_->mult( eval_.template evaluate<deriv>( x ), size(), values);
    \n+
    185 }
    \n+
    \n+
    186 template< unsigned int deriv, class DVector, class F >
    \n+
    \n+
    187 void evaluate ( const DVector &x, F *values ) const
    \n+
    188 {
    \n+
    189 assert( DVector::dimension == dimension);
    \n+
    190 DomainVector bx;
    \n+
    191 for( int d = 0; d < dimension; ++d )
    \n+
    192 field_cast( x[ d ], bx[ d ] );
    \n+
    193 evaluate<deriv>( bx, values );
    \n+
    194 }
    \n+
    \n+
    195
    \n+
    196 template <bool dummy,class DVector>
    \n+
    \n+
    197 struct Convert
    \n+
    198 {
    \n+
    \n+
    199 static DomainVector apply( const DVector &x )
    \n+
    200 {
    \n+
    201 assert( DVector::dimension == dimension);
    \n+
    202 DomainVector bx;
    \n+
    203 for( unsigned int d = 0; d < dimension; ++d )
    \n+
    204 field_cast( x[ d ], bx[ d ] );
    \n+
    205 return bx;
    \n+
    206 }
    \n+
    \n+
    207 };
    \n+
    \n+
    208 template <bool dummy>
    \n+
    \n+
    209 struct Convert<dummy,DomainVector>
    \n+
    210 {
    \n+
    \n+
    211 static const DomainVector &apply( const DomainVector &x )
    \n+
    212 {
    \n+
    213 return x;
    \n+
    214 }
    \n+
    \n+
    215 };
    \n+
    \n+
    216 template< unsigned int deriv, class DVector, class RVector >
    \n+
    \n+
    217 void evaluate ( const DVector &x, RVector &values ) const
    \n+
    218 {
    \n+
    219 assert(values.size()>=size());
    \n+\n+
    221 coeffMatrix_->mult( eval_.template evaluate<deriv>( bx ), values );
    \n+
    222 }
    \n+
    \n+
    223
    \n+
    224 template <class Fy>
    \n+
    \n+
    225 void evaluate ( const DomainVector &x, std::vector<FieldVector<Fy,dimRange> > &values ) const
    \n+
    226 {
    \n+
    227 evaluate<0>(x,values);
    \n+
    228 }
    \n+
    \n+
    229 template< class DVector, class RVector >
    \n+
    \n+
    230 void evaluate ( const DVector &x, RVector &values ) const
    \n+
    231 {
    \n+
    232 assert( DVector::dimension == dimension);
    \n+
    233 DomainVector bx;
    \n+
    234 for( unsigned int d = 0; d < dimension; ++d )
    \n+
    235 field_cast( x[ d ], bx[ d ] );
    \n+
    236 evaluate<0>( bx, values );
    \n+
    237 }
    \n+
    \n+
    238
    \n+
    239 template< unsigned int deriv, class Vector >
    \n+
    \n+
    240 void evaluateSingle ( const DomainVector &x, Vector &values ) const
    \n+
    241 {
    \n+
    242 assert(values.size()>=size());
    \n+
    243 coeffMatrix_->template mult<deriv>( eval_.template evaluate<deriv>( x ), values );
    \n+
    244 }
    \n+
    \n+
    245 template< unsigned int deriv, class Fy >
    \n+
    \n+\n+
    247 std::vector< FieldVector<FieldVector<Fy,LFETensor<Fy,dimension,deriv>::size>,dimRange> > &values) const
    \n+
    248 {
    \n+
    249 evaluateSingle<deriv>(x,reinterpret_cast<std::vector< FieldVector<Fy,LFETensor<Fy,dimension,deriv>::size*dimRange> >&>(values));
    \n+
    250 }
    \n+
    \n+
    251 template< unsigned int deriv, class Fy >
    \n+
    \n+\n+
    253 std::vector< FieldVector<LFETensor<Fy,dimension,deriv>,dimRange> > &values) const
    \n+
    254 {
    \n+
    255 evaluateSingle<deriv>(x,reinterpret_cast<std::vector< FieldVector<Fy,LFETensor<Fy,dimension,deriv>::size*dimRange> >&>(values));
    \n+
    256 }
    \n+
    \n+
    257
    \n+
    258 template <class Fy>
    \n+
    \n+
    259 void jacobian ( const DomainVector &x,
    \n+
    260 std::vector<FieldMatrix<Fy,dimRange,dimension> > &values ) const
    \n+
    261 {
    \n+
    262 assert(values.size()>=size());
    \n+
    263 evaluateSingle<1>(x,reinterpret_cast<std::vector<FieldVector<Fy,dimRange*dimension> >&>(values));
    \n+
    264 }
    \n+
    \n+
    265 template< class DVector, class RVector >
    \n+
    \n+
    266 void jacobian ( const DVector &x, RVector &values ) const
    \n+
    267 {
    \n+
    268 assert( DVector::dimension == dimension);
    \n+
    269 DomainVector bx;
    \n+
    270 for( unsigned int d = 0; d < dimension; ++d )
    \n+
    271 field_cast( x[ d ], bx[ d ] );
    \n+
    272 jacobian( bx, values );
    \n+
    273 }
    \n+
    \n+
    274 template <class Fy>
    \n+
    \n+
    275 void hessian ( const DomainVector &x,
    \n+
    276 std::vector<HessianFyType<Fy>> &values ) const
    \n+
    277 {
    \n+
    278 assert(values.size()>=size());
    \n+
    279 // only upper part of hessians matrix is computed - so we have
    \n+
    280 // y[0] = FV< FV<Fy,d*(d+1)/2>, dimRange>
    \n+
    281 const unsigned int hsize = LFETensor<Fy,dimension,2>::size;
    \n+
    282 std::vector< FieldVector< FieldVector<Fy,hsize>, dimRange> > y( size() );
    \n+
    283 evaluateSingle<2>(x, y);
    \n+
    284 unsigned int q = 0;
    \n+
    285 for (unsigned int i = 0; i < size(); ++i)
    \n+
    286 for (unsigned int r = 0; r < dimRange; ++r)
    \n+
    287 {
    \n+
    288 q = 0;
    \n+
    289 // tensor-based things follow unintuitive index scheme
    \n+
    290 // e.g. for dim = 3, the k-l index of y is 00,01,11,02,12,22, i.e. partial derivatives
    \n+
    291 // are ordered: xx,xy,yy,xz,yz,zz
    \n+
    292
    \n+
    293 // Fill values 'directionwise'
    \n+
    294 for (unsigned int k = 0; k < dimension; ++k)
    \n+
    295 for (unsigned int l = 0; l <= k; ++l)
    \n+
    296 {
    \n+
    297
    \n+
    298 values[i][r][k][l] = y[i][r][q];
    \n+
    299 values[i][r][l][k] = y[i][r][q];
    \n+
    300 assert(q < hsize);
    \n+
    301 ++q;
    \n+
    302 }
    \n+
    303 }
    \n+
    304 // evaluateSingle<2>(x,reinterpret_cast<std::vector<FieldVector<Fy,dimRange*dimension*dimension> >&>(values));
    \n+
    305 }
    \n+
    \n+
    306 template< class DVector, class HVector >
    \n+
    \n+
    307 void hessian ( const DVector &x, HVector &values ) const
    \n+
    308 {
    \n+
    309 assert( DVector::dimension == dimension);
    \n+
    310 DomainVector bx;
    \n+
    311 for( unsigned int d = 0; d < dimension; ++d )
    \n+
    312 field_cast( x[ d ], bx[ d ] );
    \n+
    313 hessian( bx, values );
    \n+
    314 }
    \n+
    \n+
    315
    \n+
    316 template <class Fy>
    \n+
    \n+
    317 void integrate ( std::vector<Fy> &values ) const
    \n+
    318 {
    \n+
    319 assert(values.size()>=size());
    \n+
    320 coeffMatrix_->mult( eval_.template integrate(), values );
    \n+
    321 }
    \n+
    \n+
    322
    \n+
    323 protected:
    \n+
    \n+\n+
    325 : basis_(other.basis_),
    \n+\n+
    327 eval_(basis_),
    \n+\n+
    329 size_(other.size_)
    \n+
    330 {}
    \n+
    \n+\n+
    332 const Basis &basis_;
    \n+\n+
    334 mutable Evaluator eval_;
    \n+
    335 unsigned int order_,size_;
    \n+
    336 };
    \n+
    \n+
    337
    \n+
    344 template< class Eval, class CM = SparseCoeffMatrix<typename Eval::Field,Eval::dimRange>,
    \n+
    345 class D=double, class R=double>
    \n+
    \n+\n+
    347 : public PolynomialBasis< Eval, CM, D, R >
    \n+
    348 {
    \n+
    349 public:
    \n+\n+
    351
    \n+
    352 private:
    \n+
    353 typedef Eval Evaluator;
    \n+
    354
    \n+\n+\n+
    357
    \n+
    358 public:
    \n+
    359 typedef typename Base::Basis Basis;
    \n+
    360
    \n+
    \n+\n+
    362 : Base(basis,coeffMatrix_,0)
    \n+
    363 {}
    \n+
    \n+
    364
    \n+
    365 template <class Matrix>
    \n+
    \n+
    366 void fill(const Matrix& matrix)
    \n+
    367 {
    \n+
    368 coeffMatrix_.fill(matrix);
    \n+
    369 this->size_ = coeffMatrix_.size();
    \n+
    370 }
    \n+
    \n+
    371 template <class Matrix>
    \n+
    \n+
    372 void fill(const Matrix& matrix,int size)
    \n+
    373 {
    \n+
    374 coeffMatrix_.fill(matrix);
    \n+
    375 assert(size<=coeffMatrix_.size());
    \n+
    376 this->size_ = size;
    \n+
    377 }
    \n+
    \n+
    378
    \n+
    379 private:
    \n+\n+\n+
    382 CoefficientMatrix coeffMatrix_;
    \n+
    383 };
    \n+
    \n+
    384}
    \n+
    385#endif // DUNE_POLYNOMIALBASIS_HH
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    First order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas1cube3d.hh:27
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas1cube3d.hh:59
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas1cube3d.hh:54
    \n-
    RT1Cube3DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas1cube3d.hh:36
    \n-
    RT1Cube3DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas1cube3d.hh:44
    \n-
    LocalFiniteElementTraits< RT1Cube3DLocalBasis< D, R >, RT1Cube3DLocalCoefficients, RT1Cube3DLocalInterpolation< RT1Cube3DLocalBasis< D, R > > > Traits
    Definition raviartthomas1cube3d.hh:33
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas1cube3d.hh:65
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas1cube3d.hh:70
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas1cube3d.hh:49
    \n-
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalbasis.hh:28
    \n-
    Layout map for Raviart-Thomas-1 elements on quadrilaterals.
    Definition raviartthomas1cube3dlocalcoefficients.hh:24
    \n-
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalinterpolation.hh:24
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Definition polynomialbasis.hh:65
    \n+
    void evaluate(const DVector &x, RVector &values) const
    Definition polynomialbasis.hh:230
    \n+
    void evaluate(const DomainVector &x, std::vector< FieldVector< Fy, dimRange > > &values) const
    Definition polynomialbasis.hh:225
    \n+
    PolynomialBasis(const PolynomialBasis &other)
    Definition polynomialbasis.hh:324
    \n+
    void evaluate(const DVector &x, F *values) const
    Definition polynomialbasis.hh:187
    \n+
    void evaluateHessian(const typename Traits::DomainType &x, std::vector< HessianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition polynomialbasis.hh:135
    \n+
    CoefficientMatrix::Field StorageField
    Definition polynomialbasis.hh:72
    \n+
    static const unsigned int dimRange
    Definition polynomialbasis.hh:75
    \n+
    void jacobian(const DVector &x, RVector &values) const
    Definition polynomialbasis.hh:266
    \n+
    Evaluator::DomainVector DomainVector
    Definition polynomialbasis.hh:80
    \n+
    Evaluator::Basis Basis
    Definition polynomialbasis.hh:79
    \n+
    void evaluateSingle(const DomainVector &x, Vector &values) const
    Definition polynomialbasis.hh:240
    \n+
    void evaluateSingle(const DomainVector &x, std::vector< FieldVector< LFETensor< Fy, dimension, deriv >, dimRange > > &values) const
    Definition polynomialbasis.hh:252
    \n+
    void jacobian(const DomainVector &x, std::vector< FieldMatrix< Fy, dimRange, dimension > > &values) const
    Definition polynomialbasis.hh:259
    \n+
    const CoefficientMatrix & matrix() const
    Definition polynomialbasis.hh:103
    \n+
    const Basis & basis_
    Definition polynomialbasis.hh:332
    \n+
    void evaluateFunction(const typename Traits::DomainType &x, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition polynomialbasis.hh:119
    \n+
    static const unsigned int dimension
    Definition polynomialbasis.hh:74
    \n+
    void evaluateJacobian(const typename Traits::DomainType &x, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition polynomialbasis.hh:127
    \n+
    PolynomialBasis & operator=(const PolynomialBasis &)
    \n+
    const CoefficientMatrix * coeffMatrix_
    Definition polynomialbasis.hh:333
    \n+
    void integrate(std::vector< Fy > &values) const
    Definition polynomialbasis.hh:317
    \n+
    unsigned int size() const
    Definition polynomialbasis.hh:113
    \n+
    void evaluate(const DomainVector &x, F *values) const
    Definition polynomialbasis.hh:182
    \n+
    void hessian(const DVector &x, HVector &values) const
    Definition polynomialbasis.hh:307
    \n+
    CM CoefficientMatrix
    Definition polynomialbasis.hh:70
    \n+
    HessianFyType< R > HessianType
    Definition polynomialbasis.hh:83
    \n+
    LocalBasisTraits< D, dimension, FieldVector< D, dimension >, R, dimRange, FieldVector< R, dimRange >, FieldMatrix< R, dimRange, dimension > > Traits
    Definition polynomialbasis.hh:78
    \n+
    unsigned int order_
    Definition polynomialbasis.hh:335
    \n+
    void hessian(const DomainVector &x, std::vector< HessianFyType< Fy > > &values) const
    Definition polynomialbasis.hh:275
    \n+
    void evaluate(const DVector &x, RVector &values) const
    Definition polynomialbasis.hh:217
    \n+
    PolynomialBasis(const Basis &basis, const CoefficientMatrix &coeffMatrix, unsigned int size)
    Definition polynomialbasis.hh:85
    \n+
    FieldVector< FieldMatrix< Fy, dimension, dimension >, dimRange > HessianFyType
    Definition polynomialbasis.hh:82
    \n+
    unsigned int order() const
    Definition polynomialbasis.hh:108
    \n+
    void evaluateSingle(const DomainVector &x, std::vector< FieldVector< FieldVector< Fy, LFETensor< Fy, dimension, deriv >::size >, dimRange > > &values) const
    Definition polynomialbasis.hh:246
    \n+
    const Basis & basis() const
    Definition polynomialbasis.hh:98
    \n+
    void partial(const std::array< unsigned int, dimension > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition polynomialbasis.hh:143
    \n+
    unsigned int size_
    Definition polynomialbasis.hh:335
    \n+
    Evaluator eval_
    Definition polynomialbasis.hh:334
    \n+
    Definition polynomialbasis.hh:198
    \n+
    static DomainVector apply(const DVector &x)
    Definition polynomialbasis.hh:199
    \n+
    static const DomainVector & apply(const DomainVector &x)
    Definition polynomialbasis.hh:211
    \n+
    Definition polynomialbasis.hh:348
    \n+
    PolynomialBasisWithMatrix(const Basis &basis)
    Definition polynomialbasis.hh:361
    \n+
    CM CoefficientMatrix
    Definition polynomialbasis.hh:350
    \n+
    void fill(const Matrix &matrix, int size)
    Definition polynomialbasis.hh:372
    \n+
    Base::Basis Basis
    Definition polynomialbasis.hh:359
    \n+
    void fill(const Matrix &matrix)
    Definition polynomialbasis.hh:366
    \n+
    Definition tensor.hh:33
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,136 +1,538 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas1cube3d.hh\n+ * _\bu_\bt_\bi_\bl_\bi_\bt_\by\n+polynomialbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_POLYNOMIALBASIS_HH\n+6#define DUNE_POLYNOMIALBASIS_HH\n 7\n-8#include \n-9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+8#include \n+9#include \n+10\n+11#include \n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-25 template\n-_\b2_\b6 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 {\n-28\n-29 public:\n-30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-31 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-32 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b3_\b6 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-37 {}\n-38\n-_\b4_\b4 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-45 basis(s),\n-46 interpolation(s)\n-47 {}\n-48\n-_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-50 {\n-51 return basis;\n-52 }\n-53\n-_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-55 {\n-56 return coefficients;\n-57 }\n-58\n-_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-60 {\n-61 return interpolation;\n-62 }\n-63\n-_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-66 {\n-67 return basis.size();\n-68 }\n-69\n-_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-71 {\n-72 return GeometryTypes::hexahedron;\n-73 }\n-74\n-75 private:\n-76 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-77 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-78 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-79 };\n-80}\n-81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bc_\bo_\be_\bf_\bf_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh>\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bb_\ba_\bs_\bi_\bs_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\bh>\n+19\n+20namespace _\bD_\bu_\bn_\be\n+21{\n+22\n+23 // PolynomialBasis\n+24 // ---------------\n+25\n+63 template< class Eval, class CM, class D=double, class R=double >\n+_\b6_\b4 class _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+65 {\n+66 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bE_\bv_\ba_\bl_\b,_\b _\bC_\bM_\b _\b> _\bT_\bh_\bi_\bs;\n+67 typedef Eval Evaluator;\n+68\n+69 public:\n+_\b7_\b0 typedef CM _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx;\n+71\n+_\b7_\b2 typedef typename CoefficientMatrix::Field _\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+73\n+_\b7_\b4 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = Evaluator::dimension;\n+_\b7_\b5 static const unsigned int _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = Evaluator::dimRange*CoefficientMatrix::\n+blockSize;\n+76 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b>,\n+77 R,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be,FieldVector,\n+_\b7_\b8 FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+_\b7_\b9 typedef typename Evaluator::Basis _\bB_\ba_\bs_\bi_\bs;\n+_\b8_\b0 typedef typename Evaluator::DomainVector _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br;\n+81 template \n+_\b8_\b2 using _\bH_\be_\bs_\bs_\bi_\ba_\bn_\bF_\by_\bT_\by_\bp_\be =\n+FieldVector,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be>;\n+_\b8_\b3 using _\bH_\be_\bs_\bs_\bi_\ba_\bn_\bT_\by_\bp_\be = _\bH_\be_\bs_\bs_\bi_\ba_\bn_\bF_\by_\bT_\by_\bp_\be_\b<_\bR_\b>;\n+84\n+_\b8_\b5 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs (const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs,\n+86 const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx &coeffMatrix,\n+87 unsigned int _\bs_\bi_\bz_\be)\n+88 : _\bb_\ba_\bs_\bi_\bs_\b_(_\bb_\ba_\bs_\bi_\bs),\n+89 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_(&coeffMatrix),\n+90 _\be_\bv_\ba_\bl_\b_(_\bb_\ba_\bs_\bi_\bs),\n+91 _\bo_\br_\bd_\be_\br_\b_(_\bb_\ba_\bs_\bi_\bs._\bo_\br_\bd_\be_\br()),\n+92 _\bs_\bi_\bz_\be_\b_(_\bs_\bi_\bz_\be)\n+93 {\n+94 // assert(coeffMatrix_);\n+95 // assert(size_ <= coeffMatrix.size()); // !!!\n+96 }\n+97\n+_\b9_\b8 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs () const\n+99 {\n+100 return _\bb_\ba_\bs_\bi_\bs_\b_;\n+101 }\n+102\n+_\b1_\b0_\b3 const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx &_\bm_\ba_\bt_\br_\bi_\bx () const\n+104 {\n+105 return *_\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_;\n+106 }\n+107\n+_\b1_\b0_\b8 unsigned int _\bo_\br_\bd_\be_\br () const\n+109 {\n+110 return _\bo_\br_\bd_\be_\br_\b_;\n+111 }\n+112\n+_\b1_\b1_\b3 unsigned int _\bs_\bi_\bz_\be () const\n+114 {\n+115 return _\bs_\bi_\bz_\be_\b_;\n+116 }\n+117\n+_\b1_\b1_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n+120 std::vector& out) const\n+121 {\n+122 out.resize(_\bs_\bi_\bz_\be());\n+123 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(x,out);\n+124 }\n+125\n+_\b1_\b2_\b7 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x, // position\n+128 std::vector& out) const // return value\n+129 {\n+130 out.resize(_\bs_\bi_\bz_\be());\n+131 _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn(x,out);\n+132 }\n+133\n+_\b1_\b3_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bH_\be_\bs_\bs_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x, // position\n+136 std::vector& out) const // return value\n+137 {\n+138 out.resize(_\bs_\bi_\bz_\be());\n+139 _\bh_\be_\bs_\bs_\bi_\ba_\bn(x,out);\n+140 }\n+141\n+_\b1_\b4_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+144 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+145 std::vector& out) const // return value\n+146 {\n+147 out.resize(_\bs_\bi_\bz_\be());\n+148 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+149 if (totalOrder == 0) {\n+150 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+151 }\n+152 else if (totalOrder == 1) {\n+153 std::vector jacs(out.size());\n+154 unsigned int k;\n+155 for (unsigned int i=0;i<_\bo_\br_\bd_\be_\br.size();++i)\n+156 if (_\bo_\br_\bd_\be_\br[i]==1) k=i;\n+157 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(in, jacs);\n+158 for (unsigned int i=0;i hesss(out.size());\n+164 int k=-1,l=-1;\n+165 for (unsigned int i=0;i<_\bo_\br_\bd_\be_\br.size();++i) {\n+166 if (_\bo_\br_\bd_\be_\br[i] >= 1 && k == -1)\n+167 k = i;\n+168 else if (_\bo_\br_\bd_\be_\br[i]==1) l=i;\n+169 }\n+170 if (l==-1) l=k;\n+171 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bH_\be_\bs_\bs_\bi_\ba_\bn(in, hesss);\n+172 for (unsigned int i=0;i\n+_\b1_\b8_\b2 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, F *values ) const\n+183 {\n+184 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_->mult( _\be_\bv_\ba_\bl_\b_.template evaluate( x ), _\bs_\bi_\bz_\be(), values);\n+185 }\n+186 template< unsigned int deriv, class DVector, class F >\n+_\b1_\b8_\b7 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, F *values ) const\n+188 {\n+189 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+190 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n+191 for( int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n+192 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n+193 evaluate( bx, values );\n+194 }\n+195\n+196 template \n+_\b1_\b9_\b7 struct _\bC_\bo_\bn_\bv_\be_\br_\bt\n+198 {\n+_\b1_\b9_\b9 static _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br _\ba_\bp_\bp_\bl_\by( const DVector &x )\n+200 {\n+201 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+202 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n+203 for( unsigned int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n+204 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n+205 return bx;\n+206 }\n+207 };\n+208 template \n+_\b2_\b0_\b9 struct _\bC_\bo_\bn_\bv_\be_\br_\bt\n+210 {\n+_\b2_\b1_\b1 static const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &_\ba_\bp_\bp_\bl_\by( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x )\n+212 {\n+213 return x;\n+214 }\n+215 };\n+216 template< unsigned int deriv, class DVector, class RVector >\n+_\b2_\b1_\b7 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n+218 {\n+219 assert(values.size()>=_\bs_\bi_\bz_\be());\n+220 const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &bx = _\bC_\bo_\bn_\bv_\be_\br_\bt_\b<_\bt_\br_\bu_\be_\b,_\bD_\bV_\be_\bc_\bt_\bo_\br_\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by(x);\n+221 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_->mult( _\be_\bv_\ba_\bl_\b_.template evaluate( bx ), values );\n+222 }\n+223\n+224 template \n+_\b2_\b2_\b5 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, std::vector\n+> &values ) const\n+226 {\n+227 evaluate<0>(x,values);\n+228 }\n+229 template< class DVector, class RVector >\n+_\b2_\b3_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be ( const DVector &x, RVector &values ) const\n+231 {\n+232 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+233 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n+234 for( unsigned int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n+235 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n+236 evaluate<0>( bx, values );\n+237 }\n+238\n+239 template< unsigned int deriv, class Vector >\n+_\b2_\b4_\b0 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x, Vector &values ) const\n+241 {\n+242 assert(values.size()>=_\bs_\bi_\bz_\be());\n+243 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_->template mult( _\be_\bv_\ba_\bl_\b_.template evaluate( x ),\n+values );\n+244 }\n+245 template< unsigned int deriv, class Fy >\n+_\b2_\b4_\b6 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+247 std::vector< FieldVector_\b:_\b:\n+_\bs_\bi_\bz_\be>,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> > &values) const\n+248 {\n+249 evaluateSingle(x,reinterpret_cast::size*_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> >&>(values));\n+250 }\n+251 template< unsigned int deriv, class Fy >\n+_\b2_\b5_\b2 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+253 std::vector< FieldVector<_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\by_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bd_\be_\br_\bi_\bv_\b>,_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> > &values)\n+const\n+254 {\n+255 evaluateSingle(x,reinterpret_cast::size*_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> >&>(values));\n+256 }\n+257\n+258 template \n+_\b2_\b5_\b9 void _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+260 std::vector > &values ) const\n+261 {\n+262 assert(values.size()>=_\bs_\bi_\bz_\be());\n+263 evaluateSingle<1>(x,reinterpret_cast >&>(values));\n+264 }\n+265 template< class DVector, class RVector >\n+_\b2_\b6_\b6 void _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn ( const DVector &x, RVector &values ) const\n+267 {\n+268 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+269 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n+270 for( unsigned int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n+271 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n+272 _\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn( bx, values );\n+273 }\n+274 template \n+_\b2_\b7_\b5 void _\bh_\be_\bs_\bs_\bi_\ba_\bn ( const _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br &x,\n+276 std::vector<_\bH_\be_\bs_\bs_\bi_\ba_\bn_\bF_\by_\bT_\by_\bp_\be_\b<_\bF_\by_\b>> &values ) const\n+277 {\n+278 assert(values.size()>=_\bs_\bi_\bz_\be());\n+279 // only upper part of hessians matrix is computed - so we have\n+280 // y[0] = FV< FV, dimRange>\n+281 const unsigned int hsize = _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\b<_\bF_\by_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b2_\b>_\b:_\b:_\bs_\bi_\bz_\be;\n+282 std::vector< FieldVector< FieldVector, _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be> > y( _\bs_\bi_\bz_\be() );\n+283 evaluateSingle<2>(x, y);\n+284 unsigned int q = 0;\n+285 for (unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+286 for (unsigned int r = 0; r < _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be; ++r)\n+287 {\n+288 q = 0;\n+289 // tensor-based things follow unintuitive index scheme\n+290 // e.g. for dim = 3, the k-l index of y is 00,01,11,02,12,22, i.e. partial\n+derivatives\n+291 // are ordered: xx,xy,yy,xz,yz,zz\n+292\n+293 // Fill values 'directionwise'\n+294 for (unsigned int k = 0; k < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++k)\n+295 for (unsigned int l = 0; l <= k; ++l)\n+296 {\n+297\n+298 values[i][r][k][l] = y[i][r][q];\n+299 values[i][r][l][k] = y[i][r][q];\n+300 assert(q < hsize);\n+301 ++q;\n+302 }\n+303 }\n+304 // evaluateSingle<2>(x,reinterpret_cast >&>(values));\n+305 }\n+306 template< class DVector, class HVector >\n+_\b3_\b0_\b7 void _\bh_\be_\bs_\bs_\bi_\ba_\bn ( const DVector &x, HVector &values ) const\n+308 {\n+309 assert( DVector::dimension == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn);\n+310 _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br bx;\n+311 for( unsigned int d = 0; d < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++d )\n+312 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( x[ d ], bx[ d ] );\n+313 _\bh_\be_\bs_\bs_\bi_\ba_\bn( bx, values );\n+314 }\n+315\n+316 template \n+_\b3_\b1_\b7 void _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be ( std::vector &values ) const\n+318 {\n+319 assert(values.size()>=_\bs_\bi_\bz_\be());\n+320 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_->mult( _\be_\bv_\ba_\bl_\b_.template _\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be(), values );\n+321 }\n+322\n+323 protected:\n+_\b3_\b2_\b4 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs(const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs &other)\n+325 : _\bb_\ba_\bs_\bi_\bs_\b_(other._\bb_\ba_\bs_\bi_\bs_\b_),\n+326 _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_(other._\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_),\n+327 _\be_\bv_\ba_\bl_\b_(_\bb_\ba_\bs_\bi_\bs_\b_),\n+328 _\bo_\br_\bd_\be_\br_\b_(_\bb_\ba_\bs_\bi_\bs_\b_._\bo_\br_\bd_\be_\br()),\n+329 _\bs_\bi_\bz_\be_\b_(other._\bs_\bi_\bz_\be_\b_)\n+330 {}\n+_\b3_\b3_\b1 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs&);\n+_\b3_\b3_\b2 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs_\b_;\n+_\b3_\b3_\b3 const _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx* _\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_;\n+_\b3_\b3_\b4 mutable Evaluator _\be_\bv_\ba_\bl_\b_;\n+_\b3_\b3_\b5 unsigned int _\bo_\br_\bd_\be_\br_\b_,_\bs_\bi_\bz_\be_\b_;\n+336 };\n+337\n+344 template< class Eval, class CM = SparseCoeffMatrix,\n+345 class D=double, class R=double>\n+_\b3_\b4_\b6 class _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n+347 : public _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs< Eval, CM, D, R >\n+348 {\n+349 public:\n+_\b3_\b5_\b0 typedef CM _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx;\n+351\n+352 private:\n+353 typedef Eval Evaluator;\n+354\n+355 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b,_\b _\bC_\bM_\b _\b> _\bT_\bh_\bi_\bs;\n+356 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b,_\b _\bC_\bM_\b,_\b _\bD_\b,_\b _\bR_\b> _\bB_\ba_\bs_\be;\n+357\n+358 public:\n+_\b3_\b5_\b9 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs _\bB_\ba_\bs_\bi_\bs;\n+360\n+_\b3_\b6_\b1 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx (const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs)\n+362 : _\bB_\ba_\bs_\be(_\bb_\ba_\bs_\bi_\bs,coeffMatrix_,0)\n+363 {}\n+364\n+365 template \n+_\b3_\b6_\b6 void _\bf_\bi_\bl_\bl(const Matrix& _\bm_\ba_\bt_\br_\bi_\bx)\n+367 {\n+368 coeffMatrix_.fill(_\bm_\ba_\bt_\br_\bi_\bx);\n+369 this->_\bs_\bi_\bz_\be_\b_ = coeffMatrix_.size();\n+370 }\n+371 template \n+_\b3_\b7_\b2 void _\bf_\bi_\bl_\bl(const Matrix& _\bm_\ba_\bt_\br_\bi_\bx,int _\bs_\bi_\bz_\be)\n+373 {\n+374 coeffMatrix_.fill(_\bm_\ba_\bt_\br_\bi_\bx);\n+375 assert(_\bs_\bi_\bz_\be<=coeffMatrix_.size());\n+376 this->_\bs_\bi_\bz_\be_\b_ = _\bs_\bi_\bz_\be;\n+377 }\n+378\n+379 private:\n+380 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx(const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx &);\n+381 _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx &operator=(const _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx &);\n+382 _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx coeffMatrix_;\n+383 };\n+384}\n+385#endif // DUNE_POLYNOMIALBASIS_HH\n+_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\b._\bh_\bh\n+_\bb_\ba_\bs_\bi_\bs_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\bh\n+_\bc_\bo_\be_\bf_\bf_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Raviart-Thomas shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT1Cube3DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT1Cube3DLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 64.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT1Cube3DLocalBasis< D, R >,\n-RT1Cube3DLocalCoefficients, RT1Cube3DLocalInterpolation< RT1Cube3DLocalBasis<\n-D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DVector &x, RVector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:230\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, std::vector< FieldVector< Fy, dimRange > >\n+&values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:225\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+PolynomialBasis(const PolynomialBasis &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:324\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DVector &x, F *values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bH_\be_\bs_\bs_\bi_\ba_\bn\n+void evaluateHessian(const typename Traits::DomainType &x, std::vector<\n+HessianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bS_\bt_\bo_\br_\ba_\bg_\be_\bF_\bi_\be_\bl_\bd\n+CoefficientMatrix::Field StorageField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const unsigned int dimRange\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void jacobian(const DVector &x, RVector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:266\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br\n+Evaluator::DomainVector DomainVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+Evaluator::Basis Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be\n+void evaluateSingle(const DomainVector &x, Vector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be\n+void evaluateSingle(const DomainVector &x, std::vector< FieldVector< LFETensor<\n+Fy, dimension, deriv >, dimRange > > &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:252\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bj_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void jacobian(const DomainVector &x, std::vector< FieldMatrix< Fy, dimRange,\n+dimension > > &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:259\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bm_\ba_\bt_\br_\bi_\bx\n+const CoefficientMatrix & matrix() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bb_\ba_\bs_\bi_\bs_\b_\n+const Basis & basis_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:332\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &x, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &x, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:127\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+PolynomialBasis & operator=(const PolynomialBasis &)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b_\n+const CoefficientMatrix * coeffMatrix_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:333\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bi_\bn_\bt_\be_\bg_\br_\ba_\bt_\be\n+void integrate(std::vector< Fy > &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:317\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalinterpolation.hh:24\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DomainVector &x, F *values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:182\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bh_\be_\bs_\bs_\bi_\ba_\bn\n+void hessian(const DVector &x, HVector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:307\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx\n+CM CoefficientMatrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bH_\be_\bs_\bs_\bi_\ba_\bn_\bT_\by_\bp_\be\n+HessianFyType< R > HessianType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, dimension, FieldVector< D, dimension >, R, dimRange,\n+FieldVector< R, dimRange >, FieldMatrix< R, dimRange, dimension > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n+unsigned int order_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:335\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bh_\be_\bs_\bs_\bi_\ba_\bn\n+void hessian(const DomainVector &x, std::vector< HessianFyType< Fy > > &values)\n+const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:275\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const DVector &x, RVector &values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:217\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+PolynomialBasis(const Basis &basis, const CoefficientMatrix &coeffMatrix,\n+unsigned int size)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bH_\be_\bs_\bs_\bi_\ba_\bn_\bF_\by_\bT_\by_\bp_\be\n+FieldVector< FieldMatrix< Fy, dimension, dimension >, dimRange > HessianFyType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:82\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bi_\bn_\bg_\bl_\be\n+void evaluateSingle(const DomainVector &x, std::vector< FieldVector<\n+FieldVector< Fy, LFETensor< Fy, dimension, deriv >::size >, dimRange > >\n+&values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:246\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n+const Basis & basis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, dimension > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:143\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\b_\n+unsigned int size_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:335\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\b_\n+Evaluator eval_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:334\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:198\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static DomainVector apply(const DVector &x)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:199\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\b<_\b _\bd_\bu_\bm_\bm_\by_\b,_\b _\bD_\bo_\bm_\ba_\bi_\bn_\bV_\be_\bc_\bt_\bo_\br_\b _\b>_\b:_\b:_\ba_\bp_\bp_\bl_\by\n+static const DomainVector & apply(const DomainVector &x)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:211\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n+PolynomialBasisWithMatrix(const Basis &basis)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:361\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bM_\ba_\bt_\br_\bi_\bx\n+CM CoefficientMatrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:350\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n+void fill(const Matrix &matrix, int size)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:372\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+Base::Basis Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:359\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bf_\bi_\bl_\bl\n+void fill(const Matrix &matrix)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:366\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:33\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0prism.hh File Reference\n+dune-localfunctions: simplexp1bubble.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0prism.hh File Reference
    \n+
    simplexp1bubble.hh File Reference
    \n
    \n
    \n \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT0PrismLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on prisms. More...
    class  Dune::SimplexP1BubbleLocalFiniteElement< D, R, dim >
     Linear Lagrange functions enriched with an element bubble function. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0prism.hh File Reference\n+simplexp1bubble.hh File Reference\n #include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on prisms. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Linear Lagrange functions enriched with an element bubble function.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0prism.hh Source File\n+dune-localfunctions: simplexp1bubble.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,116 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas0prism.hh
    \n+
    simplexp1bubble.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH
    \n
    7
    \n
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n+\n+\n+\n+\n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n-
    28
    \n-
    29 public:
    \n-\n-\n-\n-\n-
    34
    \n-
    35
    \n-\n-
    39
    \n-
    \n-\n-
    46 basis(s),
    \n-
    47 interpolation(s)
    \n-
    48 {}
    \n-
    \n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    43 template<class D, class R, int dim>
    \n+
    \n+\n+
    45 {
    \n+
    46 public:
    \n+\n
    49
    \n-
    \n-
    50 const typename Traits::LocalBasisType& localBasis () const
    \n-
    51 {
    \n-
    52 return basis;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    \n-\n-
    56 {
    \n-
    57 return coefficients;
    \n-
    58 }
    \n-
    \n+\n+
    52
    \n+\n+
    55
    \n+\n+
    58
    \n
    59
    \n-
    \n-\n-
    61 {
    \n-
    62 return interpolation;
    \n-
    63 }
    \n-
    \n-
    64
    \n-
    \n-
    66 unsigned int size () const
    \n-
    67 {
    \n-
    68 return basis.size();
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    \n-
    71 static constexpr GeometryType type ()
    \n-
    72 {
    \n-
    73 return GeometryTypes::prism;
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    76 private:
    \n-\n-
    78 RT0PrismLocalCoefficients coefficients;
    \n-\n-
    80 };
    \n-
    \n-
    81}
    \n-
    82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH
    \n-\n-\n-\n+
    \n+
    61 const LocalBasisType& localBasis () const
    \n+
    62 {
    \n+
    63 return basis_;
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    \n+\n+
    68 {
    \n+
    69 return coefficients_;
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    \n+\n+
    74 {
    \n+
    75 return interpolation_;
    \n+
    76 }
    \n+
    \n+
    77
    \n+
    \n+
    79 static constexpr std::size_t size () noexcept
    \n+
    80 {
    \n+
    81 return LocalBasisType::size();
    \n+
    82 }
    \n+
    \n+
    83
    \n+
    \n+
    85 static constexpr GeometryType type () noexcept
    \n+
    86 {
    \n+
    87 return GeometryTypes::simplex(dim);
    \n+
    88 }
    \n+
    \n+
    89
    \n+
    90 private:
    \n+
    91 LocalCoefficientsType coefficients_{};
    \n+
    92 [[no_unique_address]] LocalBasisType basis_{};
    \n+
    93 [[no_unique_address]] LocalInterpolationType interpolation_{};
    \n+
    94 };
    \n+
    \n+
    95
    \n+
    96} // end namespace Dune
    \n+
    97
    \n+
    98#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    First order Raviart-Thomas shape functions on prisms.
    Definition raviartthomas0prism.hh:27
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas0prism.hh:66
    \n-
    LocalFiniteElementTraits< RT0PrismLocalBasis< D, R >, RT0PrismLocalCoefficients, RT0PrismLocalInterpolation< RT0PrismLocalBasis< D, R > > > Traits
    Definition raviartthomas0prism.hh:33
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas0prism.hh:60
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas0prism.hh:50
    \n-
    RT0PrismLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas0prism.hh:37
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas0prism.hh:55
    \n-
    RT0PrismLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0prism.hh:45
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas0prism.hh:71
    \n-
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalbasis.hh:28
    \n-
    Layout map for Raviart-Thomas-1 elements on prisms.
    Definition raviartthomas0prismlocalcoefficients.hh:24
    \n-
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalinterpolation.hh:22
    \n+
    Linear Lagrange functions enriched with an element bubble function.
    Definition simplexp1bubble.hh:45
    \n+
    const LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition simplexp1bubble.hh:73
    \n+
    SimplexP1BubbleLocalBasis< D, R, dim > LocalBasisType
    Type of the local basis.
    Definition simplexp1bubble.hh:48
    \n+
    const LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition simplexp1bubble.hh:67
    \n+
    const LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition simplexp1bubble.hh:61
    \n+
    SimplexP1BubbleLocalCoefficients< dim > LocalCoefficientsType
    Type of the local coefficients.
    Definition simplexp1bubble.hh:51
    \n+
    static constexpr std::size_t size() noexcept
    Returns the number of shape functions in this finite-element.
    Definition simplexp1bubble.hh:79
    \n+
    SimplexP1BubbleLocalInterpolation< LocalBasisType > LocalInterpolationType
    Type of the local interpolation.
    Definition simplexp1bubble.hh:54
    \n+
    static constexpr GeometryType type() noexcept
    Returns the type of the geometry the finite-element is attached to.
    Definition simplexp1bubble.hh:85
    \n+
    P1 basis in dim-d enriched by an (order dim+1) element bubble function.
    Definition enriched/simplexp1bubble/localbasis.hh:35
    \n+
    static constexpr std::size_t size() noexcept
    Returns number of shape functions.
    Definition enriched/simplexp1bubble/localbasis.hh:55
    \n+
    The Local keys associated to the dim-d local basis functions.
    Definition enriched/simplexp1bubble/localcoefficients.hh:24
    \n+\n+\n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,137 +1,133 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas0prism.hh\n+ * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n+simplexp1bubble.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH\n+6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH\n 7\n 8#include \n 9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-25 template\n-_\b2_\b6 class _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 {\n-28\n-29 public:\n-30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-31 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-32 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-35\n-_\b3_\b7 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-38 {}\n-39\n-_\b4_\b5 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-46 basis(s),\n-47 interpolation(s)\n-48 {}\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+43 template\n+_\b4_\b4 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+45 {\n+46 public:\n+_\b4_\b8 using _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be = _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>;\n 49\n-_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-51 {\n-52 return basis;\n-53 }\n-54\n-_\b5_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-56 {\n-57 return coefficients;\n-58 }\n+_\b5_\b1 using _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be = _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b>;\n+52\n+_\b5_\b4 using _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be =\n+_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b>;\n+55\n+_\b5_\b7 using _\bT_\br_\ba_\bi_\bt_\bs =\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b,_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be_\b,_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be_\b>;\n+58\n 59\n-_\b6_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-61 {\n-62 return interpolation;\n-63 }\n-64\n-_\b6_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-67 {\n-68 return basis.size();\n-69 }\n-70\n-_\b7_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-72 {\n-73 return GeometryTypes::prism;\n-74 }\n-75\n-76 private:\n-77 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-78 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-79 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-80 };\n-81}\n-82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\b6_\b1 const _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+62 {\n+63 return basis_;\n+64 }\n+65\n+_\b6_\b7 const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+68 {\n+69 return coefficients_;\n+70 }\n+71\n+_\b7_\b3 const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+74 {\n+75 return interpolation_;\n+76 }\n+77\n+_\b7_\b9 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n+80 {\n+81 return _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bs_\bi_\bz_\be();\n+82 }\n+83\n+_\b8_\b5 static constexpr GeometryType _\bt_\by_\bp_\be () noexcept\n+86 {\n+87 return GeometryTypes::simplex(dim);\n+88 }\n+89\n+90 private:\n+91 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients_{};\n+92 [[no_unique_address]] _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be basis_{};\n+93 [[no_unique_address]] _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be interpolation_{};\n+94 };\n+95\n+96} // end namespace Dune\n+97\n+98#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_HH\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n traits helper struct\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Raviart-Thomas shape functions on prisms.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT0PrismLocalBasis< D, R >,\n-RT0PrismLocalCoefficients, RT0PrismLocalInterpolation< RT0PrismLocalBasis< D, R\n-> > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT0PrismLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT0PrismLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 32.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference prism.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on prisms.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference prism.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalinterpolation.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Linear Lagrange functions enriched with an element bubble function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const LocalInterpolationType & localInterpolation() const\n+Returns object that evaluates degrees of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+SimplexP1BubbleLocalBasis< D, R, dim > LocalBasisType\n+Type of the local basis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const LocalCoefficientsType & localCoefficients() const\n+Returns the assignment of the degrees of freedom to the element subentities.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const LocalBasisType & localBasis() const\n+Returns the local basis, i.e., the set of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+SimplexP1BubbleLocalCoefficients< dim > LocalCoefficientsType\n+Type of the local coefficients.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size() noexcept\n+Returns the number of shape functions in this finite-element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+SimplexP1BubbleLocalInterpolation< LocalBasisType > LocalInterpolationType\n+Type of the local interpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type() noexcept\n+Returns the type of the geometry the finite-element is attached to.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn simplexp1bubble.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+P1 basis in dim-d enriched by an (order dim+1) element bubble function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size() noexcept\n+Returns number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localbasis.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+The Local keys associated to the dim-d local basis functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b _\b>\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas12d.hh File Reference\n+dune-localfunctions: enriched.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,24 @@\n \n \n \n \n \n \n \n
    \n- \n-
    raviartthomas12d.hh File Reference
    \n+
    enriched.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "raviartthomas12d/raviartthomas12dlocalbasis.hh"
    \n-#include "raviartthomas12d/raviartthomas12dlocalcoefficients.hh"
    \n-#include "raviartthomas12d/raviartthomas12dlocalinterpolation.hh"
    \n+\n

    Go to the source code of this file.

    \n-\n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::RT12DLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on triangles. More...
     
    \n-\n-\n-\n-

    \n-Namespaces

    namespace  Dune
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,11 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas12d.hh File Reference\n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+enriched.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas12d.hh Source File\n+dune-localfunctions: enriched.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,32 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas12d.hh
    \n+
    enriched.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_ENRICHED_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+\n
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17
    \n-
    26 template<class D, class R>
    \n-
    \n-
    27 class
    \n-\n-
    29 {
    \n-
    30
    \n-
    31 public:
    \n-\n-\n-
    34
    \n-
    \n-\n-
    37 {}
    \n-
    \n-
    38
    \n-
    \n-\n-
    45 basis(s),
    \n-
    46 interpolation(s)
    \n-
    47 {}
    \n-
    \n-
    48
    \n-
    \n-
    49 const typename Traits::LocalBasisType& localBasis () const
    \n-
    50 {
    \n-
    51 return basis;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-\n-
    55 {
    \n-
    56 return coefficients;
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-\n-
    60 {
    \n-
    61 return interpolation;
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    \n-
    65 unsigned int size () const
    \n-
    66 {
    \n-
    67 return basis.size();
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    \n-
    70 static constexpr GeometryType type ()
    \n-
    71 {
    \n-
    72 return GeometryTypes::triangle;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-\n-
    77 RT12DLocalCoefficients coefficients;
    \n-\n-
    79 };
    \n-
    \n-
    80}
    \n-
    81
    \n-
    82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH
    \n-\n-\n-\n-
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    First order Raviart-Thomas shape functions on triangles.
    Definition raviartthomas12d.hh:29
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas12d.hh:65
    \n-
    LocalFiniteElementTraits< RT12DLocalBasis< D, R >, RT12DLocalCoefficients, RT12DLocalInterpolation< RT12DLocalBasis< D, R > > > Traits
    Definition raviartthomas12d.hh:33
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas12d.hh:49
    \n-
    RT12DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas12d.hh:44
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas12d.hh:54
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas12d.hh:70
    \n-
    RT12DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas12d.hh:36
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas12d.hh:59
    \n-
    First order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas12dlocalbasis.hh:28
    \n-
    Layout map for Raviart-Thomas-1 elements on the reference triangle.
    Definition raviartthomas12dlocalcoefficients.hh:23
    \n-
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas12dlocalinterpolation.hh:25
    \n+
    10#endif // DUNE_LOCALFUNCTIONS_ENRICHED_HH
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,137 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas12d.hh\n+enriched.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_HH\n+6#define DUNE_LOCALFUNCTIONS_ENRICHED_HH\n 7\n-8#include \n+8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n 9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17\n-26 template\n-_\b2_\b7 class\n-28 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-29 {\n-30\n-31 public:\n-32 typedef\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b3_\b6 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-37 {}\n-38\n-_\b4_\b4 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-45 basis(s),\n-46 interpolation(s)\n-47 {}\n-48\n-_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-50 {\n-51 return basis;\n-52 }\n-53\n-_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-55 {\n-56 return coefficients;\n-57 }\n-58\n-_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-60 {\n-61 return interpolation;\n-62 }\n-63\n-_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-66 {\n-67 return basis.size();\n-68 }\n-69\n-_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-71 {\n-72 return GeometryTypes::triangle;\n-73 }\n-74\n-75 private:\n-76 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-77 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-78 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-79 };\n-80}\n-81\n-82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Raviart-Thomas shape functions on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT12DLocalBasis< D, R >, RT12DLocalCoefficients,\n-RT12DLocalInterpolation< RT12DLocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT12DLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT12DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalinterpolation.hh:25\n+10#endif // DUNE_LOCALFUNCTIONS_ENRICHED_HH\n+_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0pyramid.hh File Reference\n+dune-localfunctions: edges0.5.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0pyramid.hh File Reference
    \n+
    edges0.5.hh File Reference
    \n
    \n
    \n \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::RT0PyramidLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on pyramids. 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...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0pyramid.hh File Reference\n+edges0.5.hh File Reference\n #include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Raviart-Thomas shape functions on pyramids. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n+\u00a0 FiniteElement for lowest order edge elements on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n+\u00a0 Factory for _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt objects. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0pyramid.hh Source File\n+dune-localfunctions: edges0.5.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,132 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas0pyramid.hh
    \n+
    edges0.5.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH
    \n-
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH
    \n+
    8
    \n+
    9#include <dune/geometry/type.hh>
    \n+
    10
    \n+\n+\n+\n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n-
    28
    \n-
    29 public:
    \n-\n-\n-\n-\n-
    34
    \n-\n-
    38
    \n-
    \n-\n-
    45 basis(s),
    \n-
    46 interpolation(s)
    \n-
    47 {}
    \n-
    \n-
    48
    \n-
    \n-
    49 const typename Traits::LocalBasisType& localBasis () const
    \n-
    50 {
    \n-
    51 return basis;
    \n-
    52 }
    \n+
    15namespace Dune {
    \n+
    16
    \n+
    18 //
    \n+
    19 // FiniteElement
    \n+
    20 //
    \n+
    21
    \n+
    23
    \n+
    41 template<class Geometry, class RF>
    \n+
    \n+\n+
    43 public:
    \n+\n
    53
    \n-
    \n-\n-
    55 {
    \n-
    56 return coefficients;
    \n-
    57 }
    \n-
    \n+
    54 private:
    \n+
    55 typename Traits::Basis basis_;
    \n+
    56 typename Traits::Interpolation interpolation_;
    \n+
    57 static const typename Traits::Coefficients& coefficients_;
    \n
    58
    \n-
    \n-\n-
    60 {
    \n-
    61 return interpolation;
    \n-
    62 }
    \n-
    \n-
    63
    \n+
    59 public:
    \n+
    61
    \n+
    64 template<class VertexOrder>
    \n
    \n-
    65 unsigned int size () const
    \n-
    66 {
    \n-
    67 return basis.size();
    \n-
    68 }
    \n+
    65 EdgeS0_5FiniteElement(const Geometry& geo,
    \n+
    66 const VertexOrder& vertexOrder) :
    \n+
    67 basis_(geo, vertexOrder), interpolation_(geo, vertexOrder)
    \n+
    68 { }
    \n
    \n
    69
    \n-
    \n-
    70 static constexpr GeometryType type ()
    \n-
    71 {
    \n-
    72 return GeometryTypes::pyramid;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-\n-
    77 RT0PyramidLocalCoefficients coefficients;
    \n-\n-
    79 };
    \n-
    \n-
    80}
    \n-
    81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH
    \n-\n-\n-\n+
    71 const typename Traits::Basis& basis() const { return basis_; }
    \n+
    \n+
    73 const typename Traits::Interpolation& interpolation() const
    \n+
    74 { return interpolation_; }
    \n+
    \n+
    \n+
    76 const typename Traits::Coefficients& coefficients() const
    \n+
    77 { return coefficients_; }
    \n+
    \n+
    79 static constexpr GeometryType type() { return GeometryTypes::simplex(Geometry::mydimension); }
    \n+
    80 };
    \n+
    \n+
    81
    \n+
    82 template<class Geometry, class RF>
    \n+\n+
    84 EdgeS0_5FiniteElement<Geometry, RF>::coefficients_ =
    \n+
    85 typename Traits::Coefficients();
    \n+
    86
    \n+
    88 //
    \n+
    89 // Factory
    \n+
    90 //
    \n+
    91
    \n+
    93
    \n+
    102 template<class Geometry, class RF>
    \n+
    \n+\n+\n+
    105
    \n+
    107
    \n+
    121 template<class VertexOrder>
    \n+
    \n+
    122 const FiniteElement make(const Geometry& geometry,
    \n+
    123 const VertexOrder& vertexOrder)
    \n+
    124 { return FiniteElement(geometry, vertexOrder); }
    \n+
    \n+
    125 };
    \n+
    \n+
    126
    \n+
    127} // namespace Dune
    \n+
    128
    \n+
    129#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    First order Raviart-Thomas shape functions on pyramids.
    Definition raviartthomas0pyramid.hh:27
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas0pyramid.hh:54
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas0pyramid.hh:65
    \n-
    static constexpr GeometryType type()
    Definition raviartthomas0pyramid.hh:70
    \n-
    RT0PyramidLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0pyramid.hh:44
    \n-
    LocalFiniteElementTraits< RT0PyramidLocalBasis< D, R >, RT0PyramidLocalCoefficients, RT0PyramidLocalInterpolation< RT0PyramidLocalBasis< D, R > > > Traits
    Definition raviartthomas0pyramid.hh:33
    \n-
    RT0PyramidLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas0pyramid.hh:36
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas0pyramid.hh:49
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas0pyramid.hh:59
    \n-
    First order Raviart-Thomas shape functions on the reference pyramid.
    Definition raviartthomas0pyramidlocalbasis.hh:28
    \n-
    Layout map for Raviart-Thomas-1 elements on pyramids.
    Definition raviartthomas0pyramidlocalcoefficients.hh:24
    \n-
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0pyramidlocalinterpolation.hh:22
    \n+
    FiniteElement for lowest order edge elements on simplices.
    Definition edges0.5.hh:42
    \n+
    EdgeS0_5FiniteElement(const Geometry &geo, const VertexOrder &vertexOrder)
    Constructor.
    Definition edges0.5.hh:65
    \n+
    static constexpr GeometryType type()
    return geometry type of this element
    Definition edges0.5.hh:79
    \n+
    const Traits::Basis & basis() const
    return reference to the basis object
    Definition edges0.5.hh:71
    \n+
    const Traits::Interpolation & interpolation() const
    return reference to the interpolation object
    Definition edges0.5.hh:73
    \n+
    const Traits::Coefficients & coefficients() const
    return reference to the coefficients object
    Definition edges0.5.hh:76
    \n+
    Definition edges0.5.hh:47
    \n+
    EdgeS0_5Coefficients< Geometry::mydimension > Coefficients
    Definition edges0.5.hh:51
    \n+
    EdgeS0_5Interpolation< Geometry, typename Basis::Traits > Interpolation
    Definition edges0.5.hh:50
    \n+
    EdgeS0_5Basis< Geometry, RF > Basis
    Definition edges0.5.hh:48
    \n+
    Factory for EdgeS0_5FiniteElement objects.
    Definition edges0.5.hh:103
    \n+
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct the factory
    Definition edges0.5.hh:122
    \n+
    EdgeS0_5FiniteElement< Geometry, RF > FiniteElement
    Definition edges0.5.hh:104
    \n+
    Basis for order 0.5 (lowest order) edge elements on simplices.
    Definition whitney/edges0.5/basis.hh:38
    \n+
    export type traits for function signature
    Definition whitney/edges0.5/basis.hh:41
    \n+
    Coefficients for lowest order edge elements on simplices.
    Definition whitney/edges0.5/coefficients.hh:31
    \n+
    Interpolation for lowest order edge elements on simplices.
    Definition whitney/edges0.5/interpolation.hh:33
    \n+\n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,136 +1,151 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n-raviartthomas0pyramid.hh\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+edges0.5.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH\n-7\n-8#include \n-9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH\n+7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH\n+8\n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-25 template\n-_\b2_\b6 class _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 {\n-28\n-29 public:\n-30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-31 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-32 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b3_\b6 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-37 {}\n-38\n-_\b4_\b4 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-45 basis(s),\n-46 interpolation(s)\n-47 {}\n-48\n-_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-50 {\n-51 return basis;\n-52 }\n+15namespace _\bD_\bu_\bn_\be {\n+16\n+18 //\n+19 // FiniteElement\n+20 //\n+21\n+23\n+41 template\n+_\b4_\b2 class _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n+43 public:\n+_\b4_\b7 struct _\bT_\br_\ba_\bi_\bt_\bs {\n+_\b4_\b8 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b> _\bB_\ba_\bs_\bi_\bs;\n+49 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+_\b5_\b1 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+52 };\n 53\n-_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-55 {\n-56 return coefficients;\n-57 }\n+54 private:\n+55 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n+56 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n+57 static const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& coefficients_;\n 58\n-_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-60 {\n-61 return interpolation;\n-62 }\n-63\n-_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-66 {\n-67 return basis.size();\n-68 }\n+59 public:\n+61\n+64 template\n+_\b6_\b5 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry& geo,\n+66 const VertexOrder& vertexOrder) :\n+67 basis_(geo, vertexOrder), interpolation_(geo, vertexOrder)\n+68 { }\n 69\n-_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-71 {\n-72 return GeometryTypes::pyramid;\n-73 }\n-74\n-75 private:\n-76 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-77 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-78 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-79 };\n-80}\n-81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\b7_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\n+_\b7_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n+74 { return interpolation_; }\n+_\b7_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n+77 { return coefficients_; }\n+_\b7_\b9 static constexpr GeometryType _\bt_\by_\bp_\be() { return GeometryTypes::simplex\n+(Geometry::mydimension); }\n+80 };\n+81\n+82 template\n+83 const typename _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs&\n+84 EdgeS0_5FiniteElement::coefficients_ =\n+85 typename Traits::Coefficients();\n+86\n+88 //\n+89 // Factory\n+90 //\n+91\n+93\n+102 template\n+_\b1_\b0_\b3 struct _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+_\b1_\b0_\b4 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+105\n+107\n+121 template\n+_\b1_\b2_\b2 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n+123 const VertexOrder& vertexOrder)\n+124 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n+125 };\n+126\n+127} // namespace Dune\n+128\n+129#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Raviart-Thomas shape functions on pyramids.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+FiniteElement for lowest order edge elements on simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+EdgeS0_5FiniteElement(const Geometry &geo, const VertexOrder &vertexOrder)\n+Constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT0PyramidLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 32.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RT0PyramidLocalBasis< D, R >,\n-RT0PyramidLocalCoefficients, RT0PyramidLocalInterpolation<\n-RT0PyramidLocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RT0PyramidLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Raviart-Thomas shape functions on the reference pyramid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Raviart-Thomas-1 elements on pyramids.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Raviart-Thomas shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalinterpolation.hh:22\n+return geometry type of this element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n+const Traits::Basis & basis() const\n+return reference to the basis object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::Interpolation & interpolation() const\n+return reference to the interpolation object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::Coefficients & coefficients() const\n+return reference to the coefficients object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:76\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+EdgeS0_5Coefficients< Geometry::mydimension > Coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+EdgeS0_5Interpolation< Geometry, typename Basis::Traits > Interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+EdgeS0_5Basis< Geometry, RF > Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for EdgeS0_5FiniteElement objects.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:103\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n+const FiniteElement make(const Geometry &geometry, const VertexOrder\n+&vertexOrder)\n+construct the factory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+EdgeS0_5FiniteElement< Geometry, RF > FiniteElement\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:104\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs\n+Basis for order 0.5 (lowest order) edge elements on simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Coefficients for lowest order edge elements on simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Interpolation for lowest order edge elements on simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:33\n+_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0cube3dall.hh File Reference\n+dune-localfunctions: common.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,35 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0cube3dall.hh File Reference
    \n+
    common.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n-#include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/geometry/dimension.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/type.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RT0Cube3DLocalBasis< D, R >
     
    class  Dune::RT0Cube3DLocalInterpolation< LB >
     
    class  Dune::RT0Cube3DLocalCoefficients
    struct  Dune::EdgeS0_5Common< dim, DF >
     Common base class for edge elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+ * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0cube3dall.hh File Reference\n+common.hh File Reference\n #include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b<_\b _\bd_\bi_\bm_\b,_\b _\bD_\bF_\b _\b>\n+\u00a0 Common base class for edge elements. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas0cube3dall.hh Source File\n+dune-localfunctions: common.hh Source File\n \n \n \n \n \n \n \n@@ -70,278 +70,60 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas0cube3dall.hh
    \n+
    common.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH
    \n-
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <numeric>
    \n-
    10#include <vector>
    \n-
    11
    \n-
    12#include <dune/common/fmatrix.hh>
    \n-
    13
    \n-\n-\n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
    \n+
    8
    \n+
    9#include <cstddef>
    \n+
    10
    \n+
    11#include <dune/geometry/dimension.hh>
    \n+
    12#include <dune/geometry/referenceelements.hh>
    \n+
    13#include <dune/geometry/type.hh>
    \n+
    14
    \n+
    15namespace Dune {
    \n
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    28 template<class D, class R>
    \n-
    \n-\n-
    30 {
    \n-
    31 public:
    \n-
    32 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n-
    33 Dune::FieldMatrix<R,3,3> > Traits;
    \n+
    22 template<std::size_t dim, class DF = double>
    \n+
    \n+\n+
    25 using RefElem =
    \n+
    26 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim),
    \n+
    27 Dim<dim>{}));
    \n+
    28
    \n+
    30 RefElem refelem = referenceElement(DF{}, GeometryTypes::simplex(dim),
    \n+
    31 Dim<dim>{});
    \n+
    32
    \n
    34
    \n-
    \n-
    36 RT0Cube3DLocalBasis (unsigned int s = 0)
    \n-
    37 {
    \n-
    38 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n-
    39 if (s&1) sign0 = -1.0;
    \n-
    40 if (s&2) sign1 = -1.0;
    \n-
    41 if (s&4) sign2 = -1.0;
    \n-
    42 if (s&8) sign3 = -1.0;
    \n-
    43 if (s&16) sign4 = -1.0;
    \n-
    44 if (s&32) sign5 = -1.0;
    \n-
    45 }
    \n+
    38 std::size_t s = refelem.size(dim-1);
    \n+
    39 };
    \n
    \n-
    46
    \n-
    \n-
    48 unsigned int size () const
    \n-
    49 {
    \n-
    50 return 6;
    \n-
    51 }
    \n-
    \n-
    52
    \n-
    \n-
    54 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    55 std::vector<typename Traits::RangeType>& out) const
    \n-
    56 {
    \n-
    57 out.resize(6);
    \n-
    58 out[0][0] = sign0*(in[0]-1.0); out[0][1]=0.0; out[0][2]=0.0;
    \n-
    59 out[1][0] = sign1*(in[0]); out[1][1]=0.0; out[1][2]=0.0;
    \n-
    60 out[2][0] = 0.0; out[2][1]=sign2*(in[1]-1.0); out[2][2]=0.0;
    \n-
    61 out[3][0] = 0.0; out[3][1]=sign3*(in[1]); out[3][2]=0.0;
    \n-
    62 out[4][0] = 0.0; out[4][1]=0.0; out[4][2]=sign4*(in[2]-1.0);
    \n-
    63 out[5][0] = 0.0; out[5][1]=0.0; out[5][2]=sign5*(in[2]);
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    67 inline void
    \n-
    \n-
    68 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    69 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    70 {
    \n-
    71 out.resize(6);
    \n-
    72 out[0][0][0] = sign0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    73 out[0][1][0] = 0; out[0][1][1] = 0; out[0][1][2] = 0;
    \n-
    74 out[0][2][0] = 0; out[0][2][1] = 0; out[0][2][2] = 0;
    \n-
    75
    \n-
    76 out[1][0][0] = sign1; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    77 out[1][1][0] = 0; out[1][1][1] = 0; out[1][1][2] = 0;
    \n-
    78 out[1][2][0] = 0; out[1][2][1] = 0; out[1][2][2] = 0;
    \n-
    79
    \n-
    80 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    81 out[2][1][0] = 0; out[2][1][1] = sign2; out[2][1][2] = 0;
    \n-
    82 out[2][2][0] = 0; out[2][2][1] = 0; out[2][2][2] = 0;
    \n-
    83
    \n-
    84 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;
    \n-
    85 out[3][1][0] = 0; out[3][1][1] = sign3; out[3][1][2] = 0;
    \n-
    86 out[3][2][0] = 0; out[3][2][1] = 0; out[3][2][2] = 0;
    \n-
    87
    \n-
    88 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    89 out[4][1][0] = 0; out[4][1][1] = 0; out[4][1][2] = 0;
    \n-
    90 out[4][2][0] = 0; out[4][2][1] = 0; out[4][2][2] = sign4;
    \n-
    91
    \n-
    92 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    93 out[5][1][0] = 0; out[5][1][1] = 0; out[5][1][2] = 0;
    \n-
    94 out[5][2][0] = 0; out[5][2][1] = 0; out[5][2][2] = sign5;
    \n-
    95 }
    \n-
    \n-
    96
    \n-
    \n-
    98 void partial (const std::array<unsigned int, 3>& order,
    \n-
    99 const typename Traits::DomainType& in, // position
    \n-
    100 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    101 {
    \n-
    102 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    103 if (totalOrder == 0) {
    \n-
    104 evaluateFunction(in, out);
    \n-
    105 } else if (totalOrder == 1) {
    \n-
    106 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    107 out.resize(size());
    \n-
    108
    \n-
    109 for (std::size_t i = 0; i < size(); ++i)
    \n-
    110 out[i][0] = out[i][1] = out[i][2] = 0;
    \n-
    111
    \n-
    112 switch (direction) {
    \n-
    113 case 0:
    \n-
    114 out[0][0] = sign0;
    \n-
    115 out[1][0] = sign1;
    \n-
    116 break;
    \n-
    117 case 1:
    \n-
    118 out[2][1] = sign2;
    \n-
    119 out[3][1] = sign3;
    \n-
    120 break;
    \n-
    121 case 2:
    \n-
    122 out[4][2] = sign4;
    \n-
    123 out[5][2] = sign5;
    \n-
    124 break;
    \n-
    125 default:
    \n-
    126 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    127 }
    \n-
    128 } else {
    \n-
    129 out.resize(size());
    \n-
    130 for (std::size_t i = 0; i < size(); ++i)
    \n-
    131 for (std::size_t j = 0; j < 2; ++j)
    \n-
    132 out[i][j] = 0;
    \n-
    133 }
    \n-
    134
    \n-
    135 }
    \n-
    \n-
    136
    \n-
    \n-
    138 unsigned int order () const
    \n-
    139 {
    \n-
    140 return 1;
    \n-
    141 }
    \n-
    \n-
    142
    \n-
    143 private:
    \n-
    144 R sign0, sign1, sign2, sign3, sign4, sign5;
    \n-
    145 };
    \n-
    \n-
    146
    \n-
    147
    \n-
    156 template<class LB>
    \n-
    \n-\n-
    158 {
    \n-
    159 public:
    \n-
    160
    \n-
    \n-
    162 RT0Cube3DLocalInterpolation (unsigned int s = 0)
    \n-
    163 {
    \n-
    164 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n-
    165 if (s&1) sign0 *= -1.0;
    \n-
    166 if (s&2) sign1 *= -1.0;
    \n-
    167 if (s&4) sign2 *= -1.0;
    \n-
    168 if (s&8) sign3 *= -1.0;
    \n-
    169 if (s&16) sign4 *= -1.0;
    \n-
    170 if (s&32) sign5 *= -1.0;
    \n-
    171
    \n-
    172 m0[0] = 0.0; m0[1] = 0.5; m0[2] = 0.5;
    \n-
    173 m1[0] = 1.0; m1[1] = 0.5; m1[2] = 0.5;
    \n-
    174 m2[0] = 0.5; m2[1] = 0.0; m2[2] = 0.5;
    \n-
    175 m3[0] = 0.5; m3[1] = 1.0; m3[2] = 0.5;
    \n-
    176 m4[0] = 0.5; m4[1] = 0.5; m4[2] = 0.0;
    \n-
    177 m5[0] = 0.5; m5[1] = 0.5; m5[2] = 1.0;
    \n-
    178
    \n-
    179 n0[0] = -1.0; n0[1] = 0.0; n0[2] = 0.0;
    \n-
    180 n1[0] = 1.0; n1[1] = 0.0; n1[2] = 0.0;
    \n-
    181 n2[0] = 0.0; n2[1] = -1.0; n2[2] = 0.0;
    \n-
    182 n3[0] = 0.0; n3[1] = 1.0; n3[2] = 0.0;
    \n-
    183 n4[0] = 0.0; n4[1] = 0.0; n4[2] =-1.0;
    \n-
    184 n5[0] = 0.0; n5[1] = 0.0; n5[2] = 1.0;
    \n-
    185 }
    \n-
    \n-
    186
    \n-
    187 template<typename F, typename C>
    \n-
    \n-
    188 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    189 {
    \n-
    190 // f gives v*outer normal at a point on the edge!
    \n-
    191
    \n-
    192 out.resize(6);
    \n-
    193
    \n-
    194 auto y = f(m0); out[0] = (y[0]*n0[0]+y[1]*n0[1]+y[2]*n0[2])*sign0;
    \n-
    195 y = f(m1); out[1] = (y[0]*n1[0]+y[1]*n1[1]+y[2]*n1[2])*sign1;
    \n-
    196 y = f(m2); out[2] = (y[0]*n2[0]+y[1]*n2[1]+y[2]*n2[2])*sign2;
    \n-
    197 y = f(m3); out[3] = (y[0]*n3[0]+y[1]*n3[1]+y[2]*n3[2])*sign3;
    \n-
    198 y = f(m4); out[4] = (y[0]*n4[0]+y[1]*n4[1]+y[2]*n4[2])*sign4;
    \n-
    199 y = f(m5); out[5] = (y[0]*n5[0]+y[1]*n5[1]+y[2]*n5[2])*sign5;
    \n-
    200 }
    \n-
    \n-
    201
    \n-
    202 private:
    \n-
    203 typename LB::Traits::RangeFieldType sign0,sign1,sign2,sign3,sign4,sign5;
    \n-
    204 typename LB::Traits::DomainType m0,m1,m2,m3,m4,m5;
    \n-
    205 typename LB::Traits::DomainType n0,n1,n2,n3,n4,n5;
    \n-
    206 };
    \n-
    \n-
    207
    \n-
    \n-\n-
    216 {
    \n-
    217 public:
    \n-
    \n-\n-
    220 {
    \n-
    221 for (std::size_t i=0; i<6; i++)
    \n-
    222 li[i] = LocalKey(i,1,0);
    \n-
    223 }
    \n-
    \n-
    224
    \n-
    \n-
    226 std::size_t size () const
    \n-
    227 {
    \n-
    228 return 6;
    \n-
    229 }
    \n-
    \n-
    230
    \n-
    \n-
    232 const LocalKey& localKey (std::size_t i) const
    \n-
    233 {
    \n-
    234 return li[i];
    \n-
    235 }
    \n-
    \n-
    236
    \n-
    237 private:
    \n-
    238 std::vector<LocalKey> li;
    \n-
    239 };
    \n-
    \n-
    240
    \n-
    241}
    \n-
    242#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH
    \n-\n+
    40
    \n+
    41} // namespace Dune
    \n+
    42
    \n+
    43#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Definition raviartthomas0cube3dall.hh:30
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas0cube3dall.hh:48
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas0cube3dall.hh:68
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas0cube3dall.hh:138
    \n-
    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 raviartthomas0cube3dall.hh:98
    \n-
    RT0Cube3DLocalBasis(unsigned int s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas0cube3dall.hh:36
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas0cube3dall.hh:33
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas0cube3dall.hh:54
    \n-
    Definition raviartthomas0cube3dall.hh:158
    \n-
    RT0Cube3DLocalInterpolation(unsigned int s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas0cube3dall.hh:162
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Definition raviartthomas0cube3dall.hh:188
    \n-
    Definition raviartthomas0cube3dall.hh:216
    \n-
    RT0Cube3DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0cube3dall.hh:219
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0cube3dall.hh:226
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0cube3dall.hh:232
    \n-\n+
    Common base class for edge elements.
    Definition common.hh:23
    \n+
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:30
    \n+
    decltype(referenceElement(DF{}, GeometryTypes::simplex(dim), Dim< dim >{})) RefElem
    The type of the referenceElement.
    Definition common.hh:27
    \n+
    std::size_t s
    The number of base functions.
    Definition common.hh:38
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,293 +1,63 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n- * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd\n-raviartthomas0cube3dall.hh\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+ * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n+common.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH\n-6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH\n-7\n-8#include \n-9#include \n-10#include \n-11\n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH\n+7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH\n+8\n+9#include \n+10\n+11#include \n+12#include \n+13#include \n+14\n+15namespace _\bD_\bu_\bn_\be {\n 16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-28 template\n-_\b2_\b9 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-30 {\n-31 public:\n-32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n-FieldVector,\n-_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+22 template\n+_\b2_\b3 struct _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn {\n+_\b2_\b5 using _\bR_\be_\bf_\bE_\bl_\be_\bm =\n+26 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim),\n+27 Dim{}));\n+28\n+_\b3_\b0 _\bR_\be_\bf_\bE_\bl_\be_\bm _\br_\be_\bf_\be_\bl_\be_\bm = referenceElement(DF{}, GeometryTypes::simplex(dim),\n+31 Dim{});\n+32\n 34\n-_\b3_\b6 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int s = 0)\n-37 {\n-38 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n-39 if (s&1) sign0 = -1.0;\n-40 if (s&2) sign1 = -1.0;\n-41 if (s&4) sign2 = -1.0;\n-42 if (s&8) sign3 = -1.0;\n-43 if (s&16) sign4 = -1.0;\n-44 if (s&32) sign5 = -1.0;\n-45 }\n-46\n-_\b4_\b8 unsigned int _\bs_\bi_\bz_\be () const\n-49 {\n-50 return 6;\n-51 }\n-52\n-_\b5_\b4 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-55 std::vector& out) const\n-56 {\n-57 out.resize(6);\n-58 out[0][0] = sign0*(in[0]-1.0); out[0][1]=0.0; out[0][2]=0.0;\n-59 out[1][0] = sign1*(in[0]); out[1][1]=0.0; out[1][2]=0.0;\n-60 out[2][0] = 0.0; out[2][1]=sign2*(in[1]-1.0); out[2][2]=0.0;\n-61 out[3][0] = 0.0; out[3][1]=sign3*(in[1]); out[3][2]=0.0;\n-62 out[4][0] = 0.0; out[4][1]=0.0; out[4][2]=sign4*(in[2]-1.0);\n-63 out[5][0] = 0.0; out[5][1]=0.0; out[5][2]=sign5*(in[2]);\n-64 }\n-65\n-67 inline void\n-_\b6_\b8 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-69 std::vector& out) const // return value\n-70 {\n-71 out.resize(6);\n-72 out[0][0][0] = sign0; out[0][0][1] = 0; out[0][0][2] = 0;\n-73 out[0][1][0] = 0; out[0][1][1] = 0; out[0][1][2] = 0;\n-74 out[0][2][0] = 0; out[0][2][1] = 0; out[0][2][2] = 0;\n-75\n-76 out[1][0][0] = sign1; out[1][0][1] = 0; out[1][0][2] = 0;\n-77 out[1][1][0] = 0; out[1][1][1] = 0; out[1][1][2] = 0;\n-78 out[1][2][0] = 0; out[1][2][1] = 0; out[1][2][2] = 0;\n-79\n-80 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-81 out[2][1][0] = 0; out[2][1][1] = sign2; out[2][1][2] = 0;\n-82 out[2][2][0] = 0; out[2][2][1] = 0; out[2][2][2] = 0;\n-83\n-84 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;\n-85 out[3][1][0] = 0; out[3][1][1] = sign3; out[3][1][2] = 0;\n-86 out[3][2][0] = 0; out[3][2][1] = 0; out[3][2][2] = 0;\n-87\n-88 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n-89 out[4][1][0] = 0; out[4][1][1] = 0; out[4][1][2] = 0;\n-90 out[4][2][0] = 0; out[4][2][1] = 0; out[4][2][2] = sign4;\n-91\n-92 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-93 out[5][1][0] = 0; out[5][1][1] = 0; out[5][1][2] = 0;\n-94 out[5][2][0] = 0; out[5][2][1] = 0; out[5][2][2] = sign5;\n-95 }\n-96\n-_\b9_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-99 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-100 std::vector& out) const // return value\n-101 {\n-102 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-103 if (totalOrder == 0) {\n-104 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-105 } else if (totalOrder == 1) {\n-106 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-107 out.resize(_\bs_\bi_\bz_\be());\n-108\n-109 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-110 out[i][0] = out[i][1] = out[i][2] = 0;\n-111\n-112 switch (direction) {\n-113 case 0:\n-114 out[0][0] = sign0;\n-115 out[1][0] = sign1;\n-116 break;\n-117 case 1:\n-118 out[2][1] = sign2;\n-119 out[3][1] = sign3;\n-120 break;\n-121 case 2:\n-122 out[4][2] = sign4;\n-123 out[5][2] = sign5;\n-124 break;\n-125 default:\n-126 DUNE_THROW(RangeError, \"Component out of range.\");\n-127 }\n-128 } else {\n-129 out.resize(_\bs_\bi_\bz_\be());\n-130 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-131 for (std::size_t j = 0; j < 2; ++j)\n-132 out[i][j] = 0;\n-133 }\n-134\n-135 }\n-136\n-_\b1_\b3_\b8 unsigned int _\bo_\br_\bd_\be_\br () const\n-139 {\n-140 return 1;\n-141 }\n-142\n-143 private:\n-144 R sign0, sign1, sign2, sign3, sign4, sign5;\n-145 };\n-146\n-147\n-156 template\n-_\b1_\b5_\b7 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-158 {\n-159 public:\n-160\n-_\b1_\b6_\b2 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (unsigned int s = 0)\n-163 {\n-164 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n-165 if (s&1) sign0 *= -1.0;\n-166 if (s&2) sign1 *= -1.0;\n-167 if (s&4) sign2 *= -1.0;\n-168 if (s&8) sign3 *= -1.0;\n-169 if (s&16) sign4 *= -1.0;\n-170 if (s&32) sign5 *= -1.0;\n-171\n-172 m0[0] = 0.0; m0[1] = 0.5; m0[2] = 0.5;\n-173 m1[0] = 1.0; m1[1] = 0.5; m1[2] = 0.5;\n-174 m2[0] = 0.5; m2[1] = 0.0; m2[2] = 0.5;\n-175 m3[0] = 0.5; m3[1] = 1.0; m3[2] = 0.5;\n-176 m4[0] = 0.5; m4[1] = 0.5; m4[2] = 0.0;\n-177 m5[0] = 0.5; m5[1] = 0.5; m5[2] = 1.0;\n-178\n-179 n0[0] = -1.0; n0[1] = 0.0; n0[2] = 0.0;\n-180 n1[0] = 1.0; n1[1] = 0.0; n1[2] = 0.0;\n-181 n2[0] = 0.0; n2[1] = -1.0; n2[2] = 0.0;\n-182 n3[0] = 0.0; n3[1] = 1.0; n3[2] = 0.0;\n-183 n4[0] = 0.0; n4[1] = 0.0; n4[2] =-1.0;\n-184 n5[0] = 0.0; n5[1] = 0.0; n5[2] = 1.0;\n-185 }\n-186\n-187 template\n-_\b1_\b8_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-189 {\n-190 // f gives v*outer normal at a point on the edge!\n-191\n-192 out.resize(6);\n-193\n-194 auto y = f(m0); out[0] = (y[0]*n0[0]+y[1]*n0[1]+y[2]*n0[2])*sign0;\n-195 y = f(m1); out[1] = (y[0]*n1[0]+y[1]*n1[1]+y[2]*n1[2])*sign1;\n-196 y = f(m2); out[2] = (y[0]*n2[0]+y[1]*n2[1]+y[2]*n2[2])*sign2;\n-197 y = f(m3); out[3] = (y[0]*n3[0]+y[1]*n3[1]+y[2]*n3[2])*sign3;\n-198 y = f(m4); out[4] = (y[0]*n4[0]+y[1]*n4[1]+y[2]*n4[2])*sign4;\n-199 y = f(m5); out[5] = (y[0]*n5[0]+y[1]*n5[1]+y[2]*n5[2])*sign5;\n-200 }\n-201\n-202 private:\n-203 typename LB::Traits::RangeFieldType sign0,sign1,sign2,sign3,sign4,sign5;\n-204 typename LB::Traits::DomainType m0,m1,m2,m3,m4,m5;\n-205 typename LB::Traits::DomainType n0,n1,n2,n3,n4,n5;\n-206 };\n-207\n-_\b2_\b1_\b5 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-216 {\n-217 public:\n-_\b2_\b1_\b9 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(6)\n-220 {\n-221 for (std::size_t i=0; i<6; i++)\n-222 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-223 }\n-224\n-_\b2_\b2_\b6 std::size_t _\bs_\bi_\bz_\be () const\n-227 {\n-228 return 6;\n-229 }\n-230\n-_\b2_\b3_\b2 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-233 {\n-234 return li[i];\n-235 }\n-236\n-237 private:\n-238 std::vector li;\n-239 };\n-240\n-241}\n-242#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\b3_\b8 std::size_t _\bs = _\br_\be_\bf_\be_\bl_\be_\bm.size(dim-1);\n+39 };\n+40\n+41} // namespace Dune\n+42\n+43#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:98\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RT0Cube3DLocalBasis(unsigned int s=0)\n-Make set number s, where 0 <= s < 64.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n-3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:158\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RT0Cube3DLocalInterpolation(unsigned int s=0)\n-Make set number s, where 0 <= s < 64.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:162\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:188\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RT0Cube3DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:219\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:226\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:232\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n+Common base class for edge elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm\n+RefElem refelem\n+The reference element for this edge element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bR_\be_\bf_\bE_\bl_\be_\bm\n+decltype(referenceElement(DF{}, GeometryTypes::simplex(dim), Dim< dim >{}))\n+RefElem\n+The type of the referenceElement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs\n+std::size_t s\n+The number of base functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:38\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: enriched.hh File Reference\n+dune-localfunctions: raviartthomas1cube3dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,24 +65,40 @@\n
    \n \n \n \n \n \n \n
    \n-
    enriched.hh File Reference
    \n+ \n+
    raviartthomas1cube3dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/enriched/simplexp1bubble.hh>
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n+\n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::RT1Cube3DLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference hexahedron. More...
     
    \n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,11 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-enriched.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+raviartthomas1cube3dlocalinterpolation.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference hexahedron.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: enriched.hh Source File\n+dune-localfunctions: raviartthomas1cube3dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,32 +70,154 @@\n
    \n \n \n \n \n \n \n
    \n-
    enriched.hh
    \n+
    raviartthomas1cube3dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_ENRICHED_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \n
    7
    \n-\n+
    8#include <vector>
    \n
    9
    \n-
    10#endif // DUNE_LOCALFUNCTIONS_ENRICHED_HH
    \n-\n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    22 template<class LB>
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    27
    \n+
    \n+
    33 RT1Cube3DLocalInterpolation (std::bitset<6> s = 0)
    \n+
    34 {
    \n+
    35 for (size_t i=0; i<6; i++)
    \n+
    36 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    37
    \n+
    38 n_[0] = {-1.0, 0.0, 0.0};
    \n+
    39 n_[1] = { 1.0, 0.0, 0.0};
    \n+
    40 n_[2] = { 0.0, -1.0, 0.0};
    \n+
    41 n_[3] = { 0.0, 1.0, 0.0};
    \n+
    42 n_[4] = { 0.0, 0.0, -1.0};
    \n+
    43 n_[5] = { 0.0, 0.0, 1.0};
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    54 template<class F, class C>
    \n+
    \n+
    55 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    56 {
    \n+
    57 // f gives v*outer normal at a point on the edge!
    \n+
    58 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    59 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    60
    \n+
    61 out.resize(36);
    \n+
    62 fill(out.begin(), out.end(), 0.0);
    \n+
    63
    \n+
    64 const int qOrder = 3;
    \n+
    65 const auto& rule1 = QuadratureRules<Scalar,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    66
    \n+
    67 for (auto&& qp : rule1)
    \n+
    68 {
    \n+
    69 Dune::FieldVector<Scalar,2> qPos = qp.position();
    \n+
    70 typename LB::Traits::DomainType localPos;
    \n+
    71
    \n+
    72 localPos = {0.0, qPos[0], qPos[1]};
    \n+
    73 auto y = f(localPos);
    \n+
    74 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*qp.weight()*sign_[0];
    \n+
    75 out[6] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[0] - 1.0)*qp.weight();
    \n+
    76 out[12] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n+
    77 out[18] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[0] - 1.0)*(2.0*qPos[1] - 1.0)*qp.weight();
    \n+
    78
    \n+
    79 localPos = {1.0, qPos[0], qPos[1]};
    \n+
    80 y = f(localPos);
    \n+
    81 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*qp.weight()*sign_[1];
    \n+
    82 out[7] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos[0])*qp.weight();
    \n+
    83 out[13] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos[1])*qp.weight();
    \n+
    84 out[19] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos[0])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n+
    85
    \n+
    86 localPos = {qPos[0], 0.0, qPos[1]};
    \n+
    87 y = f(localPos);
    \n+
    88 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*qp.weight()*sign_[2];
    \n+
    89 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(1.0 - 2.0*qPos[0])*qp.weight();
    \n+
    90 out[14] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n+
    91 out[20] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(1.0 - 2.0*qPos[0])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n+
    92
    \n+
    93 localPos = {qPos[0], 1.0, qPos[1]};
    \n+
    94 y = f(localPos);
    \n+
    95 out[3] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*qp.weight()*sign_[3];
    \n+
    96 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(2.0*qPos[0] - 1.0)*qp.weight();
    \n+
    97 out[15] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(1.0 - 2.0*qPos[1])*qp.weight();
    \n+
    98 out[21] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(2.0*qPos[0] - 1.0)*(2.0*qPos[1] - 1.0)*qp.weight();
    \n+
    99
    \n+
    100 localPos = {qPos[0], qPos[1], 0.0};
    \n+
    101 y = f(localPos);
    \n+
    102 out[4] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*qp.weight()*sign_[4];
    \n+
    103 out[10] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos[0])*qp.weight();
    \n+
    104 out[16] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos[1])*qp.weight();
    \n+
    105 out[22] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos[0])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n+
    106
    \n+
    107 localPos = {qPos[0], qPos[1], 1.0};
    \n+
    108 y = f(localPos);
    \n+
    109 out[5] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*qp.weight()*sign_[5];
    \n+
    110 out[11] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[0] - 1.0)*qp.weight();
    \n+
    111 out[17] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[1] - 1.0)*qp.weight();
    \n+
    112 out[23] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[0] - 1.0)*(2.0*qPos[1] - 1.0)*qp.weight();
    \n+
    113 }
    \n+
    114
    \n+
    115 const auto& rule2 = QuadratureRules<Vector,3>::rule(GeometryTypes::cube(3), qOrder);
    \n+
    116 for (auto&& qp : rule2)
    \n+
    117 {
    \n+
    118 FieldVector<double,3> qPos = qp.position();
    \n+
    119
    \n+
    120 auto y = f(qPos);
    \n+
    121 out[24] += y[0]*qp.weight();
    \n+
    122 out[25] += y[1]*qp.weight();
    \n+
    123 out[26] += y[2]*qp.weight();
    \n+
    124 out[27] += y[0]*qPos[1]*qp.weight();
    \n+
    125 out[28] += y[0]*qPos[2]*qp.weight();
    \n+
    126 out[29] += y[1]*qPos[0]*qp.weight();
    \n+
    127 out[30] += y[1]*qPos[2]*qp.weight();
    \n+
    128 out[31] += y[2]*qPos[0]*qp.weight();
    \n+
    129 out[32] += y[2]*qPos[1]*qp.weight();
    \n+
    130 out[33] += y[0]*qPos[1]*qPos[2]*qp.weight();
    \n+
    131 out[34] += y[1]*qPos[0]*qPos[2]*qp.weight();
    \n+
    132 out[35] += y[2]*qPos[0]*qPos[1]*qp.weight();
    \n+
    133 }
    \n+
    134 }
    \n+
    \n+
    135
    \n+
    136 private:
    \n+
    137 // Facet orientations
    \n+
    138 std::array<typename LB::Traits::RangeFieldType, 6> sign_;
    \n+
    139
    \n+
    140 // Facet normals
    \n+
    141 std::array<typename LB::Traits::DomainType, 6> n_;
    \n+
    142 };
    \n+
    \n+
    143}
    \n+
    144#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \n+
    Definition bdfmcube.hh:18
    \n+
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalinterpolation.hh:24
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas1cube3dlocalinterpolation.hh:55
    \n+
    RT1Cube3DLocalInterpolation(std::bitset< 6 > s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas1cube3dlocalinterpolation.hh:33
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,175 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-enriched.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+raviartthomas1cube3dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_HH\n-6#define DUNE_LOCALFUNCTIONS_ENRICHED_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\be_\bn_\br_\bi_\bc_\bh_\be_\bd_\b/_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh>\n+8#include \n 9\n-10#endif // DUNE_LOCALFUNCTIONS_ENRICHED_HH\n-_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh\n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+22 template\n+_\b2_\b3 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+24 {\n+25\n+26 public:\n+27\n+_\b3_\b3 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<6> s = 0)\n+34 {\n+35 for (size_t i=0; i<6; i++)\n+36 sign_[i] = (s[i]) ? -1.0 : 1.0;\n+37\n+38 n_[0] = {-1.0, 0.0, 0.0};\n+39 n_[1] = { 1.0, 0.0, 0.0};\n+40 n_[2] = { 0.0, -1.0, 0.0};\n+41 n_[3] = { 0.0, 1.0, 0.0};\n+42 n_[4] = { 0.0, 0.0, -1.0};\n+43 n_[5] = { 0.0, 0.0, 1.0};\n+44 }\n+45\n+54 template\n+_\b5_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+56 {\n+57 // f gives v*outer normal at a point on the edge!\n+58 typedef typename LB::Traits::RangeFieldType Scalar;\n+59 typedef typename LB::Traits::DomainFieldType Vector;\n+60\n+61 out.resize(36);\n+62 fill(out.begin(), out.end(), 0.0);\n+63\n+64 const int qOrder = 3;\n+65 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(2),\n+qOrder);\n+66\n+67 for (auto&& qp : rule1)\n+68 {\n+69 Dune::FieldVector qPos = qp.position();\n+70 typename LB::Traits::DomainType localPos;\n+71\n+72 localPos = {0.0, qPos[0], qPos[1]};\n+73 auto y = f(localPos);\n+74 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*qp.weight()*sign_\n+[0];\n+75 out[6] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[0] -\n+1.0)*qp.weight();\n+76 out[12] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[1] -\n+1.0)*qp.weight();\n+77 out[18] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*(2.0*qPos[0] -\n+1.0)*(2.0*qPos[1] - 1.0)*qp.weight();\n+78\n+79 localPos = {1.0, qPos[0], qPos[1]};\n+80 y = f(localPos);\n+81 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*qp.weight()*sign_\n+[1];\n+82 out[7] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos\n+[0])*qp.weight();\n+83 out[13] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos\n+[1])*qp.weight();\n+84 out[19] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*(1.0 - 2.0*qPos\n+[0])*(2.0*qPos[1] - 1.0)*qp.weight();\n+85\n+86 localPos = {qPos[0], 0.0, qPos[1]};\n+87 y = f(localPos);\n+88 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*qp.weight()*sign_\n+[2];\n+89 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(1.0 - 2.0*qPos\n+[0])*qp.weight();\n+90 out[14] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(2.0*qPos[1] -\n+1.0)*qp.weight();\n+91 out[20] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*(1.0 - 2.0*qPos\n+[0])*(2.0*qPos[1] - 1.0)*qp.weight();\n+92\n+93 localPos = {qPos[0], 1.0, qPos[1]};\n+94 y = f(localPos);\n+95 out[3] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*qp.weight()*sign_\n+[3];\n+96 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(2.0*qPos[0] -\n+1.0)*qp.weight();\n+97 out[15] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(1.0 - 2.0*qPos\n+[1])*qp.weight();\n+98 out[21] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*(2.0*qPos[0] -\n+1.0)*(2.0*qPos[1] - 1.0)*qp.weight();\n+99\n+100 localPos = {qPos[0], qPos[1], 0.0};\n+101 y = f(localPos);\n+102 out[4] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*qp.weight()*sign_\n+[4];\n+103 out[10] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos\n+[0])*qp.weight();\n+104 out[16] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos\n+[1])*qp.weight();\n+105 out[22] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*(1.0 - 2.0*qPos\n+[0])*(2.0*qPos[1] - 1.0)*qp.weight();\n+106\n+107 localPos = {qPos[0], qPos[1], 1.0};\n+108 y = f(localPos);\n+109 out[5] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*qp.weight()*sign_\n+[5];\n+110 out[11] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[0] -\n+1.0)*qp.weight();\n+111 out[17] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[1] -\n+1.0)*qp.weight();\n+112 out[23] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*(2.0*qPos[0] -\n+1.0)*(2.0*qPos[1] - 1.0)*qp.weight();\n+113 }\n+114\n+115 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(3),\n+qOrder);\n+116 for (auto&& qp : rule2)\n+117 {\n+118 FieldVector qPos = qp.position();\n+119\n+120 auto y = f(qPos);\n+121 out[24] += y[0]*qp.weight();\n+122 out[25] += y[1]*qp.weight();\n+123 out[26] += y[2]*qp.weight();\n+124 out[27] += y[0]*qPos[1]*qp.weight();\n+125 out[28] += y[0]*qPos[2]*qp.weight();\n+126 out[29] += y[1]*qPos[0]*qp.weight();\n+127 out[30] += y[1]*qPos[2]*qp.weight();\n+128 out[31] += y[2]*qPos[0]*qp.weight();\n+129 out[32] += y[2]*qPos[1]*qp.weight();\n+130 out[33] += y[0]*qPos[1]*qPos[2]*qp.weight();\n+131 out[34] += y[1]*qPos[0]*qPos[2]*qp.weight();\n+132 out[35] += y[2]*qPos[0]*qPos[1]*qp.weight();\n+133 }\n+134 }\n+135\n+136 private:\n+137 // Facet orientations\n+138 std::array sign_;\n+139\n+140 // Facet normals\n+141 std::array n_;\n+142 };\n+143}\n+144#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalinterpolation.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalinterpolation.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT1Cube3DLocalInterpolation(std::bitset< 6 > s=0)\n+Make set number s, where 0 <= s < 64.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalinterpolation.hh:33\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube3d.hh File Reference\n+dune-localfunctions: raviartthomas1cube3dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube3d.hh File Reference
    \n+
    raviartthomas1cube3dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalbasis.hh"
    \n-#include "brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalcoefficients.hh"
    \n-#include "brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalinterpolation.hh"
    \n+
    #include <numeric>
    \n+#include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Cube3DLocalFiniteElement< D, R >
     First order Brezzi-Douglas-Marini shape functions on hexahedron. More...
    class  Dune::RT1Cube3DLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference hexahedron. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1cube3d.hh File Reference\n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+raviartthomas1cube3dlocalbasis.hh File Reference\n+#include \n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on hexahedron.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference hexahedron.\n _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube3d.hh Source File\n+dune-localfunctions: raviartthomas1cube3dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,642 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube3d.hh
    \n+
    raviartthomas1cube3dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n+
    8#include <numeric>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \n+
    13#include "../../common/localbasis.hh"
    \n
    14
    \n
    15namespace Dune
    \n
    16{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n-
    28
    \n-
    29 public:
    \n-\n-\n-\n-\n-
    34
    \n-\n-
    38
    \n-
    \n-\n-
    45 : basis(s)
    \n-
    46 , interpolation(s)
    \n-
    47 {}
    \n-
    \n-
    48
    \n-
    \n-
    49 const typename Traits::LocalBasisType& localBasis() const
    \n-
    50 {
    \n-
    51 return basis;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-\n-
    55 {
    \n-
    56 return coefficients;
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-\n-
    60 {
    \n-
    61 return interpolation;
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    \n-
    65 unsigned int size () const
    \n-
    66 {
    \n-
    67 return basis.size();
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    \n-
    70 static constexpr GeometryType type()
    \n-
    71 {
    \n-
    72 return GeometryTypes::hexahedron;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-\n-
    77 BDM1Cube3DLocalCoefficients coefficients;
    \n-\n-
    79 };
    \n-
    \n-
    80} // end namespace Dune
    \n-
    81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+
    26 template<class D, class R>
    \n+
    \n+\n+
    28 {
    \n+
    29
    \n+
    30 public:
    \n+
    31 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n+
    32 Dune::FieldMatrix<R,3,3> > Traits;
    \n+
    33
    \n+
    \n+
    39 RT1Cube3DLocalBasis (unsigned int s = 0)
    \n+
    40 {
    \n+
    41 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n+
    42 if (s & 1)
    \n+
    43 {
    \n+
    44 sign0 = -1.0;
    \n+
    45 }
    \n+
    46 if (s & 2)
    \n+
    47 {
    \n+
    48 sign1 = -1.0;
    \n+
    49 }
    \n+
    50 if (s & 4)
    \n+
    51 {
    \n+
    52 sign2 = -1.0;
    \n+
    53 }
    \n+
    54 if (s & 8)
    \n+
    55 {
    \n+
    56 sign3 = -1.0;
    \n+
    57 }
    \n+
    58 if (s & 16)
    \n+
    59 {
    \n+
    60 sign4 = -1.0;
    \n+
    61 }
    \n+
    62 if (s & 32)
    \n+
    63 {
    \n+
    64 sign5 = -1.0;
    \n+
    65 }
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    \n+
    69 unsigned int size () const
    \n+
    70 {
    \n+
    71 return 36;
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    \n+
    80 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    81 std::vector<typename Traits::RangeType>& out) const
    \n+
    82 {
    \n+
    83 out.resize(36);
    \n+
    84
    \n+
    85 out[0][0] = sign0*(-3.0*in[0]*in[0] + 4.0*in[0] - 1.0);
    \n+
    86 out[0][1] = 0.0;
    \n+
    87 out[0][2] = 0.0;
    \n+
    88
    \n+
    89 out[1][0] = sign1*(-2.0*in[0] + 3.0*in[0]*in[0]);
    \n+
    90 out[1][1] = 0.0;
    \n+
    91 out[1][2] = 0.0;
    \n+
    92
    \n+
    93 out[2][0] = 0.0;
    \n+
    94 out[2][1] = sign2*(-3.0*in[1]*in[1] + 4.0*in[1] - 1.0);
    \n+
    95 out[2][2] = 0.0;
    \n+
    96
    \n+
    97 out[3][0] = 0.0;
    \n+
    98 out[3][1] = sign3*(3.0*in[1]*in[1] - 2.0*in[1]);
    \n+
    99 out[3][2] = 0.0;
    \n+
    100
    \n+
    101 out[4][0] = 0.0;
    \n+
    102 out[4][1] = 0.0;
    \n+
    103 out[4][2] = sign4*(-3.0*in[2]*in[2] + 4.0*in[2] - 1.0);
    \n+
    104
    \n+
    105 out[5][0] = 0.0;
    \n+
    106 out[5][1] = 0.0;
    \n+
    107 out[5][2] = sign5*(3.0*in[2]*in[2] - 2.0*in[2]);
    \n+
    108
    \n+
    109 out[6][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 24.0*in[0]*in[1] - 6.0*in[1] -12.0*in[0] + 3.0;
    \n+
    110 out[6][1] = 0.0;
    \n+
    111 out[6][2] = 0.0;
    \n+
    112
    \n+
    113 out[7][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 12.0*in[0]*in[1] - 6.0*in[0];
    \n+
    114 out[7][1] = 0.0;
    \n+
    115 out[7][2] = 0.0;
    \n+
    116
    \n+
    117 out[8][0] = 0.0;
    \n+
    118 out[8][1] = 18.0*in[0]*in[1]*in[1] - 9.0*in[1]*in[1] - 24.0*in[0]*in[1] + 12.0*in[1] + 6.0*in[0] - 3.0;
    \n+
    119 out[8][2] = 0.0;
    \n+
    120
    \n+
    121 out[9][0] = 0.0;
    \n+
    122 out[9][1] = 6.0*in[1] - 12.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in[1]*in[1];
    \n+
    123 out[9][2] = 0.0;
    \n+
    124
    \n+
    125 out[10][0] = 0.0;
    \n+
    126 out[10][1] = 0.0;
    \n+
    127 out[10][2] = -3.0 + 6.0*in[0] + 12.0*in[2] - 24.0*in[0]*in[2] - 9.0*in[2]*in[2] + 18.0*in[0]*in[2]*in[2];
    \n+
    128
    \n+
    129 out[11][0] = 0.0;
    \n+
    130 out[11][1] = 0.0;
    \n+
    131 out[11][2] = 6.0*in[2] - 12.0*in[0]*in[2] - 9.0*in[2]*in[2] + 18.0*in[0]*in[2]*in[2];
    \n+
    132
    \n+
    133 out[12][0] = 3.0 - 12.0*in[0] - 6.0*in[2] + 24.0*in[0]*in[2] + 9.0*in[0]*in[0] - 18.0*in[0]*in[0]*in[2];
    \n+
    134 out[12][1] = 0.0;
    \n+
    135 out[12][2] = 0.0;
    \n+
    136
    \n+
    137 out[13][0] = -6.0*in[0] + 12.0*in[0]*in[2] + 9.0*in[0]*in[0] - 18.0*in[0]*in[0]*in[2];
    \n+
    138 out[13][1] = 0.0;
    \n+
    139 out[13][2] = 0.0;
    \n+
    140
    \n+
    141 out[14][0] = 0.0;
    \n+
    142 out[14][1] = 3.0 - 12.0*in[1] - 6.0*in[2] + 24.0*in[1]*in[2] + 9.0*in[1]*in[1] - 18.0*in[1]*in[1]*in[2];
    \n+
    143 out[14][2] = 0.0;
    \n+
    144
    \n+
    145 out[15][0] = 0.0;
    \n+
    146 out[15][1] = -6.0*in[1] + 12.0*in[1]*in[2] + 9.0*in[1]*in[1] - 18.0*in[1]*in[1]*in[2];
    \n+
    147 out[15][2] = 0.0;
    \n+
    148
    \n+
    149 out[16][0] = 0.0;
    \n+
    150 out[16][1] = 0.0;
    \n+
    151 out[16][2] = -3.0 + 6.0*in[1] + 12.0*in[2] - 24.0*in[1]*in[2] - 9.0*in[2]*in[2] + 18.0*in[1]*in[2]*in[2];
    \n+
    152
    \n+
    153 out[17][0] = 0.0;
    \n+
    154 out[17][1] = 0.0;
    \n+
    155 out[17][2] = 6.0*in[2] - 12.0*in[1]*in[2] - 9.0*in[2]*in[2] + 18.0*in[1]*in[2]*in[2];
    \n+
    156
    \n+
    157 out[18][0] = -9.0 + 36.0*in[0] + 18.0*in[1] + 18.0*in[2] - 72.0*in[0]*in[1] - 72.0*in[0]*in[2] - 36.0*in[1]*in[2] + 144.0*in[0]*in[1]*in[2] - 27.0*in[0]*in[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in[0]*in[2] - 108.0*in[0]*in[0]*in[1]*in[2];
    \n+
    158 out[18][1] = 0.0;
    \n+
    159 out[18][2] = 0.0;
    \n+
    160
    \n+
    161 out[19][0] = 18.0*in[0] - 36.0*in[0]*in[1] - 36.0*in[0]*in[2] + 72.0*in[0]*in[1]*in[2] - 27.0*in[0]*in[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in[0]*in[2] - 108.0*in[0]*in[0]*in[1]*in[2];
    \n+
    162 out[19][1] = 0.0;
    \n+
    163 out[19][2] = 0.0;
    \n+
    164
    \n+
    165 out[20][0] = 0.0;
    \n+
    166 out[20][1] = 9.0 - 18.0*in[0] - 36.0*in[1] - 18.0*in[2] + 72.0*in[0]*in[1] + 36.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[1]*in[1] - 54.0*in[1]*in[1]*in[0] - 54.0*in[1]*in[1]*in[2] + 108.0*in[0]*in[1]*in[1]*in[2];
    \n+
    167 out[20][2] = 0.0;
    \n+
    168
    \n+
    169 out[21][0] = 0.0;
    \n+
    170 out[21][1] = -18.0*in[1] + 36.0*in[0]*in[1] + 36.0*in[1]*in[2] - 72.0*in[0]*in[1]*in[2] + 27.0*in[1]*in[1] - 54.0*in[0]*in[1]*in[1] - 54.0*in[1]*in[1]*in[2] + 108.0*in[0]*in[1]*in[1]*in[2];
    \n+
    171 out[21][2] = 0.0;
    \n+
    172
    \n+
    173 out[22][0] = 0.0;
    \n+
    174 out[22][1] = 0.0;
    \n+
    175 out[22][2] = 9.0 - 18.0*in[0] - 18.0*in[1] - 36.0*in[2] + 36.0*in[0]*in[1] + 72.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[2]*in[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in[2]*in[2] + 108.0*in[0]*in[1]*in[2]*in[2];
    \n+
    176
    \n+
    177 out[23][0] = 0.0;
    \n+
    178 out[23][1] = 0.0;
    \n+
    179 out[23][2] = -18.0*in[2] + 36.0*in[0]*in[2] + 36.0*in[1]*in[2] - 72.0*in[0]*in[1]*in[2] + 27.0*in[2]*in[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in[2]*in[2] + 108.0*in[0]*in[1]*in[2]*in[2];
    \n+
    180
    \n+
    181 out[24][0] = 96.0*in[0] - 144.0*in[0]*in[1] - 144.0*in[0]*in[2] + 216.0*in[0]*in[1]*in[2] - 96.0*in[0]*in[0] + 144.0*in[0]*in[0]*in[1] + 144.0*in[0]*in[0]*in[2] - 216.0*in[0]*in[0]*in[1]*in[2];
    \n+
    182 out[24][1] = 0.0;
    \n+
    183 out[24][2] = 0.0;
    \n+
    184
    \n+
    185 out[25][0] = 0.0;
    \n+
    186 out[25][1] = 96.0*in[1] - 144.0*in[0]*in[1] - 144.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2] - 96.0*in[1]*in[1] + 144.0*in[0]*in[1]*in[1] + 144.0*in[1]*in[1]*in[2] - 216.0*in[0]*in[1]*in[1]*in[2];
    \n+
    187 out[25][2] = 0.0;
    \n+
    188
    \n+
    189 out[26][0] = 0.0;
    \n+
    190 out[26][1] = 0.0;
    \n+
    191 out[26][2] = 96.0*in[2] - 144.0*in[0]*in[2] - 144.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2] - 96.0*in[2]*in[2] + 144.0*in[0]*in[2]*in[2] + 144.0*in[1]*in[2]*in[2] - 216.0*in[0]*in[1]*in[2]*in[2];
    \n+
    192
    \n+
    193 out[27][0] = -144.0*in[0] + 288.0*in[0]*in[1] + 216.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 288.0*in[0]*in[0]*in[1] - 216.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2];
    \n+
    194 out[27][1] = 0.0;
    \n+
    195 out[27][2] = 0.0;
    \n+
    196
    \n+
    197 out[28][0] = -144.0*in[0] + 216.0*in[0]*in[1] + 288.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[1] - 288.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2];
    \n+
    198 out[28][1] = 0.0;
    \n+
    199 out[28][2] = 0.0;
    \n+
    200
    \n+
    201 out[29][0] = 0.0;
    \n+
    202 out[29][1] = -144.0*in[1] + 288.0*in[0]*in[1] + 216.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 288.0*in[0]*in[1]*in[1] - 216.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2];
    \n+
    203 out[29][2] = 0.0;
    \n+
    204
    \n+
    205 out[30][0] = 0.0;
    \n+
    206 out[30][1] = -144.0*in[1] + 216.0*in[0]*in[1] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 216.0*in[0]*in[1]*in[1] - 288.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2];
    \n+
    207 out[30][2] = 0.0;
    \n+
    208
    \n+
    209 out[31][0] = 0.0;
    \n+
    210 out[31][1] = 0.0;
    \n+
    211 out[31][2] =-144.0*in[2] + 288.0*in[0]*in[2] + 216.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 288.0*in[0]*in[2]*in[2] - 216.0*in[1]*in[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2];
    \n+
    212
    \n+
    213 out[32][0] = 0.0;
    \n+
    214 out[32][1] = 0.0;
    \n+
    215 out[32][2] = -144.0*in[2] + 216.0*in[0]*in[2] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 216.0*in[0]*in[2]*in[2] - 288.0*in[1]*in[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2];
    \n+
    216
    \n+
    217 out[33][0] = 216.0*in[0] - 432.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1] + 432.0*in[0]*in[0]*in[2] - 864.0*in[0]*in[0]*in[1]*in[2];
    \n+
    218 out[33][1] = 0.0;
    \n+
    219 out[33][2] = 0.0;
    \n+
    220
    \n+
    221 out[34][0] = 0.0;
    \n+
    222 out[34][1] = 216.0*in[1] - 432.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2] - 216.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1] + 432.0*in[1]*in[1]*in[2] - 864.0*in[0]*in[1]*in[1]*in[2];
    \n+
    223 out[34][2] = 0.0;
    \n+
    224
    \n+
    225 out[35][0] = 0.0;
    \n+
    226 out[35][1] = 0.0;
    \n+
    227 out[35][2] = 216.0*in[2] - 432.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2] - 216.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2] + 432.0*in[1]*in[2]*in[2] - 864.0*in[0]*in[1]*in[2]*in[2];
    \n+
    228 }
    \n+
    \n+
    229
    \n+
    \n+
    236 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    237 std::vector<typename Traits::JacobianType>& out) const
    \n+
    238 {
    \n+
    239 out.resize(36);
    \n+
    240
    \n+
    241 out[0][0][0] = sign0*(-6.0*in[0] + 4);
    \n+
    242 out[0][0][1] = 0;
    \n+
    243 out[0][0][2] = 0;
    \n+
    244 out[0][1][0] = 0;
    \n+
    245 out[0][1][1] = 0;
    \n+
    246 out[0][1][2] = 0;
    \n+
    247 out[0][2][0] = 0;
    \n+
    248 out[0][2][1] = 0;
    \n+
    249 out[0][2][2] = 0;
    \n+
    250
    \n+
    251 out[1][0][0] = sign1*(-2 + 6.0*in[0]);
    \n+
    252 out[1][0][1] = 0;
    \n+
    253 out[1][0][2] = 0;
    \n+
    254 out[1][1][0] = 0;
    \n+
    255 out[1][1][1] = 0;
    \n+
    256 out[1][1][2] = 0;
    \n+
    257 out[1][2][0] = 0;
    \n+
    258 out[1][2][1] = 0;
    \n+
    259 out[1][2][2] = 0;
    \n+
    260
    \n+
    261 out[2][0][0] = 0;
    \n+
    262 out[2][0][1] = 0;
    \n+
    263 out[2][0][2] = 0;
    \n+
    264 out[2][1][0] = 0;
    \n+
    265 out[2][1][1] = sign2*(-6.0*in[1] + 4);
    \n+
    266 out[2][1][2] = 0;
    \n+
    267 out[2][2][0] = 0;
    \n+
    268 out[2][2][1] = 0;
    \n+
    269 out[2][2][2] = 0;
    \n+
    270
    \n+
    271 out[3][0][0] = 0;
    \n+
    272 out[3][0][1] = 0;
    \n+
    273 out[3][0][2] = 0;
    \n+
    274 out[3][1][0] = 0;
    \n+
    275 out[3][1][1] = sign3*(6.0*in[1] - 2);
    \n+
    276 out[3][1][2] = 0;
    \n+
    277 out[3][2][0] = 0;
    \n+
    278 out[3][2][1] = 0;
    \n+
    279 out[3][2][2] = 0;
    \n+
    280
    \n+
    281 out[4][0][0] = 0;
    \n+
    282 out[4][0][1] = 0;
    \n+
    283 out[4][0][2] = 0;
    \n+
    284 out[4][1][0] = 0;
    \n+
    285 out[4][1][1] = 0;
    \n+
    286 out[4][1][2] = 0;
    \n+
    287 out[4][2][0] = 0;
    \n+
    288 out[4][2][1] = 0;
    \n+
    289 out[4][2][2] = sign4*(-6.0*in[2] + 4);
    \n+
    290
    \n+
    291 out[5][0][0] = 0;
    \n+
    292 out[5][0][1] = 0;
    \n+
    293 out[5][0][2] = 0;
    \n+
    294 out[5][1][0] = 0;
    \n+
    295 out[5][1][1] = 0;
    \n+
    296 out[5][1][2] = 0;
    \n+
    297 out[5][2][0] = 0;
    \n+
    298 out[5][2][1] = 0;
    \n+
    299 out[5][2][2] = sign5*(6.0*in[2] - 2);
    \n+
    300
    \n+
    301 out[6][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 24.0*in[1] - 12.0;
    \n+
    302 out[6][0][1] = -18.0*in[0]*in[0] + 24.0*in[0] - 6;
    \n+
    303 out[6][0][2] = 0.0;
    \n+
    304 out[6][1][0] = 0.0;
    \n+
    305 out[6][1][1] = 0.0;
    \n+
    306 out[6][1][2] = 0.0;
    \n+
    307 out[6][2][0] = 0.0;
    \n+
    308 out[6][2][1] = 0.0;
    \n+
    309 out[6][2][2] = 0.0;
    \n+
    310
    \n+
    311 out[7][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 12.0*in[1] - 6.0;
    \n+
    312 out[7][0][1] = -18.0*in[0]*in[0] + 12.0*in[0];
    \n+
    313 out[7][0][2] = 0.0;
    \n+
    314 out[7][1][0] = 0.0;
    \n+
    315 out[7][1][1] = 0.0;
    \n+
    316 out[7][1][2] = 0.0;
    \n+
    317 out[7][2][0] = 0.0;
    \n+
    318 out[7][2][1] = 0.0;
    \n+
    319 out[7][2][2] = 0.0;
    \n+
    320
    \n+
    321 out[8][0][0] = 0.0;
    \n+
    322 out[8][0][1] = 0.0;
    \n+
    323 out[8][0][2] = 0.0;
    \n+
    324 out[8][1][0] = 18.0*in[1]*in[1] - 24.0*in[1] + 6.0;
    \n+
    325 out[8][1][1] = 36.0*in[0]*in[1] - 18.0*in[1] - 24.0*in[0] + 12.0;
    \n+
    326 out[8][1][2] = 0.0;
    \n+
    327 out[8][2][0] = 0.0;
    \n+
    328 out[8][2][1] = 0.0;
    \n+
    329 out[8][2][2] = 0.0;
    \n+
    330
    \n+
    331 out[9][0][0] = 0.0;
    \n+
    332 out[9][0][1] = 0.0;
    \n+
    333 out[9][0][2] = 0.0;
    \n+
    334 out[9][1][0] = -12.0*in[1] + 18.0*in[1]*in[1];
    \n+
    335 out[9][1][1] = 6.0 - 12.0*in[0] - 18.0*in[1] + 36.0*in[0]*in[1];;
    \n+
    336 out[9][1][2] = 0.0;
    \n+
    337 out[9][2][0] = 0.0;
    \n+
    338 out[9][2][1] = 0.0;
    \n+
    339 out[9][2][2] = 0.0;
    \n+
    340
    \n+
    341 out[10][0][0] = 0.0;
    \n+
    342 out[10][0][1] = 0.0;
    \n+
    343 out[10][0][2] = 0.0;
    \n+
    344 out[10][1][0] = 0.0;
    \n+
    345 out[10][1][1] = 0.0;
    \n+
    346 out[10][1][2] = 0.0;
    \n+
    347 out[10][2][0] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2];
    \n+
    348 out[10][2][1] = 0.0;
    \n+
    349 out[10][2][2] = 12.0 - 24.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2];
    \n+
    350
    \n+
    351 out[11][0][0] = 0.0;
    \n+
    352 out[11][0][1] = 0.0;
    \n+
    353 out[11][0][2] = 0.0;
    \n+
    354 out[11][1][0] = 0.0;
    \n+
    355 out[11][1][1] = 0.0;
    \n+
    356 out[11][1][2] = 0.0;
    \n+
    357 out[11][2][0] = -12.0*in[2] + 18.0*in[2]*in[2];
    \n+
    358 out[11][2][1] = 0.0;
    \n+
    359 out[11][2][2] = 6.0 - 12.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2];
    \n+
    360
    \n+
    361 out[12][0][0] = -12.0 + 24.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2];
    \n+
    362 out[12][0][1] = 0.0;
    \n+
    363 out[12][0][2] = -6.0 + 24.0*in[0] - 18.0*in[0]*in[0];
    \n+
    364 out[12][1][0] = 0.0;
    \n+
    365 out[12][1][1] = 0.0;
    \n+
    366 out[12][1][2] = 0.0;
    \n+
    367 out[12][2][0] = 0.0;
    \n+
    368 out[12][2][1] = 0.0;
    \n+
    369 out[12][2][2] = 0.0;
    \n+
    370
    \n+
    371 out[13][0][0] = -6.0 + 12.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2];
    \n+
    372 out[13][0][1] = 0.0;
    \n+
    373 out[13][0][2] = 12.0*in[0] - 18.0*in[0]*in[0];
    \n+
    374 out[13][1][0] = 0.0;
    \n+
    375 out[13][1][1] = 0.0;
    \n+
    376 out[13][1][2] = 0.0;
    \n+
    377 out[13][2][0] = 0.0;
    \n+
    378 out[13][2][1] = 0.0;
    \n+
    379 out[13][2][2] = 0.0;
    \n+
    380
    \n+
    381 out[14][0][0] = 0.0;
    \n+
    382 out[14][0][1] = 0.0;
    \n+
    383 out[14][0][2] = 0.0;
    \n+
    384 out[14][1][0] = 0.0;
    \n+
    385 out[14][1][1] = -12.0 + 24.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2];
    \n+
    386 out[14][1][2] = -6.0 + 24.0*in[1] - 18.0*in[1]*in[1];
    \n+
    387 out[14][2][0] = 0.0;
    \n+
    388 out[14][2][1] = 0.0;
    \n+
    389 out[14][2][2] = 0.0;
    \n+
    390
    \n+
    391 out[15][0][0] = 0.0;
    \n+
    392 out[15][0][1] = 0.0;
    \n+
    393 out[15][0][2] = 0.0;
    \n+
    394 out[15][1][0] = 0.0;
    \n+
    395 out[15][1][1] = -6.0 + 12.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2];
    \n+
    396 out[15][1][2] = 12.0*in[1] - 18.0*in[1]*in[1];
    \n+
    397 out[15][2][0] = 0.0;
    \n+
    398 out[15][2][1] = 0.0;
    \n+
    399 out[15][2][2] = 0.0;
    \n+
    400
    \n+
    401 out[16][0][0] = 0.0;
    \n+
    402 out[16][0][1] = 0.0;
    \n+
    403 out[16][0][2] = 0.0;
    \n+
    404 out[16][1][0] = 0.0;
    \n+
    405 out[16][1][1] = 0.0;
    \n+
    406 out[16][1][2] = 0.0;
    \n+
    407 out[16][2][0] = 0.0;
    \n+
    408 out[16][2][1] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2];
    \n+
    409 out[16][2][2] = 12.0 - 24.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2];
    \n+
    410
    \n+
    411 out[17][0][0] = 0.0;
    \n+
    412 out[17][0][1] = 0.0;
    \n+
    413 out[17][0][2] = 0.0;
    \n+
    414 out[17][1][0] = 0.0;
    \n+
    415 out[17][1][1] = 0.0;
    \n+
    416 out[17][1][2] = 0.0;
    \n+
    417 out[17][2][0] = 0.0;
    \n+
    418 out[17][2][1] = -12.0*in[2] + 18.0*in[2]*in[2];
    \n+
    419 out[17][2][2] = 6.0 - 12.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2];
    \n+
    420
    \n+
    421 out[18][0][0] = 36.0 - 72.0*in[1] - 72.0*in[2] + 144.0*in[1]*in[2] - 54.0*in[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2];
    \n+
    422 out[18][0][1] = 18.0 - 72.0*in[0] - 36.0*in[2] + 144.0*in[0]*in[2] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[2];
    \n+
    423 out[18][0][2] = 18.0 - 72.0*in[0] - 36.0*in[1] + 144.0*in[0]*in[1] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1];
    \n+
    424 out[18][1][0] = 0.0;
    \n+
    425 out[18][1][1] = 0.0;
    \n+
    426 out[18][1][2] = 0.0;
    \n+
    427 out[18][2][0] = 0.0;
    \n+
    428 out[18][2][1] = 0.0;
    \n+
    429 out[18][2][2] = 0.0;
    \n+
    430
    \n+
    431 out[19][0][0] = 18 - 36.0*in[1] - 36.0*in[2] + 72.0*in[1]*in[2] - 54.0*in[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2];
    \n+
    432 out[19][0][1] = -36.0*in[0] + 72.0*in[0]*in[2] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[2];
    \n+
    433 out[19][0][2] = -36.0*in[0] + 72.0*in[0]*in[1] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1];
    \n+
    434 out[19][1][0] = 0.0;
    \n+
    435 out[19][1][1] = 0.0;
    \n+
    436 out[19][1][2] = 0.0;
    \n+
    437 out[19][2][0] = 0.0;
    \n+
    438 out[19][2][1] = 0.0;
    \n+
    439 out[19][2][2] = 0.0;
    \n+
    440
    \n+
    441 out[20][0][0] = 0.0;
    \n+
    442 out[20][0][1] = 0.0;
    \n+
    443 out[20][0][2] = 0.0;
    \n+
    444 out[20][1][0] = -18.0 + 72.0*in[1] + 36.0*in[2] - 144.0*in[1]*in[2] - 54.0*in[1]*in[1] + 108.0*in[1]*in[1]*in[2];
    \n+
    445 out[20][1][1] = -36.0 + 72.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] + 54.0*in[1] - 108.0*in[1]*in[0] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];
    \n+
    446 out[20][1][2] = -18.0 + 36.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1];
    \n+
    447 out[20][2][0] = 0.0;
    \n+
    448 out[20][2][1] = 0.0;
    \n+
    449 out[20][2][2] = 0.0;
    \n+
    450
    \n+
    451 out[21][0][0] = 0.0;
    \n+
    452 out[21][0][1] = 0.0;
    \n+
    453 out[21][0][2] = 0.0;
    \n+
    454 out[21][1][0] = 36.0*in[1] - 72.0*in[1]*in[2] - 54.0*in[1]*in[1] + 108.0*in[1]*in[1]*in[2];
    \n+
    455 out[21][1][1] = -18.0 + 36.0*in[0] + 36.0*in[2] - 72.0*in[0]*in[2] + 54.0*in[1] - 108.0*in[0]*in[1] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];
    \n+
    456 out[21][1][2] = 36.0*in[1] - 72.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1];
    \n+
    457 out[21][2][0] = 0.0;
    \n+
    458 out[21][2][1] = 0.0;
    \n+
    459 out[21][2][2] = 0.0;
    \n+
    460
    \n+
    461 out[22][0][0] = 0.0;
    \n+
    462 out[22][0][1] = 0.0;
    \n+
    463 out[22][0][2] = 0.0;
    \n+
    464 out[22][1][0] = 0.0;
    \n+
    465 out[22][1][1] = 0.0;
    \n+
    466 out[22][1][2] = 0.0;
    \n+
    467 out[22][2][0] = -18.0 + 36.0*in[1] + 72.0*in[2] - 144.0*in[1]*in[2] - 54.0*in[2]*in[2] + 108.0*in[1]*in[2]*in[2];
    \n+
    468 out[22][2][1] = -18.0 + 36.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] - 54.0*in[2]*in[2] + 108.0*in[0]*in[2]*in[2];
    \n+
    469 out[22][2][2] = -36.0 + 72.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] + 54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];
    \n+
    470
    \n+
    471 out[23][0][0] = 0.0;
    \n+
    472 out[23][0][1] = 0.0;
    \n+
    473 out[23][0][2] = 0.0;
    \n+
    474 out[23][1][0] = 0.0;
    \n+
    475 out[23][1][1] = 0.0;
    \n+
    476 out[23][1][2] = 0.0;
    \n+
    477 out[23][2][0] = 36.0*in[2] - 72.0*in[1]*in[2] - 54.0*in[2]*in[2] + 108.0*in[1]*in[2]*in[2];
    \n+
    478 out[23][2][1] = 36.0*in[2] - 72.0*in[0]*in[2] - 54.0*in[2]*in[2] + 108.0*in[0]*in[2]*in[2];
    \n+
    479 out[23][2][2] = -18.0 + 36.0*in[0] + 36.0*in[1] - 72.0*in[0]*in[1] + 54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];
    \n+
    480
    \n+
    481 out[24][0][0] = 96.0 - 144.0*in[1] - 144.0*in[2] + 216.0*in[1]*in[2] - 192.0*in[0] + 288.0*in[0]*in[1] + 288.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2];
    \n+
    482 out[24][0][1] = -144.0*in[0] + 216.0*in[0]*in[2] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[2];
    \n+
    483 out[24][0][2] = -144.0*in[0] + 216.0*in[0]*in[1] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[1];
    \n+
    484 out[24][1][0] = 0.0;
    \n+
    485 out[24][1][1] = 0.0;
    \n+
    486 out[24][1][2] = 0.0;
    \n+
    487 out[24][2][0] = 0.0;
    \n+
    488 out[24][2][1] = 0.0;
    \n+
    489 out[24][2][2] = 0.0;
    \n+
    490
    \n+
    491 out[25][0][0] = 0.0;
    \n+
    492 out[25][0][1] = 0.0;
    \n+
    493 out[25][0][2] = 0.0;
    \n+
    494 out[25][1][0] = -144.0*in[1] + 216.0*in[1]*in[2] + 144.0*in[1]*in[1] - 216.0*in[1]*in[1]*in[2];
    \n+
    495 out[25][1][1] = 96.0 - 144.0*in[0] - 144.0*in[2] + 216.0*in[0]*in[2] - 192.0*in[1] + 288.0*in[0]*in[1] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2];
    \n+
    496 out[25][1][2] = -144.0*in[1] + 216.0*in[0]*in[1] + 144.0*in[1]*in[1] - 216.0*in[0]*in[1]*in[1];
    \n+
    497 out[25][2][0] = 0.0;
    \n+
    498 out[25][2][1] = 0.0;
    \n+
    499 out[25][2][2] = 0.0;
    \n+
    500
    \n+
    501 out[26][0][0] = 0.0;
    \n+
    502 out[26][0][1] = 0.0;
    \n+
    503 out[26][0][2] = 0.0;
    \n+
    504 out[26][1][0] = 0.0;
    \n+
    505 out[26][1][1] = 0.0;
    \n+
    506 out[26][1][2] = 0.0;
    \n+
    507 out[26][2][0] = -144.0*in[2] + 216.0*in[1]*in[2] + 144.0*in[2]*in[2] - 216.0*in[1]*in[2]*in[2];
    \n+
    508 out[26][2][1] = -144.0*in[2] + 216.0*in[0]*in[2] + 144.0*in[2]*in[2] - 216.0*in[0]*in[2]*in[2];
    \n+
    509 out[26][2][2] = 96.0 - 144.0*in[0] - 144.0*in[1] + 216.0*in[0]*in[1] - 192.0*in[2] + 288.0*in[0]*in[2] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2];
    \n+
    510
    \n+
    511 out[27][0][0] = -144.0 + 288.0*in[1] + 216.0*in[2] - 432.0*in[1]*in[2] + 288.0*in[0] - 576.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n+
    512 out[27][0][1] = 288.0*in[0] - 432.0*in[0]*in[2] - 288.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[2];
    \n+
    513 out[27][0][2] = 216.0*in[0] - 432.0*in[0]*in[1] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1];
    \n+
    514 out[27][1][0] = 0.0;
    \n+
    515 out[27][1][1] = 0.0;
    \n+
    516 out[27][1][2] = 0.0;
    \n+
    517 out[27][2][0] = 0.0;
    \n+
    518 out[27][2][1] = 0.0;
    \n+
    519 out[27][2][2] = 0.0;
    \n+
    520
    \n+
    521 out[28][0][0] = -144.0 + 216.0*in[1] + 288.0*in[2] - 432.0*in[1]*in[2] + 288.0*in[0] - 432.0*in[0]*in[1] - 576.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n+
    522 out[28][0][1] = 216.0*in[0] - 432.0*in[0]*in[2] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[2];
    \n+
    523 out[28][0][2] = 288.0*in[0] - 432.0*in[0]*in[1] - 288.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1];
    \n+
    524 out[28][1][0] = 0.0;
    \n+
    525 out[28][1][1] = 0.0;
    \n+
    526 out[28][1][2] = 0.0;
    \n+
    527 out[28][2][0] = 0.0;
    \n+
    528 out[28][2][1] = 0.0;
    \n+
    529 out[28][2][2] = 0.0;
    \n+
    530
    \n+
    531 out[29][0][0] = 0.0;
    \n+
    532 out[29][0][1] = 0.0;
    \n+
    533 out[29][0][2] = 0.0;
    \n+
    534 out[29][1][0] = 288.0*in[1] - 432.0*in[1]*in[2] - 288.0*in[1]*in[1] + 432.0*in[1]*in[1]*in[2];
    \n+
    535 out[29][1][1] = -144.0 + 288.0*in[0] + 216.0*in[2] - 432.0*in[0]*in[2] + 288.0*in[1] - 576.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n+
    536 out[29][1][2] = 216.0*in[1] - 432.0*in[0]*in[1] - 216.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1];
    \n+
    537 out[29][2][0] = 0.0;
    \n+
    538 out[29][2][1] = 0.0;
    \n+
    539 out[29][2][2] = 0.0;
    \n+
    540
    \n+
    541 out[30][0][0] = 0.0;
    \n+
    542 out[30][0][1] = 0.0;
    \n+
    543 out[30][0][2] = 0.0;
    \n+
    544 out[30][1][0] = 216.0*in[1] - 432.0*in[1]*in[2] - 216.0*in[1]*in[1] + 432.0*in[1]*in[1]*in[2];
    \n+
    545 out[30][1][1] = -144.0 + 216.0*in[0] + 288.0*in[2] - 432.0*in[0]*in[2] + 288.0*in[1] - 432.0*in[0]*in[1] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n+
    546 out[30][1][2] = 288.0*in[1] - 432.0*in[0]*in[1] - 288.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1];
    \n+
    547 out[30][2][0] = 0.0;
    \n+
    548 out[30][2][1] = 0.0;
    \n+
    549 out[30][2][2] = 0.0;
    \n+
    550
    \n+
    551 out[31][0][0] = 0.0;
    \n+
    552 out[31][0][1] = 0.0;
    \n+
    553 out[31][0][2] = 0.0;
    \n+
    554 out[31][1][0] = 0.0;
    \n+
    555 out[31][1][1] = 0.0;
    \n+
    556 out[31][1][2] = 0.0;
    \n+
    557 out[31][2][0] = 288.0*in[2] - 432.0*in[1]*in[2] - 288.0*in[2]*in[2] + 432.0*in[1]*in[2]*in[2];
    \n+
    558 out[31][2][1] = 216.0*in[2] - 432.0*in[0]*in[2] - 216.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2];
    \n+
    559 out[31][2][2] = -144.0 + 288.0*in[0] + 216.0*in[1] - 432.0*in[0]*in[1] + 288.0*in[2] - 576.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n+
    560
    \n+
    561 out[32][0][0] = 0.0;
    \n+
    562 out[32][0][1] = 0.0;
    \n+
    563 out[32][0][2] = 0.0;
    \n+
    564 out[32][1][0] = 0.0;
    \n+
    565 out[32][1][1] = 0.0;
    \n+
    566 out[32][1][2] = 0.0;
    \n+
    567 out[32][2][0] = 216.0*in[2] - 432.0*in[1]*in[2] - 216.0*in[2]*in[2] + 432.0*in[1]*in[2]*in[2];
    \n+
    568 out[32][2][1] = 288.0*in[2] - 432.0*in[0]*in[2] - 288.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2];
    \n+
    569 out[32][2][2] = -144.0 + 216.0*in[0] + 288.0*in[1] - 432.0*in[0]*in[1] + 288.0*in[2] - 432.0*in[0]*in[2] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];
    \n+
    570
    \n+
    571 out[33][0][0] = 216.0 - 432.0*in[1] - 432.0*in[2] + 864.0*in[1]*in[2] - 432.0*in[0] + 864.0*in[0]*in[1] + 864.0*in[0]*in[2] - 1728.0*in[0]*in[1]*in[2];
    \n+
    572 out[33][0][1] = -432.0*in[0] + 864.0*in[0]*in[2] + 432.0*in[0]*in[0] - 864.0*in[0]*in[0]*in[2];
    \n+
    573 out[33][0][2] = -432.0*in[0] + 864.0*in[0]*in[1] + 432.0*in[0]*in[0] - 864.0*in[0]*in[0]*in[1];
    \n+
    574 out[33][1][0] = 0.0;
    \n+
    575 out[33][1][1] = 0.0;
    \n+
    576 out[33][1][2] = 0.0;
    \n+
    577 out[33][2][0] = 0.0;
    \n+
    578 out[33][2][1] = 0.0;
    \n+
    579 out[33][2][2] = 0.0;
    \n+
    580
    \n+
    581 out[34][0][0] = 0.0;
    \n+
    582 out[34][0][1] = 0.0;
    \n+
    583 out[34][0][2] = 0.0;
    \n+
    584 out[34][1][0] = -432.0*in[1] + 864.0*in[1]*in[2] + 432.0*in[1]*in[1] - 864.0*in[1]*in[1]*in[2];
    \n+
    585 out[34][1][1] = 216.0 - 432.0*in[0] - 432.0*in[2] + 864.0*in[0]*in[2] - 432.0*in[1] + 864.0*in[0]*in[1] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2];
    \n+
    586 out[34][1][2] = -432.0*in[1] + 864.0*in[0]*in[1] + 432.0*in[1]*in[1] - 864.0*in[0]*in[1]*in[1];
    \n+
    587 out[34][2][0] = 0.0;
    \n+
    588 out[34][2][1] = 0.0;
    \n+
    589 out[34][2][2] = 0.0;
    \n+
    590
    \n+
    591 out[35][0][0] = 0.0;
    \n+
    592 out[35][0][1] = 0.0;
    \n+
    593 out[35][0][2] = 0.0;
    \n+
    594 out[35][1][0] = 0.0;
    \n+
    595 out[35][1][1] = 0.0;
    \n+
    596 out[35][1][2] = 0.0;
    \n+
    597 out[35][2][0] = -432.0*in[2] + 864.0*in[1]*in[2] + 432.0*in[2]*in[2] - 864.0*in[1]*in[2]*in[2];
    \n+
    598 out[35][2][1] = -432.0*in[2] + 864.0*in[0]*in[2] + 432.0*in[2]*in[2] - 864.0*in[0]*in[2]*in[2];
    \n+
    599 out[35][2][2] = 216.0 - 432.0*in[0] - 432.0*in[1] + 864.0*in[0]*in[1] - 432.0*in[2] + 864.0*in[0]*in[2] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2];
    \n+
    600 }
    \n+
    \n+
    601
    \n+
    \n+
    603 void partial (const std::array<unsigned int, 3>& order,
    \n+
    604 const typename Traits::DomainType& in, // position
    \n+
    605 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    606 {
    \n+
    607 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    608 if (totalOrder == 0) {
    \n+
    609 evaluateFunction(in, out);
    \n+
    610 } else {
    \n+
    611 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    612 }
    \n+
    613 }
    \n+
    \n+
    614
    \n+
    \n+
    616 unsigned int order () const
    \n+
    617 {
    \n+
    618 return 3;
    \n+
    619 }
    \n+
    \n+
    620
    \n+
    621 private:
    \n+
    622 R sign0, sign1, sign2, sign3, sign4, sign5;
    \n+
    623 };
    \n+
    \n+
    624}
    \n+
    625#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on hexahedron.
    Definition brezzidouglasmarini1cube3d.hh:27
    \n-
    BDM1Cube3DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini1cube3d.hh:36
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini1cube3d.hh:65
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini1cube3d.hh:54
    \n-
    static constexpr GeometryType type()
    Definition brezzidouglasmarini1cube3d.hh:70
    \n-
    LocalFiniteElementTraits< BDM1Cube3DLocalBasis< D, R >, BDM1Cube3DLocalCoefficients, BDM1Cube3DLocalInterpolation< BDM1Cube3DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini1cube3d.hh:33
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini1cube3d.hh:59
    \n-
    BDM1Cube3DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 64.
    Definition brezzidouglasmarini1cube3d.hh:44
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini1cube3d.hh:49
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:31
    \n-
    Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:24
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:26
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalbasis.hh:28
    \n+
    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 raviartthomas1cube3dlocalbasis.hh:603
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas1cube3dlocalbasis.hh:32
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas1cube3dlocalbasis.hh:69
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas1cube3dlocalbasis.hh:80
    \n+
    RT1Cube3DLocalBasis(unsigned int s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas1cube3dlocalbasis.hh:39
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas1cube3dlocalbasis.hh:236
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas1cube3dlocalbasis.hh:616
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,139 +1,758 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n-brezzidouglasmarini1cube3d.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+raviartthomas1cube3dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH\n 7\n-8#include \n-9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+8#include \n+9#include \n+10\n+11#include \n+12\n+13#include \"../../common/localbasis.hh\"\n 14\n 15namespace _\bD_\bu_\bn_\be\n 16{\n-25 template\n-_\b2_\b6 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 {\n-28\n-29 public:\n-30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-31 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-32 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b3_\b6 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-37 {}\n-38\n-_\b4_\b4 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-45 : basis(s)\n-46 , interpolation(s)\n-47 {}\n-48\n-_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() const\n-50 {\n-51 return basis;\n-52 }\n-53\n-_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n+26 template\n+_\b2_\b7 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+28 {\n+29\n+30 public:\n+31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n+FieldVector,\n+_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b9 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int s = 0)\n+40 {\n+41 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n+42 if (s & 1)\n+43 {\n+44 sign0 = -1.0;\n+45 }\n+46 if (s & 2)\n+47 {\n+48 sign1 = -1.0;\n+49 }\n+50 if (s & 4)\n+51 {\n+52 sign2 = -1.0;\n+53 }\n+54 if (s & 8)\n 55 {\n-56 return coefficients;\n+56 sign3 = -1.0;\n 57 }\n-58\n-_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n-60 {\n-61 return interpolation;\n-62 }\n-63\n-_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-66 {\n-67 return basis.size();\n-68 }\n-69\n-_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be()\n-71 {\n-72 return GeometryTypes::hexahedron;\n-73 }\n-74\n-75 private:\n-76 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-77 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-78 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-79 };\n-80} // end namespace Dune\n-81#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+58 if (s & 16)\n+59 {\n+60 sign4 = -1.0;\n+61 }\n+62 if (s & 32)\n+63 {\n+64 sign5 = -1.0;\n+65 }\n+66 }\n+67\n+_\b6_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+70 {\n+71 return 36;\n+72 }\n+73\n+_\b8_\b0 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+81 std::vector& out) const\n+82 {\n+83 out.resize(36);\n+84\n+85 out[0][0] = sign0*(-3.0*in[0]*in[0] + 4.0*in[0] - 1.0);\n+86 out[0][1] = 0.0;\n+87 out[0][2] = 0.0;\n+88\n+89 out[1][0] = sign1*(-2.0*in[0] + 3.0*in[0]*in[0]);\n+90 out[1][1] = 0.0;\n+91 out[1][2] = 0.0;\n+92\n+93 out[2][0] = 0.0;\n+94 out[2][1] = sign2*(-3.0*in[1]*in[1] + 4.0*in[1] - 1.0);\n+95 out[2][2] = 0.0;\n+96\n+97 out[3][0] = 0.0;\n+98 out[3][1] = sign3*(3.0*in[1]*in[1] - 2.0*in[1]);\n+99 out[3][2] = 0.0;\n+100\n+101 out[4][0] = 0.0;\n+102 out[4][1] = 0.0;\n+103 out[4][2] = sign4*(-3.0*in[2]*in[2] + 4.0*in[2] - 1.0);\n+104\n+105 out[5][0] = 0.0;\n+106 out[5][1] = 0.0;\n+107 out[5][2] = sign5*(3.0*in[2]*in[2] - 2.0*in[2]);\n+108\n+109 out[6][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 24.0*in[0]*in[1] -\n+6.0*in[1] -12.0*in[0] + 3.0;\n+110 out[6][1] = 0.0;\n+111 out[6][2] = 0.0;\n+112\n+113 out[7][0] = -18.0*in[0]*in[0]*in[1] + 9.0*in[0]*in[0] + 12.0*in[0]*in[1] -\n+6.0*in[0];\n+114 out[7][1] = 0.0;\n+115 out[7][2] = 0.0;\n+116\n+117 out[8][0] = 0.0;\n+118 out[8][1] = 18.0*in[0]*in[1]*in[1] - 9.0*in[1]*in[1] - 24.0*in[0]*in[1] +\n+12.0*in[1] + 6.0*in[0] - 3.0;\n+119 out[8][2] = 0.0;\n+120\n+121 out[9][0] = 0.0;\n+122 out[9][1] = 6.0*in[1] - 12.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in\n+[1]*in[1];\n+123 out[9][2] = 0.0;\n+124\n+125 out[10][0] = 0.0;\n+126 out[10][1] = 0.0;\n+127 out[10][2] = -3.0 + 6.0*in[0] + 12.0*in[2] - 24.0*in[0]*in[2] - 9.0*in\n+[2]*in[2] + 18.0*in[0]*in[2]*in[2];\n+128\n+129 out[11][0] = 0.0;\n+130 out[11][1] = 0.0;\n+131 out[11][2] = 6.0*in[2] - 12.0*in[0]*in[2] - 9.0*in[2]*in[2] + 18.0*in[0]*in\n+[2]*in[2];\n+132\n+133 out[12][0] = 3.0 - 12.0*in[0] - 6.0*in[2] + 24.0*in[0]*in[2] + 9.0*in[0]*in\n+[0] - 18.0*in[0]*in[0]*in[2];\n+134 out[12][1] = 0.0;\n+135 out[12][2] = 0.0;\n+136\n+137 out[13][0] = -6.0*in[0] + 12.0*in[0]*in[2] + 9.0*in[0]*in[0] - 18.0*in\n+[0]*in[0]*in[2];\n+138 out[13][1] = 0.0;\n+139 out[13][2] = 0.0;\n+140\n+141 out[14][0] = 0.0;\n+142 out[14][1] = 3.0 - 12.0*in[1] - 6.0*in[2] + 24.0*in[1]*in[2] + 9.0*in[1]*in\n+[1] - 18.0*in[1]*in[1]*in[2];\n+143 out[14][2] = 0.0;\n+144\n+145 out[15][0] = 0.0;\n+146 out[15][1] = -6.0*in[1] + 12.0*in[1]*in[2] + 9.0*in[1]*in[1] - 18.0*in\n+[1]*in[1]*in[2];\n+147 out[15][2] = 0.0;\n+148\n+149 out[16][0] = 0.0;\n+150 out[16][1] = 0.0;\n+151 out[16][2] = -3.0 + 6.0*in[1] + 12.0*in[2] - 24.0*in[1]*in[2] - 9.0*in\n+[2]*in[2] + 18.0*in[1]*in[2]*in[2];\n+152\n+153 out[17][0] = 0.0;\n+154 out[17][1] = 0.0;\n+155 out[17][2] = 6.0*in[2] - 12.0*in[1]*in[2] - 9.0*in[2]*in[2] + 18.0*in[1]*in\n+[2]*in[2];\n+156\n+157 out[18][0] = -9.0 + 36.0*in[0] + 18.0*in[1] + 18.0*in[2] - 72.0*in[0]*in[1]\n+- 72.0*in[0]*in[2] - 36.0*in[1]*in[2] + 144.0*in[0]*in[1]*in[2] - 27.0*in[0]*in\n+[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in[0]*in[2] - 108.0*in[0]*in[0]*in\n+[1]*in[2];\n+158 out[18][1] = 0.0;\n+159 out[18][2] = 0.0;\n+160\n+161 out[19][0] = 18.0*in[0] - 36.0*in[0]*in[1] - 36.0*in[0]*in[2] + 72.0*in\n+[0]*in[1]*in[2] - 27.0*in[0]*in[0] + 54.0*in[0]*in[0]*in[1] + 54.0*in[0]*in\n+[0]*in[2] - 108.0*in[0]*in[0]*in[1]*in[2];\n+162 out[19][1] = 0.0;\n+163 out[19][2] = 0.0;\n+164\n+165 out[20][0] = 0.0;\n+166 out[20][1] = 9.0 - 18.0*in[0] - 36.0*in[1] - 18.0*in[2] + 72.0*in[0]*in[1]\n++ 36.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[1]*in\n+[1] - 54.0*in[1]*in[1]*in[0] - 54.0*in[1]*in[1]*in[2] + 108.0*in[0]*in[1]*in\n+[1]*in[2];\n+167 out[20][2] = 0.0;\n+168\n+169 out[21][0] = 0.0;\n+170 out[21][1] = -18.0*in[1] + 36.0*in[0]*in[1] + 36.0*in[1]*in[2] - 72.0*in\n+[0]*in[1]*in[2] + 27.0*in[1]*in[1] - 54.0*in[0]*in[1]*in[1] - 54.0*in[1]*in\n+[1]*in[2] + 108.0*in[0]*in[1]*in[1]*in[2];\n+171 out[21][2] = 0.0;\n+172\n+173 out[22][0] = 0.0;\n+174 out[22][1] = 0.0;\n+175 out[22][2] = 9.0 - 18.0*in[0] - 18.0*in[1] - 36.0*in[2] + 36.0*in[0]*in[1]\n++ 72.0*in[0]*in[2] + 72.0*in[1]*in[2] - 144.0*in[0]*in[1]*in[2] + 27.0*in[2]*in\n+[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in[2]*in[2] + 108.0*in[0]*in[1]*in\n+[2]*in[2];\n+176\n+177 out[23][0] = 0.0;\n+178 out[23][1] = 0.0;\n+179 out[23][2] = -18.0*in[2] + 36.0*in[0]*in[2] + 36.0*in[1]*in[2] - 72.0*in\n+[0]*in[1]*in[2] + 27.0*in[2]*in[2] - 54.0*in[0]*in[2]*in[2] - 54.0*in[1]*in\n+[2]*in[2] + 108.0*in[0]*in[1]*in[2]*in[2];\n+180\n+181 out[24][0] = 96.0*in[0] - 144.0*in[0]*in[1] - 144.0*in[0]*in[2] + 216.0*in\n+[0]*in[1]*in[2] - 96.0*in[0]*in[0] + 144.0*in[0]*in[0]*in[1] + 144.0*in[0]*in\n+[0]*in[2] - 216.0*in[0]*in[0]*in[1]*in[2];\n+182 out[24][1] = 0.0;\n+183 out[24][2] = 0.0;\n+184\n+185 out[25][0] = 0.0;\n+186 out[25][1] = 96.0*in[1] - 144.0*in[0]*in[1] - 144.0*in[1]*in[2] + 216.0*in\n+[0]*in[1]*in[2] - 96.0*in[1]*in[1] + 144.0*in[0]*in[1]*in[1] + 144.0*in[1]*in\n+[1]*in[2] - 216.0*in[0]*in[1]*in[1]*in[2];\n+187 out[25][2] = 0.0;\n+188\n+189 out[26][0] = 0.0;\n+190 out[26][1] = 0.0;\n+191 out[26][2] = 96.0*in[2] - 144.0*in[0]*in[2] - 144.0*in[1]*in[2] + 216.0*in\n+[0]*in[1]*in[2] - 96.0*in[2]*in[2] + 144.0*in[0]*in[2]*in[2] + 144.0*in[1]*in\n+[2]*in[2] - 216.0*in[0]*in[1]*in[2]*in[2];\n+192\n+193 out[27][0] = -144.0*in[0] + 288.0*in[0]*in[1] + 216.0*in[0]*in[2] -\n+432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 288.0*in[0]*in[0]*in[1] -\n+216.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2];\n+194 out[27][1] = 0.0;\n+195 out[27][2] = 0.0;\n+196\n+197 out[28][0] = -144.0*in[0] + 216.0*in[0]*in[1] + 288.0*in[0]*in[2] -\n+432.0*in[0]*in[1]*in[2] + 144.0*in[0]*in[0] - 216.0*in[0]*in[0]*in[1] -\n+288.0*in[0]*in[0]*in[2] + 432.0*in[0]*in[0]*in[1]*in[2];\n+198 out[28][1] = 0.0;\n+199 out[28][2] = 0.0;\n+200\n+201 out[29][0] = 0.0;\n+202 out[29][1] = -144.0*in[1] + 288.0*in[0]*in[1] + 216.0*in[1]*in[2] -\n+432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 288.0*in[0]*in[1]*in[1] -\n+216.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2];\n+203 out[29][2] = 0.0;\n+204\n+205 out[30][0] = 0.0;\n+206 out[30][1] = -144.0*in[1] + 216.0*in[0]*in[1] + 288.0*in[1]*in[2] -\n+432.0*in[0]*in[1]*in[2] + 144.0*in[1]*in[1] - 216.0*in[0]*in[1]*in[1] -\n+288.0*in[1]*in[1]*in[2] + 432.0*in[0]*in[1]*in[1]*in[2];\n+207 out[30][2] = 0.0;\n+208\n+209 out[31][0] = 0.0;\n+210 out[31][1] = 0.0;\n+211 out[31][2] =-144.0*in[2] + 288.0*in[0]*in[2] + 216.0*in[1]*in[2] - 432.0*in\n+[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 288.0*in[0]*in[2]*in[2] - 216.0*in[1]*in\n+[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2];\n+212\n+213 out[32][0] = 0.0;\n+214 out[32][1] = 0.0;\n+215 out[32][2] = -144.0*in[2] + 216.0*in[0]*in[2] + 288.0*in[1]*in[2] -\n+432.0*in[0]*in[1]*in[2] + 144.0*in[2]*in[2] - 216.0*in[0]*in[2]*in[2] -\n+288.0*in[1]*in[2]*in[2] + 432.0*in[0]*in[1]*in[2]*in[2];\n+216\n+217 out[33][0] = 216.0*in[0] - 432.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in\n+[0]*in[1]*in[2] - 216.0*in[0]*in[0] + 432.0*in[0]*in[0]*in[1] + 432.0*in[0]*in\n+[0]*in[2] - 864.0*in[0]*in[0]*in[1]*in[2];\n+218 out[33][1] = 0.0;\n+219 out[33][2] = 0.0;\n+220\n+221 out[34][0] = 0.0;\n+222 out[34][1] = 216.0*in[1] - 432.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in\n+[0]*in[1]*in[2] - 216.0*in[1]*in[1] + 432.0*in[0]*in[1]*in[1] + 432.0*in[1]*in\n+[1]*in[2] - 864.0*in[0]*in[1]*in[1]*in[2];\n+223 out[34][2] = 0.0;\n+224\n+225 out[35][0] = 0.0;\n+226 out[35][1] = 0.0;\n+227 out[35][2] = 216.0*in[2] - 432.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in\n+[0]*in[1]*in[2] - 216.0*in[2]*in[2] + 432.0*in[0]*in[2]*in[2] + 432.0*in[1]*in\n+[2]*in[2] - 864.0*in[0]*in[1]*in[2]*in[2];\n+228 }\n+229\n+_\b2_\b3_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+237 std::vector& out) const\n+238 {\n+239 out.resize(36);\n+240\n+241 out[0][0][0] = sign0*(-6.0*in[0] + 4);\n+242 out[0][0][1] = 0;\n+243 out[0][0][2] = 0;\n+244 out[0][1][0] = 0;\n+245 out[0][1][1] = 0;\n+246 out[0][1][2] = 0;\n+247 out[0][2][0] = 0;\n+248 out[0][2][1] = 0;\n+249 out[0][2][2] = 0;\n+250\n+251 out[1][0][0] = sign1*(-2 + 6.0*in[0]);\n+252 out[1][0][1] = 0;\n+253 out[1][0][2] = 0;\n+254 out[1][1][0] = 0;\n+255 out[1][1][1] = 0;\n+256 out[1][1][2] = 0;\n+257 out[1][2][0] = 0;\n+258 out[1][2][1] = 0;\n+259 out[1][2][2] = 0;\n+260\n+261 out[2][0][0] = 0;\n+262 out[2][0][1] = 0;\n+263 out[2][0][2] = 0;\n+264 out[2][1][0] = 0;\n+265 out[2][1][1] = sign2*(-6.0*in[1] + 4);\n+266 out[2][1][2] = 0;\n+267 out[2][2][0] = 0;\n+268 out[2][2][1] = 0;\n+269 out[2][2][2] = 0;\n+270\n+271 out[3][0][0] = 0;\n+272 out[3][0][1] = 0;\n+273 out[3][0][2] = 0;\n+274 out[3][1][0] = 0;\n+275 out[3][1][1] = sign3*(6.0*in[1] - 2);\n+276 out[3][1][2] = 0;\n+277 out[3][2][0] = 0;\n+278 out[3][2][1] = 0;\n+279 out[3][2][2] = 0;\n+280\n+281 out[4][0][0] = 0;\n+282 out[4][0][1] = 0;\n+283 out[4][0][2] = 0;\n+284 out[4][1][0] = 0;\n+285 out[4][1][1] = 0;\n+286 out[4][1][2] = 0;\n+287 out[4][2][0] = 0;\n+288 out[4][2][1] = 0;\n+289 out[4][2][2] = sign4*(-6.0*in[2] + 4);\n+290\n+291 out[5][0][0] = 0;\n+292 out[5][0][1] = 0;\n+293 out[5][0][2] = 0;\n+294 out[5][1][0] = 0;\n+295 out[5][1][1] = 0;\n+296 out[5][1][2] = 0;\n+297 out[5][2][0] = 0;\n+298 out[5][2][1] = 0;\n+299 out[5][2][2] = sign5*(6.0*in[2] - 2);\n+300\n+301 out[6][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 24.0*in[1] - 12.0;\n+302 out[6][0][1] = -18.0*in[0]*in[0] + 24.0*in[0] - 6;\n+303 out[6][0][2] = 0.0;\n+304 out[6][1][0] = 0.0;\n+305 out[6][1][1] = 0.0;\n+306 out[6][1][2] = 0.0;\n+307 out[6][2][0] = 0.0;\n+308 out[6][2][1] = 0.0;\n+309 out[6][2][2] = 0.0;\n+310\n+311 out[7][0][0] = -36.0*in[0]*in[1] + 18.0*in[0] + 12.0*in[1] - 6.0;\n+312 out[7][0][1] = -18.0*in[0]*in[0] + 12.0*in[0];\n+313 out[7][0][2] = 0.0;\n+314 out[7][1][0] = 0.0;\n+315 out[7][1][1] = 0.0;\n+316 out[7][1][2] = 0.0;\n+317 out[7][2][0] = 0.0;\n+318 out[7][2][1] = 0.0;\n+319 out[7][2][2] = 0.0;\n+320\n+321 out[8][0][0] = 0.0;\n+322 out[8][0][1] = 0.0;\n+323 out[8][0][2] = 0.0;\n+324 out[8][1][0] = 18.0*in[1]*in[1] - 24.0*in[1] + 6.0;\n+325 out[8][1][1] = 36.0*in[0]*in[1] - 18.0*in[1] - 24.0*in[0] + 12.0;\n+326 out[8][1][2] = 0.0;\n+327 out[8][2][0] = 0.0;\n+328 out[8][2][1] = 0.0;\n+329 out[8][2][2] = 0.0;\n+330\n+331 out[9][0][0] = 0.0;\n+332 out[9][0][1] = 0.0;\n+333 out[9][0][2] = 0.0;\n+334 out[9][1][0] = -12.0*in[1] + 18.0*in[1]*in[1];\n+335 out[9][1][1] = 6.0 - 12.0*in[0] - 18.0*in[1] + 36.0*in[0]*in[1];;\n+336 out[9][1][2] = 0.0;\n+337 out[9][2][0] = 0.0;\n+338 out[9][2][1] = 0.0;\n+339 out[9][2][2] = 0.0;\n+340\n+341 out[10][0][0] = 0.0;\n+342 out[10][0][1] = 0.0;\n+343 out[10][0][2] = 0.0;\n+344 out[10][1][0] = 0.0;\n+345 out[10][1][1] = 0.0;\n+346 out[10][1][2] = 0.0;\n+347 out[10][2][0] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2];\n+348 out[10][2][1] = 0.0;\n+349 out[10][2][2] = 12.0 - 24.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2];\n+350\n+351 out[11][0][0] = 0.0;\n+352 out[11][0][1] = 0.0;\n+353 out[11][0][2] = 0.0;\n+354 out[11][1][0] = 0.0;\n+355 out[11][1][1] = 0.0;\n+356 out[11][1][2] = 0.0;\n+357 out[11][2][0] = -12.0*in[2] + 18.0*in[2]*in[2];\n+358 out[11][2][1] = 0.0;\n+359 out[11][2][2] = 6.0 - 12.0*in[0] - 18.0*in[2] + 36.0*in[0]*in[2];\n+360\n+361 out[12][0][0] = -12.0 + 24.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2];\n+362 out[12][0][1] = 0.0;\n+363 out[12][0][2] = -6.0 + 24.0*in[0] - 18.0*in[0]*in[0];\n+364 out[12][1][0] = 0.0;\n+365 out[12][1][1] = 0.0;\n+366 out[12][1][2] = 0.0;\n+367 out[12][2][0] = 0.0;\n+368 out[12][2][1] = 0.0;\n+369 out[12][2][2] = 0.0;\n+370\n+371 out[13][0][0] = -6.0 + 12.0*in[2] + 18.0*in[0] - 36.0*in[0]*in[2];\n+372 out[13][0][1] = 0.0;\n+373 out[13][0][2] = 12.0*in[0] - 18.0*in[0]*in[0];\n+374 out[13][1][0] = 0.0;\n+375 out[13][1][1] = 0.0;\n+376 out[13][1][2] = 0.0;\n+377 out[13][2][0] = 0.0;\n+378 out[13][2][1] = 0.0;\n+379 out[13][2][2] = 0.0;\n+380\n+381 out[14][0][0] = 0.0;\n+382 out[14][0][1] = 0.0;\n+383 out[14][0][2] = 0.0;\n+384 out[14][1][0] = 0.0;\n+385 out[14][1][1] = -12.0 + 24.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2];\n+386 out[14][1][2] = -6.0 + 24.0*in[1] - 18.0*in[1]*in[1];\n+387 out[14][2][0] = 0.0;\n+388 out[14][2][1] = 0.0;\n+389 out[14][2][2] = 0.0;\n+390\n+391 out[15][0][0] = 0.0;\n+392 out[15][0][1] = 0.0;\n+393 out[15][0][2] = 0.0;\n+394 out[15][1][0] = 0.0;\n+395 out[15][1][1] = -6.0 + 12.0*in[2] + 18.0*in[1] - 36.0*in[1]*in[2];\n+396 out[15][1][2] = 12.0*in[1] - 18.0*in[1]*in[1];\n+397 out[15][2][0] = 0.0;\n+398 out[15][2][1] = 0.0;\n+399 out[15][2][2] = 0.0;\n+400\n+401 out[16][0][0] = 0.0;\n+402 out[16][0][1] = 0.0;\n+403 out[16][0][2] = 0.0;\n+404 out[16][1][0] = 0.0;\n+405 out[16][1][1] = 0.0;\n+406 out[16][1][2] = 0.0;\n+407 out[16][2][0] = 0.0;\n+408 out[16][2][1] = 6.0 - 24.0*in[2] + 18.0*in[2]*in[2];\n+409 out[16][2][2] = 12.0 - 24.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2];\n+410\n+411 out[17][0][0] = 0.0;\n+412 out[17][0][1] = 0.0;\n+413 out[17][0][2] = 0.0;\n+414 out[17][1][0] = 0.0;\n+415 out[17][1][1] = 0.0;\n+416 out[17][1][2] = 0.0;\n+417 out[17][2][0] = 0.0;\n+418 out[17][2][1] = -12.0*in[2] + 18.0*in[2]*in[2];\n+419 out[17][2][2] = 6.0 - 12.0*in[1] - 18.0*in[2] + 36.0*in[1]*in[2];\n+420\n+421 out[18][0][0] = 36.0 - 72.0*in[1] - 72.0*in[2] + 144.0*in[1]*in[2] -\n+54.0*in[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2];\n+422 out[18][0][1] = 18.0 - 72.0*in[0] - 36.0*in[2] + 144.0*in[0]*in[2] +\n+54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[2];\n+423 out[18][0][2] = 18.0 - 72.0*in[0] - 36.0*in[1] + 144.0*in[0]*in[1] +\n+54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1];\n+424 out[18][1][0] = 0.0;\n+425 out[18][1][1] = 0.0;\n+426 out[18][1][2] = 0.0;\n+427 out[18][2][0] = 0.0;\n+428 out[18][2][1] = 0.0;\n+429 out[18][2][2] = 0.0;\n+430\n+431 out[19][0][0] = 18 - 36.0*in[1] - 36.0*in[2] + 72.0*in[1]*in[2] - 54.0*in\n+[0] + 108.0*in[0]*in[1] + 108.0*in[0]*in[2] - 216.0*in[0]*in[1]*in[2];\n+432 out[19][0][1] = -36.0*in[0] + 72.0*in[0]*in[2] + 54.0*in[0]*in[0] -\n+108.0*in[0]*in[0]*in[2];\n+433 out[19][0][2] = -36.0*in[0] + 72.0*in[0]*in[1] + 54.0*in[0]*in[0] -\n+108.0*in[0]*in[0]*in[1];\n+434 out[19][1][0] = 0.0;\n+435 out[19][1][1] = 0.0;\n+436 out[19][1][2] = 0.0;\n+437 out[19][2][0] = 0.0;\n+438 out[19][2][1] = 0.0;\n+439 out[19][2][2] = 0.0;\n+440\n+441 out[20][0][0] = 0.0;\n+442 out[20][0][1] = 0.0;\n+443 out[20][0][2] = 0.0;\n+444 out[20][1][0] = -18.0 + 72.0*in[1] + 36.0*in[2] - 144.0*in[1]*in[2] -\n+54.0*in[1]*in[1] + 108.0*in[1]*in[1]*in[2];\n+445 out[20][1][1] = -36.0 + 72.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] +\n+54.0*in[1] - 108.0*in[1]*in[0] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];\n+446 out[20][1][2] = -18.0 + 36.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] -\n+54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1];\n+447 out[20][2][0] = 0.0;\n+448 out[20][2][1] = 0.0;\n+449 out[20][2][2] = 0.0;\n+450\n+451 out[21][0][0] = 0.0;\n+452 out[21][0][1] = 0.0;\n+453 out[21][0][2] = 0.0;\n+454 out[21][1][0] = 36.0*in[1] - 72.0*in[1]*in[2] - 54.0*in[1]*in[1] + 108.0*in\n+[1]*in[1]*in[2];\n+455 out[21][1][1] = -18.0 + 36.0*in[0] + 36.0*in[2] - 72.0*in[0]*in[2] +\n+54.0*in[1] - 108.0*in[0]*in[1] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];\n+456 out[21][1][2] = 36.0*in[1] - 72.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in\n+[0]*in[1]*in[1];\n+457 out[21][2][0] = 0.0;\n+458 out[21][2][1] = 0.0;\n+459 out[21][2][2] = 0.0;\n+460\n+461 out[22][0][0] = 0.0;\n+462 out[22][0][1] = 0.0;\n+463 out[22][0][2] = 0.0;\n+464 out[22][1][0] = 0.0;\n+465 out[22][1][1] = 0.0;\n+466 out[22][1][2] = 0.0;\n+467 out[22][2][0] = -18.0 + 36.0*in[1] + 72.0*in[2] - 144.0*in[1]*in[2] -\n+54.0*in[2]*in[2] + 108.0*in[1]*in[2]*in[2];\n+468 out[22][2][1] = -18.0 + 36.0*in[0] + 72.0*in[2] - 144.0*in[0]*in[2] -\n+54.0*in[2]*in[2] + 108.0*in[0]*in[2]*in[2];\n+469 out[22][2][2] = -36.0 + 72.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] +\n+54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];\n+470\n+471 out[23][0][0] = 0.0;\n+472 out[23][0][1] = 0.0;\n+473 out[23][0][2] = 0.0;\n+474 out[23][1][0] = 0.0;\n+475 out[23][1][1] = 0.0;\n+476 out[23][1][2] = 0.0;\n+477 out[23][2][0] = 36.0*in[2] - 72.0*in[1]*in[2] - 54.0*in[2]*in[2] + 108.0*in\n+[1]*in[2]*in[2];\n+478 out[23][2][1] = 36.0*in[2] - 72.0*in[0]*in[2] - 54.0*in[2]*in[2] + 108.0*in\n+[0]*in[2]*in[2];\n+479 out[23][2][2] = -18.0 + 36.0*in[0] + 36.0*in[1] - 72.0*in[0]*in[1] +\n+54.0*in[2] - 108.0*in[0]*in[2] - 108.0*in[1]*in[2] + 216.0*in[0]*in[1]*in[2];\n+480\n+481 out[24][0][0] = 96.0 - 144.0*in[1] - 144.0*in[2] + 216.0*in[1]*in[2] -\n+192.0*in[0] + 288.0*in[0]*in[1] + 288.0*in[0]*in[2] - 432.0*in[0]*in[1]*in[2];\n+482 out[24][0][1] = -144.0*in[0] + 216.0*in[0]*in[2] + 144.0*in[0]*in[0] -\n+216.0*in[0]*in[0]*in[2];\n+483 out[24][0][2] = -144.0*in[0] + 216.0*in[0]*in[1] + 144.0*in[0]*in[0] -\n+216.0*in[0]*in[0]*in[1];\n+484 out[24][1][0] = 0.0;\n+485 out[24][1][1] = 0.0;\n+486 out[24][1][2] = 0.0;\n+487 out[24][2][0] = 0.0;\n+488 out[24][2][1] = 0.0;\n+489 out[24][2][2] = 0.0;\n+490\n+491 out[25][0][0] = 0.0;\n+492 out[25][0][1] = 0.0;\n+493 out[25][0][2] = 0.0;\n+494 out[25][1][0] = -144.0*in[1] + 216.0*in[1]*in[2] + 144.0*in[1]*in[1] -\n+216.0*in[1]*in[1]*in[2];\n+495 out[25][1][1] = 96.0 - 144.0*in[0] - 144.0*in[2] + 216.0*in[0]*in[2] -\n+192.0*in[1] + 288.0*in[0]*in[1] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2];\n+496 out[25][1][2] = -144.0*in[1] + 216.0*in[0]*in[1] + 144.0*in[1]*in[1] -\n+216.0*in[0]*in[1]*in[1];\n+497 out[25][2][0] = 0.0;\n+498 out[25][2][1] = 0.0;\n+499 out[25][2][2] = 0.0;\n+500\n+501 out[26][0][0] = 0.0;\n+502 out[26][0][1] = 0.0;\n+503 out[26][0][2] = 0.0;\n+504 out[26][1][0] = 0.0;\n+505 out[26][1][1] = 0.0;\n+506 out[26][1][2] = 0.0;\n+507 out[26][2][0] = -144.0*in[2] + 216.0*in[1]*in[2] + 144.0*in[2]*in[2] -\n+216.0*in[1]*in[2]*in[2];\n+508 out[26][2][1] = -144.0*in[2] + 216.0*in[0]*in[2] + 144.0*in[2]*in[2] -\n+216.0*in[0]*in[2]*in[2];\n+509 out[26][2][2] = 96.0 - 144.0*in[0] - 144.0*in[1] + 216.0*in[0]*in[1] -\n+192.0*in[2] + 288.0*in[0]*in[2] + 288.0*in[1]*in[2] - 432.0*in[0]*in[1]*in[2];\n+510\n+511 out[27][0][0] = -144.0 + 288.0*in[1] + 216.0*in[2] - 432.0*in[1]*in[2] +\n+288.0*in[0] - 576.0*in[0]*in[1] - 432.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2];\n+512 out[27][0][1] = 288.0*in[0] - 432.0*in[0]*in[2] - 288.0*in[0]*in[0] +\n+432.0*in[0]*in[0]*in[2];\n+513 out[27][0][2] = 216.0*in[0] - 432.0*in[0]*in[1] - 216.0*in[0]*in[0] +\n+432.0*in[0]*in[0]*in[1];\n+514 out[27][1][0] = 0.0;\n+515 out[27][1][1] = 0.0;\n+516 out[27][1][2] = 0.0;\n+517 out[27][2][0] = 0.0;\n+518 out[27][2][1] = 0.0;\n+519 out[27][2][2] = 0.0;\n+520\n+521 out[28][0][0] = -144.0 + 216.0*in[1] + 288.0*in[2] - 432.0*in[1]*in[2] +\n+288.0*in[0] - 432.0*in[0]*in[1] - 576.0*in[0]*in[2] + 864.0*in[0]*in[1]*in[2];\n+522 out[28][0][1] = 216.0*in[0] - 432.0*in[0]*in[2] - 216.0*in[0]*in[0] +\n+432.0*in[0]*in[0]*in[2];\n+523 out[28][0][2] = 288.0*in[0] - 432.0*in[0]*in[1] - 288.0*in[0]*in[0] +\n+432.0*in[0]*in[0]*in[1];\n+524 out[28][1][0] = 0.0;\n+525 out[28][1][1] = 0.0;\n+526 out[28][1][2] = 0.0;\n+527 out[28][2][0] = 0.0;\n+528 out[28][2][1] = 0.0;\n+529 out[28][2][2] = 0.0;\n+530\n+531 out[29][0][0] = 0.0;\n+532 out[29][0][1] = 0.0;\n+533 out[29][0][2] = 0.0;\n+534 out[29][1][0] = 288.0*in[1] - 432.0*in[1]*in[2] - 288.0*in[1]*in[1] +\n+432.0*in[1]*in[1]*in[2];\n+535 out[29][1][1] = -144.0 + 288.0*in[0] + 216.0*in[2] - 432.0*in[0]*in[2] +\n+288.0*in[1] - 576.0*in[0]*in[1] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];\n+536 out[29][1][2] = 216.0*in[1] - 432.0*in[0]*in[1] - 216.0*in[1]*in[1] +\n+432.0*in[0]*in[1]*in[1];\n+537 out[29][2][0] = 0.0;\n+538 out[29][2][1] = 0.0;\n+539 out[29][2][2] = 0.0;\n+540\n+541 out[30][0][0] = 0.0;\n+542 out[30][0][1] = 0.0;\n+543 out[30][0][2] = 0.0;\n+544 out[30][1][0] = 216.0*in[1] - 432.0*in[1]*in[2] - 216.0*in[1]*in[1] +\n+432.0*in[1]*in[1]*in[2];\n+545 out[30][1][1] = -144.0 + 216.0*in[0] + 288.0*in[2] - 432.0*in[0]*in[2] +\n+288.0*in[1] - 432.0*in[0]*in[1] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];\n+546 out[30][1][2] = 288.0*in[1] - 432.0*in[0]*in[1] - 288.0*in[1]*in[1] +\n+432.0*in[0]*in[1]*in[1];\n+547 out[30][2][0] = 0.0;\n+548 out[30][2][1] = 0.0;\n+549 out[30][2][2] = 0.0;\n+550\n+551 out[31][0][0] = 0.0;\n+552 out[31][0][1] = 0.0;\n+553 out[31][0][2] = 0.0;\n+554 out[31][1][0] = 0.0;\n+555 out[31][1][1] = 0.0;\n+556 out[31][1][2] = 0.0;\n+557 out[31][2][0] = 288.0*in[2] - 432.0*in[1]*in[2] - 288.0*in[2]*in[2] +\n+432.0*in[1]*in[2]*in[2];\n+558 out[31][2][1] = 216.0*in[2] - 432.0*in[0]*in[2] - 216.0*in[2]*in[2] +\n+432.0*in[0]*in[2]*in[2];\n+559 out[31][2][2] = -144.0 + 288.0*in[0] + 216.0*in[1] - 432.0*in[0]*in[1] +\n+288.0*in[2] - 576.0*in[0]*in[2] - 432.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];\n+560\n+561 out[32][0][0] = 0.0;\n+562 out[32][0][1] = 0.0;\n+563 out[32][0][2] = 0.0;\n+564 out[32][1][0] = 0.0;\n+565 out[32][1][1] = 0.0;\n+566 out[32][1][2] = 0.0;\n+567 out[32][2][0] = 216.0*in[2] - 432.0*in[1]*in[2] - 216.0*in[2]*in[2] +\n+432.0*in[1]*in[2]*in[2];\n+568 out[32][2][1] = 288.0*in[2] - 432.0*in[0]*in[2] - 288.0*in[2]*in[2] +\n+432.0*in[0]*in[2]*in[2];\n+569 out[32][2][2] = -144.0 + 216.0*in[0] + 288.0*in[1] - 432.0*in[0]*in[1] +\n+288.0*in[2] - 432.0*in[0]*in[2] - 576.0*in[1]*in[2] + 864.0*in[0]*in[1]*in[2];\n+570\n+571 out[33][0][0] = 216.0 - 432.0*in[1] - 432.0*in[2] + 864.0*in[1]*in[2] -\n+432.0*in[0] + 864.0*in[0]*in[1] + 864.0*in[0]*in[2] - 1728.0*in[0]*in[1]*in[2];\n+572 out[33][0][1] = -432.0*in[0] + 864.0*in[0]*in[2] + 432.0*in[0]*in[0] -\n+864.0*in[0]*in[0]*in[2];\n+573 out[33][0][2] = -432.0*in[0] + 864.0*in[0]*in[1] + 432.0*in[0]*in[0] -\n+864.0*in[0]*in[0]*in[1];\n+574 out[33][1][0] = 0.0;\n+575 out[33][1][1] = 0.0;\n+576 out[33][1][2] = 0.0;\n+577 out[33][2][0] = 0.0;\n+578 out[33][2][1] = 0.0;\n+579 out[33][2][2] = 0.0;\n+580\n+581 out[34][0][0] = 0.0;\n+582 out[34][0][1] = 0.0;\n+583 out[34][0][2] = 0.0;\n+584 out[34][1][0] = -432.0*in[1] + 864.0*in[1]*in[2] + 432.0*in[1]*in[1] -\n+864.0*in[1]*in[1]*in[2];\n+585 out[34][1][1] = 216.0 - 432.0*in[0] - 432.0*in[2] + 864.0*in[0]*in[2] -\n+432.0*in[1] + 864.0*in[0]*in[1] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2];\n+586 out[34][1][2] = -432.0*in[1] + 864.0*in[0]*in[1] + 432.0*in[1]*in[1] -\n+864.0*in[0]*in[1]*in[1];\n+587 out[34][2][0] = 0.0;\n+588 out[34][2][1] = 0.0;\n+589 out[34][2][2] = 0.0;\n+590\n+591 out[35][0][0] = 0.0;\n+592 out[35][0][1] = 0.0;\n+593 out[35][0][2] = 0.0;\n+594 out[35][1][0] = 0.0;\n+595 out[35][1][1] = 0.0;\n+596 out[35][1][2] = 0.0;\n+597 out[35][2][0] = -432.0*in[2] + 864.0*in[1]*in[2] + 432.0*in[2]*in[2] -\n+864.0*in[1]*in[2]*in[2];\n+598 out[35][2][1] = -432.0*in[2] + 864.0*in[0]*in[2] + 432.0*in[2]*in[2] -\n+864.0*in[0]*in[2]*in[2];\n+599 out[35][2][2] = 216.0 - 432.0*in[0] - 432.0*in[1] + 864.0*in[0]*in[1] -\n+432.0*in[2] + 864.0*in[0]*in[2] + 864.0*in[1]*in[2] - 1728.0*in[0]*in[1]*in[2];\n+600 }\n+601\n+_\b6_\b0_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+604 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+605 std::vector& out) const // return value\n+606 {\n+607 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+608 if (totalOrder == 0) {\n+609 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+610 } else {\n+611 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+612 }\n+613 }\n+614\n+_\b6_\b1_\b6 unsigned int _\bo_\br_\bd_\be_\br () const\n+617 {\n+618 return 3;\n+619 }\n+620\n+621 private:\n+622 R sign0, sign1, sign2, sign3, sign4, sign5;\n+623 };\n+624}\n+625#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Brezzi-Douglas-Marini shape functions on hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM1Cube3DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:603\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n+3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< BDM1Cube3DLocalBasis< D, R >,\n-BDM1Cube3DLocalCoefficients, BDM1Cube3DLocalInterpolation<\n-BDM1Cube3DLocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM1Cube3DLocalFiniteElement(int s)\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:69\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT1Cube3DLocalBasis(unsigned int s=0)\n Make set number s, where 0 <= s < 64.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:236\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:616\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas1cube3dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference
    \n+
    raviartthomas1cube3dlocalcoefficients.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n #include <vector>
    \n-#include "../../common/localkey.hh"
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Simplex2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-1 elements on triangles. More...
    class  Dune::RT1Cube3DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference\n+raviartthomas1cube3dlocalcoefficients.hh File Reference\n #include \n #include \n #include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Brezzi-Douglas-Marini-1 elements on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Raviart-Thomas-1 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas1cube3dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,85 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1simplex2dlocalcoefficients.hh
    \n+
    raviartthomas1cube3dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n
    8#include <cstddef>
    \n
    9#include <vector>
    \n
    10
    \n
    11#include "../../common/localkey.hh"
    \n
    12
    \n
    13namespace Dune
    \n
    14{
    \n
    15
    \n
    \n-\n+\n
    24 {
    \n
    25
    \n
    26 public:
    \n
    \n-\n+\n
    29 {
    \n-
    30 for (std::size_t i=0; i<3; i++)
    \n+
    30 for (std::size_t i = 0; i < 6; i++)
    \n
    31 {
    \n
    32 li[i] = LocalKey(i,1,0);
    \n-
    33 li[3 + i] = LocalKey(i,1,1);
    \n-
    34 }
    \n-
    35 }
    \n-
    \n-
    36
    \n-
    \n-
    38 std::size_t size () const
    \n-
    39 {
    \n-
    40 return 6;
    \n-
    41 }
    \n-
    \n-
    42
    \n-
    \n-
    44 const LocalKey& localKey (std::size_t i) const
    \n-
    45 {
    \n-
    46 return li[i];
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    49 private:
    \n-
    50 std::vector<LocalKey> li;
    \n-
    51 };
    \n+
    33 li[i + 6] = LocalKey(i,1,1);
    \n+
    34 li[i + 12] = LocalKey(i,1,2);
    \n+
    35 li[i + 18] = LocalKey(i,1,3);
    \n+
    36 }
    \n+
    37
    \n+
    38 for (std::size_t i = 0; i < 12; i++)
    \n+
    39 {
    \n+
    40 li[i + 24] = LocalKey(0,0,i);
    \n+
    41 }
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    \n+
    45 std::size_t size () const
    \n+
    46 {
    \n+
    47 return 36;
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    \n+
    51 const LocalKey& localKey (std::size_t i) const
    \n+
    52 {
    \n+
    53 return li[i];
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    56 private:
    \n+
    57 std::vector<LocalKey> li;
    \n+
    58 };
    \n
    \n-
    52}
    \n-
    53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n+
    59}
    \n+
    60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Layout map for Brezzi-Douglas-Marini-1 elements on triangles.
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:24
    \n-
    BDM1Simplex2DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:28
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:44
    \n-
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:38
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for Raviart-Thomas-1 elements on quadrilaterals.
    Definition raviartthomas1cube3dlocalcoefficients.hh:24
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas1cube3dlocalcoefficients.hh:45
    \n+
    RT1Cube3DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas1cube3dlocalcoefficients.hh:28
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas1cube3dlocalcoefficients.hh:51
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,79 +1,83 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n-brezzidouglasmarini1simplex2dlocalcoefficients.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+raviartthomas1cube3dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH\n 7\n 8#include \n 9#include \n 10\n 11#include \"../../common/localkey.hh\"\n 12\n 13namespace _\bD_\bu_\bn_\be\n 14{\n 15\n-_\b2_\b3 class _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+_\b2_\b3 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n 24 {\n 25\n 26 public:\n-_\b2_\b8 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(6)\n+_\b2_\b8 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(36)\n 29 {\n-30 for (std::size_t i=0; i<3; i++)\n+30 for (std::size_t i = 0; i < 6; i++)\n 31 {\n 32 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-33 li[3 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-34 }\n-35 }\n-36\n-_\b3_\b8 std::size_t _\bs_\bi_\bz_\be () const\n+33 li[i + 6] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+34 li[i + 12] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n+35 li[i + 18] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,3);\n+36 }\n+37\n+38 for (std::size_t i = 0; i < 12; i++)\n 39 {\n-40 return 6;\n+40 li[i + 24] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n 41 }\n-42\n-_\b4_\b4 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-45 {\n-46 return li[i];\n-47 }\n-48\n-49 private:\n-50 std::vector li;\n-51 };\n-52}\n-53#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n+42 }\n+43\n+_\b4_\b5 std::size_t _\bs_\bi_\bz_\be () const\n+46 {\n+47 return 36;\n+48 }\n+49\n+_\b5_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+52 {\n+53 return li[i];\n+54 }\n+55\n+56 private:\n+57 std::vector li;\n+58 };\n+59}\n+60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-1 elements on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-BDM1Simplex2DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:38\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n Describe position of one degree of freedom.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT1Cube3DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:51\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1simplex2dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas3cube2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1simplex2dlocalbasis.hh File Reference
    \n+
    raviartthomas3cube2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <bitset>
    \n-#include <numeric>
    \n+
    #include <cstddef>
    \n #include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Simplex2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on the reference triangle. More...
    class  Dune::RT3Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-3 elements on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1simplex2dlocalbasis.hh File Reference\n-#include \n-#include \n-#include \n+raviartthomas3cube2dlocalcoefficients.hh File Reference\n+#include \n #include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n- triangle. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Raviart-Thomas-3 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1simplex2dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas3cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,215 +70,85 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1simplex2dlocalbasis.hh
    \n+
    raviartthomas3cube2dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <bitset>
    \n-
    10#include <numeric>
    \n-
    11#include <vector>
    \n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include "../../common/localkey.hh"
    \n
    12
    \n-
    13#include <dune/common/fmatrix.hh>
    \n-
    14
    \n-
    15#include "../../common/localbasis.hh"
    \n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    28 template<class D, class R>
    \n-
    \n-\n-
    30 {
    \n-
    31
    \n-
    32 public:
    \n-
    33 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    34 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    35
    \n-
    \n-\n-
    38 {
    \n-
    39 for (size_t i=0; i<3; i++)
    \n-
    40 sign_[i] = 1.0;
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    \n+\n+
    23 {
    \n+
    24
    \n+
    25 public:
    \n+
    \n+\n+
    28 {
    \n+
    29 for (std::size_t i = 0; i < 4; i++)
    \n+
    30 {
    \n+
    31 li[4*i] = LocalKey(i,1,0);
    \n+
    32 li[4*i + 1] = LocalKey(i,1,1);
    \n+
    33 li[4*i + 2] = LocalKey(i,1,2);
    \n+
    34 li[4*i + 3] = LocalKey(i,1,3);
    \n+
    35 }
    \n+
    36
    \n+
    37 for (std::size_t i=0; i<24; i++)
    \n+
    38 {
    \n+
    39 li[16 + i] = LocalKey(0,0,i);
    \n+
    40 }
    \n
    41 }
    \n
    \n
    42
    \n-
    \n-
    48 BDM1Simplex2DLocalBasis (std::bitset<3> s)
    \n-
    49 {
    \n-
    50 for (size_t i=0; i<3; i++)
    \n-
    51 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-
    55 unsigned int size () const
    \n-
    56 {
    \n-
    57 return 6;
    \n-
    58 }
    \n+
    \n+
    44 std::size_t size () const
    \n+
    45 {
    \n+
    46 return 40;
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    \n+
    50 const LocalKey& localKey (std::size_t i) const
    \n+
    51 {
    \n+
    52 return li[i];
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    55 private:
    \n+
    56 std::vector<LocalKey> li;
    \n+
    57 };
    \n
    \n+
    58}
    \n
    59
    \n-
    \n-
    66 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    67 std::vector<typename Traits::RangeType>& out) const
    \n-
    68 {
    \n-
    69 out.resize(6);
    \n-
    70
    \n-
    71 out[0][0] = sign_[0]*in[0];
    \n-
    72 out[0][1] = sign_[0]*(in[1] - 1.0);
    \n-
    73 out[1][0] = sign_[1]*(in[0] - 1.0);
    \n-
    74 out[1][1] = sign_[1]*in[1];
    \n-
    75 out[2][0] = sign_[2]*in[0];
    \n-
    76 out[2][1] = sign_[2]*in[1];
    \n-
    77 out[3][0] = 3.0*in[0];
    \n-
    78 out[3][1] = 3.0 - 6.0*in[0] - 3.0*in[1];
    \n-
    79 out[4][0] = -3.0 + 3.0*in[0] + 6.0*in[1];
    \n-
    80 out[4][1] = -3.0*in[1];
    \n-
    81 out[5][0] = -3.0*in[0];
    \n-
    82 out[5][1] = 3.0*in[1];
    \n-
    83 }
    \n-
    \n-
    84
    \n-
    \n-
    91 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    92 std::vector<typename Traits::JacobianType>& out) const
    \n-
    93 {
    \n-
    94 out.resize(6);
    \n-
    95
    \n-
    96 out[0][0][0] = sign_[0];
    \n-
    97 out[0][0][1] = 0.0;
    \n-
    98 out[0][1][0] = 0.0;
    \n-
    99 out[0][1][1] = sign_[0];
    \n-
    100
    \n-
    101 out[1][0][0] = sign_[1];
    \n-
    102 out[1][0][1] = 0.0;
    \n-
    103 out[1][1][0] = 0.0;
    \n-
    104 out[1][1][1] = sign_[1];
    \n-
    105
    \n-
    106 out[2][0][0] = sign_[2];
    \n-
    107 out[2][0][1] = 0.0;
    \n-
    108 out[2][1][0] = 0.0;
    \n-
    109 out[2][1][1] = sign_[2];
    \n-
    110
    \n-
    111 out[3][0][0] = 3.0;
    \n-
    112 out[3][0][1] = 0.0;
    \n-
    113 out[3][1][0] = -6.0;
    \n-
    114 out[3][1][1] = -3.0;
    \n-
    115
    \n-
    116 out[4][0][0] = 3.0;
    \n-
    117 out[4][0][1] = 6.0;
    \n-
    118 out[4][1][0] = 0.0;
    \n-
    119 out[4][1][1] = -3.0;
    \n-
    120
    \n-
    121 out[5][0][0] = -3.0;
    \n-
    122 out[5][0][1] = 0.0;
    \n-
    123 out[5][1][0] = 0.0;
    \n-
    124 out[5][1][1] = 3.0;
    \n-
    125 }
    \n-
    \n-
    126
    \n-
    \n-
    128 void partial (const std::array<unsigned int, 2>& order,
    \n-
    129 const typename Traits::DomainType& in, // position
    \n-
    130 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    131 {
    \n-
    132 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    133 if (totalOrder == 0) {
    \n-
    134 evaluateFunction(in, out);
    \n-
    135 } else if (totalOrder == 1) {
    \n-
    136 out.resize(size());
    \n-
    137 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    138
    \n-
    139 switch (direction) {
    \n-
    140 case 0:
    \n-
    141 out[0][0] = sign_[0];
    \n-
    142 out[0][1] = 0.0;
    \n-
    143
    \n-
    144 out[1][0] = sign_[1];
    \n-
    145 out[1][1] = 0.0;
    \n-
    146
    \n-
    147 out[2][0] = sign_[2];
    \n-
    148 out[2][1] = 0.0;
    \n-
    149
    \n-
    150 out[3][0] = 3.0;
    \n-
    151 out[3][1] = -6.0;
    \n-
    152
    \n-
    153 out[4][0] = 3.0;
    \n-
    154 out[4][1] = 0.0;
    \n-
    155
    \n-
    156 out[5][0] = -3.0;
    \n-
    157 out[5][1] = 0.0;
    \n-
    158 break;
    \n-
    159 case 1:
    \n-
    160 out[0][0] = 0.0;
    \n-
    161 out[0][1] = sign_[0];
    \n-
    162
    \n-
    163 out[1][0] = 0.0;
    \n-
    164 out[1][1] = sign_[1];
    \n-
    165
    \n-
    166 out[2][0] = 0.0;
    \n-
    167 out[2][1] = sign_[2];
    \n-
    168
    \n-
    169 out[3][0] = 0.0;
    \n-
    170 out[3][1] = -3.0;
    \n-
    171
    \n-
    172 out[4][0] = 6.0;
    \n-
    173 out[4][1] = -3.0;
    \n-
    174
    \n-
    175 out[5][0] = 0.0;
    \n-
    176 out[5][1] = 3.0;
    \n-
    177 break;
    \n-
    178 default:
    \n-
    179 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    180 }
    \n-
    181 } else {
    \n-
    182 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    183 }
    \n-
    184 }
    \n-
    \n-
    185
    \n-
    \n-
    187 unsigned int order () const
    \n-
    188 {
    \n-
    189 return 1;
    \n-
    190 }
    \n-
    \n-
    191
    \n-
    192 private:
    \n-
    193 std::array<R,3> sign_;
    \n-
    194 };
    \n-
    \n-
    195}
    \n-
    196#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
    \n+
    60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:30
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:91
    \n-
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:55
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:66
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:34
    \n-
    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
    \n-
    BDM1Simplex2DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:37
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:187
    \n-
    BDM1Simplex2DLocalBasis(std::bitset< 3 > s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:48
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for Raviart-Thomas-3 elements on quadrilaterals.
    Definition raviartthomas3cube2dlocalcoefficients.hh:23
    \n+
    RT3Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas3cube2dlocalcoefficients.hh:27
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas3cube2dlocalcoefficients.hh:44
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas3cube2dlocalcoefficients.hh:50
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,228 +1,83 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n-brezzidouglasmarini1simplex2dlocalbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas3cube2dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n+8#include \n+9#include \n+10\n+11#include \"../../common/localkey.hh\"\n 12\n-13#include \n-14\n-15#include \"../../common/localbasis.hh\"\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-28 template\n-_\b2_\b9 class _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+_\b2_\b2 class _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+23 {\n+24\n+25 public:\n+_\b2_\b7 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(40)\n+28 {\n+29 for (std::size_t i = 0; i < 4; i++)\n 30 {\n-31\n-32 public:\n-33 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n-FieldVector,\n-_\b3_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-35\n-_\b3_\b7 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs ()\n+31 li[4*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+32 li[4*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+33 li[4*i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n+34 li[4*i + 3] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,3);\n+35 }\n+36\n+37 for (std::size_t i=0; i<24; i++)\n 38 {\n-39 for (size_t i=0; i<3; i++)\n-40 sign_[i] = 1.0;\n+39 li[16 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n+40 }\n 41 }\n 42\n-_\b4_\b8 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<3> s)\n-49 {\n-50 for (size_t i=0; i<3; i++)\n-51 sign_[i] = s[i] ? -1.0 : 1.0;\n-52 }\n-53\n-_\b5_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-56 {\n-57 return 6;\n-58 }\n+_\b4_\b4 std::size_t _\bs_\bi_\bz_\be () const\n+45 {\n+46 return 40;\n+47 }\n+48\n+_\b5_\b0 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+51 {\n+52 return li[i];\n+53 }\n+54\n+55 private:\n+56 std::vector li;\n+57 };\n+58}\n 59\n-_\b6_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-67 std::vector& out) const\n-68 {\n-69 out.resize(6);\n-70\n-71 out[0][0] = sign_[0]*in[0];\n-72 out[0][1] = sign_[0]*(in[1] - 1.0);\n-73 out[1][0] = sign_[1]*(in[0] - 1.0);\n-74 out[1][1] = sign_[1]*in[1];\n-75 out[2][0] = sign_[2]*in[0];\n-76 out[2][1] = sign_[2]*in[1];\n-77 out[3][0] = 3.0*in[0];\n-78 out[3][1] = 3.0 - 6.0*in[0] - 3.0*in[1];\n-79 out[4][0] = -3.0 + 3.0*in[0] + 6.0*in[1];\n-80 out[4][1] = -3.0*in[1];\n-81 out[5][0] = -3.0*in[0];\n-82 out[5][1] = 3.0*in[1];\n-83 }\n-84\n-_\b9_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-92 std::vector& out) const\n-93 {\n-94 out.resize(6);\n-95\n-96 out[0][0][0] = sign_[0];\n-97 out[0][0][1] = 0.0;\n-98 out[0][1][0] = 0.0;\n-99 out[0][1][1] = sign_[0];\n-100\n-101 out[1][0][0] = sign_[1];\n-102 out[1][0][1] = 0.0;\n-103 out[1][1][0] = 0.0;\n-104 out[1][1][1] = sign_[1];\n-105\n-106 out[2][0][0] = sign_[2];\n-107 out[2][0][1] = 0.0;\n-108 out[2][1][0] = 0.0;\n-109 out[2][1][1] = sign_[2];\n-110\n-111 out[3][0][0] = 3.0;\n-112 out[3][0][1] = 0.0;\n-113 out[3][1][0] = -6.0;\n-114 out[3][1][1] = -3.0;\n-115\n-116 out[4][0][0] = 3.0;\n-117 out[4][0][1] = 6.0;\n-118 out[4][1][0] = 0.0;\n-119 out[4][1][1] = -3.0;\n-120\n-121 out[5][0][0] = -3.0;\n-122 out[5][0][1] = 0.0;\n-123 out[5][1][0] = 0.0;\n-124 out[5][1][1] = 3.0;\n-125 }\n-126\n-_\b1_\b2_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-129 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-130 std::vector& out) const // return value\n-131 {\n-132 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-133 if (totalOrder == 0) {\n-134 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-135 } else if (totalOrder == 1) {\n-136 out.resize(_\bs_\bi_\bz_\be());\n-137 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-138\n-139 switch (direction) {\n-140 case 0:\n-141 out[0][0] = sign_[0];\n-142 out[0][1] = 0.0;\n-143\n-144 out[1][0] = sign_[1];\n-145 out[1][1] = 0.0;\n-146\n-147 out[2][0] = sign_[2];\n-148 out[2][1] = 0.0;\n-149\n-150 out[3][0] = 3.0;\n-151 out[3][1] = -6.0;\n-152\n-153 out[4][0] = 3.0;\n-154 out[4][1] = 0.0;\n-155\n-156 out[5][0] = -3.0;\n-157 out[5][1] = 0.0;\n-158 break;\n-159 case 1:\n-160 out[0][0] = 0.0;\n-161 out[0][1] = sign_[0];\n-162\n-163 out[1][0] = 0.0;\n-164 out[1][1] = sign_[1];\n-165\n-166 out[2][0] = 0.0;\n-167 out[2][1] = sign_[2];\n-168\n-169 out[3][0] = 0.0;\n-170 out[3][1] = -3.0;\n-171\n-172 out[4][0] = 6.0;\n-173 out[4][1] = -3.0;\n-174\n-175 out[5][0] = 0.0;\n-176 out[5][1] = 3.0;\n-177 break;\n-178 default:\n-179 DUNE_THROW(RangeError, \"Component out of range.\");\n-180 }\n-181 } else {\n-182 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-183 }\n-184 }\n-185\n-_\b1_\b8_\b7 unsigned int _\bo_\br_\bd_\be_\br () const\n-188 {\n-189 return 1;\n-190 }\n-191\n-192 private:\n-193 std::array sign_;\n-194 };\n-195}\n-196#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH\n+60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Brezzi-Douglas-Marini shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:128\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM1Simplex2DLocalBasis()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-3 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT3Cube2DLocalCoefficients()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM1Simplex2DLocalBasis(std::bitset< 3 > s)\n-Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:50\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas3cube2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,33 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference
    \n+
    raviartthomas3cube2dlocalinterpolation.hh File Reference
    \n
    \n
    \n
    #include <vector>
    \n #include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Simplex2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on the reference triangle. More...
    class  Dune::RT3Cube2DLocalInterpolation< LB >
     Second order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference\n+raviartthomas3cube2dlocalinterpolation.hh File Reference\n #include \n #include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n- triangle. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 Second order Raviart-Thomas shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas3cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,130 +70,163 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1simplex2dlocalinterpolation.hh
    \n+
    raviartthomas3cube2dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n
    8#include <vector>
    \n
    9
    \n
    10#include <dune/geometry/quadraturerules.hh>
    \n
    11
    \n
    12namespace Dune
    \n
    13{
    \n-
    22 template<class LB>
    \n-
    \n-\n-
    24 {
    \n-
    25
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 sign0 = sign1 = sign2 = 1.0;
    \n-
    31 }
    \n-
    \n-
    32
    \n-
    \n-\n-
    39 {
    \n-
    40 using std::sqrt;
    \n-
    41 sign0 = sign1 = sign2 = 1.0;
    \n-
    42 if (s & 1)
    \n-
    43 {
    \n-
    44 sign0 = -1.0;
    \n-
    45 }
    \n-
    46 if (s & 2)
    \n-
    47 {
    \n-
    48 sign1 = -1.0;
    \n-
    49 }
    \n-
    50 if (s & 4)
    \n-
    51 {
    \n-
    52 sign2 = -1.0;
    \n-
    53 }
    \n-
    54
    \n-
    55 n0[0] = 0.0;
    \n-
    56 n0[1] = -1.0;
    \n-
    57 n1[0] = -1.0;
    \n-
    58 n1[1] = 0.0;
    \n-
    59 n2[0] = 1.0/sqrt(2.0);
    \n-
    60 n2[1] = 1.0/sqrt(2.0);
    \n-
    61 c0 = 0.5*n0[0] - 1.0*n0[1];
    \n-
    62 c1 = -1.0*n1[0] + 0.5*n1[1];
    \n-
    63 c2 = 0.5*n2[0] + 0.5*n2[1];
    \n-
    64 }
    \n-
    \n+
    14
    \n+
    23 template<class LB>
    \n+
    \n+\n+
    25 {
    \n+
    26
    \n+
    27 public:
    \n+
    28
    \n+
    \n+
    34 RT3Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    35 {
    \n+
    36 for (size_t i=0; i<4; i++)
    \n+
    37 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    38
    \n+
    39 n_[0] = {-1.0, 0.0};
    \n+
    40 n_[1] = { 1.0, 0.0};
    \n+
    41 n_[2] = { 0.0, -1.0};
    \n+
    42 n_[3] = { 0.0, 1.0};
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    53 template<typename F, typename C>
    \n+
    \n+
    54 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    55 {
    \n+
    56 // f gives v*outer normal at a point on the edge!
    \n+
    57 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    58 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    59
    \n+
    60 out.resize(40);
    \n+
    61 fill(out.begin(), out.end(), 0.0);
    \n+
    62
    \n+
    63 const int qOrder = 9;
    \n+
    64 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n
    65
    \n-
    74 template<typename F, typename C>
    \n-
    \n-
    75 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    76 {
    \n-
    77 // f gives v*outer normal at a point on the edge!
    \n-
    78 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    79
    \n-
    80 out.resize(6);
    \n-
    81 fill(out.begin(), out.end(), 0.0);
    \n-
    82
    \n-
    83 const int qOrder = 4;
    \n-
    84 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
    \n-
    85
    \n-
    86 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n-
    87 {
    \n-
    88 Scalar qPos = it->position();
    \n-
    89 typename LB::Traits::DomainType localPos;
    \n-
    90
    \n-
    91 localPos[0] = qPos;
    \n-
    92 localPos[1] = 0.0;
    \n-
    93 auto y = f(localPos);
    \n-
    94 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
    \n-
    95 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;
    \n-
    96
    \n-
    97 localPos[0] = 0.0;
    \n-
    98 localPos[1] = qPos;
    \n-
    99 y = f(localPos);
    \n-
    100 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;
    \n-
    101 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;
    \n-
    102
    \n-
    103 localPos[0] = 1.0 - qPos;
    \n-
    104 localPos[1] = qPos;
    \n-
    105 y = f(localPos);
    \n-
    106 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
    \n-
    107 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;
    \n-
    108 }
    \n-
    109 }
    \n-
    \n-
    110
    \n-
    111 private:
    \n-
    112 typename LB::Traits::RangeFieldType sign0,sign1,sign2;
    \n-
    113 typename LB::Traits::DomainType n0,n1,n2;
    \n-
    114 typename LB::Traits::RangeFieldType c0,c1,c2;
    \n-
    115 };
    \n-
    \n-
    116}
    \n-
    117
    \n-
    118#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    66 for (auto&& qp : rule1)
    \n+
    67 {
    \n+
    68 Scalar qPos = qp.position();
    \n+
    69 typename LB::Traits::DomainType localPos;
    \n+
    70
    \n+
    71 localPos = {0.0, qPos};
    \n+
    72 auto y = f(localPos);
    \n+
    73 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n+
    74 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    75 out[2] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[0];
    \n+
    76 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos + 12.0*qPos - 1.0)*qp.weight();
    \n+
    77
    \n+
    78 localPos = {1.0, qPos};
    \n+
    79 y = f(localPos);
    \n+
    80 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n+
    81 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    82 out[6] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[1];
    \n+
    83 out[7] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos - 12.0*qPos + 1.0)*qp.weight();
    \n+
    84
    \n+
    85 localPos = {qPos, 0.0};
    \n+
    86 y = f(localPos);
    \n+
    87 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n+
    88 out[9] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    89 out[10] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[2];
    \n+
    90 out[11] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos - 12.0*qPos + 1.0)*qp.weight();
    \n+
    91
    \n+
    92 localPos = {qPos, 1.0};
    \n+
    93 y = f(localPos);
    \n+
    94 out[12] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n+
    95 out[13] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    96 out[14] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[3];
    \n+
    97 out[15] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos + 12.0*qPos - 1.0)*qp.weight();
    \n+
    98 }
    \n+
    99
    \n+
    100 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    101
    \n+
    102 for (auto&& qp : rule2)
    \n+
    103 {
    \n+
    104 auto qPos = qp.position();
    \n+
    105
    \n+
    106 auto y = f(qPos);
    \n+
    107 double l0_x=1.0;
    \n+
    108 double l1_x=2.0*qPos[0]-1.0;
    \n+
    109 double l2_x=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;
    \n+
    110 double l3_x=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0] - 1.0;
    \n+
    111 double l0_y=1.0;
    \n+
    112 double l1_y=2.0*qPos[1]-1.0;
    \n+
    113 double l2_y=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;
    \n+
    114 double l3_y=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1] - 1.0;
    \n+
    115
    \n+
    116 out[16] += y[0]*l0_x*l0_y*qp.weight();
    \n+
    117 out[17] += y[0]*l0_x*l1_y*qp.weight();
    \n+
    118 out[18] += y[0]*l0_x*l2_y*qp.weight();
    \n+
    119 out[19] += y[0]*l0_x*l3_y*qp.weight();
    \n+
    120 out[20] += y[0]*l1_x*l0_y*qp.weight();
    \n+
    121 out[21] += y[0]*l1_x*l1_y*qp.weight();
    \n+
    122 out[22] += y[0]*l1_x*l2_y*qp.weight();
    \n+
    123 out[23] += y[0]*l1_x*l3_y*qp.weight();
    \n+
    124 out[24] += y[0]*l2_x*l0_y*qp.weight();
    \n+
    125 out[25] += y[0]*l2_x*l1_y*qp.weight();
    \n+
    126 out[26] += y[0]*l2_x*l2_y*qp.weight();
    \n+
    127 out[27] += y[0]*l2_x*l3_y*qp.weight();
    \n+
    128
    \n+
    129 out[28] += y[1]*l0_x*l0_y*qp.weight();
    \n+
    130 out[29] += y[1]*l0_x*l1_y*qp.weight();
    \n+
    131 out[30] += y[1]*l0_x*l2_y*qp.weight();
    \n+
    132 out[31] += y[1]*l1_x*l0_y*qp.weight();
    \n+
    133 out[32] += y[1]*l1_x*l1_y*qp.weight();
    \n+
    134 out[33] += y[1]*l1_x*l2_y*qp.weight();
    \n+
    135 out[34] += y[1]*l2_x*l0_y*qp.weight();
    \n+
    136 out[35] += y[1]*l2_x*l1_y*qp.weight();
    \n+
    137 out[36] += y[1]*l2_x*l2_y*qp.weight();
    \n+
    138 out[37] += y[1]*l3_x*l0_y*qp.weight();
    \n+
    139 out[38] += y[1]*l3_x*l1_y*qp.weight();
    \n+
    140 out[39] += y[1]*l3_x*l2_y*qp.weight();
    \n+
    141 }
    \n+
    142 }
    \n+
    \n+
    143
    \n+
    144 private:
    \n+
    145 // Edge orientations
    \n+
    146 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n+
    147
    \n+
    148 // Edge normals
    \n+
    149 std::array<typename LB::Traits::DomainType, 4> n_;
    \n+
    150 };
    \n+
    \n+
    151}
    \n+
    152
    \n+
    153#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:24
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:75
    \n-
    BDM1Simplex2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:38
    \n-
    BDM1Simplex2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:28
    \n+
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalinterpolation.hh:25
    \n+
    RT3Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas3cube2dlocalinterpolation.hh:34
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas3cube2dlocalinterpolation.hh:54
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,131 +1,170 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n-brezzidouglasmarini1simplex2dlocalinterpolation.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas3cube2dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n 7\n 8#include \n 9\n 10#include \n 11\n 12namespace _\bD_\bu_\bn_\be\n 13{\n-22 template\n-_\b2_\b3 class _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-24 {\n-25\n-26 public:\n-_\b2_\b8 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ()\n-29 {\n-30 sign0 = sign1 = sign2 = 1.0;\n-31 }\n-32\n-_\b3_\b8 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (unsigned int s)\n-39 {\n-40 using std::sqrt;\n-41 sign0 = sign1 = sign2 = 1.0;\n-42 if (s & 1)\n-43 {\n-44 sign0 = -1.0;\n-45 }\n-46 if (s & 2)\n-47 {\n-48 sign1 = -1.0;\n-49 }\n-50 if (s & 4)\n-51 {\n-52 sign2 = -1.0;\n-53 }\n-54\n-55 n0[0] = 0.0;\n-56 n0[1] = -1.0;\n-57 n1[0] = -1.0;\n-58 n1[1] = 0.0;\n-59 n2[0] = 1.0/sqrt(2.0);\n-60 n2[1] = 1.0/sqrt(2.0);\n-61 c0 = 0.5*n0[0] - 1.0*n0[1];\n-62 c1 = -1.0*n1[0] + 0.5*n1[1];\n-63 c2 = 0.5*n2[0] + 0.5*n2[1];\n-64 }\n+14\n+23 template\n+_\b2_\b4 class _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+25 {\n+26\n+27 public:\n+28\n+_\b3_\b4 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<4> s = 0)\n+35 {\n+36 for (size_t i=0; i<4; i++)\n+37 sign_[i] = (s[i]) ? -1.0 : 1.0;\n+38\n+39 n_[0] = {-1.0, 0.0};\n+40 n_[1] = { 1.0, 0.0};\n+41 n_[2] = { 0.0, -1.0};\n+42 n_[3] = { 0.0, 1.0};\n+43 }\n+44\n+53 template\n+_\b5_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+55 {\n+56 // f gives v*outer normal at a point on the edge!\n+57 typedef typename LB::Traits::RangeFieldType Scalar;\n+58 typedef typename LB::Traits::DomainFieldType Vector;\n+59\n+60 out.resize(40);\n+61 fill(out.begin(), out.end(), 0.0);\n+62\n+63 const int qOrder = 9;\n+64 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n+qOrder);\n 65\n-74 template\n-_\b7_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-76 {\n-77 // f gives v*outer normal at a point on the edge!\n-78 typedef typename LB::Traits::RangeFieldType Scalar;\n-79\n-80 out.resize(6);\n-81 fill(out.begin(), out.end(), 0.0);\n-82\n-83 const int qOrder = 4;\n-84 const Dune::QuadratureRule& rule = Dune::\n-QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder);\n-85\n-86 for (typename Dune::QuadratureRule::const_iterator it=rule.begin\n-(); it!=rule.end(); ++it)\n-87 {\n-88 Scalar qPos = it->position();\n-89 typename LB::Traits::DomainType localPos;\n-90\n-91 localPos[0] = qPos;\n-92 localPos[1] = 0.0;\n-93 auto y = f(localPos);\n-94 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;\n-95 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;\n-96\n-97 localPos[0] = 0.0;\n-98 localPos[1] = qPos;\n-99 y = f(localPos);\n-100 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;\n-101 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;\n-102\n-103 localPos[0] = 1.0 - qPos;\n-104 localPos[1] = qPos;\n-105 y = f(localPos);\n-106 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;\n-107 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;\n-108 }\n-109 }\n-110\n-111 private:\n-112 typename LB::Traits::RangeFieldType sign0,sign1,sign2;\n-113 typename LB::Traits::DomainType n0,n1,n2;\n-114 typename LB::Traits::RangeFieldType c0,c1,c2;\n-115 };\n-116}\n-117\n-118#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH\n+66 for (auto&& qp : rule1)\n+67 {\n+68 Scalar qPos = qp.position();\n+69 typename LB::Traits::DomainType localPos;\n+70\n+71 localPos = {0.0, qPos};\n+72 auto y = f(localPos);\n+73 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n+74 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n+75 out[2] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(6.0*qPos*qPos - 6.0*qPos +\n+1.0)*qp.weight()*sign_[0];\n+76 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(20.0*qPos*qPos*qPos -\n+30.0*qPos*qPos + 12.0*qPos - 1.0)*qp.weight();\n+77\n+78 localPos = {1.0, qPos};\n+79 y = f(localPos);\n+80 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n+81 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n+82 out[6] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(6.0*qPos*qPos - 6.0*qPos +\n+1.0)*qp.weight()*sign_[1];\n+83 out[7] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(-20.0*qPos*qPos*qPos +\n+30.0*qPos*qPos - 12.0*qPos + 1.0)*qp.weight();\n+84\n+85 localPos = {qPos, 0.0};\n+86 y = f(localPos);\n+87 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n+88 out[9] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n+89 out[10] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(6.0*qPos*qPos - 6.0*qPos +\n+1.0)*qp.weight()*sign_[2];\n+90 out[11] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(-20.0*qPos*qPos*qPos +\n+30.0*qPos*qPos - 12.0*qPos + 1.0)*qp.weight();\n+91\n+92 localPos = {qPos, 1.0};\n+93 y = f(localPos);\n+94 out[12] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n+95 out[13] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n+96 out[14] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(6.0*qPos*qPos - 6.0*qPos +\n+1.0)*qp.weight()*sign_[3];\n+97 out[15] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(20.0*qPos*qPos*qPos -\n+30.0*qPos*qPos + 12.0*qPos - 1.0)*qp.weight();\n+98 }\n+99\n+100 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n+qOrder);\n+101\n+102 for (auto&& qp : rule2)\n+103 {\n+104 auto qPos = qp.position();\n+105\n+106 auto y = f(qPos);\n+107 double l0_x=1.0;\n+108 double l1_x=2.0*qPos[0]-1.0;\n+109 double l2_x=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;\n+110 double l3_x=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos\n+[0] - 1.0;\n+111 double l0_y=1.0;\n+112 double l1_y=2.0*qPos[1]-1.0;\n+113 double l2_y=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;\n+114 double l3_y=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos\n+[1] - 1.0;\n+115\n+116 out[16] += y[0]*l0_x*l0_y*qp.weight();\n+117 out[17] += y[0]*l0_x*l1_y*qp.weight();\n+118 out[18] += y[0]*l0_x*l2_y*qp.weight();\n+119 out[19] += y[0]*l0_x*l3_y*qp.weight();\n+120 out[20] += y[0]*l1_x*l0_y*qp.weight();\n+121 out[21] += y[0]*l1_x*l1_y*qp.weight();\n+122 out[22] += y[0]*l1_x*l2_y*qp.weight();\n+123 out[23] += y[0]*l1_x*l3_y*qp.weight();\n+124 out[24] += y[0]*l2_x*l0_y*qp.weight();\n+125 out[25] += y[0]*l2_x*l1_y*qp.weight();\n+126 out[26] += y[0]*l2_x*l2_y*qp.weight();\n+127 out[27] += y[0]*l2_x*l3_y*qp.weight();\n+128\n+129 out[28] += y[1]*l0_x*l0_y*qp.weight();\n+130 out[29] += y[1]*l0_x*l1_y*qp.weight();\n+131 out[30] += y[1]*l0_x*l2_y*qp.weight();\n+132 out[31] += y[1]*l1_x*l0_y*qp.weight();\n+133 out[32] += y[1]*l1_x*l1_y*qp.weight();\n+134 out[33] += y[1]*l1_x*l2_y*qp.weight();\n+135 out[34] += y[1]*l2_x*l0_y*qp.weight();\n+136 out[35] += y[1]*l2_x*l1_y*qp.weight();\n+137 out[36] += y[1]*l2_x*l2_y*qp.weight();\n+138 out[37] += y[1]*l3_x*l0_y*qp.weight();\n+139 out[38] += y[1]*l3_x*l1_y*qp.weight();\n+140 out[39] += y[1]*l3_x*l2_y*qp.weight();\n+141 }\n+142 }\n+143\n+144 private:\n+145 // Edge orientations\n+146 std::array sign_;\n+147\n+148 // Edge normals\n+149 std::array n_;\n+150 };\n+151}\n+152\n+153#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Second order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT3Cube2DLocalInterpolation(std::bitset< 4 > s=0)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n void interpolate(const F &f, std::vector< C > &out) const\n Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM1Simplex2DLocalInterpolation(unsigned int s)\n-Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM1Simplex2DLocalInterpolation()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:28\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:54\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas3cube2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2cube2dlocalbasis.hh File Reference
    \n+
    raviartthomas3cube2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <bitset>
    \n+
    #include <bitset>
    \n #include <numeric>
    \n #include <vector>
    \n #include <dune/common/fmatrix.hh>
    \n #include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM2Cube2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
    class  Dune::RT3Cube2DLocalBasis< D, R >
     Second order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,26 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini2cube2dlocalbasis.hh File Reference\n-#include \n+raviartthomas3cube2dlocalbasis.hh File Reference\n #include \n #include \n #include \n #include \n #include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 Second order Raviart-Thomas shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas3cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,320 +70,659 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2cube2dlocalbasis.hh
    \n+
    raviartthomas3cube2dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <bitset>
    \n-
    10#include <numeric>
    \n-
    11#include <vector>
    \n-
    12
    \n-
    13#include <dune/common/fmatrix.hh>
    \n-
    14
    \n-
    15#include "../../common/localbasis.hh"
    \n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    28 template<class D, class R>
    \n-
    \n-\n-
    30 {
    \n-
    31
    \n-
    32 public:
    \n-\n-
    34 R,2,Dune::FieldVector<R,2>,
    \n-
    35 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    36
    \n-
    \n-\n-
    39 {
    \n-
    40 for (size_t i=0; i<4; i++)
    \n-
    41 sign_[i] = 1.0;
    \n-
    42 }
    \n+
    8#include <bitset>
    \n+
    9#include <numeric>
    \n+
    10#include <vector>
    \n+
    11
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13
    \n+
    14#include "../../common/localbasis.hh"
    \n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    27 template<class D, class R>
    \n+
    \n+\n+
    29 {
    \n+
    30
    \n+
    31 public:
    \n+
    32 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    33 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    34
    \n+
    \n+
    40 RT3Cube2DLocalBasis (std::bitset<4> s = 0)
    \n+
    41 {
    \n+
    42 sign0 = (s[0]) ? -1.0 : 1.0;
    \n+
    43 sign1 = (s[1]) ? -1.0 : 1.0;
    \n+
    44 sign2 = (s[2]) ? -1.0 : 1.0;
    \n+
    45 sign3 = (s[3]) ? -1.0 : 1.0;
    \n+
    46 }
    \n
    \n-
    43
    \n+
    47
    \n
    \n-
    49 BDM2Cube2DLocalBasis(std::bitset<4> s)
    \n-
    50 {
    \n-
    51 for (size_t i=0; i<4; i++)
    \n-
    52 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    \n-
    56 unsigned int size() const
    \n-
    57 {
    \n-
    58 return 14;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-
    67 inline void evaluateFunction(const typename Traits::DomainType& in,
    \n-
    68 std::vector<typename Traits::RangeType>& out) const
    \n-
    69 {
    \n-
    70 out.resize(size());
    \n-
    71
    \n-
    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]);
    \n-
    73 out[0][1] = sign_[0]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in[1]);
    \n-
    74 out[1][0] = 3.0 - 3.0*in[0]-6.0*in[1] + 6.0*in[0]*in[1];
    \n-
    75 out[1][1] = 0.0;
    \n-
    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]);
    \n-
    77 out[2][1] = sign_[0]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in[1]);
    \n-
    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]);
    \n-
    79 out[3][1] = sign_[1]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in[1]);
    \n-
    80 out[4][0] = 3.0*in[0] - 6.0*in[0]*in[1];
    \n-
    81 out[4][1] = 0.0;
    \n-
    82 out[5][0] = sign_[1]*(+3.75*in[0] - 22.5*in[0]*in[1] + 22.5*in[0]*in[1]*in[1]);
    \n-
    83 out[5][1] = sign_[1]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in[1]);
    \n-
    84 out[6][0] = sign_[2]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in[0]);
    \n-
    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]);
    \n-
    86 out[7][0] = 0.0;
    \n-
    87 out[7][1] = -3.0 + 6.0*in[0] + 3.0*in[1] - 6.0*in[0]*in[1];
    \n-
    88 out[8][0] = sign_[2]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in[0]);
    \n-
    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]);
    \n-
    90 out[9][0] = sign_[3]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in[0]);
    \n-
    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]);
    \n-
    92 out[10][0] = 0.0;
    \n-
    93 out[10][1] = -3.0*in[1] + 6.0*in[0]*in[1];
    \n-
    94 out[11][0] = sign_[3]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in[0]);
    \n-
    95 out[11][1] = sign_[3]*(3.75*in[1] - 22.5*in[0]*in[1] + 22.5*in[0]*in[0]*in[1]);
    \n-
    96 out[12][0] = 6.0*in[0] - 6.0*in[0]*in[0];
    \n-
    97 out[12][1] = 0.0;
    \n-
    98 out[13][0] = 0.0;
    \n-
    99 out[13][1] = 6.0*in[1] - 6.0*in[1]*in[1];
    \n-
    100 }
    \n-
    \n-
    101
    \n-
    \n-
    108 inline void evaluateJacobian(const typename Traits::DomainType& in,
    \n-
    109 std::vector<typename Traits::JacobianType>& out) const
    \n-
    110 {
    \n-
    111 out.resize(size());
    \n-
    112
    \n-
    113 out[0][0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);
    \n-
    114 out[0][0][1] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);
    \n-
    115 out[0][1][0] = 0.0;
    \n-
    116 out[0][1][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
    \n-
    117
    \n-
    118 out[1][0][0] = -3.0 + 6.0*in[1];
    \n-
    119 out[1][0][1] = -6.0 + 6.0*in[0];
    \n-
    120 out[1][1][0] = 0.0;
    \n-
    121 out[1][1][1] = 0.0;
    \n+
    49 unsigned int size () const
    \n+
    50 {
    \n+
    51 return 40;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+
    60 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    61 std::vector<typename Traits::RangeType>& out) const
    \n+
    62 {
    \n+
    63 out.resize(40);
    \n+
    64 auto const& x = in[0], y = in[1];
    \n+
    65
    \n+
    66 const auto tmp1 = - x*(x*(x*(35*x - 80) + 60) - 16) - 1;
    \n+
    67 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;
    \n+
    68 const auto tmp3 = 2*y - 1;
    \n+
    69 const auto tmp4 = y*(6*y - 6) + 1;
    \n+
    70 const auto tmp5 = y*(y*(20*y - 30) + 12) - 1;
    \n+
    71 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);
    \n+
    72 const auto tmp7 = - y*(y*(y*(35*y - 80) + 60) - 16) - 1;
    \n+
    73 const auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;
    \n+
    74 const auto tmp9 = 2*x - 1;
    \n+
    75 const auto tmp10 = x*(6*x - 6) + 1;
    \n+
    76 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;
    \n+
    77 const auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);
    \n+
    78 const auto tmp13 = -x*(x*(x*(7*x - 14) + 9) - 2);
    \n+
    79 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);
    \n+
    80 const auto tmp15 = x*(x*(2*x - 3) + 1);
    \n+
    81 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);
    \n+
    82 const auto tmp17 = -y*(y*(y*(7*y - 14) + 9) - 2);
    \n+
    83 const auto tmp18 = y*(y*(2*y - 3) + 1);
    \n+
    84 const auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);
    \n+
    85 const auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);
    \n+
    86
    \n+
    87 out[0][0]=sign0*tmp1;
    \n+
    88 out[0][1]=0;
    \n+
    89 out[1][0]=(-3.0*tmp2*tmp3);
    \n+
    90 out[1][1]=0;
    \n+
    91 out[2][0]=sign0*(-5.0*tmp2*tmp4);
    \n+
    92 out[2][1]=0;
    \n+
    93 out[3][0]=(-7.0*tmp2*tmp5);
    \n+
    94 out[3][1]=0;
    \n+
    95
    \n+
    96 out[4][0]=sign1*tmp6;
    \n+
    97 out[4][1]=0;
    \n+
    98 out[5][0]=(-3.0*tmp6*tmp3);
    \n+
    99 out[5][1]=0;
    \n+
    100 out[6][0]=sign1*(5.0*tmp6*tmp4);
    \n+
    101 out[6][1]=0;
    \n+
    102 out[7][0]=(-7.0*tmp6*tmp5);
    \n+
    103 out[7][1]=0;
    \n+
    104
    \n+
    105 out[8][0]=0;
    \n+
    106 out[8][1]=sign2*tmp7;
    \n+
    107 out[9][0]=0;
    \n+
    108 out[9][1]=3.0*tmp9*tmp8;
    \n+
    109 out[10][0]=0;
    \n+
    110 out[10][1]=sign2*(-5.0*tmp10*tmp8);
    \n+
    111 out[11][0]=0;
    \n+
    112 out[11][1]=7.0*tmp11*tmp8;
    \n+
    113
    \n+
    114 out[12][0]=0;
    \n+
    115 out[12][1]=sign3*tmp12;
    \n+
    116 out[13][0]=0;
    \n+
    117 out[13][1]=3.0*tmp9*tmp12;
    \n+
    118 out[14][0]=0;
    \n+
    119 out[14][1]=sign3*5.0*tmp10*tmp12;
    \n+
    120 out[15][0]=0;
    \n+
    121 out[15][1]=7.0*tmp11*tmp12;
    \n
    122
    \n-
    123 out[2][0][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
    \n-
    124 out[2][0][1] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);
    \n-
    125 out[2][1][0] = 0.0;
    \n-
    126 out[2][1][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
    \n-
    127
    \n-
    128 out[3][0][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);
    \n-
    129 out[3][0][1] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);
    \n-
    130 out[3][1][0] = 0.0;
    \n-
    131 out[3][1][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
    \n-
    132
    \n-
    133 out[4][0][0] = 3.0 - 6.0*in[1];
    \n-
    134 out[4][0][1] = -6.0*in[0];
    \n-
    135 out[4][1][0] = 0.0;
    \n-
    136 out[4][1][1] = 0.0;
    \n-
    137
    \n-
    138 out[5][0][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
    \n-
    139 out[5][0][1] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);
    \n-
    140 out[5][1][0] = 0.0;
    \n-
    141 out[5][1][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
    \n-
    142
    \n-
    143 out[6][0][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
    \n-
    144 out[6][0][1] = 0.0;
    \n-
    145 out[6][1][0] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);
    \n-
    146 out[6][1][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);
    \n-
    147
    \n-
    148 out[7][0][0] = 0.0;
    \n-
    149 out[7][0][1] = 0.0;
    \n-
    150 out[7][1][0] = 6.0 - 6.0*in[1];
    \n-
    151 out[7][1][1] = 3.0 - 6.0*in[0];
    \n-
    152
    \n-
    153 out[8][0][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
    \n-
    154 out[8][0][1] = 0.0;
    \n-
    155 out[8][1][0] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);
    \n-
    156 out[8][1][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
    \n-
    157
    \n-
    158 out[9][0][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
    \n-
    159 out[9][0][1] = 0.0;
    \n-
    160 out[9][1][0] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);
    \n-
    161 out[9][1][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);
    \n-
    162
    \n-
    163 out[10][0][0] = 0.0;
    \n-
    164 out[10][0][1] = 0.0;
    \n-
    165 out[10][1][0] = 6.0*in[1];
    \n-
    166 out[10][1][1] = -3.0 + 6.0*in[0];
    \n-
    167
    \n-
    168 out[11][0][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
    \n-
    169 out[11][0][1] = 0.0;
    \n-
    170 out[11][1][0] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);
    \n-
    171 out[11][1][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
    \n+
    123 out[16][0]=10.0*tmp13;
    \n+
    124 out[16][1]=0;
    \n+
    125 out[17][0]=-30.0*tmp14*tmp3;
    \n+
    126 out[17][1]=0;
    \n+
    127 out[18][0]=-50.0*tmp14*tmp4;
    \n+
    128 out[18][1]=0;
    \n+
    129 out[19][0]=-70.0*tmp14*tmp5;
    \n+
    130 out[19][1]=0;
    \n+
    131 out[20][0]=-30.0*tmp15;
    \n+
    132 out[20][1]=0;
    \n+
    133 out[21][0]=-90.0*tmp15*tmp3;
    \n+
    134 out[21][1]=0;
    \n+
    135 out[22][0]=-150.0*tmp15*tmp4;
    \n+
    136 out[22][1]=0;
    \n+
    137 out[23][0]=-210.0*tmp15*tmp5;
    \n+
    138 out[23][1]=0;
    \n+
    139 out[24][0]=-70.0*tmp16;
    \n+
    140 out[24][1]=0;
    \n+
    141 out[25][0]=-210.0*tmp16*tmp3;
    \n+
    142 out[25][1]=0;
    \n+
    143 out[26][0]=-350.0*tmp16*tmp4;
    \n+
    144 out[26][1]=0;
    \n+
    145 out[27][0]=-490.0*tmp16*tmp5;
    \n+
    146 out[27][1]=0;
    \n+
    147 out[28][0]=0;
    \n+
    148 out[28][1]=10.0*tmp17;
    \n+
    149 out[29][0]=0;
    \n+
    150 out[29][1]=-30.0*tmp18;
    \n+
    151 out[30][0]=0;
    \n+
    152 out[30][1]=-70.0*tmp19;
    \n+
    153 out[31][0]=0;
    \n+
    154 out[31][1]=-30.0*tmp9*tmp20;
    \n+
    155 out[32][0]=0;
    \n+
    156 out[32][1]=-90.0*tmp9*tmp18;
    \n+
    157 out[33][0]=0;
    \n+
    158 out[33][1]=-210.0*tmp9*tmp19;
    \n+
    159 out[34][0]=0;
    \n+
    160 out[34][1]=-50.0*tmp10*tmp20;
    \n+
    161 out[35][0]=0;
    \n+
    162 out[35][1]=-150.0*tmp10*tmp18;
    \n+
    163 out[36][0]=0;
    \n+
    164 out[36][1]=-350.0*tmp10*tmp19;
    \n+
    165 out[37][0]=0;
    \n+
    166 out[37][1]=-70.0*tmp11*tmp20;
    \n+
    167 out[38][0]=0;
    \n+
    168 out[38][1]=-210.0*tmp11*tmp18;
    \n+
    169 out[39][0]=0;
    \n+
    170 out[39][1]=-490.0*tmp11*tmp19;
    \n+
    171 }
    \n+
    \n
    172
    \n-
    173 out[12][0][0] = 6.0 - 12.0*in[0];
    \n-
    174 out[12][0][1] = 0.0;
    \n-
    175 out[12][1][0] = 0.0;
    \n-
    176 out[12][1][1] = 0.0;
    \n-
    177
    \n-
    178 out[13][0][0] = 0.0;
    \n-
    179 out[13][0][1] = 0.0;
    \n-
    180 out[13][1][0] = 0.0;
    \n-
    181 out[13][1][1] = 6.0 - 12.0*in[1];
    \n-
    182 }
    \n-
    \n-
    183
    \n-
    \n-
    185 void partial (const std::array<unsigned int, 2>& order,
    \n-
    186 const typename Traits::DomainType& in, // position
    \n-
    187 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    188 {
    \n-
    189 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    190 if (totalOrder == 0) {
    \n-
    191 evaluateFunction(in, out);
    \n-
    192 } else if (totalOrder == 1) {
    \n-
    193 out.resize(size());
    \n-
    194 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    195
    \n-
    196 switch (direction) {
    \n-
    197 case 0:
    \n-
    198 out[0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);
    \n-
    199 out[0][1] = 0.0;
    \n-
    200
    \n-
    201 out[1][0] = -3.0 + 6.0*in[1];
    \n-
    202 out[1][1] = 0.0;
    \n-
    203
    \n-
    204 out[2][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
    \n-
    205 out[2][1] = 0.0;
    \n-
    206
    \n-
    207 out[3][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);
    \n-
    208 out[3][1] = 0.0;
    \n-
    209
    \n-
    210 out[4][0] = 3.0 - 6.0*in[1];
    \n-
    211 out[4][1] = 0.0;
    \n-
    212
    \n-
    213 out[5][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);
    \n-
    214 out[5][1] = 0.0;
    \n-
    215
    \n-
    216 out[6][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
    \n-
    217 out[6][1] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);
    \n-
    218
    \n-
    219 out[7][0] = 0.0;
    \n-
    220 out[7][1] = 6.0 - 6.0*in[1];
    \n-
    221
    \n-
    222 out[8][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
    \n-
    223 out[8][1] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);
    \n+
    \n+
    179 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    180 std::vector<typename Traits::JacobianType>& out) const
    \n+
    181 {
    \n+
    182 out.resize(40);
    \n+
    183 auto const& x = in[0], y = in[1];
    \n+
    184
    \n+
    185 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;
    \n+
    186 const auto tmp3 = 2*y - 1;
    \n+
    187 const auto tmp4 = y*(6*y - 6) + 1;
    \n+
    188 const auto tmp5 = y*(y*(20*y - 30) + 12) - 1;
    \n+
    189 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);
    \n+
    190 const auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;
    \n+
    191 const auto tmp9 = 2*x - 1;
    \n+
    192 const auto tmp10 = x*(6*x - 6) + 1;
    \n+
    193 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;
    \n+
    194 const auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);
    \n+
    195 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);
    \n+
    196 const auto tmp15 = x*(x*(2*x - 3) + 1);
    \n+
    197 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);
    \n+
    198 const auto tmp18 = y*(y*(2*y - 3) + 1);
    \n+
    199 const auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);
    \n+
    200 const auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);
    \n+
    201 // temporaries tmp1, tmp7, tmp13, tmp17 are not used in jacobian
    \n+
    202
    \n+
    203 const auto dxtmp1 = 16 - x*(x*(140*x - 240) + 120);
    \n+
    204 const auto dxtmp2 = x*(x*(140*x - 240) + 120) - 16;
    \n+
    205 const auto dytmp3 = 2;
    \n+
    206 const auto dytmp4 = 12*y - 6;
    \n+
    207 const auto dytmp5 = y*(60*y - 60) + 12;
    \n+
    208 const auto dxtmp6 = x*(x*(140*x - 180) + 60) - 4;
    \n+
    209 const auto dytmp7 = 16 - y*(y*(140*y - 240) + 120);
    \n+
    210 const auto dytmp8 = y*(y*(140*y - 240) + 120) - 16;
    \n+
    211 const auto dxtmp9 = 2;
    \n+
    212 const auto dxtmp10 = 12*x - 6;
    \n+
    213 const auto dxtmp11 = x*(60*x - 60) + 12;
    \n+
    214 const auto dytmp12 = y*(y*(140*y - 180) + 60) - 4;
    \n+
    215 const auto dxtmp13 = 2 - x*(x*(28*x - 42) + 18);
    \n+
    216 const auto dxtmp14 = x*(x*(28*x - 42) + 18) - 2;
    \n+
    217 const auto dxtmp15 = x*(6*x - 6) + 1;
    \n+
    218 const auto dxtmp16 = x*(x*(20*x - 30) + 12) - 1;
    \n+
    219 const auto dytmp17 = 2 - y*(y*(28*y - 42) + 18);
    \n+
    220 const auto dytmp18 = y*(6*y - 6) + 1;
    \n+
    221 const auto dytmp19 = y*(y*(20*y - 30) + 12) - 1;
    \n+
    222 const auto dytmp20 = y*(y*(28*y - 42) + 18) - 2;
    \n+
    223
    \n
    224
    \n-
    225 out[9][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);
    \n-
    226 out[9][1] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);
    \n-
    227
    \n-
    228 out[10][0] = 0.0;
    \n-
    229 out[10][1] = 6.0*in[1];
    \n-
    230
    \n-
    231 out[11][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);
    \n-
    232 out[11][1] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);
    \n-
    233
    \n-
    234 out[12][0] = 6.0 - 12.0*in[0];
    \n-
    235 out[12][1] = 0.0;
    \n-
    236
    \n-
    237 out[13][0] = 0.0;
    \n-
    238 out[13][1] = 0.0;
    \n-
    239 break;
    \n-
    240 case 1:
    \n-
    241 out[0][0] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);
    \n-
    242 out[0][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
    \n+
    225 // x-component
    \n+
    226 out[0][0][0]=sign0*dxtmp1;
    \n+
    227 out[0][1][0]=0;
    \n+
    228 out[1][0][0]=(-3.0*dxtmp2*tmp3);
    \n+
    229 out[1][1][0]=0;
    \n+
    230 out[2][0][0]=sign0*(-5.0*dxtmp2*tmp4);
    \n+
    231 out[2][1][0]=0;
    \n+
    232 out[3][0][0]=(-7.0*dxtmp2*tmp5);
    \n+
    233 out[3][1][0]=0;
    \n+
    234
    \n+
    235 out[4][0][0]=sign1*dxtmp6;
    \n+
    236 out[4][1][0]=0;
    \n+
    237 out[5][0][0]=(-3.0*dxtmp6*tmp3);
    \n+
    238 out[5][1][0]=0;
    \n+
    239 out[6][0][0]=sign1*(5.0*dxtmp6*tmp4);
    \n+
    240 out[6][1][0]=0;
    \n+
    241 out[7][0][0]=(-7.0*dxtmp6*tmp5);
    \n+
    242 out[7][1][0]=0;
    \n
    243
    \n-
    244 out[1][0] = -6.0 + 6.0*in[0];
    \n-
    245 out[1][1] = 0.0;
    \n-
    246
    \n-
    247 out[2][0] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);
    \n-
    248 out[2][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
    \n-
    249
    \n-
    250 out[3][0] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);
    \n-
    251 out[3][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);
    \n+
    244 out[8][0][0]=0;
    \n+
    245 out[8][1][0]=0;
    \n+
    246 out[9][0][0]=0;
    \n+
    247 out[9][1][0]=3.0*dxtmp9*tmp8;
    \n+
    248 out[10][0][0]=0;
    \n+
    249 out[10][1][0]=sign2*(-5.0*dxtmp10*tmp8);
    \n+
    250 out[11][0][0]=0;
    \n+
    251 out[11][1][0]=7.0*dxtmp11*tmp8;
    \n
    252
    \n-
    253 out[4][0] = -6.0*in[0];
    \n-
    254 out[4][1] = 0.0;
    \n-
    255
    \n-
    256 out[5][0] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);
    \n-
    257 out[5][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);
    \n-
    258
    \n-
    259 out[6][0] = 0.0;
    \n-
    260 out[6][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);
    \n+
    253 out[12][0][0]=0;
    \n+
    254 out[12][1][0]=0;
    \n+
    255 out[13][0][0]=0;
    \n+
    256 out[13][1][0]=3.0*dxtmp9*tmp12;
    \n+
    257 out[14][0][0]=0;
    \n+
    258 out[14][1][0]=sign3*5.0*dxtmp10*tmp12;
    \n+
    259 out[15][0][0]=0;
    \n+
    260 out[15][1][0]=7.0*dxtmp11*tmp12;
    \n
    261
    \n-
    262 out[7][0] = 0.0;
    \n-
    263 out[7][1] = 3.0 - 6.0*in[0];
    \n-
    264
    \n-
    265 out[8][0] = 0.0;
    \n-
    266 out[8][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
    \n-
    267
    \n-
    268 out[9][0] = 0.0;
    \n-
    269 out[9][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);
    \n-
    270
    \n-
    271 out[10][0] = 0.0;
    \n-
    272 out[10][1] = -3.0 + 6.0*in[0];
    \n-
    273
    \n-
    274 out[11][0] = 0.0;
    \n-
    275 out[11][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);
    \n-
    276
    \n-
    277 out[12][0] = 0.0;
    \n-
    278 out[12][1] = 0.0;
    \n-
    279
    \n-
    280 out[13][0] = 0.0;
    \n-
    281 out[13][1] = 6.0 - 12.0*in[1];
    \n-
    282 break;
    \n-
    283 default:
    \n-
    284 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    285 }
    \n-
    286 } else {
    \n-
    287 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    288 }
    \n-
    289 }
    \n-
    \n-
    290
    \n-
    \n-
    292 unsigned int order() const
    \n-
    293 {
    \n-
    294 return 3;
    \n-
    295 }
    \n-
    \n-
    296
    \n-
    297 private:
    \n-
    298 std::array<R,4> sign_;
    \n-
    299 };
    \n-
    \n-
    300} // end namespace Dune
    \n-
    301#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
    \n+
    262 out[16][0][0]=10.0*dxtmp13;
    \n+
    263 out[16][1][0]=0;
    \n+
    264 out[17][0][0]=-30.0*dxtmp14*tmp3;
    \n+
    265 out[17][1][0]=0;
    \n+
    266 out[18][0][0]=-50.0*dxtmp14*tmp4;
    \n+
    267 out[18][1][0]=0;
    \n+
    268 out[19][0][0]=-70.0*dxtmp14*tmp5;
    \n+
    269 out[19][1][0]=0;
    \n+
    270 out[20][0][0]=-30.0*dxtmp15;
    \n+
    271 out[20][1][0]=0;
    \n+
    272 out[21][0][0]=-90.0*dxtmp15*tmp3;
    \n+
    273 out[21][1][0]=0;
    \n+
    274 out[22][0][0]=-150.0*dxtmp15*tmp4;
    \n+
    275 out[22][1][0]=0;
    \n+
    276 out[23][0][0]=-210.0*dxtmp15*tmp5;
    \n+
    277 out[23][1][0]=0;
    \n+
    278 out[24][0][0]=-70.0*dxtmp16;
    \n+
    279 out[24][1][0]=0;
    \n+
    280 out[25][0][0]=-210.0*dxtmp16*tmp3;
    \n+
    281 out[25][1][0]=0;
    \n+
    282 out[26][0][0]=-350.0*dxtmp16*tmp4;
    \n+
    283 out[26][1][0]=0;
    \n+
    284 out[27][0][0]=-490.0*dxtmp16*tmp5;
    \n+
    285 out[27][1][0]=0;
    \n+
    286 out[28][0][0]=0;
    \n+
    287 out[28][1][0]=0;
    \n+
    288 out[29][0][0]=0;
    \n+
    289 out[29][1][0]=0;
    \n+
    290 out[30][0][0]=0;
    \n+
    291 out[30][1][0]=0;
    \n+
    292 out[31][0][0]=0;
    \n+
    293 out[31][1][0]=-30.0*dxtmp9*tmp20;
    \n+
    294 out[32][0][0]=0;
    \n+
    295 out[32][1][0]=-90.0*dxtmp9*tmp18;
    \n+
    296 out[33][0][0]=0;
    \n+
    297 out[33][1][0]=-210.0*dxtmp9*tmp19;
    \n+
    298 out[34][0][0]=0;
    \n+
    299 out[34][1][0]=-50.0*dxtmp10*tmp20;
    \n+
    300 out[35][0][0]=0;
    \n+
    301 out[35][1][0]=-150.0*dxtmp10*tmp18;
    \n+
    302 out[36][0][0]=0;
    \n+
    303 out[36][1][0]=-350.0*dxtmp10*tmp19;
    \n+
    304 out[37][0][0]=0;
    \n+
    305 out[37][1][0]=-70.0*dxtmp11*tmp20;
    \n+
    306 out[38][0][0]=0;
    \n+
    307 out[38][1][0]=-210.0*dxtmp11*tmp18;
    \n+
    308 out[39][0][0]=0;
    \n+
    309 out[39][1][0]=-490.0*dxtmp11*tmp19;
    \n+
    310
    \n+
    311
    \n+
    312 // y-component
    \n+
    313 out[0][0][1]=0;
    \n+
    314 out[0][1][1]=0;
    \n+
    315 out[1][0][1]=(-3.0*tmp2*dytmp3);
    \n+
    316 out[1][1][1]=0;
    \n+
    317 out[2][0][1]=sign0*(-5.0*tmp2*dytmp4);
    \n+
    318 out[2][1][1]=0;
    \n+
    319 out[3][0][1]=(-7.0*tmp2*dytmp5);
    \n+
    320 out[3][1][1]=0;
    \n+
    321
    \n+
    322 out[4][0][1]=0;
    \n+
    323 out[4][1][1]=0;
    \n+
    324 out[5][0][1]=(-3.0*tmp6*dytmp3);
    \n+
    325 out[5][1][1]=0;
    \n+
    326 out[6][0][1]=sign1*(5.0*tmp6*dytmp4);
    \n+
    327 out[6][1][1]=0;
    \n+
    328 out[7][0][1]=(-7.0*tmp6*dytmp5);
    \n+
    329 out[7][1][1]=0;
    \n+
    330
    \n+
    331 out[8][0][1]=0;
    \n+
    332 out[8][1][1]=sign2*dytmp7;
    \n+
    333 out[9][0][1]=0;
    \n+
    334 out[9][1][1]=3.0*tmp9*dytmp8;
    \n+
    335 out[10][0][1]=0;
    \n+
    336 out[10][1][1]=sign2*(-5.0*tmp10*dytmp8);
    \n+
    337 out[11][0][1]=0;
    \n+
    338 out[11][1][1]=7.0*tmp11*dytmp8;
    \n+
    339
    \n+
    340 out[12][0][1]=0;
    \n+
    341 out[12][1][1]=sign3*dytmp12;
    \n+
    342 out[13][0][1]=0;
    \n+
    343 out[13][1][1]=3.0*tmp9*dytmp12;
    \n+
    344 out[14][0][1]=0;
    \n+
    345 out[14][1][1]=sign3*5.0*tmp10*dytmp12;
    \n+
    346 out[15][0][1]=0;
    \n+
    347 out[15][1][1]=7.0*tmp11*dytmp12;
    \n+
    348
    \n+
    349 out[16][0][1]=0;
    \n+
    350 out[16][1][1]=0;
    \n+
    351 out[17][0][1]=-30.0*tmp14*dytmp3;
    \n+
    352 out[17][1][1]=0;
    \n+
    353 out[18][0][1]=-50.0*tmp14*dytmp4;
    \n+
    354 out[18][1][1]=0;
    \n+
    355 out[19][0][1]=-70.0*tmp14*dytmp5;
    \n+
    356 out[19][1][1]=0;
    \n+
    357 out[20][0][1]=0;
    \n+
    358 out[20][1][1]=0;
    \n+
    359 out[21][0][1]=-90.0*tmp15*dytmp3;
    \n+
    360 out[21][1][1]=0;
    \n+
    361 out[22][0][1]=-150.0*tmp15*dytmp4;
    \n+
    362 out[22][1][1]=0;
    \n+
    363 out[23][0][1]=-210.0*tmp15*dytmp5;
    \n+
    364 out[23][1][1]=0;
    \n+
    365 out[24][0][1]=0;
    \n+
    366 out[24][1][1]=0;
    \n+
    367 out[25][0][1]=-210.0*tmp16*dytmp3;
    \n+
    368 out[25][1][1]=0;
    \n+
    369 out[26][0][1]=-350.0*tmp16*dytmp4;
    \n+
    370 out[26][1][1]=0;
    \n+
    371 out[27][0][1]=-490.0*tmp16*dytmp5;
    \n+
    372 out[27][1][1]=0;
    \n+
    373 out[28][0][1]=0;
    \n+
    374 out[28][1][1]=10.0*dytmp17;
    \n+
    375 out[29][0][1]=0;
    \n+
    376 out[29][1][1]=-30.0*dytmp18;
    \n+
    377 out[30][0][1]=0;
    \n+
    378 out[30][1][1]=-70.0*dytmp19;
    \n+
    379 out[31][0][1]=0;
    \n+
    380 out[31][1][1]=-30.0*tmp9*dytmp20;
    \n+
    381 out[32][0][1]=0;
    \n+
    382 out[32][1][1]=-90.0*tmp9*dytmp18;
    \n+
    383 out[33][0][1]=0;
    \n+
    384 out[33][1][1]=-210.0*tmp9*dytmp19;
    \n+
    385 out[34][0][1]=0;
    \n+
    386 out[34][1][1]=-50.0*tmp10*dytmp20;
    \n+
    387 out[35][0][1]=0;
    \n+
    388 out[35][1][1]=-150.0*tmp10*dytmp18;
    \n+
    389 out[36][0][1]=0;
    \n+
    390 out[36][1][1]=-350.0*tmp10*dytmp19;
    \n+
    391 out[37][0][1]=0;
    \n+
    392 out[37][1][1]=-70.0*tmp11*dytmp20;
    \n+
    393 out[38][0][1]=0;
    \n+
    394 out[38][1][1]=-210.0*tmp11*dytmp18;
    \n+
    395 out[39][0][1]=0;
    \n+
    396 out[39][1][1]=-490.0*tmp11*dytmp19;
    \n+
    397
    \n+
    398 }
    \n+
    \n+
    399
    \n+
    \n+
    401 void partial (const std::array<unsigned int, 2>& order,
    \n+
    402 const typename Traits::DomainType& in, // position
    \n+
    403 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    404 {
    \n+
    405 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    406 if (totalOrder == 0) {
    \n+
    407 evaluateFunction(in, out);
    \n+
    408 } else if (totalOrder == 1) {
    \n+
    409 out.resize(size());
    \n+
    410 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    411 auto const& x = in[0], y = in[1];
    \n+
    412
    \n+
    413 if (direction == 0) {
    \n+
    414 auto tmp3 = 2*y - 1;
    \n+
    415 auto tmp4 = y*(6*y - 6) + 1;
    \n+
    416 auto tmp5 = y*(y*(20*y - 30) + 12) - 1;
    \n+
    417 auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;
    \n+
    418 auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);
    \n+
    419 auto tmp18 = y*(y*(2*y - 3) + 1);
    \n+
    420 auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);
    \n+
    421 auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);
    \n+
    422
    \n+
    423 auto dxtmp1 = 16 - x*(x*(140*x - 240) + 120);
    \n+
    424 auto dxtmp2 = x*(x*(140*x - 240) + 120) - 16;
    \n+
    425 auto dxtmp6 = x*(x*(140*x - 180) + 60) - 4;
    \n+
    426 auto dxtmp9 = 2;
    \n+
    427 auto dxtmp10 = 12*x - 6;
    \n+
    428 auto dxtmp11 = x*(60*x - 60) + 12;
    \n+
    429 auto dxtmp13 = 2 - x*(x*(28*x - 42) + 18);
    \n+
    430 auto dxtmp14 = x*(x*(28*x - 42) + 18) - 2;
    \n+
    431 auto dxtmp15 = x*(6*x - 6) + 1;
    \n+
    432 auto dxtmp16 = x*(x*(20*x - 30) + 12) - 1;
    \n+
    433
    \n+
    434 out[0][0]=sign0*dxtmp1;
    \n+
    435 out[0][1]=0;
    \n+
    436 out[1][0]=(-3.0*dxtmp2*tmp3);
    \n+
    437 out[1][1]=0;
    \n+
    438 out[2][0]=sign0*(-5.0*dxtmp2*tmp4);
    \n+
    439 out[2][1]=0;
    \n+
    440 out[3][0]=(-7.0*dxtmp2*tmp5);
    \n+
    441 out[3][1]=0;
    \n+
    442
    \n+
    443 out[4][0]=sign1*dxtmp6;
    \n+
    444 out[4][1]=0;
    \n+
    445 out[5][0]=(-3.0*dxtmp6*tmp3);
    \n+
    446 out[5][1]=0;
    \n+
    447 out[6][0]=sign1*(5.0*dxtmp6*tmp4);
    \n+
    448 out[6][1]=0;
    \n+
    449 out[7][0]=(-7.0*dxtmp6*tmp5);
    \n+
    450 out[7][1]=0;
    \n+
    451
    \n+
    452 out[8][0]=0;
    \n+
    453 out[8][1]=0;
    \n+
    454 out[9][0]=0;
    \n+
    455 out[9][1]=3.0*dxtmp9*tmp8;
    \n+
    456 out[10][0]=0;
    \n+
    457 out[10][1]=sign2*(-5.0*dxtmp10*tmp8);
    \n+
    458 out[11][0]=0;
    \n+
    459 out[11][1]=7.0*dxtmp11*tmp8;
    \n+
    460
    \n+
    461 out[12][0]=0;
    \n+
    462 out[12][1]=0;
    \n+
    463 out[13][0]=0;
    \n+
    464 out[13][1]=3.0*dxtmp9*tmp12;
    \n+
    465 out[14][0]=0;
    \n+
    466 out[14][1]=sign3*5.0*dxtmp10*tmp12;
    \n+
    467 out[15][0]=0;
    \n+
    468 out[15][1]=7.0*dxtmp11*tmp12;
    \n+
    469
    \n+
    470 out[16][0]=10.0*dxtmp13;
    \n+
    471 out[16][1]=0;
    \n+
    472 out[17][0]=-30.0*dxtmp14*tmp3;
    \n+
    473 out[17][1]=0;
    \n+
    474 out[18][0]=-50.0*dxtmp14*tmp4;
    \n+
    475 out[18][1]=0;
    \n+
    476 out[19][0]=-70.0*dxtmp14*tmp5;
    \n+
    477 out[19][1]=0;
    \n+
    478 out[20][0]=-30.0*dxtmp15;
    \n+
    479 out[20][1]=0;
    \n+
    480 out[21][0]=-90.0*dxtmp15*tmp3;
    \n+
    481 out[21][1]=0;
    \n+
    482 out[22][0]=-150.0*dxtmp15*tmp4;
    \n+
    483 out[22][1]=0;
    \n+
    484 out[23][0]=-210.0*dxtmp15*tmp5;
    \n+
    485 out[23][1]=0;
    \n+
    486 out[24][0]=-70.0*dxtmp16;
    \n+
    487 out[24][1]=0;
    \n+
    488 out[25][0]=-210.0*dxtmp16*tmp3;
    \n+
    489 out[25][1]=0;
    \n+
    490 out[26][0]=-350.0*dxtmp16*tmp4;
    \n+
    491 out[26][1]=0;
    \n+
    492 out[27][0]=-490.0*dxtmp16*tmp5;
    \n+
    493 out[27][1]=0;
    \n+
    494 out[28][0]=0;
    \n+
    495 out[28][1]=0;
    \n+
    496 out[29][0]=0;
    \n+
    497 out[29][1]=0;
    \n+
    498 out[30][0]=0;
    \n+
    499 out[30][1]=0;
    \n+
    500 out[31][0]=0;
    \n+
    501 out[31][1]=-30.0*dxtmp9*tmp20;
    \n+
    502 out[32][0]=0;
    \n+
    503 out[32][1]=-90.0*dxtmp9*tmp18;
    \n+
    504 out[33][0]=0;
    \n+
    505 out[33][1]=-210.0*dxtmp9*tmp19;
    \n+
    506 out[34][0]=0;
    \n+
    507 out[34][1]=-50.0*dxtmp10*tmp20;
    \n+
    508 out[35][0]=0;
    \n+
    509 out[35][1]=-150.0*dxtmp10*tmp18;
    \n+
    510 out[36][0]=0;
    \n+
    511 out[36][1]=-350.0*dxtmp10*tmp19;
    \n+
    512 out[37][0]=0;
    \n+
    513 out[37][1]=-70.0*dxtmp11*tmp20;
    \n+
    514 out[38][0]=0;
    \n+
    515 out[38][1]=-210.0*dxtmp11*tmp18;
    \n+
    516 out[39][0]=0;
    \n+
    517 out[39][1]=-490.0*dxtmp11*tmp19;
    \n+
    518 } else if (direction == 1) {
    \n+
    519 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;
    \n+
    520 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);
    \n+
    521 const auto tmp9 = 2*x - 1;
    \n+
    522 const auto tmp10 = x*(6*x - 6) + 1;
    \n+
    523 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;
    \n+
    524 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);
    \n+
    525 const auto tmp15 = x*(x*(2*x - 3) + 1);
    \n+
    526 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);
    \n+
    527
    \n+
    528 const auto dytmp3 = 2;
    \n+
    529 const auto dytmp4 = 12*y - 6;
    \n+
    530 const auto dytmp5 = y*(60*y - 60) + 12;
    \n+
    531 const auto dytmp7 = 16 - y*(y*(140*y - 240) + 120);
    \n+
    532 const auto dytmp8 = y*(y*(140*y - 240) + 120) - 16;
    \n+
    533 const auto dytmp12 = y*(y*(140*y - 180) + 60) - 4;
    \n+
    534 const auto dytmp17 = 2 - y*(y*(28*y - 42) + 18);
    \n+
    535 const auto dytmp18 = y*(6*y - 6) + 1;
    \n+
    536 const auto dytmp19 = y*(y*(20*y - 30) + 12) - 1;
    \n+
    537 const auto dytmp20 = y*(y*(28*y - 42) + 18) - 2;
    \n+
    538
    \n+
    539 out[0][0]=0;
    \n+
    540 out[0][1]=0;
    \n+
    541 out[1][0]=(-3.0*tmp2*dytmp3);
    \n+
    542 out[1][1]=0;
    \n+
    543 out[2][0]=sign0*(-5.0*tmp2*dytmp4);
    \n+
    544 out[2][1]=0;
    \n+
    545 out[3][0]=(-7.0*tmp2*dytmp5);
    \n+
    546 out[3][1]=0;
    \n+
    547
    \n+
    548 out[4][0]=0;
    \n+
    549 out[4][1]=0;
    \n+
    550 out[5][0]=(-3.0*tmp6*dytmp3);
    \n+
    551 out[5][1]=0;
    \n+
    552 out[6][0]=sign1*(5.0*tmp6*dytmp4);
    \n+
    553 out[6][1]=0;
    \n+
    554 out[7][0]=(-7.0*tmp6*dytmp5);
    \n+
    555 out[7][1]=0;
    \n+
    556
    \n+
    557 out[8][0]=0;
    \n+
    558 out[8][1]=sign2*dytmp7;
    \n+
    559 out[9][0]=0;
    \n+
    560 out[9][1]=3.0*tmp9*dytmp8;
    \n+
    561 out[10][0]=0;
    \n+
    562 out[10][1]=sign2*(-5.0*tmp10*dytmp8);
    \n+
    563 out[11][0]=0;
    \n+
    564 out[11][1]=7.0*tmp11*dytmp8;
    \n+
    565
    \n+
    566 out[12][0]=0;
    \n+
    567 out[12][1]=sign3*dytmp12;
    \n+
    568 out[13][0]=0;
    \n+
    569 out[13][1]=3.0*tmp9*dytmp12;
    \n+
    570 out[14][0]=0;
    \n+
    571 out[14][1]=sign3*5.0*tmp10*dytmp12;
    \n+
    572 out[15][0]=0;
    \n+
    573 out[15][1]=7.0*tmp11*dytmp12;
    \n+
    574
    \n+
    575 out[16][0]=0;
    \n+
    576 out[16][1]=0;
    \n+
    577 out[17][0]=-30.0*tmp14*dytmp3;
    \n+
    578 out[17][1]=0;
    \n+
    579 out[18][0]=-50.0*tmp14*dytmp4;
    \n+
    580 out[18][1]=0;
    \n+
    581 out[19][0]=-70.0*tmp14*dytmp5;
    \n+
    582 out[19][1]=0;
    \n+
    583 out[20][0]=0;
    \n+
    584 out[20][1]=0;
    \n+
    585 out[21][0]=-90.0*tmp15*dytmp3;
    \n+
    586 out[21][1]=0;
    \n+
    587 out[22][0]=-150.0*tmp15*dytmp4;
    \n+
    588 out[22][1]=0;
    \n+
    589 out[23][0]=-210.0*tmp15*dytmp5;
    \n+
    590 out[23][1]=0;
    \n+
    591 out[24][0]=0;
    \n+
    592 out[24][1]=0;
    \n+
    593 out[25][0]=-210.0*tmp16*dytmp3;
    \n+
    594 out[25][1]=0;
    \n+
    595 out[26][0]=-350.0*tmp16*dytmp4;
    \n+
    596 out[26][1]=0;
    \n+
    597 out[27][0]=-490.0*tmp16*dytmp5;
    \n+
    598 out[27][1]=0;
    \n+
    599 out[28][0]=0;
    \n+
    600 out[28][1]=10.0*dytmp17;
    \n+
    601 out[29][0]=0;
    \n+
    602 out[29][1]=-30.0*dytmp18;
    \n+
    603 out[30][0]=0;
    \n+
    604 out[30][1]=-70.0*dytmp19;
    \n+
    605 out[31][0]=0;
    \n+
    606 out[31][1]=-30.0*tmp9*dytmp20;
    \n+
    607 out[32][0]=0;
    \n+
    608 out[32][1]=-90.0*tmp9*dytmp18;
    \n+
    609 out[33][0]=0;
    \n+
    610 out[33][1]=-210.0*tmp9*dytmp19;
    \n+
    611 out[34][0]=0;
    \n+
    612 out[34][1]=-50.0*tmp10*dytmp20;
    \n+
    613 out[35][0]=0;
    \n+
    614 out[35][1]=-150.0*tmp10*dytmp18;
    \n+
    615 out[36][0]=0;
    \n+
    616 out[36][1]=-350.0*tmp10*dytmp19;
    \n+
    617 out[37][0]=0;
    \n+
    618 out[37][1]=-70.0*tmp11*dytmp20;
    \n+
    619 out[38][0]=0;
    \n+
    620 out[38][1]=-210.0*tmp11*dytmp18;
    \n+
    621 out[39][0]=0;
    \n+
    622 out[39][1]=-490.0*tmp11*dytmp19;
    \n+
    623 } else {
    \n+
    624 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    625 }
    \n+
    626 } else {
    \n+
    627 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    628 }
    \n+
    629 }
    \n+
    \n+
    630
    \n+
    \n+
    632 unsigned int order () const
    \n+
    633 {
    \n+
    634 return 7;
    \n+
    635 }
    \n+
    \n+
    636
    \n+
    637 private:
    \n+
    638 R sign0, sign1, sign2, sign3;
    \n+
    639 };
    \n+
    \n+
    640}
    \n+
    641
    \n+
    642#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:30
    \n-
    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
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:292
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:67
    \n-
    BDM2Cube2DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:38
    \n-
    BDM2Cube2DLocalBasis(std::bitset< 4 > s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:49
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:35
    \n-
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:56
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:108
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalbasis.hh:29
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas3cube2dlocalbasis.hh:49
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas3cube2dlocalbasis.hh:179
    \n+
    RT3Cube2DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas3cube2dlocalbasis.hh:40
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas3cube2dlocalbasis.hh:60
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas3cube2dlocalbasis.hh:632
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas3cube2dlocalbasis.hh:33
    \n+
    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 raviartthomas3cube2dlocalbasis.hh:401
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,350 +1,671 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n-brezzidouglasmarini2cube2dlocalbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas3cube2dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n-12\n-13#include \n-14\n-15#include \"../../common/localbasis.hh\"\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-28 template\n-_\b2_\b9 class _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-30 {\n-31\n-32 public:\n-33 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,\n-34 R,2,Dune::FieldVector,\n-_\b3_\b5 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-36\n-_\b3_\b8 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n-39 {\n-40 for (size_t i=0; i<4; i++)\n-41 sign_[i] = 1.0;\n-42 }\n-43\n-_\b4_\b9 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs(std::bitset<4> s)\n+8#include \n+9#include \n+10#include \n+11\n+12#include \n+13\n+14#include \"../../common/localbasis.hh\"\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+27 template\n+_\b2_\b8 class _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+29 {\n+30\n+31 public:\n+32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n+FieldVector,\n+_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b4_\b0 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n+41 {\n+42 sign0 = (s[0]) ? -1.0 : 1.0;\n+43 sign1 = (s[1]) ? -1.0 : 1.0;\n+44 sign2 = (s[2]) ? -1.0 : 1.0;\n+45 sign3 = (s[3]) ? -1.0 : 1.0;\n+46 }\n+47\n+_\b4_\b9 unsigned int _\bs_\bi_\bz_\be () const\n 50 {\n-51 for (size_t i=0; i<4; i++)\n-52 sign_[i] = s[i] ? -1.0 : 1.0;\n-53 }\n-54\n-_\b5_\b6 unsigned int _\bs_\bi_\bz_\be() const\n-57 {\n-58 return 14;\n-59 }\n-60\n-_\b6_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-68 std::vector& out) const\n-69 {\n-70 out.resize(_\bs_\bi_\bz_\be());\n-71\n-72 out[0][0] = sign_[0]*(-2.25 + 5.25*in[0] + 7.5*in[1] - 7.5*in[0]*in[1] -\n-3.0*in[0]*in[0] - 7.5*in[1]*in[1] + 7.5*in[0]*in[1]*in[1]);\n-73 out[0][1] = sign_[0]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in\n-[1]);\n-74 out[1][0] = 3.0 - 3.0*in[0]-6.0*in[1] + 6.0*in[0]*in[1];\n-75 out[1][1] = 0.0;\n-76 out[2][0] = sign_[0]*(-3.75 + 3.75*in[0] + 22.5*in[1] - 22.5*in[0]*in[1] -\n-22.5*in[1]*in[1] + 22.5*in[0]*in[1]*in[1]);\n-77 out[2][1] = sign_[0]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in\n-[1]);\n-78 out[3][0] = sign_[1]*(-0.75*in[0] - 7.5*in[0]*in[1] + 3.0*in[0]*in[0] +\n-7.5*in[0]*in[1]*in[1]);\n-79 out[3][1] = sign_[1]*(-1.25*in[1] + 3.75*in[1]*in[1] - 2.5*in[1]*in[1]*in\n-[1]);\n-80 out[4][0] = 3.0*in[0] - 6.0*in[0]*in[1];\n-81 out[4][1] = 0.0;\n-82 out[5][0] = sign_[1]*(+3.75*in[0] - 22.5*in[0]*in[1] + 22.5*in[0]*in[1]*in\n-[1]);\n-83 out[5][1] = sign_[1]*(-3.75*in[1] + 11.25*in[1]*in[1] - 7.5*in[1]*in[1]*in\n-[1]);\n-84 out[6][0] = sign_[2]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in\n-[0]);\n-85 out[6][1] = sign_[2]*(-2.25 + 7.5*in[0] + 5.25*in[1] - 7.5*in[0]*in[1] -\n-7.5*in[0]*in[0] - 3.0*in[1]*in[1] + 7.5*in[0]*in[0]*in[1]);\n-86 out[7][0] = 0.0;\n-87 out[7][1] = -3.0 + 6.0*in[0] + 3.0*in[1] - 6.0*in[0]*in[1];\n-88 out[8][0] = sign_[2]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in\n-[0]);\n-89 out[8][1] = sign_[2]*(-3.75 + 22.5*in[0] + 3.75*in[1] - 22.5*in[0]*in[1] -\n-22.5*in[0]*in[0] + 22.5*in[0]*in[0]*in[1]);\n-90 out[9][0] = sign_[3]*(-1.25*in[0] + 3.75*in[0]*in[0] - 2.5*in[0]*in[0]*in\n-[0]);\n-91 out[9][1] = sign_[3]*(-0.75*in[1] - 7.5*in[0]*in[1] + 3.0*in[1]*in[1] +\n-7.5*in[0]*in[0]*in[1]);\n-92 out[10][0] = 0.0;\n-93 out[10][1] = -3.0*in[1] + 6.0*in[0]*in[1];\n-94 out[11][0] = sign_[3]*(-3.75*in[0] + 11.25*in[0]*in[0] - 7.5*in[0]*in[0]*in\n-[0]);\n-95 out[11][1] = sign_[3]*(3.75*in[1] - 22.5*in[0]*in[1] + 22.5*in[0]*in[0]*in\n-[1]);\n-96 out[12][0] = 6.0*in[0] - 6.0*in[0]*in[0];\n-97 out[12][1] = 0.0;\n-98 out[13][0] = 0.0;\n-99 out[13][1] = 6.0*in[1] - 6.0*in[1]*in[1];\n-100 }\n-101\n-_\b1_\b0_\b8 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-109 std::vector& out) const\n-110 {\n-111 out.resize(_\bs_\bi_\bz_\be());\n-112\n-113 out[0][0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);\n-114 out[0][0][1] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);\n-115 out[0][1][0] = 0.0;\n-116 out[0][1][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);\n-117\n-118 out[1][0][0] = -3.0 + 6.0*in[1];\n-119 out[1][0][1] = -6.0 + 6.0*in[0];\n-120 out[1][1][0] = 0.0;\n-121 out[1][1][1] = 0.0;\n+51 return 40;\n+52 }\n+53\n+_\b6_\b0 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+61 std::vector& out) const\n+62 {\n+63 out.resize(40);\n+64 auto const& x = in[0], y = in[1];\n+65\n+66 const auto tmp1 = - x*(x*(x*(35*x - 80) + 60) - 16) - 1;\n+67 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;\n+68 const auto tmp3 = 2*y - 1;\n+69 const auto tmp4 = y*(6*y - 6) + 1;\n+70 const auto tmp5 = y*(y*(20*y - 30) + 12) - 1;\n+71 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);\n+72 const auto tmp7 = - y*(y*(y*(35*y - 80) + 60) - 16) - 1;\n+73 const auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;\n+74 const auto tmp9 = 2*x - 1;\n+75 const auto tmp10 = x*(6*x - 6) + 1;\n+76 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;\n+77 const auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);\n+78 const auto tmp13 = -x*(x*(x*(7*x - 14) + 9) - 2);\n+79 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);\n+80 const auto tmp15 = x*(x*(2*x - 3) + 1);\n+81 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);\n+82 const auto tmp17 = -y*(y*(y*(7*y - 14) + 9) - 2);\n+83 const auto tmp18 = y*(y*(2*y - 3) + 1);\n+84 const auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);\n+85 const auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);\n+86\n+87 out[0][0]=sign0*tmp1;\n+88 out[0][1]=0;\n+89 out[1][0]=(-3.0*tmp2*tmp3);\n+90 out[1][1]=0;\n+91 out[2][0]=sign0*(-5.0*tmp2*tmp4);\n+92 out[2][1]=0;\n+93 out[3][0]=(-7.0*tmp2*tmp5);\n+94 out[3][1]=0;\n+95\n+96 out[4][0]=sign1*tmp6;\n+97 out[4][1]=0;\n+98 out[5][0]=(-3.0*tmp6*tmp3);\n+99 out[5][1]=0;\n+100 out[6][0]=sign1*(5.0*tmp6*tmp4);\n+101 out[6][1]=0;\n+102 out[7][0]=(-7.0*tmp6*tmp5);\n+103 out[7][1]=0;\n+104\n+105 out[8][0]=0;\n+106 out[8][1]=sign2*tmp7;\n+107 out[9][0]=0;\n+108 out[9][1]=3.0*tmp9*tmp8;\n+109 out[10][0]=0;\n+110 out[10][1]=sign2*(-5.0*tmp10*tmp8);\n+111 out[11][0]=0;\n+112 out[11][1]=7.0*tmp11*tmp8;\n+113\n+114 out[12][0]=0;\n+115 out[12][1]=sign3*tmp12;\n+116 out[13][0]=0;\n+117 out[13][1]=3.0*tmp9*tmp12;\n+118 out[14][0]=0;\n+119 out[14][1]=sign3*5.0*tmp10*tmp12;\n+120 out[15][0]=0;\n+121 out[15][1]=7.0*tmp11*tmp12;\n 122\n-123 out[2][0][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);\n-124 out[2][0][1] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in\n-[1]);\n-125 out[2][1][0] = 0.0;\n-126 out[2][1][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);\n-127\n-128 out[3][0][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);\n-129 out[3][0][1] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);\n-130 out[3][1][0] = 0.0;\n-131 out[3][1][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);\n-132\n-133 out[4][0][0] = 3.0 - 6.0*in[1];\n-134 out[4][0][1] = -6.0*in[0];\n-135 out[4][1][0] = 0.0;\n-136 out[4][1][1] = 0.0;\n-137\n-138 out[5][0][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);\n-139 out[5][0][1] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);\n-140 out[5][1][0] = 0.0;\n-141 out[5][1][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);\n-142\n-143 out[6][0][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);\n-144 out[6][0][1] = 0.0;\n-145 out[6][1][0] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);\n-146 out[6][1][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);\n-147\n-148 out[7][0][0] = 0.0;\n-149 out[7][0][1] = 0.0;\n-150 out[7][1][0] = 6.0 - 6.0*in[1];\n-151 out[7][1][1] = 3.0 - 6.0*in[0];\n-152\n-153 out[8][0][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);\n-154 out[8][0][1] = 0.0;\n-155 out[8][1][0] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in\n-[1]);\n-156 out[8][1][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);\n-157\n-158 out[9][0][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);\n-159 out[9][0][1] = 0.0;\n-160 out[9][1][0] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);\n-161 out[9][1][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);\n-162\n-163 out[10][0][0] = 0.0;\n-164 out[10][0][1] = 0.0;\n-165 out[10][1][0] = 6.0*in[1];\n-166 out[10][1][1] = -3.0 + 6.0*in[0];\n-167\n-168 out[11][0][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);\n-169 out[11][0][1] = 0.0;\n-170 out[11][1][0] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);\n-171 out[11][1][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);\n+123 out[16][0]=10.0*tmp13;\n+124 out[16][1]=0;\n+125 out[17][0]=-30.0*tmp14*tmp3;\n+126 out[17][1]=0;\n+127 out[18][0]=-50.0*tmp14*tmp4;\n+128 out[18][1]=0;\n+129 out[19][0]=-70.0*tmp14*tmp5;\n+130 out[19][1]=0;\n+131 out[20][0]=-30.0*tmp15;\n+132 out[20][1]=0;\n+133 out[21][0]=-90.0*tmp15*tmp3;\n+134 out[21][1]=0;\n+135 out[22][0]=-150.0*tmp15*tmp4;\n+136 out[22][1]=0;\n+137 out[23][0]=-210.0*tmp15*tmp5;\n+138 out[23][1]=0;\n+139 out[24][0]=-70.0*tmp16;\n+140 out[24][1]=0;\n+141 out[25][0]=-210.0*tmp16*tmp3;\n+142 out[25][1]=0;\n+143 out[26][0]=-350.0*tmp16*tmp4;\n+144 out[26][1]=0;\n+145 out[27][0]=-490.0*tmp16*tmp5;\n+146 out[27][1]=0;\n+147 out[28][0]=0;\n+148 out[28][1]=10.0*tmp17;\n+149 out[29][0]=0;\n+150 out[29][1]=-30.0*tmp18;\n+151 out[30][0]=0;\n+152 out[30][1]=-70.0*tmp19;\n+153 out[31][0]=0;\n+154 out[31][1]=-30.0*tmp9*tmp20;\n+155 out[32][0]=0;\n+156 out[32][1]=-90.0*tmp9*tmp18;\n+157 out[33][0]=0;\n+158 out[33][1]=-210.0*tmp9*tmp19;\n+159 out[34][0]=0;\n+160 out[34][1]=-50.0*tmp10*tmp20;\n+161 out[35][0]=0;\n+162 out[35][1]=-150.0*tmp10*tmp18;\n+163 out[36][0]=0;\n+164 out[36][1]=-350.0*tmp10*tmp19;\n+165 out[37][0]=0;\n+166 out[37][1]=-70.0*tmp11*tmp20;\n+167 out[38][0]=0;\n+168 out[38][1]=-210.0*tmp11*tmp18;\n+169 out[39][0]=0;\n+170 out[39][1]=-490.0*tmp11*tmp19;\n+171 }\n 172\n-173 out[12][0][0] = 6.0 - 12.0*in[0];\n-174 out[12][0][1] = 0.0;\n-175 out[12][1][0] = 0.0;\n-176 out[12][1][1] = 0.0;\n-177\n-178 out[13][0][0] = 0.0;\n-179 out[13][0][1] = 0.0;\n-180 out[13][1][0] = 0.0;\n-181 out[13][1][1] = 6.0 - 12.0*in[1];\n-182 }\n-183\n-_\b1_\b8_\b5 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-186 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-187 std::vector& out) const // return value\n-188 {\n-189 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-190 if (totalOrder == 0) {\n-191 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-192 } else if (totalOrder == 1) {\n-193 out.resize(_\bs_\bi_\bz_\be());\n-194 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-195\n-196 switch (direction) {\n-197 case 0:\n-198 out[0][0] = sign_[0]*(5.25 - 7.5*in[1] - 6.0*in[0] + 7.5*in[1]*in[1]);\n-199 out[0][1] = 0.0;\n-200\n-201 out[1][0] = -3.0 + 6.0*in[1];\n-202 out[1][1] = 0.0;\n-203\n-204 out[2][0] = sign_[0]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);\n-205 out[2][1] = 0.0;\n-206\n-207 out[3][0] = sign_[1]*(-0.75 - 7.5*in[1] + 6.0*in[0] + 7.5*in[1]*in[1]);\n-208 out[3][1] = 0.0;\n-209\n-210 out[4][0] = 3.0 - 6.0*in[1];\n-211 out[4][1] = 0.0;\n-212\n-213 out[5][0] = sign_[1]*(3.75 - 22.5*in[1] + 22.5*in[1]*in[1]);\n-214 out[5][1] = 0.0;\n-215\n-216 out[6][0] = sign_[2]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);\n-217 out[6][1] = sign_[2]*(7.5 - 7.5*in[1] - 15.0*in[0] + 15.0*in[0]*in[1]);\n-218\n-219 out[7][0] = 0.0;\n-220 out[7][1] = 6.0 - 6.0*in[1];\n-221\n-222 out[8][0] = sign_[2]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);\n-223 out[8][1] = sign_[2]*(22.5 - 22.5*in[1] - 45.0*in[0] + 45.0*in[0]*in[1]);\n+_\b1_\b7_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+180 std::vector& out) const\n+181 {\n+182 out.resize(40);\n+183 auto const& x = in[0], y = in[1];\n+184\n+185 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;\n+186 const auto tmp3 = 2*y - 1;\n+187 const auto tmp4 = y*(6*y - 6) + 1;\n+188 const auto tmp5 = y*(y*(20*y - 30) + 12) - 1;\n+189 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);\n+190 const auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;\n+191 const auto tmp9 = 2*x - 1;\n+192 const auto tmp10 = x*(6*x - 6) + 1;\n+193 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;\n+194 const auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);\n+195 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);\n+196 const auto tmp15 = x*(x*(2*x - 3) + 1);\n+197 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);\n+198 const auto tmp18 = y*(y*(2*y - 3) + 1);\n+199 const auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);\n+200 const auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);\n+201 // temporaries tmp1, tmp7, tmp13, tmp17 are not used in jacobian\n+202\n+203 const auto dxtmp1 = 16 - x*(x*(140*x - 240) + 120);\n+204 const auto dxtmp2 = x*(x*(140*x - 240) + 120) - 16;\n+205 const auto dytmp3 = 2;\n+206 const auto dytmp4 = 12*y - 6;\n+207 const auto dytmp5 = y*(60*y - 60) + 12;\n+208 const auto dxtmp6 = x*(x*(140*x - 180) + 60) - 4;\n+209 const auto dytmp7 = 16 - y*(y*(140*y - 240) + 120);\n+210 const auto dytmp8 = y*(y*(140*y - 240) + 120) - 16;\n+211 const auto dxtmp9 = 2;\n+212 const auto dxtmp10 = 12*x - 6;\n+213 const auto dxtmp11 = x*(60*x - 60) + 12;\n+214 const auto dytmp12 = y*(y*(140*y - 180) + 60) - 4;\n+215 const auto dxtmp13 = 2 - x*(x*(28*x - 42) + 18);\n+216 const auto dxtmp14 = x*(x*(28*x - 42) + 18) - 2;\n+217 const auto dxtmp15 = x*(6*x - 6) + 1;\n+218 const auto dxtmp16 = x*(x*(20*x - 30) + 12) - 1;\n+219 const auto dytmp17 = 2 - y*(y*(28*y - 42) + 18);\n+220 const auto dytmp18 = y*(6*y - 6) + 1;\n+221 const auto dytmp19 = y*(y*(20*y - 30) + 12) - 1;\n+222 const auto dytmp20 = y*(y*(28*y - 42) + 18) - 2;\n+223\n 224\n-225 out[9][0] = sign_[3]*(-1.25 + 7.5*in[0] - 7.5*in[0]*in[0]);\n-226 out[9][1] = sign_[3]*(-7.5*in[1] + 15.0*in[0]*in[1]);\n-227\n-228 out[10][0] = 0.0;\n-229 out[10][1] = 6.0*in[1];\n-230\n-231 out[11][0] = sign_[3]*(-3.75 + 22.5*in[0] - 22.5*in[0]*in[0]);\n-232 out[11][1] = sign_[3]*(-22.5*in[1] + 45*in[0]*in[1]);\n-233\n-234 out[12][0] = 6.0 - 12.0*in[0];\n-235 out[12][1] = 0.0;\n-236\n-237 out[13][0] = 0.0;\n-238 out[13][1] = 0.0;\n-239 break;\n-240 case 1:\n-241 out[0][0] = sign_[0]*(7.5 - 7.5*in[0] - 15.0*in[1] + 15.0*in[0]*in[1]);\n-242 out[0][1] = sign_[0]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);\n+225 // x-component\n+226 out[0][0][0]=sign0*dxtmp1;\n+227 out[0][1][0]=0;\n+228 out[1][0][0]=(-3.0*dxtmp2*tmp3);\n+229 out[1][1][0]=0;\n+230 out[2][0][0]=sign0*(-5.0*dxtmp2*tmp4);\n+231 out[2][1][0]=0;\n+232 out[3][0][0]=(-7.0*dxtmp2*tmp5);\n+233 out[3][1][0]=0;\n+234\n+235 out[4][0][0]=sign1*dxtmp6;\n+236 out[4][1][0]=0;\n+237 out[5][0][0]=(-3.0*dxtmp6*tmp3);\n+238 out[5][1][0]=0;\n+239 out[6][0][0]=sign1*(5.0*dxtmp6*tmp4);\n+240 out[6][1][0]=0;\n+241 out[7][0][0]=(-7.0*dxtmp6*tmp5);\n+242 out[7][1][0]=0;\n 243\n-244 out[1][0] = -6.0 + 6.0*in[0];\n-245 out[1][1] = 0.0;\n-246\n-247 out[2][0] = sign_[0]*(22.5 - 22.5*in[0] - 45.0*in[1] + 45.0*in[0]*in[1]);\n-248 out[2][1] = sign_[0]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);\n-249\n-250 out[3][0] = sign_[1]*(-7.5*in[0] + 15.0*in[0]*in[1]);\n-251 out[3][1] = sign_[1]*(-1.25 + 7.5*in[1] - 7.5*in[1]*in[1]);\n+244 out[8][0][0]=0;\n+245 out[8][1][0]=0;\n+246 out[9][0][0]=0;\n+247 out[9][1][0]=3.0*dxtmp9*tmp8;\n+248 out[10][0][0]=0;\n+249 out[10][1][0]=sign2*(-5.0*dxtmp10*tmp8);\n+250 out[11][0][0]=0;\n+251 out[11][1][0]=7.0*dxtmp11*tmp8;\n 252\n-253 out[4][0] = -6.0*in[0];\n-254 out[4][1] = 0.0;\n-255\n-256 out[5][0] = sign_[1]*(-22.5*in[0] + 45.0*in[0]*in[1]);\n-257 out[5][1] = sign_[1]*(-3.75 + 22.5*in[1] - 22.5*in[1]*in[1]);\n-258\n-259 out[6][0] = 0.0;\n-260 out[6][1] = sign_[2]*(5.25 - 7.5*in[0]- 6.0*in[1] + 7.5*in[0]*in[0]);\n+253 out[12][0][0]=0;\n+254 out[12][1][0]=0;\n+255 out[13][0][0]=0;\n+256 out[13][1][0]=3.0*dxtmp9*tmp12;\n+257 out[14][0][0]=0;\n+258 out[14][1][0]=sign3*5.0*dxtmp10*tmp12;\n+259 out[15][0][0]=0;\n+260 out[15][1][0]=7.0*dxtmp11*tmp12;\n 261\n-262 out[7][0] = 0.0;\n-263 out[7][1] = 3.0 - 6.0*in[0];\n-264\n-265 out[8][0] = 0.0;\n-266 out[8][1] = sign_[2]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);\n-267\n-268 out[9][0] = 0.0;\n-269 out[9][1] = sign_[3]*(-0.75 - 7.5*in[0] + 6.0*in[1] + 7.5*in[0]*in[0]);\n-270\n-271 out[10][0] = 0.0;\n-272 out[10][1] = -3.0 + 6.0*in[0];\n-273\n-274 out[11][0] = 0.0;\n-275 out[11][1] = sign_[3]*(3.75 - 22.5*in[0] + 22.5*in[0]*in[0]);\n-276\n-277 out[12][0] = 0.0;\n-278 out[12][1] = 0.0;\n-279\n-280 out[13][0] = 0.0;\n-281 out[13][1] = 6.0 - 12.0*in[1];\n-282 break;\n-283 default:\n-284 DUNE_THROW(RangeError, \"Component out of range.\");\n-285 }\n-286 } else {\n-287 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-288 }\n-289 }\n-290\n-_\b2_\b9_\b2 unsigned int _\bo_\br_\bd_\be_\br() const\n-293 {\n-294 return 3;\n-295 }\n-296\n-297 private:\n-298 std::array sign_;\n-299 };\n-300} // end namespace Dune\n-301#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH\n+262 out[16][0][0]=10.0*dxtmp13;\n+263 out[16][1][0]=0;\n+264 out[17][0][0]=-30.0*dxtmp14*tmp3;\n+265 out[17][1][0]=0;\n+266 out[18][0][0]=-50.0*dxtmp14*tmp4;\n+267 out[18][1][0]=0;\n+268 out[19][0][0]=-70.0*dxtmp14*tmp5;\n+269 out[19][1][0]=0;\n+270 out[20][0][0]=-30.0*dxtmp15;\n+271 out[20][1][0]=0;\n+272 out[21][0][0]=-90.0*dxtmp15*tmp3;\n+273 out[21][1][0]=0;\n+274 out[22][0][0]=-150.0*dxtmp15*tmp4;\n+275 out[22][1][0]=0;\n+276 out[23][0][0]=-210.0*dxtmp15*tmp5;\n+277 out[23][1][0]=0;\n+278 out[24][0][0]=-70.0*dxtmp16;\n+279 out[24][1][0]=0;\n+280 out[25][0][0]=-210.0*dxtmp16*tmp3;\n+281 out[25][1][0]=0;\n+282 out[26][0][0]=-350.0*dxtmp16*tmp4;\n+283 out[26][1][0]=0;\n+284 out[27][0][0]=-490.0*dxtmp16*tmp5;\n+285 out[27][1][0]=0;\n+286 out[28][0][0]=0;\n+287 out[28][1][0]=0;\n+288 out[29][0][0]=0;\n+289 out[29][1][0]=0;\n+290 out[30][0][0]=0;\n+291 out[30][1][0]=0;\n+292 out[31][0][0]=0;\n+293 out[31][1][0]=-30.0*dxtmp9*tmp20;\n+294 out[32][0][0]=0;\n+295 out[32][1][0]=-90.0*dxtmp9*tmp18;\n+296 out[33][0][0]=0;\n+297 out[33][1][0]=-210.0*dxtmp9*tmp19;\n+298 out[34][0][0]=0;\n+299 out[34][1][0]=-50.0*dxtmp10*tmp20;\n+300 out[35][0][0]=0;\n+301 out[35][1][0]=-150.0*dxtmp10*tmp18;\n+302 out[36][0][0]=0;\n+303 out[36][1][0]=-350.0*dxtmp10*tmp19;\n+304 out[37][0][0]=0;\n+305 out[37][1][0]=-70.0*dxtmp11*tmp20;\n+306 out[38][0][0]=0;\n+307 out[38][1][0]=-210.0*dxtmp11*tmp18;\n+308 out[39][0][0]=0;\n+309 out[39][1][0]=-490.0*dxtmp11*tmp19;\n+310\n+311\n+312 // y-component\n+313 out[0][0][1]=0;\n+314 out[0][1][1]=0;\n+315 out[1][0][1]=(-3.0*tmp2*dytmp3);\n+316 out[1][1][1]=0;\n+317 out[2][0][1]=sign0*(-5.0*tmp2*dytmp4);\n+318 out[2][1][1]=0;\n+319 out[3][0][1]=(-7.0*tmp2*dytmp5);\n+320 out[3][1][1]=0;\n+321\n+322 out[4][0][1]=0;\n+323 out[4][1][1]=0;\n+324 out[5][0][1]=(-3.0*tmp6*dytmp3);\n+325 out[5][1][1]=0;\n+326 out[6][0][1]=sign1*(5.0*tmp6*dytmp4);\n+327 out[6][1][1]=0;\n+328 out[7][0][1]=(-7.0*tmp6*dytmp5);\n+329 out[7][1][1]=0;\n+330\n+331 out[8][0][1]=0;\n+332 out[8][1][1]=sign2*dytmp7;\n+333 out[9][0][1]=0;\n+334 out[9][1][1]=3.0*tmp9*dytmp8;\n+335 out[10][0][1]=0;\n+336 out[10][1][1]=sign2*(-5.0*tmp10*dytmp8);\n+337 out[11][0][1]=0;\n+338 out[11][1][1]=7.0*tmp11*dytmp8;\n+339\n+340 out[12][0][1]=0;\n+341 out[12][1][1]=sign3*dytmp12;\n+342 out[13][0][1]=0;\n+343 out[13][1][1]=3.0*tmp9*dytmp12;\n+344 out[14][0][1]=0;\n+345 out[14][1][1]=sign3*5.0*tmp10*dytmp12;\n+346 out[15][0][1]=0;\n+347 out[15][1][1]=7.0*tmp11*dytmp12;\n+348\n+349 out[16][0][1]=0;\n+350 out[16][1][1]=0;\n+351 out[17][0][1]=-30.0*tmp14*dytmp3;\n+352 out[17][1][1]=0;\n+353 out[18][0][1]=-50.0*tmp14*dytmp4;\n+354 out[18][1][1]=0;\n+355 out[19][0][1]=-70.0*tmp14*dytmp5;\n+356 out[19][1][1]=0;\n+357 out[20][0][1]=0;\n+358 out[20][1][1]=0;\n+359 out[21][0][1]=-90.0*tmp15*dytmp3;\n+360 out[21][1][1]=0;\n+361 out[22][0][1]=-150.0*tmp15*dytmp4;\n+362 out[22][1][1]=0;\n+363 out[23][0][1]=-210.0*tmp15*dytmp5;\n+364 out[23][1][1]=0;\n+365 out[24][0][1]=0;\n+366 out[24][1][1]=0;\n+367 out[25][0][1]=-210.0*tmp16*dytmp3;\n+368 out[25][1][1]=0;\n+369 out[26][0][1]=-350.0*tmp16*dytmp4;\n+370 out[26][1][1]=0;\n+371 out[27][0][1]=-490.0*tmp16*dytmp5;\n+372 out[27][1][1]=0;\n+373 out[28][0][1]=0;\n+374 out[28][1][1]=10.0*dytmp17;\n+375 out[29][0][1]=0;\n+376 out[29][1][1]=-30.0*dytmp18;\n+377 out[30][0][1]=0;\n+378 out[30][1][1]=-70.0*dytmp19;\n+379 out[31][0][1]=0;\n+380 out[31][1][1]=-30.0*tmp9*dytmp20;\n+381 out[32][0][1]=0;\n+382 out[32][1][1]=-90.0*tmp9*dytmp18;\n+383 out[33][0][1]=0;\n+384 out[33][1][1]=-210.0*tmp9*dytmp19;\n+385 out[34][0][1]=0;\n+386 out[34][1][1]=-50.0*tmp10*dytmp20;\n+387 out[35][0][1]=0;\n+388 out[35][1][1]=-150.0*tmp10*dytmp18;\n+389 out[36][0][1]=0;\n+390 out[36][1][1]=-350.0*tmp10*dytmp19;\n+391 out[37][0][1]=0;\n+392 out[37][1][1]=-70.0*tmp11*dytmp20;\n+393 out[38][0][1]=0;\n+394 out[38][1][1]=-210.0*tmp11*dytmp18;\n+395 out[39][0][1]=0;\n+396 out[39][1][1]=-490.0*tmp11*dytmp19;\n+397\n+398 }\n+399\n+_\b4_\b0_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+402 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+403 std::vector& out) const // return value\n+404 {\n+405 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+406 if (totalOrder == 0) {\n+407 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+408 } else if (totalOrder == 1) {\n+409 out.resize(_\bs_\bi_\bz_\be());\n+410 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n+411 auto const& x = in[0], y = in[1];\n+412\n+413 if (direction == 0) {\n+414 auto tmp3 = 2*y - 1;\n+415 auto tmp4 = y*(6*y - 6) + 1;\n+416 auto tmp5 = y*(y*(20*y - 30) + 12) - 1;\n+417 auto tmp8 = y*(y*(y*(35*y - 80) + 60) - 16) + 1;\n+418 auto tmp12 = y*(y*(y*(35*y - 60) + 30) - 4);\n+419 auto tmp18 = y*(y*(2*y - 3) + 1);\n+420 auto tmp19 = y*(y*(y*(5*y - 10) + 6) - 1);\n+421 auto tmp20 = y*(y*(y*(7*y - 14) + 9) - 2);\n+422\n+423 auto dxtmp1 = 16 - x*(x*(140*x - 240) + 120);\n+424 auto dxtmp2 = x*(x*(140*x - 240) + 120) - 16;\n+425 auto dxtmp6 = x*(x*(140*x - 180) + 60) - 4;\n+426 auto dxtmp9 = 2;\n+427 auto dxtmp10 = 12*x - 6;\n+428 auto dxtmp11 = x*(60*x - 60) + 12;\n+429 auto dxtmp13 = 2 - x*(x*(28*x - 42) + 18);\n+430 auto dxtmp14 = x*(x*(28*x - 42) + 18) - 2;\n+431 auto dxtmp15 = x*(6*x - 6) + 1;\n+432 auto dxtmp16 = x*(x*(20*x - 30) + 12) - 1;\n+433\n+434 out[0][0]=sign0*dxtmp1;\n+435 out[0][1]=0;\n+436 out[1][0]=(-3.0*dxtmp2*tmp3);\n+437 out[1][1]=0;\n+438 out[2][0]=sign0*(-5.0*dxtmp2*tmp4);\n+439 out[2][1]=0;\n+440 out[3][0]=(-7.0*dxtmp2*tmp5);\n+441 out[3][1]=0;\n+442\n+443 out[4][0]=sign1*dxtmp6;\n+444 out[4][1]=0;\n+445 out[5][0]=(-3.0*dxtmp6*tmp3);\n+446 out[5][1]=0;\n+447 out[6][0]=sign1*(5.0*dxtmp6*tmp4);\n+448 out[6][1]=0;\n+449 out[7][0]=(-7.0*dxtmp6*tmp5);\n+450 out[7][1]=0;\n+451\n+452 out[8][0]=0;\n+453 out[8][1]=0;\n+454 out[9][0]=0;\n+455 out[9][1]=3.0*dxtmp9*tmp8;\n+456 out[10][0]=0;\n+457 out[10][1]=sign2*(-5.0*dxtmp10*tmp8);\n+458 out[11][0]=0;\n+459 out[11][1]=7.0*dxtmp11*tmp8;\n+460\n+461 out[12][0]=0;\n+462 out[12][1]=0;\n+463 out[13][0]=0;\n+464 out[13][1]=3.0*dxtmp9*tmp12;\n+465 out[14][0]=0;\n+466 out[14][1]=sign3*5.0*dxtmp10*tmp12;\n+467 out[15][0]=0;\n+468 out[15][1]=7.0*dxtmp11*tmp12;\n+469\n+470 out[16][0]=10.0*dxtmp13;\n+471 out[16][1]=0;\n+472 out[17][0]=-30.0*dxtmp14*tmp3;\n+473 out[17][1]=0;\n+474 out[18][0]=-50.0*dxtmp14*tmp4;\n+475 out[18][1]=0;\n+476 out[19][0]=-70.0*dxtmp14*tmp5;\n+477 out[19][1]=0;\n+478 out[20][0]=-30.0*dxtmp15;\n+479 out[20][1]=0;\n+480 out[21][0]=-90.0*dxtmp15*tmp3;\n+481 out[21][1]=0;\n+482 out[22][0]=-150.0*dxtmp15*tmp4;\n+483 out[22][1]=0;\n+484 out[23][0]=-210.0*dxtmp15*tmp5;\n+485 out[23][1]=0;\n+486 out[24][0]=-70.0*dxtmp16;\n+487 out[24][1]=0;\n+488 out[25][0]=-210.0*dxtmp16*tmp3;\n+489 out[25][1]=0;\n+490 out[26][0]=-350.0*dxtmp16*tmp4;\n+491 out[26][1]=0;\n+492 out[27][0]=-490.0*dxtmp16*tmp5;\n+493 out[27][1]=0;\n+494 out[28][0]=0;\n+495 out[28][1]=0;\n+496 out[29][0]=0;\n+497 out[29][1]=0;\n+498 out[30][0]=0;\n+499 out[30][1]=0;\n+500 out[31][0]=0;\n+501 out[31][1]=-30.0*dxtmp9*tmp20;\n+502 out[32][0]=0;\n+503 out[32][1]=-90.0*dxtmp9*tmp18;\n+504 out[33][0]=0;\n+505 out[33][1]=-210.0*dxtmp9*tmp19;\n+506 out[34][0]=0;\n+507 out[34][1]=-50.0*dxtmp10*tmp20;\n+508 out[35][0]=0;\n+509 out[35][1]=-150.0*dxtmp10*tmp18;\n+510 out[36][0]=0;\n+511 out[36][1]=-350.0*dxtmp10*tmp19;\n+512 out[37][0]=0;\n+513 out[37][1]=-70.0*dxtmp11*tmp20;\n+514 out[38][0]=0;\n+515 out[38][1]=-210.0*dxtmp11*tmp18;\n+516 out[39][0]=0;\n+517 out[39][1]=-490.0*dxtmp11*tmp19;\n+518 } else if (direction == 1) {\n+519 const auto tmp2 = x*(x*(x*(35*x - 80) + 60) - 16) + 1;\n+520 const auto tmp6 = x*(x*(x*(35*x - 60) + 30) - 4);\n+521 const auto tmp9 = 2*x - 1;\n+522 const auto tmp10 = x*(6*x - 6) + 1;\n+523 const auto tmp11 = x*(x*(20*x - 30) + 12) - 1;\n+524 const auto tmp14 = x*(x*(x*(7*x - 14) + 9) - 2);\n+525 const auto tmp15 = x*(x*(2*x - 3) + 1);\n+526 const auto tmp16 = x*(x*(x*(5*x - 10) + 6) - 1);\n+527\n+528 const auto dytmp3 = 2;\n+529 const auto dytmp4 = 12*y - 6;\n+530 const auto dytmp5 = y*(60*y - 60) + 12;\n+531 const auto dytmp7 = 16 - y*(y*(140*y - 240) + 120);\n+532 const auto dytmp8 = y*(y*(140*y - 240) + 120) - 16;\n+533 const auto dytmp12 = y*(y*(140*y - 180) + 60) - 4;\n+534 const auto dytmp17 = 2 - y*(y*(28*y - 42) + 18);\n+535 const auto dytmp18 = y*(6*y - 6) + 1;\n+536 const auto dytmp19 = y*(y*(20*y - 30) + 12) - 1;\n+537 const auto dytmp20 = y*(y*(28*y - 42) + 18) - 2;\n+538\n+539 out[0][0]=0;\n+540 out[0][1]=0;\n+541 out[1][0]=(-3.0*tmp2*dytmp3);\n+542 out[1][1]=0;\n+543 out[2][0]=sign0*(-5.0*tmp2*dytmp4);\n+544 out[2][1]=0;\n+545 out[3][0]=(-7.0*tmp2*dytmp5);\n+546 out[3][1]=0;\n+547\n+548 out[4][0]=0;\n+549 out[4][1]=0;\n+550 out[5][0]=(-3.0*tmp6*dytmp3);\n+551 out[5][1]=0;\n+552 out[6][0]=sign1*(5.0*tmp6*dytmp4);\n+553 out[6][1]=0;\n+554 out[7][0]=(-7.0*tmp6*dytmp5);\n+555 out[7][1]=0;\n+556\n+557 out[8][0]=0;\n+558 out[8][1]=sign2*dytmp7;\n+559 out[9][0]=0;\n+560 out[9][1]=3.0*tmp9*dytmp8;\n+561 out[10][0]=0;\n+562 out[10][1]=sign2*(-5.0*tmp10*dytmp8);\n+563 out[11][0]=0;\n+564 out[11][1]=7.0*tmp11*dytmp8;\n+565\n+566 out[12][0]=0;\n+567 out[12][1]=sign3*dytmp12;\n+568 out[13][0]=0;\n+569 out[13][1]=3.0*tmp9*dytmp12;\n+570 out[14][0]=0;\n+571 out[14][1]=sign3*5.0*tmp10*dytmp12;\n+572 out[15][0]=0;\n+573 out[15][1]=7.0*tmp11*dytmp12;\n+574\n+575 out[16][0]=0;\n+576 out[16][1]=0;\n+577 out[17][0]=-30.0*tmp14*dytmp3;\n+578 out[17][1]=0;\n+579 out[18][0]=-50.0*tmp14*dytmp4;\n+580 out[18][1]=0;\n+581 out[19][0]=-70.0*tmp14*dytmp5;\n+582 out[19][1]=0;\n+583 out[20][0]=0;\n+584 out[20][1]=0;\n+585 out[21][0]=-90.0*tmp15*dytmp3;\n+586 out[21][1]=0;\n+587 out[22][0]=-150.0*tmp15*dytmp4;\n+588 out[22][1]=0;\n+589 out[23][0]=-210.0*tmp15*dytmp5;\n+590 out[23][1]=0;\n+591 out[24][0]=0;\n+592 out[24][1]=0;\n+593 out[25][0]=-210.0*tmp16*dytmp3;\n+594 out[25][1]=0;\n+595 out[26][0]=-350.0*tmp16*dytmp4;\n+596 out[26][1]=0;\n+597 out[27][0]=-490.0*tmp16*dytmp5;\n+598 out[27][1]=0;\n+599 out[28][0]=0;\n+600 out[28][1]=10.0*dytmp17;\n+601 out[29][0]=0;\n+602 out[29][1]=-30.0*dytmp18;\n+603 out[30][0]=0;\n+604 out[30][1]=-70.0*dytmp19;\n+605 out[31][0]=0;\n+606 out[31][1]=-30.0*tmp9*dytmp20;\n+607 out[32][0]=0;\n+608 out[32][1]=-90.0*tmp9*dytmp18;\n+609 out[33][0]=0;\n+610 out[33][1]=-210.0*tmp9*dytmp19;\n+611 out[34][0]=0;\n+612 out[34][1]=-50.0*tmp10*dytmp20;\n+613 out[35][0]=0;\n+614 out[35][1]=-150.0*tmp10*dytmp18;\n+615 out[36][0]=0;\n+616 out[36][1]=-350.0*tmp10*dytmp19;\n+617 out[37][0]=0;\n+618 out[37][1]=-70.0*tmp11*dytmp20;\n+619 out[38][0]=0;\n+620 out[38][1]=-210.0*tmp11*dytmp18;\n+621 out[39][0]=0;\n+622 out[39][1]=-490.0*tmp11*dytmp19;\n+623 } else {\n+624 DUNE_THROW(RangeError, \"Component out of range.\");\n+625 }\n+626 } else {\n+627 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+628 }\n+629 }\n+630\n+_\b6_\b3_\b2 unsigned int _\bo_\br_\bd_\be_\br () const\n+633 {\n+634 return 7;\n+635 }\n+636\n+637 private:\n+638 R sign0, sign1, sign2, sign3;\n+639 };\n+640}\n+641\n+642#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:292\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM2Cube2DLocalBasis()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM2Cube2DLocalBasis(std::bitset< 4 > s)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:108\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n Type traits for LocalBasisVirtualInterface.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Second order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:179\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT3Cube2DLocalBasis(std::bitset< 4 > s=0)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:632\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:401\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas12d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference
    \n+
    raviartthomas12d.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM2Cube2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. More...
    class  Dune::RT12DLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on triangles. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference\n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+raviartthomas12d.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas12d.hh Source File\n \n \n \n \n \n \n \n@@ -70,81 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2cube2dlocalcoefficients.hh
    \n+
    raviartthomas12d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include "../../common/localkey.hh"
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    \n-\n-
    24 {
    \n-
    25
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for (std::size_t i = 0; i < 4; ++i)
    \n-
    31 {
    \n-
    32 li[3 * i] = LocalKey(i,1,0);
    \n-
    33 li[3 * i + 1] = LocalKey(i,1,1);
    \n-
    34 li[3 * i + 2] = LocalKey(i,1,2);
    \n-
    35 }
    \n-
    36 li[12] = LocalKey(0,0,0);
    \n-
    37 li[13] = LocalKey(0,0,1);
    \n-
    38 }
    \n-
    \n-
    39
    \n-
    \n-
    41 std::size_t size() const
    \n-
    42 {
    \n-
    43 return 14;
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    \n-
    47 const LocalKey& localKey(std::size_t i) const
    \n-
    48 {
    \n-
    49 return li[i];
    \n-
    50 }
    \n-
    \n-
    51
    \n-
    52 private:
    \n-
    53 std::vector<LocalKey> li;
    \n-
    54 };
    \n-
    \n-
    55} // end namespace Dune
    \n-
    56#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17
    \n+
    26 template<class D, class R>
    \n+
    \n+
    27 class
    \n+\n+
    29 {
    \n+
    30
    \n+
    31 public:
    \n+\n+\n+
    34
    \n+
    \n+\n+
    37 {}
    \n+
    \n+
    38
    \n+
    \n+\n+
    45 basis(s),
    \n+
    46 interpolation(s)
    \n+
    47 {}
    \n+
    \n+
    48
    \n+
    \n+
    49 const typename Traits::LocalBasisType& localBasis () const
    \n+
    50 {
    \n+
    51 return basis;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    55 {
    \n+
    56 return coefficients;
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+\n+
    60 {
    \n+
    61 return interpolation;
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    \n+
    65 unsigned int size () const
    \n+
    66 {
    \n+
    67 return basis.size();
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    \n+
    70 static constexpr GeometryType type ()
    \n+
    71 {
    \n+
    72 return GeometryTypes::triangle;
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75 private:
    \n+\n+
    77 RT12DLocalCoefficients coefficients;
    \n+\n+
    79 };
    \n+
    \n+
    80}
    \n+
    81
    \n+
    82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:24
    \n-
    BDM2Cube2DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:28
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:47
    \n-
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:41
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    First order Raviart-Thomas shape functions on triangles.
    Definition raviartthomas12d.hh:29
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas12d.hh:65
    \n+
    LocalFiniteElementTraits< RT12DLocalBasis< D, R >, RT12DLocalCoefficients, RT12DLocalInterpolation< RT12DLocalBasis< D, R > > > Traits
    Definition raviartthomas12d.hh:33
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas12d.hh:49
    \n+
    RT12DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas12d.hh:44
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas12d.hh:54
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas12d.hh:70
    \n+
    RT12DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas12d.hh:36
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas12d.hh:59
    \n+
    First order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas12dlocalbasis.hh:28
    \n+
    Layout map for Raviart-Thomas-1 elements on the reference triangle.
    Definition raviartthomas12dlocalcoefficients.hh:23
    \n+
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas12dlocalinterpolation.hh:25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,80 +1,137 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n-brezzidouglasmarini2cube2dlocalcoefficients.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas12d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \"../../common/localkey.hh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-_\b2_\b3 class _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n-25\n-26 public:\n-_\b2_\b8 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(14)\n+8#include \n+9\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17\n+26 template\n+_\b2_\b7 class\n+28 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n 29 {\n-30 for (std::size_t i = 0; i < 4; ++i)\n-31 {\n-32 li[3 * i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-33 li[3 * i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-34 li[3 * i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n-35 }\n-36 li[12] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0);\n-37 li[13] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,1);\n-38 }\n-39\n-_\b4_\b1 std::size_t _\bs_\bi_\bz_\be() const\n-42 {\n-43 return 14;\n-44 }\n-45\n-_\b4_\b7 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const\n-48 {\n-49 return li[i];\n-50 }\n-51\n-52 private:\n-53 std::vector li;\n-54 };\n-55} // end namespace Dune\n-56#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH\n+30\n+31 public:\n+32 typedef\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b6 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+37 {}\n+38\n+_\b4_\b4 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+45 basis(s),\n+46 interpolation(s)\n+47 {}\n+48\n+_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+50 {\n+51 return basis;\n+52 }\n+53\n+_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+55 {\n+56 return coefficients;\n+57 }\n+58\n+_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+60 {\n+61 return interpolation;\n+62 }\n+63\n+_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+66 {\n+67 return basis.size();\n+68 }\n+69\n+_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+71 {\n+72 return GeometryTypes::triangle;\n+73 }\n+74\n+75 private:\n+76 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+77 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+78 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+79 };\n+80}\n+81\n+82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-BDM2Cube2DLocalCoefficients()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Raviart-Thomas shape functions on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT12DLocalBasis< D, R >, RT12DLocalCoefficients,\n+RT12DLocalInterpolation< RT12DLocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT12DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 8.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT12DLocalFiniteElement()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12d.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalinterpolation.hh:25\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas0cube3dall.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference
    \n+
    raviartthomas0cube3dall.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+
    #include <cstddef>
    \n+#include <numeric>
    \n+#include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::BDM2Cube2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
    class  Dune::RT0Cube3DLocalBasis< D, R >
     
    class  Dune::RT0Cube3DLocalInterpolation< LB >
     
    class  Dune::RT0Cube3DLocalCoefficients
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,29 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference\n+raviartthomas0cube3dall.hh File Reference\n+#include \n+#include \n #include \n-#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas0cube3dall.hh Source File\n \n \n \n \n \n \n \n@@ -70,153 +70,278 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2cube2dlocalinterpolation.hh
    \n+
    raviartthomas0cube3dall.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    8#include <cstddef>
    \n+
    9#include <numeric>
    \n+
    10#include <vector>
    \n
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    23 template<class LB>
    \n-
    \n-\n-
    25 {
    \n-
    26
    \n-
    27 public:
    \n-
    \n-\n-
    30 {
    \n-
    31 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    \n-\n-
    40 {
    \n-
    41 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n-
    42 if (s & 1)
    \n-
    43 {
    \n-
    44 sign0 = -1.0;
    \n-
    45 }
    \n-
    46 if (s & 2)
    \n-
    47 {
    \n-
    48 sign1 = -1.0;
    \n-
    49 }
    \n-
    50 if (s & 4)
    \n-
    51 {
    \n-
    52 sign2 = -1.0;
    \n-
    53 }
    \n-
    54 if (s & 8)
    \n-
    55 {
    \n-
    56 sign3 = -1.0;
    \n-
    57 }
    \n-
    58
    \n-
    59 n0[0] = -1.0;
    \n-
    60 n0[1] = 0.0;
    \n-
    61 n1[0] = 1.0;
    \n-
    62 n1[1] = 0.0;
    \n-
    63 n2[0] = 0.0;
    \n-
    64 n2[1] = -1.0;
    \n-
    65 n3[0] = 0.0;
    \n-
    66 n3[1] = 1.0;
    \n-
    67 }
    \n-
    \n-
    68
    \n-
    77 template<typename F, typename C>
    \n-
    \n-
    78 void interpolate(const F& f, std::vector<C>& out) const
    \n-
    79 {
    \n-
    80 // f gives v*outer normal at a point on the edge!
    \n-
    81 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    82 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13
    \n+\n+\n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    28 template<class D, class R>
    \n+
    \n+\n+
    30 {
    \n+
    31 public:
    \n+
    32 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n+
    33 Dune::FieldMatrix<R,3,3> > Traits;
    \n+
    34
    \n+
    \n+
    36 RT0Cube3DLocalBasis (unsigned int s = 0)
    \n+
    37 {
    \n+
    38 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n+
    39 if (s&1) sign0 = -1.0;
    \n+
    40 if (s&2) sign1 = -1.0;
    \n+
    41 if (s&4) sign2 = -1.0;
    \n+
    42 if (s&8) sign3 = -1.0;
    \n+
    43 if (s&16) sign4 = -1.0;
    \n+
    44 if (s&32) sign5 = -1.0;
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    \n+
    48 unsigned int size () const
    \n+
    49 {
    \n+
    50 return 6;
    \n+
    51 }
    \n+
    \n+
    52
    \n+
    \n+
    54 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    55 std::vector<typename Traits::RangeType>& out) const
    \n+
    56 {
    \n+
    57 out.resize(6);
    \n+
    58 out[0][0] = sign0*(in[0]-1.0); out[0][1]=0.0; out[0][2]=0.0;
    \n+
    59 out[1][0] = sign1*(in[0]); out[1][1]=0.0; out[1][2]=0.0;
    \n+
    60 out[2][0] = 0.0; out[2][1]=sign2*(in[1]-1.0); out[2][2]=0.0;
    \n+
    61 out[3][0] = 0.0; out[3][1]=sign3*(in[1]); out[3][2]=0.0;
    \n+
    62 out[4][0] = 0.0; out[4][1]=0.0; out[4][2]=sign4*(in[2]-1.0);
    \n+
    63 out[5][0] = 0.0; out[5][1]=0.0; out[5][2]=sign5*(in[2]);
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    67 inline void
    \n+
    \n+
    68 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    69 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    70 {
    \n+
    71 out.resize(6);
    \n+
    72 out[0][0][0] = sign0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n+
    73 out[0][1][0] = 0; out[0][1][1] = 0; out[0][1][2] = 0;
    \n+
    74 out[0][2][0] = 0; out[0][2][1] = 0; out[0][2][2] = 0;
    \n+
    75
    \n+
    76 out[1][0][0] = sign1; out[1][0][1] = 0; out[1][0][2] = 0;
    \n+
    77 out[1][1][0] = 0; out[1][1][1] = 0; out[1][1][2] = 0;
    \n+
    78 out[1][2][0] = 0; out[1][2][1] = 0; out[1][2][2] = 0;
    \n+
    79
    \n+
    80 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    81 out[2][1][0] = 0; out[2][1][1] = sign2; out[2][1][2] = 0;
    \n+
    82 out[2][2][0] = 0; out[2][2][1] = 0; out[2][2][2] = 0;
    \n
    83
    \n-
    84 out.resize(14);
    \n-
    85 fill(out.begin(), out.end(), 0.0);
    \n-
    86
    \n-
    87 const int qOrder = 4;
    \n-
    88 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    89
    \n-
    90 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n-
    91 it != rule.end(); ++it)
    \n-
    92 {
    \n-
    93 Scalar qPos = it->position();
    \n-
    94
    \n-
    95 typename LB::Traits::DomainType localPos;
    \n+
    84 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;
    \n+
    85 out[3][1][0] = 0; out[3][1][1] = sign3; out[3][1][2] = 0;
    \n+
    86 out[3][2][0] = 0; out[3][2][1] = 0; out[3][2][2] = 0;
    \n+
    87
    \n+
    88 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n+
    89 out[4][1][0] = 0; out[4][1][1] = 0; out[4][1][2] = 0;
    \n+
    90 out[4][2][0] = 0; out[4][2][1] = 0; out[4][2][2] = sign4;
    \n+
    91
    \n+
    92 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n+
    93 out[5][1][0] = 0; out[5][1][1] = 0; out[5][1][2] = 0;
    \n+
    94 out[5][2][0] = 0; out[5][2][1] = 0; out[5][2][2] = sign5;
    \n+
    95 }
    \n+
    \n
    96
    \n-
    97 localPos[0] = 0.0;
    \n-
    98 localPos[1] = qPos;
    \n-
    99 auto y = f(localPos);
    \n-
    100 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n-
    101 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    102 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign0;
    \n-
    103
    \n-
    104 localPos[0] = 1.0;
    \n-
    105 localPos[1] = qPos;
    \n-
    106 y = f(localPos);
    \n-
    107 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;
    \n-
    108 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    109 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign1;
    \n-
    110
    \n-
    111 localPos[0] = qPos;
    \n-
    112 localPos[1] = 0.0;
    \n-
    113 y = f(localPos);
    \n-
    114 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n-
    115 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    116 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign2;
    \n-
    117
    \n-
    118 localPos[0] = qPos;
    \n-
    119 localPos[1] = 1.0;
    \n-
    120 y = f(localPos);
    \n-
    121 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n-
    122 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    123 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign3;
    \n-
    124 }
    \n-
    125
    \n-
    126 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    127
    \n-
    128 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
    \n-
    129 {
    \n-
    130 auto y = f(it->position());
    \n-
    131 out[12] += y[0]*it->weight();
    \n-
    132 out[13] += y[1]*it->weight();
    \n+
    \n+
    98 void partial (const std::array<unsigned int, 3>& order,
    \n+
    99 const typename Traits::DomainType& in, // position
    \n+
    100 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    101 {
    \n+
    102 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    103 if (totalOrder == 0) {
    \n+
    104 evaluateFunction(in, out);
    \n+
    105 } else if (totalOrder == 1) {
    \n+
    106 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    107 out.resize(size());
    \n+
    108
    \n+
    109 for (std::size_t i = 0; i < size(); ++i)
    \n+
    110 out[i][0] = out[i][1] = out[i][2] = 0;
    \n+
    111
    \n+
    112 switch (direction) {
    \n+
    113 case 0:
    \n+
    114 out[0][0] = sign0;
    \n+
    115 out[1][0] = sign1;
    \n+
    116 break;
    \n+
    117 case 1:
    \n+
    118 out[2][1] = sign2;
    \n+
    119 out[3][1] = sign3;
    \n+
    120 break;
    \n+
    121 case 2:
    \n+
    122 out[4][2] = sign4;
    \n+
    123 out[5][2] = sign5;
    \n+
    124 break;
    \n+
    125 default:
    \n+
    126 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    127 }
    \n+
    128 } else {
    \n+
    129 out.resize(size());
    \n+
    130 for (std::size_t i = 0; i < size(); ++i)
    \n+
    131 for (std::size_t j = 0; j < 2; ++j)
    \n+
    132 out[i][j] = 0;
    \n
    133 }
    \n-
    134 }
    \n-
    \n-
    135
    \n-
    136 private:
    \n-
    137 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n-
    138 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n-
    139 };
    \n+
    134
    \n+
    135 }
    \n
    \n-
    140} // end namespace Dune
    \n-
    141#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    136
    \n+
    \n+
    138 unsigned int order () const
    \n+
    139 {
    \n+
    140 return 1;
    \n+
    141 }
    \n+
    \n+
    142
    \n+
    143 private:
    \n+
    144 R sign0, sign1, sign2, sign3, sign4, sign5;
    \n+
    145 };
    \n+
    \n+
    146
    \n+
    147
    \n+
    156 template<class LB>
    \n+
    \n+\n+
    158 {
    \n+
    159 public:
    \n+
    160
    \n+
    \n+
    162 RT0Cube3DLocalInterpolation (unsigned int s = 0)
    \n+
    163 {
    \n+
    164 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n+
    165 if (s&1) sign0 *= -1.0;
    \n+
    166 if (s&2) sign1 *= -1.0;
    \n+
    167 if (s&4) sign2 *= -1.0;
    \n+
    168 if (s&8) sign3 *= -1.0;
    \n+
    169 if (s&16) sign4 *= -1.0;
    \n+
    170 if (s&32) sign5 *= -1.0;
    \n+
    171
    \n+
    172 m0[0] = 0.0; m0[1] = 0.5; m0[2] = 0.5;
    \n+
    173 m1[0] = 1.0; m1[1] = 0.5; m1[2] = 0.5;
    \n+
    174 m2[0] = 0.5; m2[1] = 0.0; m2[2] = 0.5;
    \n+
    175 m3[0] = 0.5; m3[1] = 1.0; m3[2] = 0.5;
    \n+
    176 m4[0] = 0.5; m4[1] = 0.5; m4[2] = 0.0;
    \n+
    177 m5[0] = 0.5; m5[1] = 0.5; m5[2] = 1.0;
    \n+
    178
    \n+
    179 n0[0] = -1.0; n0[1] = 0.0; n0[2] = 0.0;
    \n+
    180 n1[0] = 1.0; n1[1] = 0.0; n1[2] = 0.0;
    \n+
    181 n2[0] = 0.0; n2[1] = -1.0; n2[2] = 0.0;
    \n+
    182 n3[0] = 0.0; n3[1] = 1.0; n3[2] = 0.0;
    \n+
    183 n4[0] = 0.0; n4[1] = 0.0; n4[2] =-1.0;
    \n+
    184 n5[0] = 0.0; n5[1] = 0.0; n5[2] = 1.0;
    \n+
    185 }
    \n+
    \n+
    186
    \n+
    187 template<typename F, typename C>
    \n+
    \n+
    188 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    189 {
    \n+
    190 // f gives v*outer normal at a point on the edge!
    \n+
    191
    \n+
    192 out.resize(6);
    \n+
    193
    \n+
    194 auto y = f(m0); out[0] = (y[0]*n0[0]+y[1]*n0[1]+y[2]*n0[2])*sign0;
    \n+
    195 y = f(m1); out[1] = (y[0]*n1[0]+y[1]*n1[1]+y[2]*n1[2])*sign1;
    \n+
    196 y = f(m2); out[2] = (y[0]*n2[0]+y[1]*n2[1]+y[2]*n2[2])*sign2;
    \n+
    197 y = f(m3); out[3] = (y[0]*n3[0]+y[1]*n3[1]+y[2]*n3[2])*sign3;
    \n+
    198 y = f(m4); out[4] = (y[0]*n4[0]+y[1]*n4[1]+y[2]*n4[2])*sign4;
    \n+
    199 y = f(m5); out[5] = (y[0]*n5[0]+y[1]*n5[1]+y[2]*n5[2])*sign5;
    \n+
    200 }
    \n+
    \n+
    201
    \n+
    202 private:
    \n+
    203 typename LB::Traits::RangeFieldType sign0,sign1,sign2,sign3,sign4,sign5;
    \n+
    204 typename LB::Traits::DomainType m0,m1,m2,m3,m4,m5;
    \n+
    205 typename LB::Traits::DomainType n0,n1,n2,n3,n4,n5;
    \n+
    206 };
    \n+
    \n+
    207
    \n+
    \n+\n+
    216 {
    \n+
    217 public:
    \n+
    \n+\n+
    220 {
    \n+
    221 for (std::size_t i=0; i<6; i++)
    \n+
    222 li[i] = LocalKey(i,1,0);
    \n+
    223 }
    \n+
    \n+
    224
    \n+
    \n+
    226 std::size_t size () const
    \n+
    227 {
    \n+
    228 return 6;
    \n+
    229 }
    \n+
    \n+
    230
    \n+
    \n+
    232 const LocalKey& localKey (std::size_t i) const
    \n+
    233 {
    \n+
    234 return li[i];
    \n+
    235 }
    \n+
    \n+
    236
    \n+
    237 private:
    \n+
    238 std::vector<LocalKey> li;
    \n+
    239 };
    \n+
    \n+
    240
    \n+
    241}
    \n+
    242#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:25
    \n-
    BDM2Cube2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:39
    \n-
    BDM2Cube2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:29
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:78
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Definition raviartthomas0cube3dall.hh:30
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas0cube3dall.hh:48
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas0cube3dall.hh:68
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas0cube3dall.hh:138
    \n+
    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 raviartthomas0cube3dall.hh:98
    \n+
    RT0Cube3DLocalBasis(unsigned int s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas0cube3dall.hh:36
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas0cube3dall.hh:33
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas0cube3dall.hh:54
    \n+
    Definition raviartthomas0cube3dall.hh:158
    \n+
    RT0Cube3DLocalInterpolation(unsigned int s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas0cube3dall.hh:162
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition raviartthomas0cube3dall.hh:188
    \n+
    Definition raviartthomas0cube3dall.hh:216
    \n+
    RT0Cube3DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0cube3dall.hh:219
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0cube3dall.hh:226
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0cube3dall.hh:232
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,157 +1,293 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd\n-brezzidouglasmarini2cube2dlocalinterpolation.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd\n+raviartthomas0cube3dall.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH\n 7\n-8#include \n-9\n-10#include \n+8#include \n+9#include \n+10#include \n 11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-23 template\n-_\b2_\b4 class _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-25 {\n-26\n-27 public:\n-_\b2_\b9 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+28 template\n+_\b2_\b9 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n 30 {\n-31 sign0 = sign1 = sign2 = sign3 = 1.0;\n-32 }\n-33\n-_\b3_\b9 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(unsigned int s)\n-40 {\n-41 sign0 = sign1 = sign2 = sign3 = 1.0;\n-42 if (s & 1)\n-43 {\n-44 sign0 = -1.0;\n+31 public:\n+32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n+FieldVector,\n+_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b6 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int s = 0)\n+37 {\n+38 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n+39 if (s&1) sign0 = -1.0;\n+40 if (s&2) sign1 = -1.0;\n+41 if (s&4) sign2 = -1.0;\n+42 if (s&8) sign3 = -1.0;\n+43 if (s&16) sign4 = -1.0;\n+44 if (s&32) sign5 = -1.0;\n 45 }\n-46 if (s & 2)\n-47 {\n-48 sign1 = -1.0;\n-49 }\n-50 if (s & 4)\n-51 {\n-52 sign2 = -1.0;\n-53 }\n-54 if (s & 8)\n-55 {\n-56 sign3 = -1.0;\n-57 }\n-58\n-59 n0[0] = -1.0;\n-60 n0[1] = 0.0;\n-61 n1[0] = 1.0;\n-62 n1[1] = 0.0;\n-63 n2[0] = 0.0;\n-64 n2[1] = -1.0;\n-65 n3[0] = 0.0;\n-66 n3[1] = 1.0;\n-67 }\n-68\n-77 template\n-_\b7_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const\n-79 {\n-80 // f gives v*outer normal at a point on the edge!\n-81 typedef typename LB::Traits::RangeFieldType Scalar;\n-82 typedef typename LB::Traits::DomainFieldType Vector;\n+46\n+_\b4_\b8 unsigned int _\bs_\bi_\bz_\be () const\n+49 {\n+50 return 6;\n+51 }\n+52\n+_\b5_\b4 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+55 std::vector& out) const\n+56 {\n+57 out.resize(6);\n+58 out[0][0] = sign0*(in[0]-1.0); out[0][1]=0.0; out[0][2]=0.0;\n+59 out[1][0] = sign1*(in[0]); out[1][1]=0.0; out[1][2]=0.0;\n+60 out[2][0] = 0.0; out[2][1]=sign2*(in[1]-1.0); out[2][2]=0.0;\n+61 out[3][0] = 0.0; out[3][1]=sign3*(in[1]); out[3][2]=0.0;\n+62 out[4][0] = 0.0; out[4][1]=0.0; out[4][2]=sign4*(in[2]-1.0);\n+63 out[5][0] = 0.0; out[5][1]=0.0; out[5][2]=sign5*(in[2]);\n+64 }\n+65\n+67 inline void\n+_\b6_\b8 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+69 std::vector& out) const // return value\n+70 {\n+71 out.resize(6);\n+72 out[0][0][0] = sign0; out[0][0][1] = 0; out[0][0][2] = 0;\n+73 out[0][1][0] = 0; out[0][1][1] = 0; out[0][1][2] = 0;\n+74 out[0][2][0] = 0; out[0][2][1] = 0; out[0][2][2] = 0;\n+75\n+76 out[1][0][0] = sign1; out[1][0][1] = 0; out[1][0][2] = 0;\n+77 out[1][1][0] = 0; out[1][1][1] = 0; out[1][1][2] = 0;\n+78 out[1][2][0] = 0; out[1][2][1] = 0; out[1][2][2] = 0;\n+79\n+80 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n+81 out[2][1][0] = 0; out[2][1][1] = sign2; out[2][1][2] = 0;\n+82 out[2][2][0] = 0; out[2][2][1] = 0; out[2][2][2] = 0;\n 83\n-84 out.resize(14);\n-85 fill(out.begin(), out.end(), 0.0);\n-86\n-87 const int qOrder = 4;\n-88 const QuadratureRule& rule = QuadratureRules::rule\n-(GeometryTypes::cube(1), qOrder);\n-89\n-90 for (typename QuadratureRule::const_iterator it = rule.begin();\n-91 it != rule.end(); ++it)\n-92 {\n-93 Scalar qPos = it->position();\n-94\n-95 typename LB::Traits::DomainType localPos;\n+84 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;\n+85 out[3][1][0] = 0; out[3][1][1] = sign3; out[3][1][2] = 0;\n+86 out[3][2][0] = 0; out[3][2][1] = 0; out[3][2][2] = 0;\n+87\n+88 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n+89 out[4][1][0] = 0; out[4][1][1] = 0; out[4][1][2] = 0;\n+90 out[4][2][0] = 0; out[4][2][1] = 0; out[4][2][2] = sign4;\n+91\n+92 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n+93 out[5][1][0] = 0; out[5][1][1] = 0; out[5][1][2] = 0;\n+94 out[5][2][0] = 0; out[5][2][1] = 0; out[5][2][2] = sign5;\n+95 }\n 96\n-97 localPos[0] = 0.0;\n-98 localPos[1] = qPos;\n-99 auto y = f(localPos);\n-100 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n-101 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n-102 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n->weight()*sign0;\n-103\n-104 localPos[0] = 1.0;\n-105 localPos[1] = qPos;\n-106 y = f(localPos);\n-107 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;\n-108 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n-109 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n->weight()*sign1;\n-110\n-111 localPos[0] = qPos;\n-112 localPos[1] = 0.0;\n-113 y = f(localPos);\n-114 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n-115 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n-116 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n->weight()*sign2;\n-117\n-118 localPos[0] = qPos;\n-119 localPos[1] = 1.0;\n-120 y = f(localPos);\n-121 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n-122 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n-123 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n->weight()*sign3;\n-124 }\n-125\n-126 const QuadratureRule& rule2 = QuadratureRules::rule\n-(GeometryTypes::cube(2), qOrder);\n-127\n-128 for (typename QuadratureRule::const_iterator it=rule2.begin();\n-it!=rule2.end(); ++it)\n-129 {\n-130 auto y = f(it->position());\n-131 out[12] += y[0]*it->weight();\n-132 out[13] += y[1]*it->weight();\n+_\b9_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+99 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+100 std::vector& out) const // return value\n+101 {\n+102 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+103 if (totalOrder == 0) {\n+104 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+105 } else if (totalOrder == 1) {\n+106 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n+107 out.resize(_\bs_\bi_\bz_\be());\n+108\n+109 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+110 out[i][0] = out[i][1] = out[i][2] = 0;\n+111\n+112 switch (direction) {\n+113 case 0:\n+114 out[0][0] = sign0;\n+115 out[1][0] = sign1;\n+116 break;\n+117 case 1:\n+118 out[2][1] = sign2;\n+119 out[3][1] = sign3;\n+120 break;\n+121 case 2:\n+122 out[4][2] = sign4;\n+123 out[5][2] = sign5;\n+124 break;\n+125 default:\n+126 DUNE_THROW(RangeError, \"Component out of range.\");\n+127 }\n+128 } else {\n+129 out.resize(_\bs_\bi_\bz_\be());\n+130 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+131 for (std::size_t j = 0; j < 2; ++j)\n+132 out[i][j] = 0;\n 133 }\n-134 }\n-135\n-136 private:\n-137 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n-138 typename LB::Traits::DomainType n0, n1, n2, n3;\n-139 };\n-140} // end namespace Dune\n-141#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH\n+134\n+135 }\n+136\n+_\b1_\b3_\b8 unsigned int _\bo_\br_\bd_\be_\br () const\n+139 {\n+140 return 1;\n+141 }\n+142\n+143 private:\n+144 R sign0, sign1, sign2, sign3, sign4, sign5;\n+145 };\n+146\n+147\n+156 template\n+_\b1_\b5_\b7 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+158 {\n+159 public:\n+160\n+_\b1_\b6_\b2 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (unsigned int s = 0)\n+163 {\n+164 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n+165 if (s&1) sign0 *= -1.0;\n+166 if (s&2) sign1 *= -1.0;\n+167 if (s&4) sign2 *= -1.0;\n+168 if (s&8) sign3 *= -1.0;\n+169 if (s&16) sign4 *= -1.0;\n+170 if (s&32) sign5 *= -1.0;\n+171\n+172 m0[0] = 0.0; m0[1] = 0.5; m0[2] = 0.5;\n+173 m1[0] = 1.0; m1[1] = 0.5; m1[2] = 0.5;\n+174 m2[0] = 0.5; m2[1] = 0.0; m2[2] = 0.5;\n+175 m3[0] = 0.5; m3[1] = 1.0; m3[2] = 0.5;\n+176 m4[0] = 0.5; m4[1] = 0.5; m4[2] = 0.0;\n+177 m5[0] = 0.5; m5[1] = 0.5; m5[2] = 1.0;\n+178\n+179 n0[0] = -1.0; n0[1] = 0.0; n0[2] = 0.0;\n+180 n1[0] = 1.0; n1[1] = 0.0; n1[2] = 0.0;\n+181 n2[0] = 0.0; n2[1] = -1.0; n2[2] = 0.0;\n+182 n3[0] = 0.0; n3[1] = 1.0; n3[2] = 0.0;\n+183 n4[0] = 0.0; n4[1] = 0.0; n4[2] =-1.0;\n+184 n5[0] = 0.0; n5[1] = 0.0; n5[2] = 1.0;\n+185 }\n+186\n+187 template\n+_\b1_\b8_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+189 {\n+190 // f gives v*outer normal at a point on the edge!\n+191\n+192 out.resize(6);\n+193\n+194 auto y = f(m0); out[0] = (y[0]*n0[0]+y[1]*n0[1]+y[2]*n0[2])*sign0;\n+195 y = f(m1); out[1] = (y[0]*n1[0]+y[1]*n1[1]+y[2]*n1[2])*sign1;\n+196 y = f(m2); out[2] = (y[0]*n2[0]+y[1]*n2[1]+y[2]*n2[2])*sign2;\n+197 y = f(m3); out[3] = (y[0]*n3[0]+y[1]*n3[1]+y[2]*n3[2])*sign3;\n+198 y = f(m4); out[4] = (y[0]*n4[0]+y[1]*n4[1]+y[2]*n4[2])*sign4;\n+199 y = f(m5); out[5] = (y[0]*n5[0]+y[1]*n5[1]+y[2]*n5[2])*sign5;\n+200 }\n+201\n+202 private:\n+203 typename LB::Traits::RangeFieldType sign0,sign1,sign2,sign3,sign4,sign5;\n+204 typename LB::Traits::DomainType m0,m1,m2,m3,m4,m5;\n+205 typename LB::Traits::DomainType n0,n1,n2,n3,n4,n5;\n+206 };\n+207\n+_\b2_\b1_\b5 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+216 {\n+217 public:\n+_\b2_\b1_\b9 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(6)\n+220 {\n+221 for (std::size_t i=0; i<6; i++)\n+222 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+223 }\n+224\n+_\b2_\b2_\b6 std::size_t _\bs_\bi_\bz_\be () const\n+227 {\n+228 return 6;\n+229 }\n+230\n+_\b2_\b3_\b2 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+233 {\n+234 return li[i];\n+235 }\n+236\n+237 private:\n+238 std::vector li;\n+239 };\n+240\n+241}\n+242#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM2Cube2DLocalInterpolation(unsigned int s)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM2Cube2DLocalInterpolation()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:98\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT0Cube3DLocalBasis(unsigned int s=0)\n+Make set number s, where 0 <= s < 64.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n+3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT0Cube3DLocalInterpolation(unsigned int s=0)\n+Make set number s, where 0 <= s < 64.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:162\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n void interpolate(const F &f, std::vector< C > &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:78\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:188\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:216\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT0Cube3DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:219\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:226\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:232\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarinisimplex.hh File Reference\n+dune-localfunctions: raviartthomas0cube2dall.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,40 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarinisimplex.hh File Reference
    \n+
    raviartthomas0cube2dall.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d.hh>
    \n-#include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d.hh>
    \n+
    #include <cstddef>
    \n+#include <numeric>
    \n+#include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n-\n-\n+\n+\n+\n \n

    \n 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::RT0Cube2DLocalBasis< D, R >
     
    class  Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 2 >
     Brezzi-Douglas-Marini local finite elements for simplices with dimension 2 and order 2. More...
    class  Dune::RT0Cube2DLocalInterpolation< LB >
     
    class  Dune::RT0Cube2DLocalCoefficients
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,29 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarinisimplex.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh>\n+raviartthomas0cube2dall.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>\n-\u00a0 Brezzi-Douglas-Marini local finite elements for simplices with\n- dimension 2 and order 1. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n \u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>\n-\u00a0 Brezzi-Douglas-Marini local finite elements for simplices with\n- dimension 2 and order 2. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarinisimplex.hh Source File\n+dune-localfunctions: raviartthomas0cube2dall.hh Source File\n \n \n \n \n \n \n \n@@ -70,88 +70,249 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarinisimplex.hh
    \n+
    raviartthomas0cube2dall.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH
    \n
    7
    \n-\n-\n-
    10
    \n+
    8#include <cstddef>
    \n+
    9#include <numeric>
    \n+
    10#include <vector>
    \n
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    22 template<class D, class R, unsigned int dim, unsigned int order>
    \n-\n-
    24
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13
    \n+\n+\n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n
    28 template<class D, class R>
    \n \n-
    46
    \n-
    50 template<class D, class R>
    \n-
    \n-\n-\n-
    53 {
    \n-
    54 public:
    \n-
    \n-\n-
    57 {}
    \n+\n+
    30 {
    \n+
    31 public:
    \n+
    32 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    33 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    34
    \n+
    \n+
    36 RT0Cube2DLocalBasis (std::bitset<4> s = 0)
    \n+
    37 {
    \n+
    38 for (int i=0; i<4; i++)
    \n+
    39 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    40 }
    \n+
    \n+
    41
    \n+
    \n+
    43 unsigned int size () const
    \n+
    44 {
    \n+
    45 return 4;
    \n+
    46 }
    \n+
    \n+
    47
    \n+
    \n+
    49 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    50 std::vector<typename Traits::RangeType>& out) const
    \n+
    51 {
    \n+
    52 out.resize(4);
    \n+
    53 out[0] = {sign_[0]*(in[0]-1.0), 0.0};
    \n+
    54 out[1] = {sign_[1]*(in[0]), 0.0};
    \n+
    55 out[2] = {0.0, sign_[2]*(in[1]-1.0)};
    \n+
    56 out[3] = {0.0, sign_[3]*(in[1])};
    \n+
    57 }
    \n
    \n
    58
    \n-\n-
    67 };
    \n-
    \n-
    68
    \n-
    69} // namespace Dune
    \n+
    60 inline void
    \n+
    \n+
    61 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    62 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    63 {
    \n+
    64 out.resize(4);
    \n+
    65 out[0][0] = {sign_[0], 0};
    \n+
    66 out[0][1] = {0, 0};
    \n+
    67
    \n+
    68 out[1][0] = {sign_[1], 0};
    \n+
    69 out[1][1] = {0, 0};
    \n
    70
    \n-
    71#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
    \n-\n-\n+
    71 out[2][0] = {0, 0};
    \n+
    72 out[2][1] = {0, sign_[2]};
    \n+
    73
    \n+
    74 out[3][0] = {0, 0};
    \n+
    75 out[3][1] = {0, sign_[3]};
    \n+
    76 }
    \n+
    \n+
    77
    \n+
    \n+
    79 void partial (const std::array<unsigned int, 2>& order,
    \n+
    80 const typename Traits::DomainType& in, // position
    \n+
    81 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    82 {
    \n+
    83 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    84 if (totalOrder == 0) {
    \n+
    85 evaluateFunction(in, out);
    \n+
    86 } else if (totalOrder == 1) {
    \n+
    87 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    88 out.resize(size());
    \n+
    89
    \n+
    90 for (std::size_t i = 0; i < size(); ++i)
    \n+
    91 out[i] = {0, 0};
    \n+
    92
    \n+
    93 switch (direction) {
    \n+
    94 case 0:
    \n+
    95 out[0][0] = sign_[0];
    \n+
    96 out[1][0] = sign_[1];
    \n+
    97 break;
    \n+
    98 case 1:
    \n+
    99 out[2][1] = sign_[2];
    \n+
    100 out[3][1] = sign_[3];
    \n+
    101 break;
    \n+
    102 default:
    \n+
    103 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    104 }
    \n+
    105 } else {
    \n+
    106 out.resize(size());
    \n+
    107 for (std::size_t i = 0; i < size(); ++i)
    \n+
    108 for (std::size_t j = 0; j < 2; ++j)
    \n+
    109 out[i][j] = 0;
    \n+
    110 }
    \n+
    111
    \n+
    112 }
    \n+
    \n+
    113
    \n+
    \n+
    115 unsigned int order () const
    \n+
    116 {
    \n+
    117 return 1;
    \n+
    118 }
    \n+
    \n+
    119
    \n+
    120 private:
    \n+
    121 std::array<R,4> sign_;
    \n+
    122 };
    \n+
    \n+
    123
    \n+
    124
    \n+
    133 template<class LB>
    \n+
    \n+\n+
    135 {
    \n+
    136 public:
    \n+
    137
    \n+
    \n+
    139 RT0Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    140 {
    \n+
    141 for (int i=0; i<4; i++)
    \n+
    142 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    143
    \n+
    144 m0 = {0.0, 0.5};
    \n+
    145 m1 = {1.0, 0.5};
    \n+
    146 m2 = {0.5, 0.0};
    \n+
    147 m3 = {0.5, 1.0};
    \n+
    148
    \n+
    149 n0 = {-1.0, 0.0};
    \n+
    150 n1 = { 1.0, 0.0};
    \n+
    151 n2 = { 0.0, -1.0};
    \n+
    152 n3 = { 0.0, 1.0};
    \n+
    153 }
    \n+
    \n+
    154
    \n+
    155 template<typename F, typename C>
    \n+
    \n+
    156 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    157 {
    \n+
    158 // f gives v*outer normal at a point on the edge!
    \n+
    159
    \n+
    160 out.resize(4);
    \n+
    161
    \n+
    162 // Evaluate the normal components at the edge midpoints
    \n+
    163 auto y = f(m0); out[0] = (y[0]*n0[0]+y[1]*n0[1])*sign_[0];
    \n+
    164 y = f(m1); out[1] = (y[0]*n1[0]+y[1]*n1[1])*sign_[1];
    \n+
    165 y = f(m2); out[2] = (y[0]*n2[0]+y[1]*n2[1])*sign_[2];
    \n+
    166 y = f(m3); out[3] = (y[0]*n3[0]+y[1]*n3[1])*sign_[3];
    \n+
    167 }
    \n+
    \n+
    168
    \n+
    169 private:
    \n+
    170 std::array<typename LB::Traits::RangeFieldType,4> sign_;
    \n+
    171
    \n+
    172 // The four edge midpoints of the reference quadrilateral
    \n+
    173 typename LB::Traits::DomainType m0,m1,m2,m3;
    \n+
    174
    \n+
    175 // The four edge normals of the reference quadrilateral
    \n+
    176 typename LB::Traits::DomainType n0,n1,n2,n3;
    \n+
    177 };
    \n+
    \n+
    178
    \n+
    \n+\n+
    187 {
    \n+
    188 public:
    \n+
    \n+\n+
    191 {
    \n+
    192 for (std::size_t i=0; i<4; i++)
    \n+
    193 li[i] = LocalKey(i,1,0);
    \n+
    194 }
    \n+
    \n+
    195
    \n+
    \n+
    197 std::size_t size () const
    \n+
    198 {
    \n+
    199 return 4;
    \n+
    200 }
    \n+
    \n+
    201
    \n+
    \n+
    203 const LocalKey& localKey (std::size_t i) const
    \n+
    204 {
    \n+
    205 return li[i];
    \n+
    206 }
    \n+
    \n+
    207
    \n+
    208 private:
    \n+
    209 std::vector<LocalKey> li;
    \n+
    210 };
    \n+
    \n+
    211
    \n+
    212}
    \n+
    213#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini1simplex2d.hh:28
    \n-
    Second order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2d.hh:27
    \n-
    Brezzi-Douglas-Marini local finite element for simplices.
    Definition brezzidouglasmarinisimplex.hh:23
    \n-
    BrezziDouglasMariniSimplexLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinisimplex.hh:42
    \n-
    BrezziDouglasMariniSimplexLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinisimplex.hh:34
    \n-
    BrezziDouglasMariniSimplexLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinisimplex.hh:64
    \n-
    BrezziDouglasMariniSimplexLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinisimplex.hh:56
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Definition raviartthomas0cube2dall.hh:30
    \n+
    RT0Cube2DLocalBasis(std::bitset< 4 > s=0)
    Constructor with a set of edge orientations.
    Definition raviartthomas0cube2dall.hh:36
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas0cube2dall.hh:33
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas0cube2dall.hh:49
    \n+
    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 raviartthomas0cube2dall.hh:79
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas0cube2dall.hh:61
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas0cube2dall.hh:115
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas0cube2dall.hh:43
    \n+
    Definition raviartthomas0cube2dall.hh:135
    \n+
    RT0Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Constructor with explicitly given edge orientations.
    Definition raviartthomas0cube2dall.hh:139
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition raviartthomas0cube2dall.hh:156
    \n+
    Definition raviartthomas0cube2dall.hh:187
    \n+
    RT0Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0cube2dall.hh:190
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0cube2dall.hh:197
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0cube2dall.hh:203
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,93 +1,264 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n-brezzidouglasmarinisimplex.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas0cube2dall.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh>\n-10\n+8#include \n+9#include \n+10#include \n 11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-22 template\n-_\b2_\b3 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-24\n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n 28 template\n-_\b2_\b9 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-30 : public _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-31 {\n-32 public:\n-_\b3_\b4 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-35 {}\n-36\n-_\b4_\b2 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-43 : _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-44 {}\n-45 };\n-46\n-50 template\n-_\b5_\b1 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-52 : public _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-53 {\n-54 public:\n-_\b5_\b6 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-57 {}\n+_\b2_\b9 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+30 {\n+31 public:\n+32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n+FieldVector,\n+_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b6 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n+37 {\n+38 for (int i=0; i<4; i++)\n+39 sign_[i] = s[i] ? -1.0 : 1.0;\n+40 }\n+41\n+_\b4_\b3 unsigned int _\bs_\bi_\bz_\be () const\n+44 {\n+45 return 4;\n+46 }\n+47\n+_\b4_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+50 std::vector& out) const\n+51 {\n+52 out.resize(4);\n+53 out[0] = {sign_[0]*(in[0]-1.0), 0.0};\n+54 out[1] = {sign_[1]*(in[0]), 0.0};\n+55 out[2] = {0.0, sign_[2]*(in[1]-1.0)};\n+56 out[3] = {0.0, sign_[3]*(in[1])};\n+57 }\n 58\n-_\b6_\b4 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-65 : _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-66 {}\n-67 };\n-68\n-69} // namespace Dune\n+60 inline void\n+_\b6_\b1 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+62 std::vector& out) const // return value\n+63 {\n+64 out.resize(4);\n+65 out[0][0] = {sign_[0], 0};\n+66 out[0][1] = {0, 0};\n+67\n+68 out[1][0] = {sign_[1], 0};\n+69 out[1][1] = {0, 0};\n 70\n-71#endif // #ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b._\bh_\bh\n+71 out[2][0] = {0, 0};\n+72 out[2][1] = {0, sign_[2]};\n+73\n+74 out[3][0] = {0, 0};\n+75 out[3][1] = {0, sign_[3]};\n+76 }\n+77\n+_\b7_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+80 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+81 std::vector& out) const // return value\n+82 {\n+83 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+84 if (totalOrder == 0) {\n+85 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+86 } else if (totalOrder == 1) {\n+87 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n+_\bo_\br_\bd_\be_\br.end(), 1));\n+88 out.resize(_\bs_\bi_\bz_\be());\n+89\n+90 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+91 out[i] = {0, 0};\n+92\n+93 switch (direction) {\n+94 case 0:\n+95 out[0][0] = sign_[0];\n+96 out[1][0] = sign_[1];\n+97 break;\n+98 case 1:\n+99 out[2][1] = sign_[2];\n+100 out[3][1] = sign_[3];\n+101 break;\n+102 default:\n+103 DUNE_THROW(RangeError, \"Component out of range.\");\n+104 }\n+105 } else {\n+106 out.resize(_\bs_\bi_\bz_\be());\n+107 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+108 for (std::size_t j = 0; j < 2; ++j)\n+109 out[i][j] = 0;\n+110 }\n+111\n+112 }\n+113\n+_\b1_\b1_\b5 unsigned int _\bo_\br_\bd_\be_\br () const\n+116 {\n+117 return 1;\n+118 }\n+119\n+120 private:\n+121 std::array sign_;\n+122 };\n+123\n+124\n+133 template\n+_\b1_\b3_\b4 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+135 {\n+136 public:\n+137\n+_\b1_\b3_\b9 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<4> s = 0)\n+140 {\n+141 for (int i=0; i<4; i++)\n+142 sign_[i] = s[i] ? -1.0 : 1.0;\n+143\n+144 m0 = {0.0, 0.5};\n+145 m1 = {1.0, 0.5};\n+146 m2 = {0.5, 0.0};\n+147 m3 = {0.5, 1.0};\n+148\n+149 n0 = {-1.0, 0.0};\n+150 n1 = { 1.0, 0.0};\n+151 n2 = { 0.0, -1.0};\n+152 n3 = { 0.0, 1.0};\n+153 }\n+154\n+155 template\n+_\b1_\b5_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+157 {\n+158 // f gives v*outer normal at a point on the edge!\n+159\n+160 out.resize(4);\n+161\n+162 // Evaluate the normal components at the edge midpoints\n+163 auto y = f(m0); out[0] = (y[0]*n0[0]+y[1]*n0[1])*sign_[0];\n+164 y = f(m1); out[1] = (y[0]*n1[0]+y[1]*n1[1])*sign_[1];\n+165 y = f(m2); out[2] = (y[0]*n2[0]+y[1]*n2[1])*sign_[2];\n+166 y = f(m3); out[3] = (y[0]*n3[0]+y[1]*n3[1])*sign_[3];\n+167 }\n+168\n+169 private:\n+170 std::array sign_;\n+171\n+172 // The four edge midpoints of the reference quadrilateral\n+173 typename LB::Traits::DomainType m0,m1,m2,m3;\n+174\n+175 // The four edge normals of the reference quadrilateral\n+176 typename LB::Traits::DomainType n0,n1,n2,n3;\n+177 };\n+178\n+_\b1_\b8_\b6 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+187 {\n+188 public:\n+_\b1_\b9_\b0 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(4)\n+191 {\n+192 for (std::size_t i=0; i<4; i++)\n+193 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+194 }\n+195\n+_\b1_\b9_\b7 std::size_t _\bs_\bi_\bz_\be () const\n+198 {\n+199 return 4;\n+200 }\n+201\n+_\b2_\b0_\b3 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+204 {\n+205 return li[i];\n+206 }\n+207\n+208 private:\n+209 std::vector li;\n+210 };\n+211\n+212}\n+213#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Brezzi-Douglas-Marini shape functions on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Brezzi-Douglas-Marini shape functions on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Brezzi-Douglas-Marini local finite element for simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniSimplexLocalFiniteElement(int s)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT0Cube2DLocalBasis(std::bitset< 4 > s=0)\n Constructor with a set of edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniSimplexLocalFiniteElement()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniSimplexLocalFiniteElement(int s)\n-Constructor with a set of edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniSimplexLocalFiniteElement()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinisimplex.hh:56\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT0Cube2DLocalInterpolation(std::bitset< 4 > s=0)\n+Constructor with explicitly given edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:156\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT0Cube2DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:190\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:197\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:203\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarinicube.hh File Reference\n+dune-localfunctions: raviartthomas0pyramid.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarinicube.hh File Reference
    \n+
    raviartthomas0pyramid.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d.hh>
    \n-#include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d.hh>
    \n-#include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 1 >
     Brezzi-Douglas-Marini local finite elements for cubes with dimension 2 and order 1. 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::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 3, 1 >
     Brezzi-Douglas-Marini local finite elements for cubes with dimension 3 and order 1. More...
    class  Dune::RT0PyramidLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on pyramids. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,34 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarinicube.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n+raviartthomas0pyramid.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>\n-\u00a0 Brezzi-Douglas-Marini local finite elements for cubes with dimension 2\n- and order 1. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>\n-\u00a0 Brezzi-Douglas-Marini local finite elements for cubes with dimension 2\n- and order 2. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>\n-\u00a0 Brezzi-Douglas-Marini local finite elements for cubes with dimension 3\n- and order 1. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on pyramids. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarinicube.hh Source File\n+dune-localfunctions: raviartthomas0pyramid.hh Source File\n \n \n \n \n \n \n \n@@ -70,112 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarinicube.hh
    \n+
    raviartthomas0pyramid.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH
    \n
    7
    \n-\n-\n-\n-
    11
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    23 template<class D, class R, unsigned int dim, unsigned int order>
    \n-\n-
    25
    \n-
    29 template<class D, class R>
    \n-
    \n-\n-
    31 : public BDM1Cube2DLocalFiniteElement<D, R>
    \n-
    32 {
    \n-
    33 public:
    \n-\n-
    37
    \n-\n-
    46 };
    \n-
    \n-
    47
    \n-
    51 template<class D, class R>
    \n-
    \n-\n-
    53 : public BDM2Cube2DLocalFiniteElement<D, R>
    \n-
    54 {
    \n-
    55 public:
    \n-
    \n-\n-
    58 {}
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28
    \n+
    29 public:
    \n+\n+\n+\n+\n+
    34
    \n+\n+
    38
    \n+
    \n+\n+
    45 basis(s),
    \n+
    46 interpolation(s)
    \n+
    47 {}
    \n+
    \n+
    48
    \n+
    \n+
    49 const typename Traits::LocalBasisType& localBasis () const
    \n+
    50 {
    \n+
    51 return basis;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    55 {
    \n+
    56 return coefficients;
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+\n+
    60 {
    \n+
    61 return interpolation;
    \n+
    62 }
    \n
    \n-
    59
    \n+
    63
    \n \n-
    68 };
    \n+
    65 unsigned int size () const
    \n+
    66 {
    \n+
    67 return basis.size();
    \n+
    68 }
    \n
    \n
    69
    \n-
    73 template<class D, class R>
    \n-
    \n-\n-
    75 : public BDM1Cube3DLocalFiniteElement<D, R>
    \n-
    76 {
    \n-
    77 public:
    \n-\n-
    81
    \n-\n-
    90 };
    \n-
    \n-
    91
    \n-
    92} // namespace Dune
    \n-
    93
    \n-
    94#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
    \n-\n-\n-\n+
    \n+
    70 static constexpr GeometryType type ()
    \n+
    71 {
    \n+
    72 return GeometryTypes::pyramid;
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75 private:
    \n+\n+
    77 RT0PyramidLocalCoefficients coefficients;
    \n+\n+
    79 };
    \n+
    \n+
    80}
    \n+
    81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini1cube2d.hh:27
    \n-
    First order Brezzi-Douglas-Marini shape functions on hexahedron.
    Definition brezzidouglasmarini1cube3d.hh:27
    \n-
    Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2d.hh:27
    \n-
    Brezzi-Douglas-Marini local finite element for cubes.
    Definition brezzidouglasmarinicube.hh:24
    \n-
    BrezziDouglasMariniCubeLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinicube.hh:43
    \n-
    BrezziDouglasMariniCubeLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinicube.hh:35
    \n-
    BrezziDouglasMariniCubeLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinicube.hh:57
    \n-
    BrezziDouglasMariniCubeLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinicube.hh:65
    \n-
    BrezziDouglasMariniCubeLocalFiniteElement()
    Default constructor.
    Definition brezzidouglasmarinicube.hh:79
    \n-
    BrezziDouglasMariniCubeLocalFiniteElement(int s)
    Constructor with a set of edge orientations.
    Definition brezzidouglasmarinicube.hh:87
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    First order Raviart-Thomas shape functions on pyramids.
    Definition raviartthomas0pyramid.hh:27
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas0pyramid.hh:54
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas0pyramid.hh:65
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas0pyramid.hh:70
    \n+
    RT0PyramidLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0pyramid.hh:44
    \n+
    LocalFiniteElementTraits< RT0PyramidLocalBasis< D, R >, RT0PyramidLocalCoefficients, RT0PyramidLocalInterpolation< RT0PyramidLocalBasis< D, R > > > Traits
    Definition raviartthomas0pyramid.hh:33
    \n+
    RT0PyramidLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas0pyramid.hh:36
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas0pyramid.hh:49
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas0pyramid.hh:59
    \n+
    First order Raviart-Thomas shape functions on the reference pyramid.
    Definition raviartthomas0pyramidlocalbasis.hh:28
    \n+
    Layout map for Raviart-Thomas-1 elements on pyramids.
    Definition raviartthomas0pyramidlocalcoefficients.hh:24
    \n+
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0pyramidlocalinterpolation.hh:22
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,122 +1,136 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n-brezzidouglasmarinicube.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas0pyramid.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh>\n-11\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-23 template\n-_\b2_\b4 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-25\n-29 template\n-_\b3_\b0 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-31 : public _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-32 {\n-33 public:\n-_\b3_\b5 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-36 {}\n-37\n-_\b4_\b3 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-44 : _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-45 {}\n-46 };\n-47\n-51 template\n-_\b5_\b2 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-53 : public _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-54 {\n-55 public:\n-_\b5_\b7 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-58 {}\n-59\n-_\b6_\b5 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-66 : _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-67 {}\n-68 };\n+8#include \n+9\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+25 template\n+_\b2_\b6 class _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 {\n+28\n+29 public:\n+30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+31 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+32 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b6 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+37 {}\n+38\n+_\b4_\b4 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+45 basis(s),\n+46 interpolation(s)\n+47 {}\n+48\n+_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+50 {\n+51 return basis;\n+52 }\n+53\n+_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+55 {\n+56 return coefficients;\n+57 }\n+58\n+_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+60 {\n+61 return interpolation;\n+62 }\n+63\n+_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+66 {\n+67 return basis.size();\n+68 }\n 69\n-73 template\n-_\b7_\b4 class _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-75 : public _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-76 {\n-77 public:\n-_\b7_\b9 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n-80 {}\n-81\n-_\b8_\b7 _\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n-88 : _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n-89 {}\n-90 };\n-91\n-92} // namespace Dune\n-93\n-94#endif // #ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n+_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+71 {\n+72 return GeometryTypes::pyramid;\n+73 }\n+74\n+75 private:\n+76 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+77 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+78 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+79 };\n+80}\n+81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Brezzi-Douglas-Marini shape functions on hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Brezzi-Douglas-Marini local finite element for cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniCubeLocalFiniteElement(int s)\n-Constructor with a set of edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniCubeLocalFiniteElement()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniCubeLocalFiniteElement()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniCubeLocalFiniteElement(int s)\n-Constructor with a set of edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniCubeLocalFiniteElement()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\bB_\br_\be_\bz_\bz_\bi_\bD_\bo_\bu_\bg_\bl_\ba_\bs_\bM_\ba_\br_\bi_\bn_\bi_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BrezziDouglasMariniCubeLocalFiniteElement(int s)\n-Constructor with a set of edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarinicube.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Raviart-Thomas shape functions on pyramids.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT0PyramidLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 32.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT0PyramidLocalBasis< D, R >,\n+RT0PyramidLocalCoefficients, RT0PyramidLocalInterpolation<\n+RT0PyramidLocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT0PyramidLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramid.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference pyramid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on pyramids.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalinterpolation.hh:22\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2d.hh File Reference\n+dune-localfunctions: raviartthomas1cube2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,36 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2cube2d.hh File Reference
    \n+
    raviartthomas1cube2d.hh File Reference
    \n
    \n
    \n \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM2Cube2DLocalFiniteElement< D, R >
     Second order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
    class  Dune::RT1Cube2DLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini2cube2d.hh File Reference\n+raviartthomas1cube2d.hh File Reference\n #include \n #include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2d.hh Source File\n+dune-localfunctions: raviartthomas1cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,124 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2cube2d.hh
    \n+
    raviartthomas1cube2d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n
    8#include <dune/geometry/type.hh>
    \n
    9
    \n
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n+\n+\n+\n
    14
    \n
    15namespace Dune
    \n
    16{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n-
    28
    \n-
    29 public:
    \n-\n-\n-\n-\n-
    34
    \n-\n-
    38
    \n-
    \n-\n-
    45 basis(s),
    \n-
    46 interpolation(s)
    \n-
    47 {}
    \n-
    \n-
    48
    \n-
    \n-
    49 const typename Traits::LocalBasisType& localBasis () const
    \n-
    50 {
    \n-
    51 return basis;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-\n-
    55 {
    \n-
    56 return coefficients;
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-\n-
    60 {
    \n-
    61 return interpolation;
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    \n-
    65 unsigned int size () const
    \n-
    66 {
    \n-
    67 return basis.size();
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    \n-
    70 static constexpr GeometryType type ()
    \n-
    71 {
    \n-
    72 return GeometryTypes::quadrilateral;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-\n-
    77 BDM2Cube2DLocalCoefficients coefficients;
    \n-\n-
    79 };
    \n-
    \n-
    80}
    \n-
    81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+
    17
    \n+
    26 template<class D, class R>
    \n+
    \n+\n+
    28 {
    \n+
    29
    \n+
    30 public:
    \n+\n+\n+\n+\n+
    35
    \n+\n+
    39
    \n+
    \n+\n+
    46 basis(s),
    \n+
    47 interpolation(s)
    \n+
    48 {}
    \n+
    \n+
    49
    \n+
    \n+
    50 const typename Traits::LocalBasisType& localBasis () const
    \n+
    51 {
    \n+
    52 return basis;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+\n+
    56 {
    \n+
    57 return coefficients;
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+\n+
    61 {
    \n+
    62 return interpolation;
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    \n+
    66 unsigned int size () const
    \n+
    67 {
    \n+
    68 return basis.size();
    \n+
    69 }
    \n+
    \n+
    70
    \n+
    \n+
    71 static constexpr GeometryType type ()
    \n+
    72 {
    \n+
    73 return GeometryTypes::quadrilateral;
    \n+
    74 }
    \n+
    \n+
    75
    \n+
    76 private:
    \n+\n+
    78 RT1Cube2DLocalCoefficients coefficients;
    \n+\n+
    80 };
    \n+
    \n+
    81}
    \n+
    82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2d.hh:27
    \n-
    BDM2Cube2DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini2cube2d.hh:36
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini2cube2d.hh:65
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini2cube2d.hh:49
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini2cube2d.hh:59
    \n-
    static constexpr GeometryType type()
    Definition brezzidouglasmarini2cube2d.hh:70
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini2cube2d.hh:54
    \n-
    BDM2Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < ??
    Definition brezzidouglasmarini2cube2d.hh:44
    \n-
    LocalFiniteElementTraits< BDM2Cube2DLocalBasis< D, R >, BDM2Cube2DLocalCoefficients, BDM2Cube2DLocalInterpolation< BDM2Cube2DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini2cube2d.hh:33
    \n-
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalbasis.hh:30
    \n-
    Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalcoefficients.hh:24
    \n-
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:25
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    First order Raviart-Thomas shape functions on quadrilaterals.
    Definition raviartthomas1cube2d.hh:28
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas1cube2d.hh:71
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas1cube2d.hh:55
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas1cube2d.hh:60
    \n+
    LocalFiniteElementTraits< RT1Cube2DLocalBasis< D, R >, RT1Cube2DLocalCoefficients, RT1Cube2DLocalInterpolation< RT1Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas1cube2d.hh:34
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas1cube2d.hh:66
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas1cube2d.hh:50
    \n+
    RT1Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas1cube2d.hh:45
    \n+
    RT1Cube2DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas1cube2d.hh:37
    \n+
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalbasis.hh:28
    \n+
    Layout map for Raviart-Thomas-1 elements on quadrilaterals.
    Definition raviartthomas1cube2dlocalcoefficients.hh:24
    \n+
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalinterpolation.hh:26
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,139 +1,137 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n-brezzidouglasmarini2cube2d.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas1cube2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH\n 7\n 8#include \n 9\n 10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n 14\n 15namespace _\bD_\bu_\bn_\be\n 16{\n-25 template\n-_\b2_\b6 class _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 {\n-28\n-29 public:\n-30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-31 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-32 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b3_\b6 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-37 {}\n-38\n-_\b4_\b4 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-45 basis(s),\n-46 interpolation(s)\n-47 {}\n-48\n-_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-50 {\n-51 return basis;\n-52 }\n-53\n-_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-55 {\n-56 return coefficients;\n-57 }\n-58\n-_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-60 {\n-61 return interpolation;\n-62 }\n-63\n-_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-66 {\n-67 return basis.size();\n-68 }\n-69\n-_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-71 {\n-72 return GeometryTypes::quadrilateral;\n-73 }\n-74\n-75 private:\n-76 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-77 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-78 _\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-79 };\n-80}\n-81#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+17\n+26 template\n+_\b2_\b7 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+28 {\n+29\n+30 public:\n+31 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+32 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+33 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b4 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+35\n+_\b3_\b7 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+38 {}\n+39\n+_\b4_\b5 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+46 basis(s),\n+47 interpolation(s)\n+48 {}\n+49\n+_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+51 {\n+52 return basis;\n+53 }\n+54\n+_\b5_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+56 {\n+57 return coefficients;\n+58 }\n+59\n+_\b6_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+61 {\n+62 return interpolation;\n+63 }\n+64\n+_\b6_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+67 {\n+68 return basis.size();\n+69 }\n+70\n+_\b7_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+72 {\n+73 return GeometryTypes::quadrilateral;\n+74 }\n+75\n+76 private:\n+77 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+78 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+79 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+80 };\n+81}\n+82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM2Cube2DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM2Cube2DLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < ??\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< BDM2Cube2DLocalBasis< D, R >,\n-BDM2Cube2DLocalCoefficients, BDM2Cube2DLocalInterpolation<\n-BDM2Cube2DLocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2d.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2cube2dlocalinterpolation.hh:25\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n traits helper struct\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n LB LocalBasisType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n LC LocalCoefficientsType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n LI LocalInterpolationType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Raviart-Thomas shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT1Cube2DLocalBasis< D, R >,\n+RT1Cube2DLocalCoefficients, RT1Cube2DLocalInterpolation< RT1Cube2DLocalBasis<\n+D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT1Cube2DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT1Cube2DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalinterpolation.hh:26\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomassimplexprebasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,38 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube2dlocalbasis.hh File Reference
    \n+
    raviartthomassimplexprebasis.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <bitset>
    \n-#include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+
    #include <fstream>
    \n+#include <utility>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Cube2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
    struct  Dune::RTPreBasisFactory< dim, Field >
     
    struct  Dune::RTPreBasisFactory< dim, Field >::EvaluationBasisFactory< dd, FF >
     
    struct  Dune::RTVecMatrix< geometryId, Field >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1cube2dlocalbasis.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+raviartthomassimplexprebasis.hh File Reference\n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bd_\b,_\b _\bF_\bF\n+ _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomassimplexprebasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,241 +70,283 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube2dlocalbasis.hh
    \n+
    raviartthomassimplexprebasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_RAVIARTTHOMASPREBASIS_HH
    \n+
    6#define DUNE_RAVIARTTHOMASPREBASIS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <bitset>
    \n-
    10#include <numeric>
    \n-
    11#include <vector>
    \n+
    8#include <fstream>
    \n+
    9#include <utility>
    \n+
    10
    \n+
    11#include <dune/geometry/type.hh>
    \n
    12
    \n-
    13#include <dune/common/fmatrix.hh>
    \n+\n
    14
    \n-
    15#include "../../common/localbasis.hh"
    \n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    28 template<class D, class R>
    \n-
    \n-\n-
    30 {
    \n-
    31
    \n-
    32 public:
    \n-
    33 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    34 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    35
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17 template < GeometryType::Id geometryId, class Field >
    \n+
    18 struct RTVecMatrix;
    \n+
    19
    \n+
    20 template <unsigned int dim, class Field>
    \n+
    \n+\n+
    22 {
    \n+\n+
    24 typedef typename MBasisFactory::Object MBasis;
    \n+\n+\n+
    27
    \n+
    28 typedef const Basis Object;
    \n+
    29 typedef std::size_t Key;
    \n+
    30
    \n+
    31 template <unsigned int dd, class FF>
    \n+
    \n+\n+
    33 {
    \n+\n+
    35 };
    \n+
    \n+
    36 template< GeometryType::Id geometryId >
    \n
    \n-\n+
    37 static Object *create ( const Key &order )
    \n
    38 {
    \n-
    39 for (size_t i=0; i<4; i++)
    \n-
    40 sign_[i] = 1.0;
    \n-
    41 }
    \n-
    \n-
    42
    \n-
    \n-
    48 BDM1Cube2DLocalBasis (std::bitset<4> s)
    \n-
    49 {
    \n-
    50 for (size_t i=0; i<4; i++)
    \n-
    51 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    52 }
    \n-
    \n-
    53
    \n+
    39 RTVecMatrix<geometryId,Field> vecMatrix(order);
    \n+
    40 MBasis *mbasis = MBasisFactory::template create<geometryId>(order+1);
    \n+
    41 typename std::remove_const<Object>::type *tmBasis = new typename std::remove_const<Object>::type(*mbasis);
    \n+
    42 tmBasis->fill(vecMatrix);
    \n+
    43 return tmBasis;
    \n+
    44 }
    \n+
    \n+
    45 static void release( Object *object ) { delete object; }
    \n+
    46 };
    \n+
    \n+
    47
    \n+
    48 template <GeometryType::Id geometryId, class Field>
    \n+
    \n+\n+
    50 {
    \n+
    51 static constexpr GeometryType geometry = geometryId;
    \n+
    52 static const unsigned int dim = geometry.dim();
    \n+\n+\n
    \n-
    55 unsigned int size () const
    \n-
    56 {
    \n-
    57 return 8;
    \n-
    58 }
    \n-
    \n-
    59
    \n-
    \n-
    66 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    67 std::vector<typename Traits::RangeType>& out) const
    \n-
    68 {
    \n-
    69 out.resize(8);
    \n-
    70
    \n-
    71 out[0][0] = sign_[0]*(in[0] - 1.0);
    \n-
    72 out[0][1] = 0.0;
    \n-
    73 out[1][0] = 6.0*in[0]*in[1] - 3.0*in[0]-6*in[1] + 3.0;
    \n-
    74 out[1][1] = -3.0*in[1]*in[1] + 3.0*in[1];
    \n-
    75 out[2][0] = sign_[1]*(in[0]);
    \n-
    76 out[2][1] = 0.0;
    \n-
    77 out[3][0] = -6.0*in[0]*in[1] + 3.0*in[0];
    \n-
    78 out[3][1] = 3.0*in[1]*in[1] - 3.0*in[1];
    \n-
    79 out[4][0] = 0.0;
    \n-
    80 out[4][1] = sign_[2]*(in[1] - 1.0);
    \n-
    81 out[5][0] = 3.0*in[0]*in[0] - 3.0*in[0];
    \n-
    82 out[5][1] = -6.0*in[0]*in[1] + 6.0*in[0] + 3.0*in[1] - 3.0;
    \n-
    83 out[6][0] = 0.0;
    \n-
    84 out[6][1] = sign_[3]*(in[1]);
    \n-
    85 out[7][0] = -3.0*in[0]*in[0] + 3.0*in[0];
    \n-
    86 out[7][1] = 6.0*in[0]*in[1] - 3.0*in[1];
    \n-
    87 }
    \n-
    \n+
    55 RTVecMatrix(std::size_t order)
    \n+
    56 {
    \n+
    57 /*
    \n+
    58 * Construction of Raviart-Thomas elements in high dimensions see "Mixed Finite Elements in \\R^3" by Nedelec, 1980.
    \n+
    59 *
    \n+
    60 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree $\\leq k$.
    \n+
    61 * The space of Raviart-Thomas functions in $n$ dimensions with index $k$ is defined as
    \n+
    62 *
    \n+
    63 * \\begin{equation*}
    \n+
    64 * RT_k := (\\P_{k-1})^n \\oplus \\widetilde \\P_k x
    \n+
    65 * \\end{equation*}
    \n+
    66 * with $x=(x_1,x_2,\\dots, x_n)$ in $n$ dimensions and $\\widetilde \\P_k$ the homogeneous polynomials of degree $k$.
    \n+
    67 *
    \n+
    68 * For $RT_k$ holds
    \n+
    69 * \\begin{equation*}
    \n+
    70 * (\\P_{k-1})^n \\subset RT_k \\subset (\\P_k)^n.
    \n+
    71 * \\end{equation*}
    \n+
    72 *
    \n+
    73 * We construct $(\\P_k)^n$ and and only use the monomials contained in $RT_k$.
    \n+
    74 *
    \n+
    75 */
    \n+
    76
    \n+
    77 MIBasis basis(order+1);
    \n+
    78 FieldVector< MI, dim > x;
    \n+
    79 /*
    \n+
    80 * Init MultiIndices
    \n+
    81 * x[0]=(1,0,0) x
    \n+
    82 * x[1]=(0,1,0) y
    \n+
    83 * x[2]=(0,0,1) z
    \n+
    84 */
    \n+
    85 for( unsigned int i = 0; i < dim; ++i )
    \n+
    86 x[ i ].set( i, 1 );
    \n+
    87 std::vector< MI > val( basis.size() );
    \n
    88
    \n-
    \n-
    95 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n-
    96 std::vector<typename Traits::JacobianType>& out) const
    \n-
    97 {
    \n-
    98 out.resize(8);
    \n-
    99
    \n-
    100 out[0][0][0] = sign_[0];
    \n-
    101 out[0][0][1] = 0.0;
    \n-
    102 out[0][1][0] = 0.0;
    \n-
    103 out[0][1][1] = 0.0;
    \n-
    104
    \n-
    105 out[1][0][0] = 6.0*in[1] - 3.0;
    \n-
    106 out[1][0][1] = 6.0*in[0] - 6.0;
    \n-
    107 out[1][1][0] = 0.0;
    \n-
    108 out[1][1][1] = -6.0*in[1] + 3.0;
    \n-
    109
    \n-
    110 out[2][0][0] = sign_[1];
    \n-
    111 out[2][0][1] = 0.0;
    \n-
    112 out[2][1][0] = 0.0;
    \n-
    113 out[2][1][1] = 0.0;
    \n-
    114
    \n-
    115 out[3][0][0] = -6.0*in[1] + 3.0;
    \n-
    116 out[3][0][1] = -6.0*in[0];
    \n-
    117 out[3][1][0] = 0.0;
    \n-
    118 out[3][1][1] = 6.0*in[1] - 3.0;
    \n+
    89 // val now contains all monomials in $n$ dimensions with degree $\\leq order+1$
    \n+
    90 basis.evaluate( x, val );
    \n+
    91
    \n+
    92 col_ = basis.size();
    \n+
    93
    \n+
    94 // get $\\dim (\\P_{order-1})$
    \n+
    95 unsigned int notHomogen = 0;
    \n+
    96 if (order>0)
    \n+
    97 notHomogen = basis.sizes()[order-1];
    \n+
    98
    \n+
    99 // get $\\dim \\widetilde (\\P_order)$
    \n+
    100 unsigned int homogen = basis.sizes()[order]-notHomogen;
    \n+
    101
    \n+
    102 /*
    \n+
    103 *
    \n+
    104 * The set $RT_k$ is defined as
    \n+
    105 *
    \n+
    106 * \\begin{equation}
    \n+
    107 * RT_k := (\\P_k)^dim + \\widetilde \\P_k x with x\\in \\R^n.
    \n+
    108 * \\end{equation}
    \n+
    109 *
    \n+
    110 * The space $\\P_k$ is split in $\\P_k = \\P_{k-1} + \\widetilde \\P_k$.
    \n+
    111 *
    \n+
    112 * \\begin{align}
    \n+
    113 * RT_k &= (\\P_{k-1} + \\widetilde \\P_k)^dim + \\widetilde \\P_k x with x\\in \\R^n
    \n+
    114 * &= (\\P_{k-1})^n + (\\widetilde \\P_k)^n + \\widetilde \\P_k x with x\\in \\R^n
    \n+
    115 * \\end{align}
    \n+
    116 *
    \n+
    117 * Thus $\\dim RT_k = n * \\dim \\P_{k-1} + (n+1)*\\dim (\\widetilde \\P_k)$
    \n+
    118 */
    \n
    119
    \n-
    120 out[4][0][0] = 0.0;
    \n-
    121 out[4][0][1] = 0.0;
    \n-
    122 out[4][1][0] = 0.0;
    \n-
    123 out[4][1][1] = sign_[2];
    \n+
    120 // row_ = \\dim RT_k *dim
    \n+
    121 row_ = (notHomogen*dim+homogen*(dim+1))*dim;
    \n+
    122 mat_ = new Field*[row_];
    \n+
    123 int row = 0;
    \n
    124
    \n-
    125 out[5][0][0] = 6.0*in[0] - 3.0;
    \n-
    126 out[5][0][1] = 0.0;
    \n-
    127 out[5][1][0] = -6.0*in[1] + 6.0;
    \n-
    128 out[5][1][1] = -6.0*in[0] + 3.0;
    \n-
    129
    \n-
    130 out[6][0][0] = 0.0;
    \n-
    131 out[6][0][1] = 0.0;
    \n-
    132 out[6][1][0] = 0.0;
    \n-
    133 out[6][1][1] = sign_[3];
    \n-
    134
    \n-
    135 out[7][0][0] = -6.0*in[0] + 3.0;
    \n-
    136 out[7][0][1] = 0.0;
    \n-
    137 out[7][1][0] = 6.0*in[1];
    \n-
    138 out[7][1][1] = 6.0*in[0] - 3.0;
    \n-
    139 }
    \n-
    \n-
    140
    \n-
    \n-
    142 void partial (const std::array<unsigned int, 2>& order,
    \n-
    143 const typename Traits::DomainType& in, // position
    \n-
    144 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    145 {
    \n-
    146 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    147 if (totalOrder == 0) {
    \n-
    148 evaluateFunction(in, out);
    \n-
    149 } else if (totalOrder == 1) {
    \n-
    150 out.resize(size());
    \n-
    151 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    152
    \n-
    153 switch (direction) {
    \n-
    154 case 0:
    \n-
    155 out[0][0] = sign_[0];
    \n-
    156 out[0][1] = 0.0;
    \n-
    157
    \n-
    158 out[1][0] = 6.0*in[1] - 3.0;
    \n-
    159 out[1][1] = 0.0;
    \n+
    125 /* Assign the correct values for the nonhomogeneous polymonials $p\\in (\\P_{oder-1})^dim$
    \n+
    126 * A basis function is represented by $dim$ rows.
    \n+
    127 */
    \n+
    128 for (unsigned int i=0; i<notHomogen+homogen; ++i)
    \n+
    129 {
    \n+
    130 for (unsigned int r=0; r<dim; ++r)
    \n+
    131 {
    \n+
    132 for (unsigned int rr=0; rr<dim; ++rr)
    \n+
    133 {
    \n+
    134 // init row to zero
    \n+
    135 mat_[row] = new Field[col_];
    \n+
    136 for (unsigned int j=0; j<col_; ++j)
    \n+
    137 {
    \n+
    138 mat_[row][j] = 0.;
    \n+
    139 }
    \n+
    140 if (r==rr)
    \n+
    141 mat_[row][i] = 1.;
    \n+
    142 ++row;
    \n+
    143 }
    \n+
    144 }
    \n+
    145 }
    \n+
    146
    \n+
    147 /* Assign the correct values for the homogeneous polymonials $p\\in RT_k \\backslash (\\P_{oder-1})^dim$
    \n+
    148 * A basis function is represented by $dim$ rows.
    \n+
    149 */
    \n+
    150 for (unsigned int i=0; i<homogen; ++i)
    \n+
    151 {
    \n+
    152 for (unsigned int r=0; r<dim; ++r)
    \n+
    153 {
    \n+
    154 // init rows to zero
    \n+
    155 mat_[row] = new Field[col_];
    \n+
    156 for (unsigned int j=0; j<col_; ++j)
    \n+
    157 {
    \n+
    158 mat_[row][j] = 0.;
    \n+
    159 }
    \n
    160
    \n-
    161 out[2][0] = sign_[1];
    \n-
    162 out[2][1] = 0.0;
    \n-
    163
    \n-
    164 out[3][0] = -6.0*in[1] + 3.0;
    \n-
    165 out[3][1] = 0.0;
    \n-
    166
    \n-
    167 out[4][0] = 0.0;
    \n-
    168 out[4][1] = 0.0;
    \n-
    169
    \n-
    170 out[5][0] = 6.0*in[0] - 3.0;
    \n-
    171 out[5][1] = -6.0*in[1] + 6.0;
    \n-
    172
    \n-
    173 out[6][0] = 0.0;
    \n-
    174 out[6][1] = 0.0;
    \n-
    175
    \n-
    176 out[7][0] = -6.0*in[0] + 3.0;
    \n-
    177 out[7][1] = 6.0*in[1];
    \n-
    178 break;
    \n-
    179 case 1:
    \n-
    180 out[0][0] = 0.0;
    \n-
    181 out[0][1] = 0.0;
    \n-
    182
    \n-
    183 out[1][0] = 6.0*in[0] - 6.0;
    \n-
    184 out[1][1] = -6.0*in[1] + 3.0;
    \n-
    185
    \n-
    186 out[2][0] = 0.0;
    \n-
    187 out[2][1] = 0.0;
    \n-
    188
    \n-
    189 out[3][0] = -6.0*in[0];
    \n-
    190 out[3][1] = 6.0*in[1] - 3.0;
    \n-
    191
    \n-
    192 out[4][0] = 0.0;
    \n-
    193 out[4][1] = sign_[2];
    \n-
    194
    \n-
    195 out[5][0] = 0.0;
    \n-
    196 out[5][1] = -6.0*in[0] + 3.0;
    \n-
    197
    \n-
    198 out[6][0] = 0.0;
    \n-
    199 out[6][1] = sign_[3];
    \n-
    200
    \n-
    201 out[7][0] = 0.0;
    \n-
    202 out[7][1] = 6.0*in[0] - 3.0;
    \n-
    203 break;
    \n-
    204 default:
    \n-
    205 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    206 }
    \n-
    207 } else {
    \n-
    208 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    209 }
    \n-
    210 }
    \n-
    \n-
    211
    \n-
    \n-
    213 unsigned int order () const
    \n-
    214 {
    \n-
    215 return 2;
    \n-
    216 }
    \n-
    \n-
    217
    \n-
    218 private:
    \n-
    219 std::array<R,4> sign_;
    \n-
    220 };
    \n+
    161 unsigned int w;
    \n+
    162 // get a monomial $ p \\in \\widetilde \\P_{order}$
    \n+
    163 MI xval = val[notHomogen+i];
    \n+
    164 xval *= x[r];
    \n+
    165 for (w=homogen+notHomogen; w<val.size(); ++w)
    \n+
    166 {
    \n+
    167 if (val[w] == xval)
    \n+
    168 {
    \n+
    169 mat_[row][w] = 1.;
    \n+
    170 break;
    \n+
    171 }
    \n+
    172 }
    \n+
    173 assert(w<val.size());
    \n+
    174 ++row;
    \n+
    175 }
    \n+
    176 }
    \n+
    177 }
    \n+
    \n+
    178
    \n+
    \n+\n+
    180 {
    \n+
    181 for (unsigned int i=0; i<rows(); ++i) {
    \n+
    182 delete [] mat_[i];
    \n+
    183 }
    \n+
    184 delete [] mat_;
    \n+
    185 }
    \n+
    \n+
    186
    \n+
    \n+
    187 unsigned int cols() const {
    \n+
    188 return col_;
    \n+
    189 }
    \n+
    \n+
    190
    \n+
    \n+
    191 unsigned int rows() const {
    \n+
    192 return row_;
    \n+
    193 }
    \n
    \n-
    221}
    \n-
    222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
    \n+
    194
    \n+
    195 template <class Vector>
    \n+
    \n+
    196 void row( const unsigned int row, Vector &vec ) const
    \n+
    197 {
    \n+
    198 const unsigned int N = cols();
    \n+
    199 assert( vec.size() == N );
    \n+
    200 for (unsigned int i=0; i<N; ++i)
    \n+
    201 field_cast(mat_[row][i],vec[i]);
    \n+
    202 }
    \n+
    \n+
    203 unsigned int row_,col_;
    \n+
    204 Field **mat_;
    \n+
    205 };
    \n+
    \n+
    206
    \n+
    207
    \n+
    208}
    \n+
    209#endif // DUNE_RAVIARTTHOMASPREBASIS_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:30
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:95
    \n-
    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
    \n-
    BDM1Cube2DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:37
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:34
    \n-
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:55
    \n-
    BDM1Cube2DLocalBasis(std::bitset< 4 > s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:48
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:213
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:66
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    Definition raviartthomassimplexprebasis.hh:50
    \n+
    static const unsigned int dim
    Definition raviartthomassimplexprebasis.hh:52
    \n+
    ~RTVecMatrix()
    Definition raviartthomassimplexprebasis.hh:179
    \n+
    Field ** mat_
    Definition raviartthomassimplexprebasis.hh:204
    \n+
    RTVecMatrix(std::size_t order)
    Definition raviartthomassimplexprebasis.hh:55
    \n+
    unsigned int cols() const
    Definition raviartthomassimplexprebasis.hh:187
    \n+
    unsigned int row_
    Definition raviartthomassimplexprebasis.hh:203
    \n+
    MultiIndex< dim, Field > MI
    Definition raviartthomassimplexprebasis.hh:53
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition raviartthomassimplexprebasis.hh:196
    \n+
    MonomialBasis< geometryId, MI > MIBasis
    Definition raviartthomassimplexprebasis.hh:54
    \n+
    static constexpr GeometryType geometry
    Definition raviartthomassimplexprebasis.hh:51
    \n+
    unsigned int rows() const
    Definition raviartthomassimplexprebasis.hh:191
    \n+
    unsigned int col_
    Definition raviartthomassimplexprebasis.hh:203
    \n+
    Definition raviartthomassimplexprebasis.hh:22
    \n+
    const Basis Object
    Definition raviartthomassimplexprebasis.hh:28
    \n+
    MonomialBasisProvider< dim, Field > MBasisFactory
    Definition raviartthomassimplexprebasis.hh:23
    \n+
    PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis
    Definition raviartthomassimplexprebasis.hh:26
    \n+
    MBasisFactory::Object MBasis
    Definition raviartthomassimplexprebasis.hh:24
    \n+
    std::size_t Key
    Definition raviartthomassimplexprebasis.hh:29
    \n+
    static void release(Object *object)
    Definition raviartthomassimplexprebasis.hh:45
    \n+
    StandardEvaluator< MBasis > EvalMBasis
    Definition raviartthomassimplexprebasis.hh:25
    \n+
    static Object * create(const Key &order)
    Definition raviartthomassimplexprebasis.hh:37
    \n+
    Definition raviartthomassimplexprebasis.hh:33
    \n+
    MonomialBasisProvider< dd, FF > Type
    Definition raviartthomassimplexprebasis.hh:34
    \n+
    Definition basisevaluator.hh:131
    \n+
    Definition monomialbasis.hh:440
    \n+
    unsigned int size() const
    Definition monomialbasis.hh:476
    \n+
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:498
    \n+
    const unsigned int * sizes(unsigned int order) const
    Definition monomialbasis.hh:465
    \n+
    Definition monomialbasis.hh:780
    \n+
    Definition multiindex.hh:38
    \n+
    Definition polynomialbasis.hh:348
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,255 +1,329 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n-brezzidouglasmarini1cube2dlocalbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+raviartthomassimplexprebasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH\n+5#ifndef DUNE_RAVIARTTHOMASPREBASIS_HH\n+6#define DUNE_RAVIARTTHOMASPREBASIS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n+8#include \n+9#include \n+10\n+11#include \n 12\n-13#include \n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n 14\n-15#include \"../../common/localbasis.hh\"\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-28 template\n-_\b2_\b9 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-30 {\n-31\n-32 public:\n-33 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n-FieldVector,\n-_\b3_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-35\n-_\b3_\b7 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs ()\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17 template < GeometryType::Id geometryId, class Field >\n+18 struct RTVecMatrix;\n+19\n+20 template \n+_\b2_\b1 struct _\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+22 {\n+_\b2_\b3 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bM_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b2_\b4 typedef typename MBasisFactory::Object _\bM_\bB_\ba_\bs_\bi_\bs;\n+_\b2_\b5 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\bM_\bB_\ba_\bs_\bi_\bs_\b> _\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs;\n+_\b2_\b6 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs_\b,_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\b> >\n+_\bB_\ba_\bs_\bi_\bs;\n+27\n+_\b2_\b8 typedef const _\bB_\ba_\bs_\bi_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n+_\b2_\b9 typedef std::size_t _\bK_\be_\by;\n+30\n+31 template \n+_\b3_\b2 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+33 {\n+_\b3_\b4 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n+35 };\n+36 template< GeometryType::Id geometryId >\n+_\b3_\b7 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &order )\n 38 {\n-39 for (size_t i=0; i<4; i++)\n-40 sign_[i] = 1.0;\n-41 }\n-42\n-_\b4_\b8 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s)\n-49 {\n-50 for (size_t i=0; i<4; i++)\n-51 sign_[i] = s[i] ? -1.0 : 1.0;\n-52 }\n-53\n-_\b5_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+39 _\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bF_\bi_\be_\bl_\bd_\b> vecMatrix(order);\n+40 _\bM_\bB_\ba_\bs_\bi_\bs *mbasis = MBasisFactory::template create(order+1);\n+41 typename std::remove_const::type *tmBasis = new typename std::\n+remove_const::type(*mbasis);\n+42 tmBasis->fill(vecMatrix);\n+43 return tmBasis;\n+44 }\n+_\b4_\b5 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+46 };\n+47\n+48 template \n+_\b4_\b9 struct _\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n+50 {\n+_\b5_\b1 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n+_\b5_\b2 static const unsigned int _\bd_\bi_\bm = _\bg_\be_\bo_\bm_\be_\bt_\br_\by._\bd_\bi_\bm();\n+_\b5_\b3 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bM_\bI;\n+_\b5_\b4 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bM_\bI_\b> _\bM_\bI_\bB_\ba_\bs_\bi_\bs;\n+_\b5_\b5 _\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx(std::size_t order)\n 56 {\n-57 return 8;\n-58 }\n-59\n-_\b6_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-67 std::vector& out) const\n-68 {\n-69 out.resize(8);\n-70\n-71 out[0][0] = sign_[0]*(in[0] - 1.0);\n-72 out[0][1] = 0.0;\n-73 out[1][0] = 6.0*in[0]*in[1] - 3.0*in[0]-6*in[1] + 3.0;\n-74 out[1][1] = -3.0*in[1]*in[1] + 3.0*in[1];\n-75 out[2][0] = sign_[1]*(in[0]);\n-76 out[2][1] = 0.0;\n-77 out[3][0] = -6.0*in[0]*in[1] + 3.0*in[0];\n-78 out[3][1] = 3.0*in[1]*in[1] - 3.0*in[1];\n-79 out[4][0] = 0.0;\n-80 out[4][1] = sign_[2]*(in[1] - 1.0);\n-81 out[5][0] = 3.0*in[0]*in[0] - 3.0*in[0];\n-82 out[5][1] = -6.0*in[0]*in[1] + 6.0*in[0] + 3.0*in[1] - 3.0;\n-83 out[6][0] = 0.0;\n-84 out[6][1] = sign_[3]*(in[1]);\n-85 out[7][0] = -3.0*in[0]*in[0] + 3.0*in[0];\n-86 out[7][1] = 6.0*in[0]*in[1] - 3.0*in[1];\n-87 }\n+57 /*\n+58 * Construction of Raviart-Thomas elements in high dimensions see \"Mixed\n+Finite Elements in \\R^3\" by Nedelec, 1980.\n+59 *\n+60 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree\n+$\\leq k$.\n+61 * The space of Raviart-Thomas functions in $n$ dimensions with index $k$ is\n+defined as\n+62 *\n+63 * \\begin{equation*}\n+64 * RT_k := (\\P_{k-1})^n \\oplus \\widetilde \\P_k x\n+65 * \\end{equation*}\n+66 * with $x=(x_1,x_2,\\dots, x_n)$ in $n$ dimensions and $\\widetilde \\P_k$ the\n+homogeneous polynomials of degree $k$.\n+67 *\n+68 * For $RT_k$ holds\n+69 * \\begin{equation*}\n+70 * (\\P_{k-1})^n \\subset RT_k \\subset (\\P_k)^n.\n+71 * \\end{equation*}\n+72 *\n+73 * We construct $(\\P_k)^n$ and and only use the monomials contained in\n+$RT_k$.\n+74 *\n+75 */\n+76\n+77 _\bM_\bI_\bB_\ba_\bs_\bi_\bs basis(order+1);\n+78 FieldVector< MI, dim > x;\n+79 /*\n+80 * Init MultiIndices\n+81 * x[0]=(1,0,0) x\n+82 * x[1]=(0,1,0) y\n+83 * x[2]=(0,0,1) z\n+84 */\n+85 for( unsigned int i = 0; i < _\bd_\bi_\bm; ++i )\n+86 x[ i ].set( i, 1 );\n+87 std::vector< MI > val( basis._\bs_\bi_\bz_\be() );\n 88\n-_\b9_\b5 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-96 std::vector& out) const\n-97 {\n-98 out.resize(8);\n-99\n-100 out[0][0][0] = sign_[0];\n-101 out[0][0][1] = 0.0;\n-102 out[0][1][0] = 0.0;\n-103 out[0][1][1] = 0.0;\n-104\n-105 out[1][0][0] = 6.0*in[1] - 3.0;\n-106 out[1][0][1] = 6.0*in[0] - 6.0;\n-107 out[1][1][0] = 0.0;\n-108 out[1][1][1] = -6.0*in[1] + 3.0;\n-109\n-110 out[2][0][0] = sign_[1];\n-111 out[2][0][1] = 0.0;\n-112 out[2][1][0] = 0.0;\n-113 out[2][1][1] = 0.0;\n-114\n-115 out[3][0][0] = -6.0*in[1] + 3.0;\n-116 out[3][0][1] = -6.0*in[0];\n-117 out[3][1][0] = 0.0;\n-118 out[3][1][1] = 6.0*in[1] - 3.0;\n+89 // val now contains all monomials in $n$ dimensions with degree $\\leq\n+order+1$\n+90 basis._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( x, val );\n+91\n+92 _\bc_\bo_\bl_\b_ = basis._\bs_\bi_\bz_\be();\n+93\n+94 // get $\\dim (\\P_{order-1})$\n+95 unsigned int notHomogen = 0;\n+96 if (order>0)\n+97 notHomogen = basis._\bs_\bi_\bz_\be_\bs()[order-1];\n+98\n+99 // get $\\dim \\widetilde (\\P_order)$\n+100 unsigned int homogen = basis._\bs_\bi_\bz_\be_\bs()[order]-notHomogen;\n+101\n+102 /*\n+103 *\n+104 * The set $RT_k$ is defined as\n+105 *\n+106 * \\begin{equation}\n+107 * RT_k := (\\P_k)^dim + \\widetilde \\P_k x with x\\in \\R^n.\n+108 * \\end{equation}\n+109 *\n+110 * The space $\\P_k$ is split in $\\P_k = \\P_{k-1} + \\widetilde \\P_k$.\n+111 *\n+112 * \\begin{align}\n+113 * RT_k &= (\\P_{k-1} + \\widetilde \\P_k)^dim + \\widetilde \\P_k x with x\\in\n+\\R^n\n+114 * &= (\\P_{k-1})^n + (\\widetilde \\P_k)^n + \\widetilde \\P_k x with x\\in \\R^n\n+115 * \\end{align}\n+116 *\n+117 * Thus $\\dim RT_k = n * \\dim \\P_{k-1} + (n+1)*\\dim (\\widetilde \\P_k)$\n+118 */\n 119\n-120 out[4][0][0] = 0.0;\n-121 out[4][0][1] = 0.0;\n-122 out[4][1][0] = 0.0;\n-123 out[4][1][1] = sign_[2];\n+120 // row_ = \\dim RT_k *dim\n+121 _\br_\bo_\bw_\b_ = (notHomogen*_\bd_\bi_\bm+homogen*(_\bd_\bi_\bm+1))*_\bd_\bi_\bm;\n+122 _\bm_\ba_\bt_\b_ = new Field*[_\br_\bo_\bw_\b_];\n+123 int _\br_\bo_\bw = 0;\n 124\n-125 out[5][0][0] = 6.0*in[0] - 3.0;\n-126 out[5][0][1] = 0.0;\n-127 out[5][1][0] = -6.0*in[1] + 6.0;\n-128 out[5][1][1] = -6.0*in[0] + 3.0;\n-129\n-130 out[6][0][0] = 0.0;\n-131 out[6][0][1] = 0.0;\n-132 out[6][1][0] = 0.0;\n-133 out[6][1][1] = sign_[3];\n-134\n-135 out[7][0][0] = -6.0*in[0] + 3.0;\n-136 out[7][0][1] = 0.0;\n-137 out[7][1][0] = 6.0*in[1];\n-138 out[7][1][1] = 6.0*in[0] - 3.0;\n+125 /* Assign the correct values for the nonhomogeneous polymonials $p\\in (\\P_\n+{oder-1})^dim$\n+126 * A basis function is represented by $dim$ rows.\n+127 */\n+128 for (unsigned int i=0; i& _\bo_\br_\bd_\be_\br,\n-143 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-144 std::vector& out) const // return value\n-145 {\n-146 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-147 if (totalOrder == 0) {\n-148 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-149 } else if (totalOrder == 1) {\n-150 out.resize(_\bs_\bi_\bz_\be());\n-151 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-152\n-153 switch (direction) {\n-154 case 0:\n-155 out[0][0] = sign_[0];\n-156 out[0][1] = 0.0;\n-157\n-158 out[1][0] = 6.0*in[1] - 3.0;\n-159 out[1][1] = 0.0;\n+140 if (r==rr)\n+141 _\bm_\ba_\bt_\b_[_\br_\bo_\bw][i] = 1.;\n+142 ++_\br_\bo_\bw;\n+143 }\n+144 }\n+145 }\n+146\n+147 /* Assign the correct values for the homogeneous polymonials $p\\in RT_k\n+\\backslash (\\P_{oder-1})^dim$\n+148 * A basis function is represented by $dim$ rows.\n+149 */\n+150 for (unsigned int i=0; i sign_;\n-220 };\n-221}\n-222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH\n+195 template \n+_\b1_\b9_\b6 void _\br_\bo_\bw( const unsigned int _\br_\bo_\bw, Vector &vec ) const\n+197 {\n+198 const unsigned int N = _\bc_\bo_\bl_\bs();\n+199 assert( vec.size() == N );\n+200 for (unsigned int i=0; i &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:142\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM1Cube2DLocalBasis()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bd_\bi_\bm\n+static const unsigned int dim\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\b~_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n+~RTVecMatrix()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:179\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\ba_\bt_\b_\n+Field ** mat_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:204\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n+RTVecMatrix(std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\bs\n+unsigned int cols() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:187\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\b_\n+unsigned int row_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:203\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\bI\n+MultiIndex< dim, Field > MI\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw\n+void row(const unsigned int row, Vector &vec) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:196\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\bI_\bB_\ba_\bs_\bi_\bs\n+MonomialBasis< geometryId, MI > MIBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n+static constexpr GeometryType geometry\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs\n+unsigned int rows() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:191\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\b_\n+unsigned int col_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:203\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const Basis Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+MonomialBasisProvider< dim, Field > MBasisFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n+PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bB_\ba_\bs_\bi_\bs\n+MBasisFactory::Object MBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+std::size_t Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs\n+StandardEvaluator< MBasis > EvalMBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n+MonomialBasisProvider< dd, FF > Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexprebasis.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:440\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM1Cube2DLocalBasis(std::bitset< 4 > s)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:213\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:476\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n+values) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:498\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n+const unsigned int * sizes(unsigned int order) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:465\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:780\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomassimplexinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,50 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference
    \n+
    raviartthomassimplexinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \n+
    #include <fstream>
    \n+#include <utility>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/geometry/typeindex.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/localfunctions/utility/interpolationhelper.hh>
    \n+#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n+#include <dune/localfunctions/orthonormal/orthonormalbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Cube2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. More...
    class  Dune::LocalCoefficientsContainer
     
    struct  Dune::RaviartThomasCoefficientsFactory< dim >
     
    struct  Dune::RTL2InterpolationBuilder< dim, Field >
     
    class  Dune::RaviartThomasL2Interpolation< dimension, F >
     An L2-based interpolation for Raviart Thomas. More...
     
    struct  Dune::RaviartThomasL2InterpolationFactory< dim, Field >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,39 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference\n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+raviartthomassimplexinterpolation.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b>\n+\u00a0 An L2-based interpolation for Raviart Thomas. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomassimplexinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,547 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube2dlocalcoefficients.hh
    \n+
    raviartthomassimplexinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n+
    8#include <fstream>
    \n+
    9#include <utility>
    \n
    10
    \n-
    11#include "../../common/localkey.hh"
    \n+
    11#include <dune/common/exceptions.hh>
    \n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    \n-\n-
    24 {
    \n+
    13#include <dune/geometry/quadraturerules.hh>
    \n+
    14#include <dune/geometry/referenceelements.hh>
    \n+
    15#include <dune/geometry/type.hh>
    \n+
    16#include <dune/geometry/typeindex.hh>
    \n+
    17
    \n+\n+\n+\n+\n+
    22
    \n+
    23namespace Dune
    \n+
    24{
    \n
    25
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for (std::size_t i = 0; i < 4; ++i)
    \n-
    31 {
    \n-
    32 li[2*i] = LocalKey(i,1,0);
    \n-
    33 li[2*i + 1] = LocalKey(i,1,1);
    \n-
    34 }
    \n-
    35 }
    \n-
    \n+
    26 // Internal Forward Declarations
    \n+
    27 // -----------------------------
    \n+
    28
    \n+
    29 template < unsigned int dim, class Field >
    \n+
    30 struct RaviartThomasL2InterpolationFactory;
    \n+
    31
    \n+
    32
    \n+
    33
    \n+
    34 // LocalCoefficientsContainer
    \n+
    35 // --------------------------
    \n
    36
    \n-
    \n-
    38 std::size_t size () const
    \n-
    39 {
    \n-
    40 return 8;
    \n-
    41 }
    \n-
    \n-
    42
    \n-
    \n-
    44 const LocalKey& localKey (std::size_t i) const
    \n-
    45 {
    \n-
    46 return li[i];
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    49 private:
    \n-
    50 std::vector<LocalKey> li;
    \n-
    51 };
    \n-
    \n-
    52}
    \n-
    53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    37 class LocalCoefficientsContainer
    \n+
    38 {
    \n+
    39 typedef LocalCoefficientsContainer This;
    \n+
    40
    \n+
    41 public:
    \n+
    42 template <class Setter>
    \n+
    \n+
    43 LocalCoefficientsContainer ( const Setter &setter )
    \n+
    44 {
    \n+
    45 setter.setLocalKeys(localKey_);
    \n+
    46 }
    \n+
    \n+
    47
    \n+
    \n+
    48 const LocalKey &localKey ( const unsigned int i ) const
    \n+
    49 {
    \n+
    50 assert( i < size() );
    \n+
    51 return localKey_[ i ];
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+
    54 std::size_t size () const
    \n+
    55 {
    \n+
    56 return localKey_.size();
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    59 private:
    \n+
    60 std::vector< LocalKey > localKey_;
    \n+
    61 };
    \n+
    62
    \n+
    63
    \n+
    64
    \n+
    65 // RaviartThomasCoefficientsFactory
    \n+
    66 // --------------------------------
    \n+
    67
    \n+
    68 template < unsigned int dim >
    \n+
    \n+\n+
    70 {
    \n+
    71 typedef std::size_t Key;
    \n+\n+
    73
    \n+
    74 template< GeometryType::Id geometryId >
    \n+
    \n+
    75 static Object *create( const Key &key )
    \n+
    76 {
    \n+
    77 typedef RaviartThomasL2InterpolationFactory< dim, double > InterpolationFactory;
    \n+
    78 if( !supports< geometryId >( key ) )
    \n+
    79 return nullptr;
    \n+
    80 typename InterpolationFactory::Object *interpolation = InterpolationFactory::template create< geometryId >( key );
    \n+
    81 Object *localKeys = new Object( *interpolation );
    \n+
    82 InterpolationFactory::release( interpolation );
    \n+
    83 return localKeys;
    \n+
    84 }
    \n+
    \n+
    85
    \n+
    86 template< GeometryType::Id geometryId >
    \n+
    \n+
    87 static bool supports ( const Key &key )
    \n+
    88 {
    \n+
    89 return GeometryType(geometryId).isSimplex();
    \n+
    90 }
    \n+
    \n+
    91 static void release( Object *object ) { delete object; }
    \n+
    92 };
    \n+
    \n+
    93
    \n+
    94
    \n+
    95
    \n+
    96 // RTL2InterpolationBuilder
    \n+
    97 // ------------------------
    \n+
    98
    \n+
    99 // L2 Interpolation requires:
    \n+
    100 // - for element
    \n+
    101 // - test basis
    \n+
    102 // - for each face (dynamic)
    \n+
    103 // - test basis
    \n+
    104 // - normal
    \n+
    105 template< unsigned int dim, class Field >
    \n+
    \n+\n+
    107 {
    \n+
    108 static const unsigned int dimension = dim;
    \n+
    109
    \n+
    110 // for the dofs associated to the element
    \n+\n+\n+
    113
    \n+
    114 // for the dofs associated to the faces
    \n+\n+\n+
    117
    \n+
    118 // the normals of the faces
    \n+
    119 typedef FieldVector< Field, dimension > Normal;
    \n+
    120
    \n+\n+
    122
    \n+\n+\n+
    125
    \n+
    \n+\n+
    127 {
    \n+
    128 TestBasisFactory::release( testBasis_ );
    \n+
    129 for( FaceStructure &f : faceStructure_ )
    \n+\n+
    131 }
    \n+
    \n+
    132
    \n+
    133 GeometryType type () const { return geometry_; }
    \n+
    134
    \n+
    135 std::size_t order () const { return order_; }
    \n+
    136
    \n+
    137 // number of faces
    \n+
    138 unsigned int faceSize () const { return faceSize_; }
    \n+
    139
    \n+
    140 // basis associated to the element
    \n+
    141 TestBasis *testBasis () const { return testBasis_; }
    \n+
    142
    \n+
    143 // basis associated to face f
    \n+
    144 TestFaceBasis *testFaceBasis ( unsigned int f ) const { assert( f < faceSize() ); return faceStructure_[ f ].basis_; }
    \n+
    145
    \n+
    146 // normal of face f
    \n+
    147 const Normal normal ( unsigned int f ) const { assert( f < faceSize() ); return faceStructure_[ f ].normal_; }
    \n+
    148
    \n+
    149 template< GeometryType::Id geometryId >
    \n+
    \n+
    150 void build ( std::size_t order )
    \n+
    151 {
    \n+
    152 constexpr GeometryType geometry = geometryId;
    \n+
    153 geometry_ = geometry;
    \n+
    154 order_ = order;
    \n+
    155
    \n+
    156 testBasis_ = (order > 0 ? TestBasisFactory::template create< geometry >( order-1 ) : nullptr);
    \n+
    157
    \n+
    158 const auto &refElement = ReferenceElements< Field, dimension >::general( type() );
    \n+
    159 faceSize_ = refElement.size( 1 );
    \n+
    160 faceStructure_.reserve( faceSize_ );
    \n+
    161 for( unsigned int face = 0; face < faceSize_; ++face )
    \n+
    162 {
    \n+
    163 /* For simplices or cubes of arbitrary dimension you could just use
    \n+
    164 *
    \n+
    165 * ```
    \n+
    166 * GeometryType faceGeometry = Impl::getBase(geometry_);
    \n+
    167 * TestFaceBasis *faceBasis = TestFaceBasisFactory::template create< faceGeometry >( order );
    \n+
    168 * ```
    \n+
    169 *
    \n+
    170 * For i.e. Prisms and Pyramids in 3d this does not work because they contain squares and triangles as faces.
    \n+
    171 * And depending on the dynamic face index a different face geometry is needed.
    \n+
    172 *
    \n+
    173 */
    \n+
    174 TestFaceBasis *faceBasis = Impl::toGeometryTypeIdConstant<dimension-1>(refElement.type( face, 1 ), [&](auto faceGeometryTypeId) {
    \n+
    175 return TestFaceBasisFactory::template create< decltype(faceGeometryTypeId)::value >( order );
    \n+
    176 });
    \n+
    177 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal( face ) );
    \n+
    178 }
    \n+
    179 assert( faceStructure_.size() == faceSize_ );
    \n+
    180 }
    \n+
    \n+
    181
    \n+
    182 private:
    \n+
    183 struct FaceStructure
    \n+
    184 {
    \n+
    185 FaceStructure( TestFaceBasis *tfb, const Normal n )
    \n+
    186 : basis_( tfb ), normal_( n )
    \n+
    187 {}
    \n+
    188
    \n+
    189 TestFaceBasis *basis_;
    \n+
    190 const Dune::FieldVector< Field, dimension > normal_;
    \n+
    191 };
    \n+
    192
    \n+
    193 std::vector< FaceStructure > faceStructure_;
    \n+
    194 TestBasis *testBasis_ = nullptr;
    \n+
    195 GeometryType geometry_;
    \n+
    196 unsigned int faceSize_;
    \n+
    197 std::size_t order_;
    \n+
    198 };
    \n+
    \n+
    199
    \n+
    200
    \n+
    201
    \n+
    202 // RaviartThomasL2Interpolation
    \n+
    203 // ----------------------------
    \n+
    204
    \n+
    210 template< unsigned int dimension, class F>
    \n+
    \n+\n+
    212 : public InterpolationHelper< F ,dimension >
    \n+
    213 {
    \n+\n+\n+
    216
    \n+
    217 public:
    \n+
    218 typedef F Field;
    \n+\n+
    \n+\n+
    221 : order_(0),
    \n+
    222 size_(0)
    \n+
    223 {}
    \n+
    \n+
    224
    \n+
    225 template< class Function, class Vector,
    \n+
    226 decltype(std::declval<Vector>().size(),bool{}) = true,
    \n+
    227 decltype(std::declval<Vector>().resize(0u),bool{}) = true>
    \n+
    \n+
    228 void interpolate ( const Function &function, Vector &coefficients ) const
    \n+
    229 {
    \n+
    230 coefficients.resize(size());
    \n+
    231 typename Base::template Helper<Function,Vector,true> func( function,coefficients );
    \n+
    232 interpolate(func);
    \n+
    233 }
    \n+
    \n+
    234
    \n+
    235 template< class Basis, class Matrix,
    \n+
    236 decltype(std::declval<Matrix>().rows(),bool{}) = true,
    \n+
    237 decltype(std::declval<Matrix>().cols(),bool{}) = true,
    \n+
    238 decltype(std::declval<Matrix>().resize(0u,0u),bool{}) = true>
    \n+
    \n+
    239 void interpolate ( const Basis &basis, Matrix &matrix ) const
    \n+
    240 {
    \n+
    241 matrix.resize( size(), basis.size() );
    \n+
    242 typename Base::template Helper<Basis,Matrix,false> func( basis,matrix );
    \n+
    243 interpolate(func);
    \n+
    244 }
    \n+
    \n+
    245
    \n+
    \n+
    246 std::size_t order() const
    \n+
    247 {
    \n+
    248 return order_;
    \n+
    249 }
    \n+
    \n+
    \n+
    250 std::size_t size() const
    \n+
    251 {
    \n+
    252 return size_;
    \n+
    253 }
    \n+
    \n+
    254 template <GeometryType::Id geometryId>
    \n+
    \n+
    255 void build( std::size_t order )
    \n+
    256 {
    \n+
    257 size_ = 0;
    \n+
    258 order_ = order;
    \n+
    259 builder_.template build<geometryId>(order_);
    \n+
    260 if (builder_.testBasis())
    \n+
    261 size_ += dimension*builder_.testBasis()->size();
    \n+
    262 for ( unsigned int f=0; f<builder_.faceSize(); ++f )
    \n+
    263 if (builder_.testFaceBasis(f))
    \n+
    264 size_ += builder_.testFaceBasis(f)->size();
    \n+
    265 }
    \n+
    \n+
    266
    \n+
    \n+
    267 void setLocalKeys(std::vector< LocalKey > &keys) const
    \n+
    268 {
    \n+
    269 keys.resize(size());
    \n+
    270 unsigned int row = 0;
    \n+
    271 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n+
    272 {
    \n+
    273 if (builder_.faceSize())
    \n+
    274 for (unsigned int i=0; i<builder_.testFaceBasis(f)->size(); ++i,++row)
    \n+
    275 keys[row] = LocalKey(f,1,i);
    \n+
    276 }
    \n+
    277 if (builder_.testBasis())
    \n+
    278 for (unsigned int i=0; i<builder_.testBasis()->size()*dimension; ++i,++row)
    \n+
    279 keys[row] = LocalKey(0,0,i);
    \n+
    280 assert( row == size() );
    \n+
    281 }
    \n+
    \n+
    282
    \n+
    283 protected:
    \n+
    284 template< class Func, class Container, bool type >
    \n+
    \n+
    285 void interpolate ( typename Base::template Helper<Func,Container,type> &func ) const
    \n+
    286 {
    \n+
    287 const Dune::GeometryType geoType = builder_.type();
    \n+
    288
    \n+
    289 std::vector< Field > testBasisVal;
    \n+
    290
    \n+
    291 for (unsigned int i=0; i<size(); ++i)
    \n+
    292 for (unsigned int j=0; j<func.size(); ++j)
    \n+
    293 func.set(i,j,0);
    \n+
    294
    \n+
    295 unsigned int row = 0;
    \n+
    296
    \n+
    297 // boundary dofs:
    \n+
    298 typedef Dune::QuadratureRule<Field, dimension-1> FaceQuadrature;
    \n+
    299 typedef Dune::QuadratureRules<Field, dimension-1> FaceQuadratureRules;
    \n+
    300
    \n+
    301 const auto &refElement = Dune::ReferenceElements< Field, dimension >::general( geoType );
    \n+
    302
    \n+
    303 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n+
    304 {
    \n+
    305 if (!builder_.testFaceBasis(f))
    \n+
    306 continue;
    \n+
    307 testBasisVal.resize(builder_.testFaceBasis(f)->size());
    \n+
    308
    \n+
    309 const auto &geometry = refElement.template geometry< 1 >( f );
    \n+
    310 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );
    \n+
    311 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n+
    312
    \n+
    313 const unsigned int quadratureSize = faceQuad.size();
    \n+
    314 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n+
    315 {
    \n+
    316 if (dimension>1)
    \n+
    317 builder_.testFaceBasis(f)->template evaluate<0>(faceQuad[qi].position(),testBasisVal);
    \n+
    318 else
    \n+
    319 testBasisVal[0] = 1.;
    \n+
    320 fillBnd( row, testBasisVal,
    \n+
    321 func.evaluate( geometry.global( faceQuad[qi].position() ) ),
    \n+
    322 builder_.normal(f), faceQuad[qi].weight(),
    \n+
    323 func);
    \n+
    324 }
    \n+
    325
    \n+
    326 row += builder_.testFaceBasis(f)->size();
    \n+
    327 }
    \n+
    328 // element dofs
    \n+
    329 if (builder_.testBasis())
    \n+
    330 {
    \n+
    331 testBasisVal.resize(builder_.testBasis()->size());
    \n+
    332
    \n+
    333 typedef Dune::QuadratureRule<Field, dimension> Quadrature;
    \n+
    334 typedef Dune::QuadratureRules<Field, dimension> QuadratureRules;
    \n+
    335 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );
    \n+
    336
    \n+
    337 const unsigned int quadratureSize = elemQuad.size();
    \n+
    338 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n+
    339 {
    \n+
    340 builder_.testBasis()->template evaluate<0>(elemQuad[qi].position(),testBasisVal);
    \n+
    341 fillInterior( row, testBasisVal,
    \n+
    342 func.evaluate(elemQuad[qi].position()),
    \n+
    343 elemQuad[qi].weight(),
    \n+
    344 func );
    \n+
    345 }
    \n+
    346
    \n+
    347 row += builder_.testBasis()->size()*dimension;
    \n+
    348 }
    \n+
    349 assert(row==size());
    \n+
    350 }
    \n+
    \n+
    351
    \n+
    352 private:
    \n+
    362 template <class MVal, class RTVal,class Matrix>
    \n+
    363 void fillBnd (unsigned int startRow,
    \n+
    364 const MVal &mVal,
    \n+
    365 const RTVal &rtVal,
    \n+
    366 const FieldVector<Field,dimension> &normal,
    \n+
    367 const Field &weight,
    \n+
    368 Matrix &matrix) const
    \n+
    369 {
    \n+
    370 const unsigned int endRow = startRow+mVal.size();
    \n+
    371 typename RTVal::const_iterator rtiter = rtVal.begin();
    \n+
    372 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)
    \n+
    373 {
    \n+
    374 Field cFactor = (*rtiter)*normal;
    \n+
    375 typename MVal::const_iterator miter = mVal.begin();
    \n+
    376 for (unsigned int row = startRow;
    \n+
    377 row!=endRow; ++miter, ++row )
    \n+
    378 {
    \n+
    379 matrix.add(row,col, (weight*cFactor)*(*miter) );
    \n+
    380 }
    \n+
    381 assert( miter == mVal.end() );
    \n+
    382 }
    \n+
    383 }
    \n+
    392 template <class MVal, class RTVal,class Matrix>
    \n+
    393 void fillInterior (unsigned int startRow,
    \n+
    394 const MVal &mVal,
    \n+
    395 const RTVal &rtVal,
    \n+
    396 Field weight,
    \n+
    397 Matrix &matrix) const
    \n+
    398 {
    \n+
    399 const unsigned int endRow = startRow+mVal.size()*dimension;
    \n+
    400 typename RTVal::const_iterator rtiter = rtVal.begin();
    \n+
    401 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)
    \n+
    402 {
    \n+
    403 typename MVal::const_iterator miter = mVal.begin();
    \n+
    404 for (unsigned int row = startRow;
    \n+
    405 row!=endRow; ++miter,row+=dimension )
    \n+
    406 {
    \n+
    407 for (unsigned int i=0; i<dimension; ++i)
    \n+
    408 {
    \n+
    409 matrix.add(row+i,col, (weight*(*miter))*(*rtiter)[i] );
    \n+
    410 }
    \n+
    411 }
    \n+
    412 assert( miter == mVal.end() );
    \n+
    413 }
    \n+
    414 }
    \n+
    415
    \n+
    416 Builder builder_;
    \n+
    417 std::size_t order_;
    \n+
    418 std::size_t size_;
    \n+
    419 };
    \n+
    \n+
    420
    \n+
    421 template < unsigned int dim, class Field >
    \n+
    \n+\n+
    423 {
    \n+\n+\n+
    426 typedef std::size_t Key;
    \n+
    427 typedef typename std::remove_const<Object>::type NonConstObject;
    \n+
    428
    \n+
    429 template <GeometryType::Id geometryId>
    \n+
    \n+
    430 static Object *create( const Key &key )
    \n+
    431 {
    \n+
    432 if ( !supports<geometryId>(key) )
    \n+
    433 return 0;
    \n+
    434 NonConstObject *interpol = new NonConstObject();
    \n+
    435 interpol->template build<geometryId>(key);
    \n+
    436 return interpol;
    \n+
    437 }
    \n+
    \n+
    438 template< GeometryType::Id geometryId >
    \n+
    \n+
    439 static bool supports ( const Key &key )
    \n+
    440 {
    \n+
    441 return GeometryType(geometryId).isSimplex();
    \n+
    442 }
    \n+
    \n+
    443 static void release( Object *object ) { delete object; }
    \n+
    444 };
    \n+
    \n+
    445
    \n+
    446} // namespace Dune
    \n+
    447
    \n+
    448#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:24
    \n-
    BDM1Cube2DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:28
    \n-
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:38
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:44
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Definition nedelecsimplexinterpolation.hh:41
    \n+
    LocalCoefficientsContainer(const Setter &setter)
    Definition nedelecsimplexinterpolation.hh:46
    \n+
    const LocalKey & localKey(const unsigned int i) const
    Definition raviartthomassimplexinterpolation.hh:48
    \n+
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:57
    \n+
    Definition orthonormalbasis.hh:20
    \n+
    static void release(Object *object)
    Definition orthonormalbasis.hh:57
    \n+
    Definition raviartthomassimplexinterpolation.hh:423
    \n+
    std::remove_const< Object >::type NonConstObject
    Definition raviartthomassimplexinterpolation.hh:427
    \n+
    static void release(Object *object)
    Definition raviartthomassimplexinterpolation.hh:443
    \n+
    static bool supports(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:439
    \n+
    static Object * create(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:430
    \n+
    RTL2InterpolationBuilder< dim, Field > Builder
    Definition raviartthomassimplexinterpolation.hh:424
    \n+
    const RaviartThomasL2Interpolation< dim, Field > Object
    Definition raviartthomassimplexinterpolation.hh:425
    \n+
    std::size_t Key
    Definition raviartthomassimplexinterpolation.hh:426
    \n+
    Definition raviartthomassimplexinterpolation.hh:70
    \n+
    std::size_t Key
    Definition raviartthomassimplexinterpolation.hh:71
    \n+
    static void release(Object *object)
    Definition raviartthomassimplexinterpolation.hh:91
    \n+
    static bool supports(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:87
    \n+
    const LocalCoefficientsContainer Object
    Definition raviartthomassimplexinterpolation.hh:72
    \n+
    static Object * create(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:75
    \n+
    Definition raviartthomassimplexinterpolation.hh:107
    \n+
    TestBasis * testBasis() const
    Definition raviartthomassimplexinterpolation.hh:141
    \n+
    FieldVector< Field, dimension > Normal
    Definition raviartthomassimplexinterpolation.hh:119
    \n+
    TestBasisFactory::Object TestBasis
    Definition raviartthomassimplexinterpolation.hh:112
    \n+
    TestFaceBasisFactory::Object TestFaceBasis
    Definition raviartthomassimplexinterpolation.hh:116
    \n+
    const Normal normal(unsigned int f) const
    Definition raviartthomassimplexinterpolation.hh:147
    \n+
    unsigned int faceSize() const
    Definition raviartthomassimplexinterpolation.hh:138
    \n+
    void build(std::size_t order)
    Definition raviartthomassimplexinterpolation.hh:150
    \n+\n+
    TestFaceBasis * testFaceBasis(unsigned int f) const
    Definition raviartthomassimplexinterpolation.hh:144
    \n+
    GeometryType type() const
    Definition raviartthomassimplexinterpolation.hh:133
    \n+
    RTL2InterpolationBuilder(const RTL2InterpolationBuilder &)=delete
    \n+
    OrthonormalBasisFactory< dimension-1, Field > TestFaceBasisFactory
    Definition raviartthomassimplexinterpolation.hh:115
    \n+
    RTL2InterpolationBuilder(RTL2InterpolationBuilder &&)=delete
    \n+
    OrthonormalBasisFactory< dimension, Field > TestBasisFactory
    Definition raviartthomassimplexinterpolation.hh:111
    \n+
    std::size_t order() const
    Definition raviartthomassimplexinterpolation.hh:135
    \n+
    static const unsigned int dimension
    Definition raviartthomassimplexinterpolation.hh:108
    \n+
    ~RTL2InterpolationBuilder()
    Definition raviartthomassimplexinterpolation.hh:126
    \n+
    An L2-based interpolation for Raviart Thomas.
    Definition raviartthomassimplexinterpolation.hh:213
    \n+
    std::size_t order() const
    Definition raviartthomassimplexinterpolation.hh:246
    \n+
    void interpolate(const Function &function, Vector &coefficients) const
    Definition raviartthomassimplexinterpolation.hh:228
    \n+
    RaviartThomasL2Interpolation()
    Definition raviartthomassimplexinterpolation.hh:220
    \n+
    void interpolate(typename Base::template Helper< Func, Container, type > &func) const
    Definition raviartthomassimplexinterpolation.hh:285
    \n+
    RTL2InterpolationBuilder< dimension, Field > Builder
    Definition raviartthomassimplexinterpolation.hh:219
    \n+
    F Field
    Definition raviartthomassimplexinterpolation.hh:218
    \n+
    void build(std::size_t order)
    Definition raviartthomassimplexinterpolation.hh:255
    \n+
    std::size_t size() const
    Definition raviartthomassimplexinterpolation.hh:250
    \n+
    void setLocalKeys(std::vector< LocalKey > &keys) const
    Definition raviartthomassimplexinterpolation.hh:267
    \n+
    Definition interpolationhelper.hh:21
    \n+
    Definition interpolationhelper.hh:23
    \n+
    Definition polynomialbasis.hh:65
    \n+
    unsigned int size() const
    Definition polynomialbasis.hh:113
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,77 +1,615 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n-brezzidouglasmarini1cube2dlocalcoefficients.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+raviartthomassimplexinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH\n 7\n-8#include \n-9#include \n+8#include \n+9#include \n 10\n-11#include \"../../common/localkey.hh\"\n+11#include \n 12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-_\b2_\b3 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n+13#include \n+14#include \n+15#include \n+16#include \n+17\n+18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh>\n+20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+22\n+23namespace _\bD_\bu_\bn_\be\n+24{\n 25\n-26 public:\n-_\b2_\b8 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(8)\n-29 {\n-30 for (std::size_t i = 0; i < 4; ++i)\n-31 {\n-32 li[2*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-33 li[2*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-34 }\n-35 }\n+26 // Internal Forward Declarations\n+27 // -----------------------------\n+28\n+29 template < unsigned int dim, class Field >\n+30 struct RaviartThomasL2InterpolationFactory;\n+31\n+32\n+33\n+34 // LocalCoefficientsContainer\n+35 // --------------------------\n 36\n-_\b3_\b8 std::size_t _\bs_\bi_\bz_\be () const\n-39 {\n-40 return 8;\n-41 }\n-42\n-_\b4_\b4 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-45 {\n-46 return li[i];\n-47 }\n-48\n-49 private:\n-50 std::vector li;\n-51 };\n-52}\n-53#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH\n+37 class LocalCoefficientsContainer\n+38 {\n+39 typedef _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br This;\n+40\n+41 public:\n+42 template \n+_\b4_\b3 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br ( const Setter &setter )\n+44 {\n+45 setter.setLocalKeys(localKey_);\n+46 }\n+47\n+_\b4_\b8 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by ( const unsigned int i ) const\n+49 {\n+50 assert( i < _\bs_\bi_\bz_\be() );\n+51 return localKey_[ i ];\n+52 }\n+53\n+_\b5_\b4 std::size_t _\bs_\bi_\bz_\be () const\n+55 {\n+56 return localKey_.size();\n+57 }\n+58\n+59 private:\n+60 std::vector< LocalKey > localKey_;\n+61 };\n+62\n+63\n+64\n+65 // RaviartThomasCoefficientsFactory\n+66 // --------------------------------\n+67\n+68 template < unsigned int dim >\n+_\b6_\b9 struct _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+70 {\n+_\b7_\b1 typedef std::size_t _\bK_\be_\by;\n+_\b7_\b2 typedef const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bO_\bb_\bj_\be_\bc_\bt;\n+73\n+74 template< GeometryType::Id geometryId >\n+_\b7_\b5 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n+76 {\n+77 typedef _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b>\n+InterpolationFactory;\n+78 if( !supports< geometryId >( key ) )\n+79 return nullptr;\n+80 typename InterpolationFactory::Object *interpolation =\n+InterpolationFactory::template create< geometryId >( key );\n+81 _\bO_\bb_\bj_\be_\bc_\bt *localKeys = new _\bO_\bb_\bj_\be_\bc_\bt( *interpolation );\n+82 InterpolationFactory::release( interpolation );\n+83 return localKeys;\n+84 }\n+85\n+86 template< GeometryType::Id geometryId >\n+_\b8_\b7 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n+88 {\n+89 return GeometryType(geometryId).isSimplex();\n+90 }\n+_\b9_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+92 };\n+93\n+94\n+95\n+96 // RTL2InterpolationBuilder\n+97 // ------------------------\n+98\n+99 // L2 Interpolation requires:\n+100 // - for element\n+101 // - test basis\n+102 // - for each face (dynamic)\n+103 // - test basis\n+104 // - normal\n+105 template< unsigned int dim, class Field >\n+_\b1_\b0_\b6 struct _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+107 {\n+_\b1_\b0_\b8 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+109\n+110 // for the dofs associated to the element\n+_\b1_\b1_\b1 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b1_\b1_\b2 typedef typename _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs;\n+113\n+114 // for the dofs associated to the faces\n+_\b1_\b1_\b5 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-1, Field > _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b1_\b1_\b6 typedef typename _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs;\n+117\n+118 // the normals of the faces\n+_\b1_\b1_\b9 typedef FieldVector< Field, dimension > _\bN_\bo_\br_\bm_\ba_\bl;\n+120\n+_\b1_\b2_\b1 _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br () = default;\n+122\n+_\b1_\b2_\b3 _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ( const _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br & ) = delete;\n+_\b1_\b2_\b4 _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ( _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br && ) = delete;\n+125\n+_\b1_\b2_\b6 _\b~_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ()\n+127 {\n+128 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( testBasis_ );\n+129 for( FaceStructure &f : faceStructure_ )\n+130 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( f.basis_ );\n+131 }\n+132\n+_\b1_\b3_\b3 GeometryType _\bt_\by_\bp_\be () const { return geometry_; }\n+134\n+_\b1_\b3_\b5 std::size_t _\bo_\br_\bd_\be_\br () const { return order_; }\n+136\n+137 // number of faces\n+_\b1_\b3_\b8 unsigned int _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be () const { return faceSize_; }\n+139\n+140 // basis associated to the element\n+_\b1_\b4_\b1 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs () const { return testBasis_; }\n+142\n+143 // basis associated to face f\n+_\b1_\b4_\b4 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs ( unsigned int f ) const { assert( f <\n+_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() ); return faceStructure_[ f ].basis_; }\n+145\n+146 // normal of face f\n+_\b1_\b4_\b7 const _\bN_\bo_\br_\bm_\ba_\bl _\bn_\bo_\br_\bm_\ba_\bl ( unsigned int f ) const { assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n+return faceStructure_[ f ].normal_; }\n+148\n+149 template< GeometryType::Id geometryId >\n+_\b1_\b5_\b0 void _\bb_\bu_\bi_\bl_\bd ( std::size_t _\bo_\br_\bd_\be_\br )\n+151 {\n+152 constexpr GeometryType geometry = geometryId;\n+153 geometry_ = geometry;\n+154 order_ = _\bo_\br_\bd_\be_\br;\n+155\n+156 testBasis_ = (_\bo_\br_\bd_\be_\br > 0 ? TestBasisFactory::template create< geometry >\n+( _\bo_\br_\bd_\be_\br-1 ) : nullptr);\n+157\n+158 const auto &refElement = ReferenceElements< Field, dimension >::general\n+( _\bt_\by_\bp_\be() );\n+159 faceSize_ = refElement.size( 1 );\n+160 faceStructure_.reserve( faceSize_ );\n+161 for( unsigned int face = 0; face < faceSize_; ++face )\n+162 {\n+163 /* For simplices or cubes of arbitrary dimension you could just use\n+164 *\n+165 * ```\n+166 * GeometryType faceGeometry = Impl::getBase(geometry_);\n+167 * TestFaceBasis *faceBasis = TestFaceBasisFactory::template create<\n+faceGeometry >( order );\n+168 * ```\n+169 *\n+170 * For i.e. Prisms and Pyramids in 3d this does not work because they\n+contain squares and triangles as faces.\n+171 * And depending on the dynamic face index a different face geometry is\n+needed.\n+172 *\n+173 */\n+174 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *faceBasis = Impl::toGeometryTypeIdConstant<_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-1>\n+(refElement.type( face, 1 ), [&](auto faceGeometryTypeId) {\n+175 return TestFaceBasisFactory::template create< decltype\n+(faceGeometryTypeId)::value >( _\bo_\br_\bd_\be_\br );\n+176 });\n+177 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal\n+( face ) );\n+178 }\n+179 assert( faceStructure_.size() == faceSize_ );\n+180 }\n+181\n+182 private:\n+183 struct FaceStructure\n+184 {\n+185 FaceStructure( _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *tfb, const _\bN_\bo_\br_\bm_\ba_\bl n )\n+186 : basis_( tfb ), normal_( n )\n+187 {}\n+188\n+189 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *basis_;\n+190 const Dune::FieldVector< Field, dimension > normal_;\n+191 };\n+192\n+193 std::vector< FaceStructure > faceStructure_;\n+194 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *testBasis_ = nullptr;\n+195 GeometryType geometry_;\n+196 unsigned int faceSize_;\n+197 std::size_t order_;\n+198 };\n+199\n+200\n+201\n+202 // RaviartThomasL2Interpolation\n+203 // ----------------------------\n+204\n+210 template< unsigned int dimension, class F>\n+_\b2_\b1_\b1 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+212 : public _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br< F ,dimension >\n+213 {\n+214 typedef _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n+215 typedef _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b> _\bB_\ba_\bs_\be;\n+216\n+217 public:\n+_\b2_\b1_\b8 typedef F _\bF_\bi_\be_\bl_\bd;\n+_\b2_\b1_\b9 typedef _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\bu_\bi_\bl_\bd_\be_\br;\n+_\b2_\b2_\b0 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n+221 : order_(0),\n+222 size_(0)\n+223 {}\n+224\n+225 template< class Function, class Vector,\n+226 decltype(std::declval().size(),bool{}) = true,\n+227 decltype(std::declval().resize(0u),bool{}) = true>\n+_\b2_\b2_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, Vector &coefficients ) const\n+229 {\n+230 coefficients.resize(_\bs_\bi_\bz_\be());\n+231 typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\bV_\be_\bc_\bt_\bo_\br_\b,_\bt_\br_\bu_\be_\b> func\n+( function,coefficients );\n+232 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n+233 }\n+234\n+235 template< class Basis, class Matrix,\n+236 decltype(std::declval().rows(),bool{}) = true,\n+237 decltype(std::declval().cols(),bool{}) = true,\n+238 decltype(std::declval().resize(0u,0u),bool{}) = true>\n+_\b2_\b3_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Basis &basis, Matrix &matrix ) const\n+240 {\n+241 matrix.resize( _\bs_\bi_\bz_\be(), basis.size() );\n+242 typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bB_\ba_\bs_\bi_\bs_\b,_\bM_\ba_\bt_\br_\bi_\bx_\b,_\bf_\ba_\bl_\bs_\be_\b> func( basis,matrix );\n+243 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n+244 }\n+245\n+_\b2_\b4_\b6 std::size_t _\bo_\br_\bd_\be_\br() const\n+247 {\n+248 return order_;\n+249 }\n+_\b2_\b5_\b0 std::size_t _\bs_\bi_\bz_\be() const\n+251 {\n+252 return size_;\n+253 }\n+254 template \n+_\b2_\b5_\b5 void _\bb_\bu_\bi_\bl_\bd( std::size_t _\bo_\br_\bd_\be_\br )\n+256 {\n+257 size_ = 0;\n+258 order_ = _\bo_\br_\bd_\be_\br;\n+259 builder_.template build(order_);\n+260 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n+261 size_ += dimension*builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be();\n+262 for ( unsigned int f=0; f_\bs_\bi_\bz_\be();\n+265 }\n+266\n+_\b2_\b6_\b7 void _\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs(std::vector< LocalKey > &keys) const\n+268 {\n+269 keys.resize(_\bs_\bi_\bz_\be());\n+270 unsigned int row = 0;\n+271 for (unsigned int f=0; f_\bs_\bi_\bz_\be(); ++i,++row)\n+275 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(f,1,i);\n+276 }\n+277 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n+278 for (unsigned int i=0; i_\bs_\bi_\bz_\be()*dimension; ++i,++row)\n+279 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n+280 assert( row == _\bs_\bi_\bz_\be() );\n+281 }\n+282\n+283 protected:\n+284 template< class Func, class Container, bool type >\n+_\b2_\b8_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\bu_\bn_\bc_\b,_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b,_\bt_\by_\bp_\be_\b>\n+&func ) const\n+286 {\n+287 const Dune::GeometryType geoType = builder_._\bt_\by_\bp_\be();\n+288\n+289 std::vector< Field > testBasisVal;\n+290\n+291 for (unsigned int i=0; i<_\bs_\bi_\bz_\be(); ++i)\n+292 for (unsigned int j=0; j FaceQuadrature;\n+299 typedef Dune::QuadratureRules<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadratureRules;\n+300\n+301 const auto &refElement = Dune::ReferenceElements< Field, dimension >::\n+general( geoType );\n+302\n+303 for (unsigned int f=0; f_\bs_\bi_\bz_\be());\n+308\n+309 const auto &geometry = refElement.template geometry< 1 >( f );\n+310 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );\n+311 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType,\n+2*order_+2 );\n+312\n+313 const unsigned int quadratureSize = faceQuad.size();\n+314 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n+315 {\n+316 if (dimension>1)\n+317 builder_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->template evaluate<0>(faceQuad[qi].position\n+(),testBasisVal);\n+318 else\n+319 testBasisVal[0] = 1.;\n+320 fillBnd( row, testBasisVal,\n+321 func.evaluate( geometry.global( faceQuad[qi].position() ) ),\n+322 builder_._\bn_\bo_\br_\bm_\ba_\bl(f), faceQuad[qi].weight(),\n+323 func);\n+324 }\n+325\n+326 row += builder_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be();\n+327 }\n+328 // element dofs\n+329 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n+330 {\n+331 testBasisVal.resize(builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be());\n+332\n+333 typedef Dune::QuadratureRule Quadrature;\n+334 typedef Dune::QuadratureRules QuadratureRules;\n+335 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );\n+336\n+337 const unsigned int quadratureSize = elemQuad.size();\n+338 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n+339 {\n+340 builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->template evaluate<0>(elemQuad[qi].position\n+(),testBasisVal);\n+341 fillInterior( row, testBasisVal,\n+342 func.evaluate(elemQuad[qi].position()),\n+343 elemQuad[qi].weight(),\n+344 func );\n+345 }\n+346\n+347 row += builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be()*dimension;\n+348 }\n+349 assert(row==_\bs_\bi_\bz_\be());\n+350 }\n+351\n+352 private:\n+362 template \n+363 void fillBnd (unsigned int startRow,\n+364 const MVal &mVal,\n+365 const RTVal &rtVal,\n+366 const FieldVector &normal,\n+367 const _\bF_\bi_\be_\bl_\bd &weight,\n+368 Matrix &matrix) const\n+369 {\n+370 const unsigned int endRow = startRow+mVal.size();\n+371 typename RTVal::const_iterator rtiter = rtVal.begin();\n+372 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)\n+373 {\n+374 _\bF_\bi_\be_\bl_\bd cFactor = (*rtiter)*normal;\n+375 typename MVal::const_iterator miter = mVal.begin();\n+376 for (unsigned int row = startRow;\n+377 row!=endRow; ++miter, ++row )\n+378 {\n+379 matrix.add(row,col, (weight*cFactor)*(*miter) );\n+380 }\n+381 assert( miter == mVal.end() );\n+382 }\n+383 }\n+392 template \n+393 void fillInterior (unsigned int startRow,\n+394 const MVal &mVal,\n+395 const RTVal &rtVal,\n+396 _\bF_\bi_\be_\bl_\bd weight,\n+397 Matrix &matrix) const\n+398 {\n+399 const unsigned int endRow = startRow+mVal.size()*dimension;\n+400 typename RTVal::const_iterator rtiter = rtVal.begin();\n+401 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)\n+402 {\n+403 typename MVal::const_iterator miter = mVal.begin();\n+404 for (unsigned int row = startRow;\n+405 row!=endRow; ++miter,row+=dimension )\n+406 {\n+407 for (unsigned int i=0; i\n+_\b4_\b2_\b2 struct _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+423 {\n+_\b4_\b2_\b4 typedef _\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\bu_\bi_\bl_\bd_\be_\br;\n+_\b4_\b2_\b5 typedef const _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bO_\bb_\bj_\be_\bc_\bt;\n+_\b4_\b2_\b6 typedef std::size_t _\bK_\be_\by;\n+_\b4_\b2_\b7 typedef typename std::remove_const::type _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt;\n+428\n+429 template \n+_\b4_\b3_\b0 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n+431 {\n+432 if ( !supports(key) )\n+433 return 0;\n+434 _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt *interpol = new _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt();\n+435 interpol->template build(key);\n+436 return interpol;\n+437 }\n+438 template< GeometryType::Id geometryId >\n+_\b4_\b3_\b9 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n+440 {\n+441 return GeometryType(geometryId).isSimplex();\n+442 }\n+_\b4_\b4_\b3 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+444 };\n+445\n+446} // namespace Dune\n+447\n+448#endif // #ifndef\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH\n+_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh\n+_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-BDM1Cube2DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:44\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n Describe position of one degree of freedom.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n+LocalCoefficientsContainer(const Setter &setter)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(const unsigned int i) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:423\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt\n+std::remove_const< Object >::type NonConstObject\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:427\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:443\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n+static bool supports(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:439\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:430\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\bu_\bi_\bl_\bd_\be_\br\n+RTL2InterpolationBuilder< dim, Field > Builder\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:424\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const RaviartThomasL2Interpolation< dim, Field > Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:425\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+std::size_t Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:426\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+std::size_t Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n+static bool supports(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const LocalCoefficientsContainer Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs\n+TestBasis * testBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:141\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl\n+FieldVector< Field, dimension > Normal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:119\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs\n+TestBasisFactory::Object TestBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs\n+TestFaceBasisFactory::Object TestFaceBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:116\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bn_\bo_\br_\bm_\ba_\bl\n+const Normal normal(unsigned int f) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:147\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be\n+unsigned int faceSize() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:138\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n+void build(std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:150\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+RTL2InterpolationBuilder()=default\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs\n+TestFaceBasis * testFaceBasis(unsigned int f) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:144\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+RTL2InterpolationBuilder(const RTL2InterpolationBuilder &)=delete\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+OrthonormalBasisFactory< dimension-1, Field > TestFaceBasisFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:115\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+RTL2InterpolationBuilder(RTL2InterpolationBuilder &&)=delete\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+OrthonormalBasisFactory< dimension, Field > TestBasisFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:108\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\b~_\bR_\bT_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n+~RTL2InterpolationBuilder()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:126\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+An L2-based interpolation for Raviart Thomas.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:213\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:246\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const Function &function, Vector &coefficients) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:228\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RaviartThomasL2Interpolation()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:220\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(typename Base::template Helper< Func, Container, type > &func)\n+const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:285\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bu_\bi_\bl_\bd_\be_\br\n+RTL2InterpolationBuilder< dimension, Field > Builder\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:219\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+F Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:218\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n+void build(std::size_t order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:255\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:250\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs\n+void setLocalKeys(std::vector< LocalKey > &keys) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:267\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:113\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomassimplexbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference
    \n+
    raviartthomassimplexbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+
    #include <fstream>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/localfunctions/utility/defaultbasisfactory.hh>
    \n+#include "raviartthomassimplexinterpolation.hh"
    \n+#include "raviartthomassimplexprebasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::BDM1Cube2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
    struct  Dune::RaviartThomasBasisFactory< dim, SF, CF >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference\n-#include \n-#include \n+raviartthomassimplexbasis.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomassimplexbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,139 +70,72 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube2dlocalinterpolation.hh
    \n+
    raviartthomassimplexbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_RAVIARTTHOMASBASIS_HH
    \n+
    6#define DUNE_RAVIARTTHOMASBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n+
    8#include <fstream>
    \n+
    9#include <dune/common/exceptions.hh>
    \n+
    10
    \n+\n+\n+\n
    14
    \n-
    23 template<class LB>
    \n-
    \n-\n-
    25 {
    \n-
    26
    \n-
    27 public:
    \n-
    \n-\n-
    30 {
    \n-
    31 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    \n-\n-
    40 {
    \n-
    41 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n-
    42 if (s & 1)
    \n-
    43 {
    \n-
    44 sign0 = -1.0;
    \n-
    45 }
    \n-
    46 if (s & 2)
    \n-
    47 {
    \n-
    48 sign1 = -1.0;
    \n-
    49 }
    \n-
    50 if (s & 4)
    \n-
    51 {
    \n-
    52 sign2 = -1.0;
    \n-
    53 }
    \n-
    54 if (s & 8)
    \n-
    55 {
    \n-
    56 sign3 = -1.0;
    \n-
    57 }
    \n-
    58
    \n-
    59 n0[0] = -1.0;
    \n-
    60 n0[1] = 0.0;
    \n-
    61 n1[0] = 1.0;
    \n-
    62 n1[1] = 0.0;
    \n-
    63 n2[0] = 0.0;
    \n-
    64 n2[1] = -1.0;
    \n-
    65 n3[0] = 0.0;
    \n-
    66 n3[1] = 1.0;
    \n-
    67 }
    \n-
    \n-
    68
    \n-
    77 template<typename F, typename C>
    \n-
    \n-
    78 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    79 {
    \n-
    80 // f gives v*outer normal at a point on the edge!
    \n-
    81 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    82 //typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    83
    \n-
    84 out.resize(8);
    \n-
    85 fill(out.begin(), out.end(), 0.0);
    \n-
    86
    \n-
    87 const int qOrder = 4;
    \n-
    88 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    89
    \n-
    90 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n-
    91 it != rule.end(); ++it)
    \n-
    92 {
    \n-
    93 Scalar qPos = it->position();
    \n-
    94 typename LB::Traits::DomainType localPos;
    \n-
    95
    \n-
    96 localPos[0] = 0.0;
    \n-
    97 localPos[1] = qPos;
    \n-
    98 auto y = f(localPos);
    \n-
    99 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n-
    100 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    101
    \n-
    102 localPos[0] = 1.0;
    \n-
    103 localPos[1] = qPos;
    \n-
    104 y = f(localPos);
    \n-
    105 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
    \n-
    106 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    107
    \n-
    108 localPos[0] = qPos;
    \n-
    109 localPos[1] = 0.0;
    \n-
    110 y = f(localPos);
    \n-
    111 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n-
    112 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    113
    \n-
    114 localPos[0] = qPos;
    \n-
    115 localPos[1] = 1.0;
    \n-
    116 y = f(localPos);
    \n-
    117 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n-
    118 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    119 }
    \n-
    120 }
    \n-
    \n-
    121
    \n-
    122 private:
    \n-
    123 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n-
    124 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n-
    125 };
    \n-
    \n-
    126}
    \n-
    127#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17 /*
    \n+
    18 * `RTPreBasisFactory` provides a basis for the Raviart-Thomas function space.
    \n+
    19 * `RaviartThomasL2InterpolationFactory` provides the linear functionals.
    \n+
    20 *
    \n+
    21 * `Defaultbasisfactory::create` first builds the function space and the linear functionals.
    \n+
    22 * Then the constructor of `BasisMatrix` gets called. There the matrix
    \n+
    23 *
    \n+
    24 * \\begin{equation}
    \n+
    25 * A_{i,j} := N_j(\\phi_i)
    \n+
    26 * \\end{equation}
    \n+
    27 *
    \n+
    28 * with linear functionals $N_j$ and basisfunctions $\\phi_i$ gets assembled.
    \n+
    29 * Then the matrix gets inverted and is then used as a coefficient matrix for the standard monomial basis.
    \n+
    30 *
    \n+
    31 * For more details on the theory see the first chapter "Construction of Local Finite Element Spaces Using the Generic Reference Elements"
    \n+
    32 * of the book "Advances in Dune" by Dedner, Flemisch and Kl\u00f6fkorn published in 2012.
    \n+
    33 */
    \n+
    34
    \n+
    35 template< unsigned int dim, class SF, class CF >
    \n+
    \n+\n+
    37 : public DefaultBasisFactory< RTPreBasisFactory<dim,CF>,
    \n+
    38 RaviartThomasL2InterpolationFactory<dim,CF>,
    \n+
    39 dim,dim,SF,CF >
    \n+
    40 {};
    \n+
    \n+
    41}
    \n+
    42
    \n+
    43#endif // #ifndef DUNE_RAVIARTTHOMASBASIS_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:25
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:78
    \n-
    BDM1Cube2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:39
    \n-
    BDM1Cube2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:29
    \n+
    Definition raviartthomassimplexbasis.hh:40
    \n+
    Definition defaultbasisfactory.hh:38
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,138 +1,70 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd\n-brezzidouglasmarini1cube2dlocalinterpolation.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+raviartthomassimplexbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_RAVIARTTHOMASBASIS_HH\n+6#define DUNE_RAVIARTTHOMASBASIS_HH\n 7\n-8#include \n-9\n-10#include \n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n+8#include \n+9#include \n+10\n+11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n 14\n-23 template\n-_\b2_\b4 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-25 {\n-26\n-27 public:\n-_\b2_\b9 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ()\n-30 {\n-31 sign0 = sign1 = sign2 = sign3 = 1.0;\n-32 }\n-33\n-_\b3_\b9 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (unsigned int s)\n-40 {\n-41 sign0 = sign1 = sign2 = sign3 = 1.0;\n-42 if (s & 1)\n-43 {\n-44 sign0 = -1.0;\n-45 }\n-46 if (s & 2)\n-47 {\n-48 sign1 = -1.0;\n-49 }\n-50 if (s & 4)\n-51 {\n-52 sign2 = -1.0;\n-53 }\n-54 if (s & 8)\n-55 {\n-56 sign3 = -1.0;\n-57 }\n-58\n-59 n0[0] = -1.0;\n-60 n0[1] = 0.0;\n-61 n1[0] = 1.0;\n-62 n1[1] = 0.0;\n-63 n2[0] = 0.0;\n-64 n2[1] = -1.0;\n-65 n3[0] = 0.0;\n-66 n3[1] = 1.0;\n-67 }\n-68\n-77 template\n-_\b7_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-79 {\n-80 // f gives v*outer normal at a point on the edge!\n-81 typedef typename LB::Traits::RangeFieldType Scalar;\n-82 //typedef typename LB::Traits::DomainFieldType Vector;\n-83\n-84 out.resize(8);\n-85 fill(out.begin(), out.end(), 0.0);\n-86\n-87 const int qOrder = 4;\n-88 const QuadratureRule& rule = QuadratureRules::rule\n-(GeometryTypes::cube(1), qOrder);\n-89\n-90 for (typename QuadratureRule::const_iterator it = rule.begin();\n-91 it != rule.end(); ++it)\n-92 {\n-93 Scalar qPos = it->position();\n-94 typename LB::Traits::DomainType localPos;\n-95\n-96 localPos[0] = 0.0;\n-97 localPos[1] = qPos;\n-98 auto y = f(localPos);\n-99 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n-100 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n-101\n-102 localPos[0] = 1.0;\n-103 localPos[1] = qPos;\n-104 y = f(localPos);\n-105 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;\n-106 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n-107\n-108 localPos[0] = qPos;\n-109 localPos[1] = 0.0;\n-110 y = f(localPos);\n-111 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n-112 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n-113\n-114 localPos[0] = qPos;\n-115 localPos[1] = 1.0;\n-116 y = f(localPos);\n-117 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n-118 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n-119 }\n-120 }\n-121\n-122 private:\n-123 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n-124 typename LB::Traits::DomainType n0, n1, n2, n3;\n-125 };\n-126}\n-127#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17 /*\n+18 * `RTPreBasisFactory` provides a basis for the Raviart-Thomas function\n+space.\n+19 * `RaviartThomasL2InterpolationFactory` provides the linear functionals.\n+20 *\n+21 * `Defaultbasisfactory::create` first builds the function space and the\n+linear functionals.\n+22 * Then the constructor of `BasisMatrix` gets called. There the matrix\n+23 *\n+24 * \\begin{equation}\n+25 * A_{i,j} := N_j(\\phi_i)\n+26 * \\end{equation}\n+27 *\n+28 * with linear functionals $N_j$ and basisfunctions $\\phi_i$ gets assembled.\n+29 * Then the matrix gets inverted and is then used as a coefficient matrix for\n+the standard monomial basis.\n+30 *\n+31 * For more details on the theory see the first chapter \"Construction of\n+Local Finite Element Spaces Using the Generic Reference Elements\"\n+32 * of the book \"Advances in Dune\" by Dedner, Flemisch and Kl\u00c3\u00b6fkorn published\n+in 2012.\n+33 */\n+34\n+35 template< unsigned int dim, class SF, class CF >\n+_\b3_\b6 struct _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+37 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< RTPreBasisFactory,\n+38 RaviartThomasL2InterpolationFactory,\n+39 dim,dim,SF,CF >\n+40 {};\n+41}\n+42\n+43#endif // #ifndef DUNE_RAVIARTTHOMASBASIS_HH\n+_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on the reference\n-quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM1Cube2DLocalInterpolation(unsigned int s)\n-Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM1Cube2DLocalInterpolation()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexbasis.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:38\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2simplex2d.hh File Reference\n+dune-localfunctions: raviartthomas0cube3d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2simplex2d.hh File Reference
    \n+
    raviartthomas0cube3d.hh File Reference
    \n
    \n
    \n \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM2Simplex2DLocalFiniteElement< D, R >
     Second order Brezzi-Douglas-Marini shape functions on triangles. More...
    class  Dune::RT0Cube3DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini2simplex2d.hh File Reference\n+raviartthomas0cube3d.hh File Reference\n #include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\ba_\bl_\bl_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 Second order Brezzi-Douglas-Marini shape functions on triangles.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 _\bZ_\be_\br_\bo order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2simplex2d.hh Source File\n+dune-localfunctions: raviartthomas0cube3d.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,119 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2simplex2d.hh
    \n+
    raviartthomas0cube3d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH
    \n
    7
    \n
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n-
    28
    \n-
    29 public:
    \n-\n-\n-\n-\n+\n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    23 template<class D, class R>
    \n+
    \n+\n+
    25 {
    \n+
    26 public:
    \n+\n+\n+\n+\n+
    31
    \n+\n
    34
    \n-\n-
    38
    \n-
    \n-\n-
    45 basis(s),
    \n-
    46 interpolation(s)
    \n-
    47 {}
    \n-
    \n-
    48
    \n-
    \n-
    49 const typename Traits::LocalBasisType& localBasis () const
    \n-
    50 {
    \n-
    51 return basis;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-\n-
    55 {
    \n-
    56 return coefficients;
    \n-
    57 }
    \n-
    \n-
    58
    \n-
    \n-\n-
    60 {
    \n-
    61 return interpolation;
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    \n-
    65 unsigned int size () const
    \n-
    66 {
    \n-
    67 return basis.size();
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    \n-
    70 static constexpr GeometryType type ()
    \n-
    71 {
    \n-
    72 return GeometryTypes::triangle;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-\n-\n-\n-
    79 };
    \n-
    \n-
    80}
    \n-
    81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+
    \n+\n+
    36 basis(s),
    \n+
    37 interpolation(s)
    \n+
    38 {}
    \n+
    \n+
    39
    \n+
    \n+
    40 const typename Traits::LocalBasisType& localBasis () const
    \n+
    41 {
    \n+
    42 return basis;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+\n+
    46 {
    \n+
    47 return coefficients;
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    \n+\n+
    51 {
    \n+
    52 return interpolation;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+
    56 unsigned int size () const
    \n+
    57 {
    \n+
    58 return basis.size();
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    61 static constexpr GeometryType type ()
    \n+
    62 {
    \n+
    63 return GeometryTypes::hexahedron;
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    66 private:
    \n+\n+
    68 RT0Cube3DLocalCoefficients coefficients;
    \n+\n+
    70 };
    \n+
    \n+
    71}
    \n+
    72#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Second order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2d.hh:27
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini2simplex2d.hh:54
    \n-
    LocalFiniteElementTraits< BDM2Simplex2DLocalBasis< D, R >, BDM2Simplex2DLocalCoefficients, BDM2Simplex2DLocalInterpolation< BDM2Simplex2DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini2simplex2d.hh:33
    \n-
    BDM2Simplex2DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2d.hh:36
    \n-
    static constexpr GeometryType type()
    Definition brezzidouglasmarini2simplex2d.hh:70
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini2simplex2d.hh:49
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini2simplex2d.hh:59
    \n-
    BDM2Simplex2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini2simplex2d.hh:44
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini2simplex2d.hh:65
    \n-
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:30
    \n-
    Layout map for Brezzi-Douglas-Marini-2 elements on triangles.
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:24
    \n-
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:25
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Zero order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas0cube3d.hh:25
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas0cube3d.hh:61
    \n+
    RT0Cube3DLocalFiniteElement(int s)
    Definition raviartthomas0cube3d.hh:35
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas0cube3d.hh:56
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas0cube3d.hh:40
    \n+
    RT0Cube3DLocalFiniteElement()
    Definition raviartthomas0cube3d.hh:32
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas0cube3d.hh:50
    \n+
    LocalFiniteElementTraits< RT0Cube3DLocalBasis< D, R >, RT0Cube3DLocalCoefficients, RT0Cube3DLocalInterpolation< RT0Cube3DLocalBasis< D, R > > > Traits
    Definition raviartthomas0cube3d.hh:30
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas0cube3d.hh:45
    \n+
    Definition raviartthomas0cube3dall.hh:30
    \n+
    Definition raviartthomas0cube3dall.hh:158
    \n+
    Definition raviartthomas0cube3dall.hh:216
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,143 +1,127 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n-brezzidouglasmarini2simplex2d.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas0cube3d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH\n 7\n 8#include \n 9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-25 template\n-_\b2_\b6 class _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 {\n-28\n-29 public:\n-30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-31 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-32 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\ba_\bl_\bl_\b._\bh_\bh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+23 template\n+_\b2_\b4 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+25 {\n+26 public:\n+27 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+28 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+29 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b0 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+31\n+_\b3_\b2 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+33 {}\n 34\n-_\b3_\b6 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-37 {}\n-38\n-_\b4_\b4 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-45 basis(s),\n-46 interpolation(s)\n-47 {}\n-48\n-_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-50 {\n-51 return basis;\n-52 }\n-53\n-_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-55 {\n-56 return coefficients;\n-57 }\n-58\n-_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-60 {\n-61 return interpolation;\n-62 }\n-63\n-_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-66 {\n-67 return basis.size();\n-68 }\n-69\n-_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-71 {\n-72 return GeometryTypes::triangle;\n-73 }\n-74\n-75 private:\n-76 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-77 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-78 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> >\n-interpolation;\n-79 };\n-80}\n-81#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\b3_\b5 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+36 basis(s),\n+37 interpolation(s)\n+38 {}\n+39\n+_\b4_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+41 {\n+42 return basis;\n+43 }\n+44\n+_\b4_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+46 {\n+47 return coefficients;\n+48 }\n+49\n+_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+51 {\n+52 return interpolation;\n+53 }\n+54\n+_\b5_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+57 {\n+58 return basis.size();\n+59 }\n+60\n+_\b6_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+62 {\n+63 return GeometryTypes::hexahedron;\n+64 }\n+65\n+66 private:\n+67 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+68 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+69 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+70 };\n+71}\n+72#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\ba_\bl_\bl_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Second order Brezzi-Douglas-Marini shape functions on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< BDM2Simplex2DLocalBasis< D, R >,\n-BDM2Simplex2DLocalCoefficients, BDM2Simplex2DLocalInterpolation<\n-BDM2Simplex2DLocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM2Simplex2DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM2Simplex2DLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2d.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-2 elements on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:25\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n traits helper struct\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n LB LocalBasisType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n LC LocalCoefficientsType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n LI LocalInterpolationType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Zero order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT0Cube3DLocalFiniteElement(int s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT0Cube3DLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT0Cube3DLocalBasis< D, R >,\n+RT0Cube3DLocalCoefficients, RT0Cube3DLocalInterpolation< RT0Cube3DLocalBasis<\n+D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:158\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:216\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1simplex2d.hh File Reference\n+dune-localfunctions: raviartthomas2cube2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1simplex2d.hh File Reference
    \n+
    raviartthomas2cube2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalbasis.hh"
    \n-#include "brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalcoefficients.hh"
    \n-#include "brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalinterpolation.hh"
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Simplex2DLocalFiniteElement< D, R >
     First order Brezzi-Douglas-Marini shape functions on triangles. More...
    class  Dune::RT2Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-2 elements on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1simplex2d.hh File Reference\n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+raviartthomas2cube2dlocalcoefficients.hh File Reference\n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Raviart-Thomas-2 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1simplex2d.hh Source File\n+dune-localfunctions: raviartthomas2cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,83 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1simplex2d.hh
    \n+
    raviartthomas2cube2dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17
    \n-
    26 template<class D, class R>
    \n-
    \n-\n-
    28 {
    \n-
    29
    \n-
    30 public:
    \n-\n-\n-\n-\n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include "../../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    \n+\n+
    23 {
    \n+
    24
    \n+
    25 public:
    \n+
    \n+\n+
    28 {
    \n+
    29 for (std::size_t i = 0; i < 4; i++)
    \n+
    30 {
    \n+
    31 li[3*i] = LocalKey(i,1,0);
    \n+
    32 li[3*i + 1] = LocalKey(i,1,1);
    \n+
    33 li[3*i + 2] = LocalKey(i,1,2);
    \n+
    34 }
    \n
    35
    \n-\n-
    39
    \n-
    \n-\n-
    46 basis(s),
    \n-
    47 interpolation(s)
    \n-
    48 {}
    \n-
    \n-
    49
    \n-
    \n-
    50 const typename Traits::LocalBasisType& localBasis () const
    \n-
    51 {
    \n-
    52 return basis;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    \n-\n-
    56 {
    \n-
    57 return coefficients;
    \n-
    58 }
    \n-
    \n-
    59
    \n-
    \n-\n-
    61 {
    \n-
    62 return interpolation;
    \n-
    63 }
    \n-
    \n-
    64
    \n-
    \n-
    66 unsigned int size () const
    \n-
    67 {
    \n-
    68 return basis.size();
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    \n-
    71 static constexpr GeometryType type ()
    \n-
    72 {
    \n-
    73 return GeometryTypes::triangle;
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    76 private:
    \n-\n-\n-\n-
    80 };
    \n-
    \n-
    81}
    \n-
    82#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+
    36 for (std::size_t i=0; i<12; i++)
    \n+
    37 {
    \n+
    38 li[12 + i] = LocalKey(0,0,i);
    \n+
    39 }
    \n+
    40 }
    \n+
    \n+
    41
    \n+
    \n+
    43 std::size_t size () const
    \n+
    44 {
    \n+
    45 return 24;
    \n+
    46 }
    \n+
    \n+
    47
    \n+
    \n+
    49 const LocalKey& localKey (std::size_t i) const
    \n+
    50 {
    \n+
    51 return li[i];
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    54 private:
    \n+
    55 std::vector<LocalKey> li;
    \n+
    56 };
    \n+
    \n+
    57}
    \n+
    58#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini1simplex2d.hh:28
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini1simplex2d.hh:50
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini1simplex2d.hh:55
    \n-
    static constexpr GeometryType type()
    Definition brezzidouglasmarini1simplex2d.hh:71
    \n-
    BDM1Simplex2DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2d.hh:37
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini1simplex2d.hh:60
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini1simplex2d.hh:66
    \n-
    BDM1Simplex2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini1simplex2d.hh:45
    \n-
    LocalFiniteElementTraits< BDM1Simplex2DLocalBasis< D, R >, BDM1Simplex2DLocalCoefficients, BDM1Simplex2DLocalInterpolation< BDM1Simplex2DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini1simplex2d.hh:34
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalbasis.hh:30
    \n-
    Layout map for Brezzi-Douglas-Marini-1 elements on triangles.
    Definition brezzidouglasmarini1simplex2dlocalcoefficients.hh:24
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:24
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for Raviart-Thomas-2 elements on quadrilaterals.
    Definition raviartthomas2cube2dlocalcoefficients.hh:23
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas2cube2dlocalcoefficients.hh:43
    \n+
    RT2Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas2cube2dlocalcoefficients.hh:27
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas2cube2dlocalcoefficients.hh:49
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,144 +1,81 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n-brezzidouglasmarini1simplex2d.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas2cube2dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17\n-26 template\n-_\b2_\b7 class _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+8#include \n+9#include \n+10\n+11#include \"../../common/localkey.hh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+_\b2_\b2 class _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+23 {\n+24\n+25 public:\n+_\b2_\b7 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(24)\n 28 {\n-29\n-30 public:\n-31 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-32 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-33 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b4 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+29 for (std::size_t i = 0; i < 4; i++)\n+30 {\n+31 li[3*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+32 li[3*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+33 li[3*i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n+34 }\n 35\n-_\b3_\b7 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-38 {}\n-39\n-_\b4_\b5 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-46 basis(s),\n-47 interpolation(s)\n-48 {}\n-49\n-_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-51 {\n-52 return basis;\n-53 }\n-54\n-_\b5_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-56 {\n-57 return coefficients;\n-58 }\n-59\n-_\b6_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-61 {\n-62 return interpolation;\n-63 }\n-64\n-_\b6_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-67 {\n-68 return basis.size();\n-69 }\n-70\n-_\b7_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-72 {\n-73 return GeometryTypes::triangle;\n-74 }\n-75\n-76 private:\n-77 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-78 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-79 _\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> >\n-interpolation;\n-80 };\n-81}\n-82#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+36 for (std::size_t i=0; i<12; i++)\n+37 {\n+38 li[12 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n+39 }\n+40 }\n+41\n+_\b4_\b3 std::size_t _\bs_\bi_\bz_\be () const\n+44 {\n+45 return 24;\n+46 }\n+47\n+_\b4_\b9 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+50 {\n+51 return li[i];\n+52 }\n+53\n+54 private:\n+55 std::vector li;\n+56 };\n+57}\n+58#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Brezzi-Douglas-Marini shape functions on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM1Simplex2DLocalFiniteElement()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-2 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT2Cube2DLocalCoefficients()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM1Simplex2DLocalFiniteElement(int s)\n-Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< BDM1Simplex2DLocalBasis< D, R >,\n-BDM1Simplex2DLocalCoefficients, BDM1Simplex2DLocalInterpolation<\n-BDM1Simplex2DLocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2d.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Brezzi-Douglas-Marini shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-1 elements on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1simplex2dlocalinterpolation.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:49\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube2d.hh File Reference\n+dune-localfunctions: raviartthomas2cube2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube2d.hh File Reference
    \n+
    raviartthomas2cube2dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalbasis.hh"
    \n-#include "brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalcoefficients.hh"
    \n-#include "brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalinterpolation.hh"
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Cube2DLocalFiniteElement< D, R >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
    class  Dune::RT2Cube2DLocalInterpolation< LB >
     Second order Raviart-Thomas shape functions on the reference triangle. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1cube2d.hh File Reference\n-#include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+raviartthomas2cube2dlocalinterpolation.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 Second order Raviart-Thomas shape functions on the reference triangle.\n _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube2d.hh Source File\n+dune-localfunctions: raviartthomas2cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,136 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube2d.hh
    \n+
    raviartthomas2cube2dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <vector>
    \n
    9
    \n-
    10#include "../common/localfiniteelementtraits.hh"
    \n-\n-\n-\n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    25 template<class D, class R>
    \n-
    \n-\n-
    27 {
    \n+
    23 template<class LB>
    \n+
    \n+\n+
    25 {
    \n+
    26
    \n+
    27 public:
    \n
    28
    \n-
    29 public:
    \n-\n-\n-\n-\n-
    34
    \n-\n+
    \n+
    34 RT2Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    35 {
    \n+
    36 for (size_t i=0; i<4; i++)
    \n+
    37 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n
    38
    \n-
    \n-\n-
    45 basis(s),
    \n-
    46 interpolation(s)
    \n-
    47 {}
    \n-
    \n-
    48
    \n-
    \n-
    49 const typename Traits::LocalBasisType& localBasis () const
    \n-
    50 {
    \n-
    51 return basis;
    \n-
    52 }
    \n+
    39 n_[0] = {-1.0, 0.0};
    \n+
    40 n_[1] = { 1.0, 0.0};
    \n+
    41 n_[2] = { 0.0, -1.0};
    \n+
    42 n_[3] = { 0.0, 1.0};
    \n+
    43 }
    \n
    \n-
    53
    \n+
    44
    \n+
    53 template<typename F, typename C>
    \n
    \n-\n+
    54 void interpolate (const F& f, std::vector<C>& out) const
    \n
    55 {
    \n-
    56 return coefficients;
    \n-
    57 }
    \n+
    56 // f gives v*outer normal at a point on the edge!
    \n+
    57 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    58 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    59
    \n+
    60 out.resize(24);
    \n+
    61 fill(out.begin(), out.end(), 0.0);
    \n+
    62
    \n+
    63 const int qOrder = 6;
    \n+
    64 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    65
    \n+
    66 for (auto&& qp : rule1)
    \n+
    67 {
    \n+
    68 Scalar qPos = qp.position();
    \n+
    69 typename LB::Traits::DomainType localPos;
    \n+
    70
    \n+
    71 localPos = {0.0, qPos};
    \n+
    72 auto y = f(localPos);
    \n+
    73 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n+
    74 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    75 out[2] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[0];
    \n+
    76
    \n+
    77 localPos = {1.0, qPos};
    \n+
    78 y = f(localPos);
    \n+
    79 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n+
    80 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    81 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[1];
    \n+
    82
    \n+
    83 localPos = {qPos, 0.0};
    \n+
    84 y = f(localPos);
    \n+
    85 out[6] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n+
    86 out[7] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    87 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[2];
    \n+
    88
    \n+
    89 localPos = {qPos, 1.0};
    \n+
    90 y = f(localPos);
    \n+
    91 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n+
    92 out[10] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    93 out[11] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*qp.weight()*sign_[3];
    \n+
    94 }
    \n+
    95
    \n+
    96 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    97
    \n+
    98 for (auto&& qp : rule2)
    \n+
    99 {
    \n+
    100 FieldVector<double,2> qPos = qp.position();
    \n+
    101
    \n+
    102 auto y = f(qPos);
    \n+
    103 out[12] += y[0]*qp.weight();
    \n+
    104 out[13] += y[1]*qp.weight();
    \n+
    105 out[14] += y[0]*qPos[0]*qp.weight();
    \n+
    106 out[15] += y[1]*qPos[0]*qp.weight();
    \n+
    107 out[16] += y[0]*qPos[1]*qp.weight();
    \n+
    108 out[17] += y[1]*qPos[1]*qp.weight();
    \n+
    109 out[18] += y[0]*qPos[0]*qPos[1]*qp.weight();
    \n+
    110 out[19] += y[1]*qPos[0]*qPos[1]*qp.weight();
    \n+
    111 out[20] += y[0]*qPos[1]*qPos[1]*qp.weight();
    \n+
    112 out[21] += y[1]*qPos[0]*qPos[0]*qp.weight();
    \n+
    113 out[22] += y[0]*qPos[0]*qPos[1]*qPos[1]*qp.weight();
    \n+
    114 out[23] += y[1]*qPos[0]*qPos[0]*qPos[1]*qp.weight();
    \n+
    115 }
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    118 private:
    \n+
    119 // Edge orientations
    \n+
    120 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n+
    121
    \n+
    122 // Edge normals
    \n+
    123 std::array<typename LB::Traits::DomainType, 4> n_;
    \n+
    124 };
    \n
    \n-
    58
    \n-
    \n-\n-
    60 {
    \n-
    61 return interpolation;
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    \n-
    65 unsigned int size () const
    \n-
    66 {
    \n-
    67 return basis.size();
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    \n-
    70 static constexpr GeometryType type ()
    \n-
    71 {
    \n-
    72 return GeometryTypes::quadrilateral;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    75 private:
    \n-\n-
    77 BDM1Cube2DLocalCoefficients coefficients;
    \n-\n-
    79 };
    \n-
    \n-
    80}
    \n-
    81#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n+
    125}
    \n+
    126#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini1cube2d.hh:27
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition brezzidouglasmarini1cube2d.hh:49
    \n-
    LocalFiniteElementTraits< BDM1Cube2DLocalBasis< D, R >, BDM1Cube2DLocalCoefficients, BDM1Cube2DLocalInterpolation< BDM1Cube2DLocalBasis< D, R > > > Traits
    Definition brezzidouglasmarini1cube2d.hh:33
    \n-
    static constexpr GeometryType type()
    Definition brezzidouglasmarini1cube2d.hh:70
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition brezzidouglasmarini1cube2d.hh:54
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition brezzidouglasmarini1cube2d.hh:65
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition brezzidouglasmarini1cube2d.hh:59
    \n-
    BDM1Cube2DLocalFiniteElement()
    Standard constructor.
    Definition brezzidouglasmarini1cube2d.hh:36
    \n-
    BDM1Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini1cube2d.hh:44
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalbasis.hh:30
    \n-
    Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.
    Definition brezzidouglasmarini1cube2dlocalcoefficients.hh:24
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:25
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas2cube2dlocalinterpolation.hh:25
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas2cube2dlocalinterpolation.hh:54
    \n+
    RT2Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas2cube2dlocalinterpolation.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,141 +1,137 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n-brezzidouglasmarini1cube2d.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas2cube2dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \"../common/localfiniteelementtraits.hh\"\n-11#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b/\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-25 template\n-_\b2_\b6 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 {\n+23 template\n+_\b2_\b4 class _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+25 {\n+26\n+27 public:\n 28\n-29 public:\n-30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-31 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n-32 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n-_\b3_\b3 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b3_\b6 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-37 {}\n+_\b3_\b4 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<4> s = 0)\n+35 {\n+36 for (size_t i=0; i<4; i++)\n+37 sign_[i] = (s[i]) ? -1.0 : 1.0;\n 38\n-_\b4_\b4 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n-45 basis(s),\n-46 interpolation(s)\n-47 {}\n-48\n-_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-50 {\n-51 return basis;\n-52 }\n-53\n-_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+39 n_[0] = {-1.0, 0.0};\n+40 n_[1] = { 1.0, 0.0};\n+41 n_[2] = { 0.0, -1.0};\n+42 n_[3] = { 0.0, 1.0};\n+43 }\n+44\n+53 template\n+_\b5_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n 55 {\n-56 return coefficients;\n-57 }\n-58\n-_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-60 {\n-61 return interpolation;\n-62 }\n-63\n-_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n-66 {\n-67 return basis.size();\n-68 }\n-69\n-_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-71 {\n-72 return GeometryTypes::quadrilateral;\n-73 }\n-74\n-75 private:\n-76 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n-77 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n-78 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n-79 };\n-80}\n-81#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+56 // f gives v*outer normal at a point on the edge!\n+57 typedef typename LB::Traits::RangeFieldType Scalar;\n+58 typedef typename LB::Traits::DomainFieldType Vector;\n+59\n+60 out.resize(24);\n+61 fill(out.begin(), out.end(), 0.0);\n+62\n+63 const int qOrder = 6;\n+64 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n+qOrder);\n+65\n+66 for (auto&& qp : rule1)\n+67 {\n+68 Scalar qPos = qp.position();\n+69 typename LB::Traits::DomainType localPos;\n+70\n+71 localPos = {0.0, qPos};\n+72 auto y = f(localPos);\n+73 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n+74 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n+75 out[2] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(6.0*qPos*qPos - 6.0*qPos +\n+1.0)*qp.weight()*sign_[0];\n+76\n+77 localPos = {1.0, qPos};\n+78 y = f(localPos);\n+79 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n+80 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n+81 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(6.0*qPos*qPos - 6.0*qPos +\n+1.0)*qp.weight()*sign_[1];\n+82\n+83 localPos = {qPos, 0.0};\n+84 y = f(localPos);\n+85 out[6] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n+86 out[7] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n+87 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(6.0*qPos*qPos - 6.0*qPos +\n+1.0)*qp.weight()*sign_[2];\n+88\n+89 localPos = {qPos, 1.0};\n+90 y = f(localPos);\n+91 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n+92 out[10] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n+93 out[11] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(6.0*qPos*qPos - 6.0*qPos +\n+1.0)*qp.weight()*sign_[3];\n+94 }\n+95\n+96 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n+qOrder);\n+97\n+98 for (auto&& qp : rule2)\n+99 {\n+100 FieldVector qPos = qp.position();\n+101\n+102 auto y = f(qPos);\n+103 out[12] += y[0]*qp.weight();\n+104 out[13] += y[1]*qp.weight();\n+105 out[14] += y[0]*qPos[0]*qp.weight();\n+106 out[15] += y[1]*qPos[0]*qp.weight();\n+107 out[16] += y[0]*qPos[1]*qp.weight();\n+108 out[17] += y[1]*qPos[1]*qp.weight();\n+109 out[18] += y[0]*qPos[0]*qPos[1]*qp.weight();\n+110 out[19] += y[1]*qPos[0]*qPos[1]*qp.weight();\n+111 out[20] += y[0]*qPos[1]*qPos[1]*qp.weight();\n+112 out[21] += y[1]*qPos[0]*qPos[0]*qp.weight();\n+113 out[22] += y[0]*qPos[0]*qPos[1]*qPos[1]*qp.weight();\n+114 out[23] += y[1]*qPos[0]*qPos[0]*qPos[1]*qp.weight();\n+115 }\n+116 }\n+117\n+118 private:\n+119 // Edge orientations\n+120 std::array sign_;\n+121\n+122 // Edge normals\n+123 std::array n_;\n+124 };\n+125}\n+126#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< BDM1Cube2DLocalBasis< D, R >,\n-BDM1Cube2DLocalCoefficients, BDM1Cube2DLocalInterpolation<\n-BDM1Cube2DLocalBasis< D, R > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM1Cube2DLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDM1Cube2DLocalFiniteElement(int s)\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Second order Raviart-Thomas shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalinterpolation.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT2Cube2DLocalInterpolation(std::bitset< 4 > s=0)\n Make set number s, where 0 <= s < 16.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2d.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Brezzi-Douglas-Marini shape functions on the reference\n-quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on the reference\n-quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube2dlocalinterpolation.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalinterpolation.hh:34\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas2cube2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,35 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference
    \n+
    raviartthomas2cube2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n+
    #include <numeric>
    \n #include <vector>
    \n-#include "../../common/localkey.hh"
    \n+#include <dune/common/fmatrix.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Cube3DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. More...
    class  Dune::RT2Cube2DLocalBasis< D, R >
     Second order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference\n-#include \n+raviartthomas2cube2dlocalbasis.hh File Reference\n+#include \n #include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 Second order Raviart-Thomas shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas2cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,79 +70,300 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube3dlocalcoefficients.hh
    \n+
    raviartthomas2cube2dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n+
    8#include <numeric>
    \n
    9#include <vector>
    \n
    10
    \n-
    11#include "../../common/localkey.hh"
    \n+
    11#include <dune/common/fmatrix.hh>
    \n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    \n-\n-
    24 {
    \n-
    25
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for (std::size_t i = 0; i < 6; ++i)
    \n-
    31 {
    \n-
    32 li[i] = LocalKey(i,1,0);
    \n-
    33 li[i + 6] = LocalKey(i,1,1);
    \n-
    34 li[i + 12] = LocalKey(i,1,2);
    \n-
    35 }
    \n-
    36 }
    \n-
    \n-
    37
    \n+
    13#include "../../common/localbasis.hh"
    \n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    26 template<class D, class R>
    \n+
    \n+\n+
    28 {
    \n+
    29
    \n+
    30 public:
    \n+
    31 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    32 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    33
    \n
    \n-
    39 std::size_t size() const
    \n-
    40 {
    \n-
    41 return 18;
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    \n-
    45 const LocalKey& localKey(std::size_t i) const
    \n-
    46 {
    \n-
    47 return li[i];
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    50 private:
    \n-
    51 std::vector<LocalKey> li;
    \n-
    52 };
    \n+
    39 RT2Cube2DLocalBasis (unsigned int s = 0)
    \n+
    40 {
    \n+
    41 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n+
    42 if (s & 1)
    \n+
    43 {
    \n+
    44 sign0 = -1.0;
    \n+
    45 }
    \n+
    46 if (s & 2)
    \n+
    47 {
    \n+
    48 sign1 = -1.0;
    \n+
    49 }
    \n+
    50 if (s & 4)
    \n+
    51 {
    \n+
    52 sign2 = -1.0;
    \n+
    53 }
    \n+
    54 if (s & 8)
    \n+
    55 {
    \n+
    56 sign3 = -1.0;
    \n+
    57 }
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+
    61 unsigned int size () const
    \n+
    62 {
    \n+
    63 return 24;
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    \n+
    72 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    73 std::vector<typename Traits::RangeType>& out) const
    \n+
    74 {
    \n+
    75 out.resize(24);
    \n+
    76
    \n+
    77 out[0][0] = sign0*(-1.0 + 9.0*in[0] - 18.0*in[0]*in[0] + 10.0*in[0]*in[0]*in[0]);
    \n+
    78 out[0][1] = 0.0;
    \n+
    79 out[1][0] = 3.0 - 27.0*in[0] - 6.0*in[1] + 54.0*in[0]*in[1] + 54.0*in[0]*in[0] - 108.0*in[0]*in[0]*in[1] - 30.0*in[0]*in[0]*in[0] + 60.0*in[0]*in[0]*in[0]*in[1];
    \n+
    80 out[1][1] = 0.0;
    \n+
    81 out[2][0] = sign0*(-5.0 + 45.0*in[0] + 30.0*in[1] - 270.0*in[0]*in[1] - 90.0*in[0]*in[0] - 30.0*in[1]*in[1] + 540.0*in[0]*in[0]*in[1] + 270.0*in[0]*in[1]*in[1] + 50.0*in[0]*in[0]*in[0] - 540.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[0]*in[0]*in[1] + 300.0*in[0]*in[0]*in[0]*in[1]*in[1]);
    \n+
    82 out[2][1] = 0.0;
    \n+
    83 out[3][0] = sign1*(3.0*in[0] - 12.0*in[0]*in[0] + 10.0*in[0]*in[0]*in[0]);
    \n+
    84 out[3][1] = 0.0;
    \n+
    85 out[4][0] = 9.0*in[0] - 18.0*in[0]*in[1] - 36.0*in[0]*in[0] + 72.0*in[0]*in[0]*in[1] + 30.0*in[0]*in[0]*in[0] - 60.0*in[0]*in[0]*in[0]*in[1];
    \n+
    86 out[4][1] = 0.0;
    \n+
    87 out[5][0] = sign1*(15.0*in[0] - 90.0*in[0]*in[1] - 60.0*in[0]*in[0] + 360.0*in[0]*in[0]*in[1] + 90.0*in[0]*in[1]*in[1] + 50.0*in[0]*in[0]*in[0] - 360.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[0]*in[0]*in[1] + 300.0*in[0]*in[0]*in[0]*in[1]*in[1]);
    \n+
    88 out[5][1] = 0.0;
    \n+
    89 out[6][0] = 0.0;
    \n+
    90 out[6][1] = sign2*(-1.0 + 9.0*in[1] - 18.0*in[1]*in[1] + 10.0*in[1]*in[1]*in[1]);
    \n+
    91 out[7][0] = 0.0;
    \n+
    92 out[7][1] = -3.0 + 6.0*in[0] + 27.0*in[1] - 54.0*in[0]*in[1] - 54.0*in[1]*in[1] + 108.0*in[0]*in[1]*in[1] + 30.0*in[1]*in[1]*in[1] - 60.0*in[0]*in[1]*in[1]*in[1];
    \n+
    93 out[8][0] = 0.0;
    \n+
    94 out[8][1] = sign2*(-5.0 + 30.0*in[0] + 45.0*in[1] - 270.0*in[0]*in[1] - 30.0*in[0]*in[0] - 90.0*in[1]*in[1] + 270.0*in[0]*in[0]*in[1] + 540.0*in[0]*in[1]*in[1] + 50.0*in[1]*in[1]*in[1] - 540.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[1]*in[1]*in[1] + 300.0*in[1]*in[1]*in[1]*in[0]*in[0]);
    \n+
    95 out[9][0] = 0.0;
    \n+
    96 out[9][1] = sign3*(3.0*in[1] - 12.0*in[1]*in[1] + 10.0*in[1]*in[1]*in[1]);
    \n+
    97 out[10][0] = 0.0;
    \n+
    98 out[10][1] = -9.0*in[1] + 18.0*in[0]*in[1] + 36.0*in[1]*in[1] - 72.0*in[0]*in[1]*in[1] - 30.0*in[1]*in[1]*in[1] + 60.0*in[0]*in[1]*in[1]*in[1];
    \n+
    99 out[11][0] = 0.0;
    \n+
    100 out[11][1] = sign3*(15.0*in[1] - 90.0*in[0]*in[1] - 60.0*in[1]*in[1] + 90.0*in[0]*in[0]*in[1] + 360.0*in[0]*in[1]*in[1] + 50.0*in[1]*in[1]*in[1] - 360.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[1]*in[1]*in[1] + 300.0*in[1]*in[1]*in[1]*in[0]*in[0]);
    \n+
    101 out[12][0] = 324.0*in[0] -1296.0*in[0]*in[1] - 864.0*in[0]*in[0] + 3456.0*in[0]*in[0]*in[1] + 1080.0*in[0]*in[1]*in[1] + 540.0*in[0]*in[0]*in[0] - 2880.0*in[0]*in[0]*in[1]*in[1] - 2160.0*in[0]*in[0]*in[0]*in[1] + 1800.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n+
    102 out[12][1] = 0.0;
    \n+
    103 out[13][0] = 0.0;
    \n+
    104 out[13][1] = 324.0*in[1] - 1296.0*in[0]*in[1] - 864.0*in[1]*in[1] + 1080.0*in[0]*in[0]*in[1] + 3456.0*in[0]*in[1]*in[1] + 540.0*in[1]*in[1]*in[1] - 2880.0*in[0]*in[0]*in[1]*in[1] - 2160.0*in[0]*in[1]*in[1]*in[1] + 1800.0*in[1]*in[1]*in[1]*in[0]*in[0];
    \n+
    105 out[14][0] = -540.0*in[0] + 2160.0*in[0]*in[1] + 1620.0*in[0]*in[0] - 6480.0*in[0]*in[0]*in[1] - 1800.0*in[0]*in[1]*in[1] - 1080.0*in[0]*in[0]*in[0] + 5400.0*in[0]*in[0]*in[1]*in[1] + 4320.0*in[0]*in[0]*in[0]*in[1] - 3600.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n+
    106 out[14][1] = 0.0;
    \n+
    107 out[15][0] = 0.0;
    \n+
    108 out[15][1] = -1296.0*in[1] + 6912.0*in[0]*in[1] + 3456.0*in[1]*in[1] - 6480.0*in[0]*in[0]*in[1] - 18432.0*in[0]*in[1]*in[1] - 2160.0*in[1]*in[1]*in[1] + 17280.0*in[0]*in[0]*in[1]*in[1] + 11520.0*in[0]*in[1]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n+
    109 out[16][0] = -1296.0*in[0] + 6912.0*in[0]*in[1] + 3456.0*in[0]*in[0] - 6480.0*in[0]*in[1]*in[1] - 18432.0*in[0]*in[0]*in[1] - 2160.0*in[0]*in[0]*in[0] + 17280.0*in[0]*in[0]*in[1]*in[1] + 11520.0*in[1]*in[0]*in[0]*in[0] - 10800.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n+
    110 out[16][1] = 0.0;
    \n+
    111 out[17][0] = 0.0;
    \n+
    112 out[17][1] = -540.0*in[1] + 2160.0*in[0]*in[1] + 1620.0*in[1]*in[1] - 1800.0*in[0]*in[0]*in[1] - 6480.0*in[0]*in[1]*in[1] - 1080.0*in[1]*in[1]*in[1] + 5400.0*in[0]*in[0]*in[1]*in[1] + 4320.0*in[0]*in[1]*in[1]*in[1] - 3600.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n+
    113 out[18][0] = 2160.0*in[0] - 11520.0*in[0]*in[1] - 6480.0*in[0]*in[0] + 34560.0*in[0]*in[0]*in[1] + 10800.0*in[0]*in[1]*in[1] + 4320.0*in[0]*in[0]*in[0] - 32400.0*in[0]*in[0]*in[1]*in[1] - 23040.0*in[0]*in[0]*in[0]*in[1] + 21600.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n+
    114 out[18][1] = 0.0;
    \n+
    115 out[19][0] = 0.0;
    \n+
    116 out[19][1] = 2160.0*in[1] - 11520.0*in[0]*in[1] - 6480.0*in[1]*in[1] + 10800.0*in[0]*in[0]*in[1] + 34560.0*in[0]*in[1]*in[1] + 4320.0*in[1]*in[1]*in[1] - 32400.0*in[0]*in[0]*in[1]*in[1] - 23040.0*in[0]*in[1]*in[1]*in[1] + 21600.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n+
    117 out[20][0] = 1080.0*in[0] - 6480.0*in[0]*in[1] - 2880.0*in[0]*in[0] + 17280.0*in[0]*in[0]*in[1] + 6480.0*in[0]*in[1]*in[1] + 1800.0*in[0]*in[0]*in[0] - 17280.0*in[0]*in[0]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[0]*in[1] + 10800.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n+
    118 out[20][1] = 0.0;
    \n+
    119 out[21][0] = 0.0;
    \n+
    120 out[21][1] = 1080.0*in[1] - 6480.0*in[0]*in[1] - 2880.0*in[1]*in[1] + 6480.0*in[0]*in[0]*in[1] + 17280.0*in[0]*in[1]*in[1] + 1800.0*in[1]*in[1]*in[1] - 17280.0*in[0]*in[0]*in[1]*in[1] - 10800.0*in[0]*in[1]*in[1]*in[1] + 10800.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n+
    121 out[22][0] = -1800.0*in[0] + 10800.0*in[0]*in[1] + 5400.0*in[0]*in[0] - 32400.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[1]*in[1] - 3600.0*in[0]*in[0]*in[0] + 32400.0*in[0]*in[0]*in[1]*in[1] + 21600.0*in[0]*in[0]*in[0]*in[1] - 21600.0*in[0]*in[0]*in[0]*in[1]*in[1];
    \n+
    122 out[22][1] = 0.0;
    \n+
    123 out[23][0] = 0.0;
    \n+
    124 out[23][1] = -1800.0*in[1] + 10800.0*in[0]*in[1] + 5400.0*in[1]*in[1] - 10800.0*in[0]*in[0]*in[1] - 32400.0*in[0]*in[1]*in[1] - 3600.0*in[1]*in[1]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1] + 21600.0*in[0]*in[1]*in[1]*in[1] - 21600.0*in[0]*in[0]*in[1]*in[1]*in[1];
    \n+
    125 }
    \n+
    \n+
    126
    \n+
    \n+
    133 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    134 std::vector<typename Traits::JacobianType>& out) const
    \n+
    135 {
    \n+
    136 out.resize(24);
    \n+
    137
    \n+
    138 out[0][0][0] = sign0*(9.0 - 36.0*in[0] + 30.0*in[0]*in[0]);
    \n+
    139 out[0][0][1] = 0.0;
    \n+
    140 out[0][1][0] = 0.0;
    \n+
    141 out[0][1][1] = 0.0;
    \n+
    142
    \n+
    143 out[1][0][0] = -27.0 + 54.0*in[1] + 108.0*in[0] - 216.0*in[0]*in[1] - 90.0*in[0]*in[0] + 180.0*in[0]*in[0]*in[1];
    \n+
    144 out[1][0][1] = -6.0 + 54.0*in[0] - 108.0*in[0]*in[0] + 60.0*in[0]*in[0]*in[0];
    \n+
    145 out[1][1][0] = 0.0;
    \n+
    146 out[1][1][1] = 0.0;
    \n+
    147
    \n+
    148 out[2][0][0] = sign0*(45.0 - 270.0*in[1] - 180.0*in[0] + 1080.0*in[0]*in[1] + 270.0*in[1]*in[1] + 150.0*in[0]*in[0] - 1080.0*in[0]*in[1]*in[1] - 900.0*in[0]*in[0]*in[1] + 900.0*in[0]*in[0]*in[1]*in[1]);
    \n+
    149 out[2][0][1] = sign0*(30.0 - 270.0*in[0] - 60.0*in[1] + 540.0*in[0]*in[0] + 540.0*in[0]*in[1] - 1080.0*in[0]*in[0]*in[1] - 300.0*in[0]*in[0]*in[0] + 600.0*in[0]*in[0]*in[0]*in[1]);
    \n+
    150 out[2][1][0] = 0.0;
    \n+
    151 out[2][1][1] = 0.0;
    \n+
    152
    \n+
    153 out[3][0][0] = sign1*(3.0 - 24.0*in[0] + 30.0*in[0]*in[0]);
    \n+
    154 out[3][0][1] = 0.0;
    \n+
    155 out[3][1][0] = 0.0;
    \n+
    156 out[3][1][1] = 0.0;
    \n+
    157
    \n+
    158 out[4][0][0] = 9.0 - 18.0*in[1] - 72.0*in[0] + 144.0*in[0]*in[1] + 90.0*in[0]*in[0] - 180.0*in[0]*in[0]*in[1];
    \n+
    159 out[4][0][1] = -18.0*in[0] + 72.0*in[0]*in[0] - 60.0*in[0]*in[0]*in[0];
    \n+
    160 out[4][1][0] = 0.0;
    \n+
    161 out[4][1][1] = 0.0;
    \n+
    162
    \n+
    163 out[5][0][0] = sign1*(15.0 - 90.0*in[1] - 120.0*in[0] + 720.0*in[0]*in[1] + 90.0*in[1]*in[1] + 150.0*in[0]*in[0] - 720.0*in[0]*in[1]*in[1] - 900.0*in[0]*in[0]*in[1] + 900.0*in[0]*in[0]*in[1]*in[1]);
    \n+
    164 out[5][0][1] = sign1*(-90.0*in[0] + 360.0*in[0]*in[0] + 180.0*in[0]*in[1] - 720.0*in[0]*in[0]*in[1] - 300.0*in[0]*in[0]*in[0] + 600.0*in[0]*in[0]*in[0]*in[1]);
    \n+
    165 out[5][1][0] = 0.0;
    \n+
    166 out[5][1][1] = 0.0;
    \n+
    167
    \n+
    168
    \n+
    169 out[6][0][0] = 0.0;
    \n+
    170 out[6][0][1] = 0.0;
    \n+
    171 out[6][1][0] = 0.0;
    \n+
    172 out[6][1][1] = sign2*(9.0 - 36.0*in[1] + 30.0*in[1]*in[1]);
    \n+
    173
    \n+
    174 out[7][0][0] = 0.0;
    \n+
    175 out[7][0][1] = 0.0;
    \n+
    176 out[7][1][0] = 6.0 - 54.0*in[1] + 108.0*in[1]*in[1] - 60.0*in[1]*in[1]*in[1];
    \n+
    177 out[7][1][1] = 27.0 - 54.0*in[0] - 108.0*in[1] + 216.0*in[0]*in[1] + 90.0*in[1]*in[1] - 180.0*in[0]*in[1]*in[1];
    \n+
    178
    \n+
    179 out[8][0][0] = 0.0;
    \n+
    180 out[8][0][1] = 0.0;
    \n+
    181 out[8][1][0] = sign2*(30.0 - 270.0*in[1] - 60.0*in[0] + 540.0*in[0]*in[1] + 540.0*in[1]*in[1] - 1080.0*in[0]*in[1]*in[1] - 300.0*in[1]*in[1]*in[1] + 600.0*in[1]*in[1]*in[1]*in[0]);
    \n+
    182 out[8][1][1] = sign2*(45.0 - 270.0*in[0] - 180.0*in[1] + 270.0*in[0]*in[0] + 1080.0*in[0]*in[1] + 150.0*in[1]*in[1] - 1080.0*in[0]*in[0]*in[1] - 900.0*in[0]*in[1]*in[1] + 900.0*in[1]*in[1]*in[0]*in[0]);
    \n+
    183
    \n+
    184 out[9][0][0] = 0.0;
    \n+
    185 out[9][0][1] = 0.0;
    \n+
    186 out[9][1][0] = 0.0;
    \n+
    187 out[9][1][1] = sign3*(3.0 - 24.0*in[1] + 30.0*in[1]*in[1]);
    \n+
    188
    \n+
    189 out[10][0][0] = 0.0;
    \n+
    190 out[10][0][1] = 0.0;
    \n+
    191 out[10][1][0] = 18.0*in[1] - 72.0*in[1]*in[1] + 60.0*in[1]*in[1]*in[1];
    \n+
    192 out[10][1][1] = -9.0 + 18.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] - 90.0*in[1]*in[1] + 180.0*in[0]*in[1]*in[1];
    \n+
    193
    \n+
    194 out[11][0][0] = 0.0;
    \n+
    195 out[11][0][1] = 0.0;
    \n+
    196 out[11][1][0] = sign3*(-90.0*in[1] + 180.0*in[0]*in[1] + 360.0*in[1]*in[1] - 720.0*in[0]*in[1]*in[1] - 300.0*in[1]*in[1]*in[1] + 600.0*in[1]*in[1]*in[1]*in[0]);
    \n+
    197 out[11][1][1] = sign3*(15.0 - 90.0*in[0] - 120.0*in[1] + 90.0*in[0]*in[0] + 720.0*in[0]*in[1] + 150.0*in[1]*in[1] - 720.0*in[0]*in[0]*in[1] - 900.0*in[0]*in[1]*in[1] + 900.0*in[1]*in[1]*in[0]*in[0]);
    \n+
    198
    \n+
    199 out[12][0][0] = 324 -1296.0*in[1] - 1728.0*in[0] + 6912.0*in[0]*in[1] + 1080.0*in[1]*in[1] + 1620.0*in[0]*in[0] - 5760.0*in[0]*in[1]*in[1] - 6480.0*in[0]*in[0]*in[1] + 5400.0*in[0]*in[0]*in[1]*in[1];
    \n+
    200 out[12][0][1] = -1296.0*in[0] + 3456.0*in[0]*in[0] + 2160.0*in[0]*in[1] - 5760.0*in[0]*in[0]*in[1] - 2160.0*in[0]*in[0]*in[0] + 3600.0*in[0]*in[0]*in[0]*in[1];
    \n+
    201 out[12][1][0] = 0.0;
    \n+
    202 out[12][1][1] = 0.0;
    \n+
    203
    \n+
    204 out[13][0][0] = 0.0;
    \n+
    205 out[13][0][1] = 0.0;
    \n+
    206 out[13][1][0] = -1296.0*in[1] + 2160.0*in[0]*in[1] + 3456.0*in[1]*in[1] - 5760.0*in[0]*in[1]*in[1] - 2160.0*in[1]*in[1]*in[1] + 3600.0*in[1]*in[1]*in[1]*in[0];
    \n+
    207 out[13][1][1] = 324.0 - 1296.0*in[0] - 1728.0*in[1] + 1080.0*in[0]*in[0] + 6912.0*in[0]*in[1] + 1620.0*in[1]*in[1] - 5760.0*in[0]*in[0]*in[1] - 6480.0*in[0]*in[1]*in[1] + 5400.0*in[1]*in[1]*in[0]*in[0];
    \n+
    208
    \n+
    209 out[14][0][0] = -540.0 + 2160.0*in[1] + 3240.0*in[0] - 12960.0*in[0]*in[1] - 1800.0*in[1]*in[1] - 3240.0*in[0]*in[0] + 10800.0*in[0]*in[1]*in[1] + 12960.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1];
    \n+
    210 out[14][0][1] = 2160.0*in[0] - 6480.0*in[0]*in[0] - 3600.0*in[0]*in[1] + 10800.0*in[0]*in[0]*in[1] + 4320.0*in[0]*in[0]*in[0] - 7200.0*in[0]*in[0]*in[0]*in[1];
    \n+
    211 out[14][1][0] = 0.0;
    \n+
    212 out[14][1][1] = 0.0;
    \n+
    213
    \n+
    214 out[15][0][0] = 0.0;
    \n+
    215 out[15][0][1] = 0.0;
    \n+
    216 out[15][1][0] = 6912.0*in[1] - 12960.0*in[0]*in[1] - 18432.0*in[1]*in[1] + 34560.0*in[0]*in[1]*in[1] + 11520.0*in[1]*in[1]*in[1] - 21600.0*in[0]*in[1]*in[1]*in[1];
    \n+
    217 out[15][1][1] = -1296.0 + 6912.0*in[0] + 6912.0*in[1] - 6480.0*in[0]*in[0] - 36864.0*in[0]*in[1] - 6480.0*in[1]*in[1] + 34560.0*in[0]*in[0]*in[1] + 34560.0*in[0]*in[1]*in[1] - 32400.0*in[0]*in[0]*in[1]*in[1];
    \n+
    218
    \n+
    219 out[16][0][0] = -1296.0 + 6912.0*in[1] + 6912.0*in[0] - 6480.0*in[1]*in[1] - 36864.0*in[0]*in[1] - 6480.0*in[0]*in[0] + 34560.0*in[0]*in[1]*in[1] + 34560.0*in[1]*in[0]*in[0] - 32400.0*in[0]*in[0]*in[1]*in[1];
    \n+
    220 out[16][0][1] = 6912.0*in[0] - 12960.0*in[0]*in[1] - 18432.0*in[0]*in[0] + 34560.0*in[0]*in[0]*in[1] + 11520.0*in[0]*in[0]*in[0] - 21600.0*in[0]*in[0]*in[0]*in[1];
    \n+
    221 out[16][1][0] = 0.0;
    \n+
    222 out[16][1][1] = 0.0;
    \n+
    223
    \n+
    224 out[17][0][0] = 0.0;
    \n+
    225 out[17][0][1] = 0.0;
    \n+
    226 out[17][1][0] = 2160.0*in[1] - 3600.0*in[0]*in[1] - 6480.0*in[1]*in[1] + 10800.0*in[0]*in[1]*in[1] + 4320.0*in[1]*in[1]*in[1] - 7200.0*in[0]*in[1]*in[1]*in[1];
    \n+
    227 out[17][1][1] = -540.0 + 2160.0*in[0] + 3240.0*in[1] - 1800.0*in[0]*in[0] - 12960.0*in[0]*in[1] - 3240.0*in[1]*in[1] + 10800.0*in[0]*in[0]*in[1] + 12960.0*in[0]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1];
    \n+
    228
    \n+
    229 out[18][0][0] = 2160.0 - 11520.0*in[1] - 12960.0*in[0] + 69120.0*in[0]*in[1] + 10800.0*in[1]*in[1] + 12960.0*in[0]*in[0] - 64800.0*in[0]*in[1]*in[1] - 69120.0*in[0]*in[0]*in[1] + 64800.0*in[0]*in[0]*in[1]*in[1];
    \n+
    230 out[18][0][1] = -11520.0*in[0] + 34560.0*in[0]*in[0] + 21600.0*in[0]*in[1] - 64800.0*in[0]*in[0]*in[1] - 23040.0*in[0]*in[0]*in[0] + 43200.0*in[0]*in[0]*in[0]*in[1];
    \n+
    231 out[18][1][0] = 0.0;
    \n+
    232 out[18][1][1] = 0.0;
    \n+
    233
    \n+
    234 out[19][0][0] = 0.0;
    \n+
    235 out[19][0][1] = 0.0;
    \n+
    236 out[19][1][0] = -11520.0*in[1] + 21600.0*in[0]*in[1] + 34560.0*in[1]*in[1] - 64800.0*in[0]*in[1]*in[1] - 23040.0*in[1]*in[1]*in[1] + 43200.0*in[0]*in[1]*in[1]*in[1];
    \n+
    237 out[19][1][1] = 2160.0 - 11520.0*in[0] - 12960.0*in[1] + 10800.0*in[0]*in[0] + 69120.0*in[0]*in[1] + 12960.0*in[1]*in[1] - 64800.0*in[0]*in[0]*in[1] - 69120.0*in[0]*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1]*in[1];
    \n+
    238
    \n+
    239 out[20][0][0] = 1080.0 - 6480.0*in[1] - 5760.0*in[0] + 34560.0*in[0]*in[1] + 6480.0*in[1]*in[1] + 5400.0*in[0]*in[0] - 34560.0*in[0]*in[1]*in[1] - 32400.0*in[0]*in[0]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1];
    \n+
    240 out[20][0][1] = -6480.0*in[0] + 17280.0*in[0]*in[0] + 12960.0*in[0]*in[1] - 34560.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[0]*in[0] + 21600.0*in[0]*in[0]*in[0]*in[1];
    \n+
    241 out[20][1][0] = 0.0;
    \n+
    242 out[20][1][1] = 0.0;
    \n+
    243
    \n+
    244 out[21][0][0] = 0.0;
    \n+
    245 out[21][0][1] = 0.0;
    \n+
    246 out[21][1][0] = -6480.0*in[1] + 12960.0*in[0]*in[1] + 17280.0*in[1]*in[1] - 34560.0*in[0]*in[1]*in[1] - 10800.0*in[1]*in[1]*in[1] + 21600.0*in[0]*in[1]*in[1]*in[1];
    \n+
    247 out[21][1][1] = 1080.0 - 6480.0*in[0] - 5760.0*in[1] + 6480.0*in[0]*in[0] + 34560.0*in[0]*in[1] + 5400.0*in[1]*in[1] - 34560.0*in[0]*in[0]*in[1] - 32400.0*in[0]*in[1]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1];
    \n+
    248
    \n+
    249 out[22][0][0] = -1800.0 + 10800.0*in[1] + 10800.0*in[0] - 64800.0*in[0]*in[1] - 10800.0*in[1]*in[1] - 10800.0*in[0]*in[0] + 64800.0*in[0]*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1] - 64800.0*in[0]*in[0]*in[1]*in[1];
    \n+
    250 out[22][0][1] = 10800.0*in[0] - 32400.0*in[0]*in[0] - 21600.0*in[0]*in[1] + 64800.0*in[0]*in[0]*in[1] + 21600.0*in[0]*in[0]*in[0] - 43200.0*in[0]*in[0]*in[0]*in[1];
    \n+
    251 out[22][1][0] = 0.0;
    \n+
    252 out[22][1][1] = 0.0;
    \n+
    253
    \n+
    254 out[23][0][0] = 0.0;
    \n+
    255 out[23][0][1] = 0.0;
    \n+
    256 out[23][1][0] = 10800.0*in[1] - 21600.0*in[0]*in[1] - 32400.0*in[1]*in[1] + 64800.0*in[0]*in[1]*in[1] + 21600.0*in[1]*in[1]*in[1] - 43200.0*in[0]*in[1]*in[1]*in[1];
    \n+
    257 out[23][1][1] = -1800.0 + 10800.0*in[0] + 10800.0*in[1] - 10800.0*in[0]*in[0] - 64800.0*in[0]*in[1] - 10800.0*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1] + 64800.0*in[0]*in[1]*in[1] - 64800.0*in[0]*in[0]*in[1]*in[1];
    \n+
    258 }
    \n+
    \n+
    259
    \n+
    \n+
    261 void partial (const std::array<unsigned int, 2>& order,
    \n+
    262 const typename Traits::DomainType& in, // position
    \n+
    263 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    264 {
    \n+
    265 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    266 if (totalOrder == 0) {
    \n+
    267 evaluateFunction(in, out);
    \n+
    268 } else {
    \n+
    269 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    270 }
    \n+
    271 }
    \n+
    \n+
    272
    \n+
    \n+
    274 unsigned int order () const
    \n+
    275 {
    \n+
    276 return 5;
    \n+
    277 }
    \n+
    \n+
    278
    \n+
    279 private:
    \n+
    280 R sign0, sign1, sign2, sign3;
    \n+
    281 };
    \n
    \n-
    53} // end namespace Dune
    \n-
    54#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n+
    282}
    \n+
    283#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:24
    \n-
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:39
    \n-
    BDM1Cube3DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:28
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini1cube3dlocalcoefficients.hh:45
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas2cube2dlocalbasis.hh:28
    \n+
    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 raviartthomas2cube2dlocalbasis.hh:261
    \n+
    RT2Cube2DLocalBasis(unsigned int s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas2cube2dlocalbasis.hh:39
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas2cube2dlocalbasis.hh:133
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas2cube2dlocalbasis.hh:274
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas2cube2dlocalbasis.hh:32
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas2cube2dlocalbasis.hh:61
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas2cube2dlocalbasis.hh:72
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,78 +1,437 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n-brezzidouglasmarini1cube3dlocalcoefficients.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas2cube2dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH\n 7\n-8#include \n+8#include \n 9#include \n 10\n-11#include \"../../common/localkey.hh\"\n+11#include \n 12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-_\b2_\b3 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n-25\n-26 public:\n-_\b2_\b8 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(18)\n-29 {\n-30 for (std::size_t i = 0; i < 6; ++i)\n-31 {\n-32 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-33 li[i + 6] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-34 li[i + 12] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n-35 }\n-36 }\n-37\n-_\b3_\b9 std::size_t _\bs_\bi_\bz_\be() const\n+13#include \"../../common/localbasis.hh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+26 template\n+_\b2_\b7 class _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+28 {\n+29\n+30 public:\n+31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n+FieldVector,\n+_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b9 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int s = 0)\n 40 {\n-41 return 18;\n-42 }\n-43\n-_\b4_\b5 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const\n-46 {\n-47 return li[i];\n-48 }\n-49\n-50 private:\n-51 std::vector li;\n-52 };\n-53} // end namespace Dune\n-54#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH\n+41 sign0 = sign1 = sign2 = sign3 = 1.0;\n+42 if (s & 1)\n+43 {\n+44 sign0 = -1.0;\n+45 }\n+46 if (s & 2)\n+47 {\n+48 sign1 = -1.0;\n+49 }\n+50 if (s & 4)\n+51 {\n+52 sign2 = -1.0;\n+53 }\n+54 if (s & 8)\n+55 {\n+56 sign3 = -1.0;\n+57 }\n+58 }\n+59\n+_\b6_\b1 unsigned int _\bs_\bi_\bz_\be () const\n+62 {\n+63 return 24;\n+64 }\n+65\n+_\b7_\b2 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+73 std::vector& out) const\n+74 {\n+75 out.resize(24);\n+76\n+77 out[0][0] = sign0*(-1.0 + 9.0*in[0] - 18.0*in[0]*in[0] + 10.0*in[0]*in[0]*in\n+[0]);\n+78 out[0][1] = 0.0;\n+79 out[1][0] = 3.0 - 27.0*in[0] - 6.0*in[1] + 54.0*in[0]*in[1] + 54.0*in[0]*in\n+[0] - 108.0*in[0]*in[0]*in[1] - 30.0*in[0]*in[0]*in[0] + 60.0*in[0]*in[0]*in\n+[0]*in[1];\n+80 out[1][1] = 0.0;\n+81 out[2][0] = sign0*(-5.0 + 45.0*in[0] + 30.0*in[1] - 270.0*in[0]*in[1] -\n+90.0*in[0]*in[0] - 30.0*in[1]*in[1] + 540.0*in[0]*in[0]*in[1] + 270.0*in[0]*in\n+[1]*in[1] + 50.0*in[0]*in[0]*in[0] - 540.0*in[0]*in[0]*in[1]*in[1] - 300.0*in\n+[0]*in[0]*in[0]*in[1] + 300.0*in[0]*in[0]*in[0]*in[1]*in[1]);\n+82 out[2][1] = 0.0;\n+83 out[3][0] = sign1*(3.0*in[0] - 12.0*in[0]*in[0] + 10.0*in[0]*in[0]*in[0]);\n+84 out[3][1] = 0.0;\n+85 out[4][0] = 9.0*in[0] - 18.0*in[0]*in[1] - 36.0*in[0]*in[0] + 72.0*in[0]*in\n+[0]*in[1] + 30.0*in[0]*in[0]*in[0] - 60.0*in[0]*in[0]*in[0]*in[1];\n+86 out[4][1] = 0.0;\n+87 out[5][0] = sign1*(15.0*in[0] - 90.0*in[0]*in[1] - 60.0*in[0]*in[0] +\n+360.0*in[0]*in[0]*in[1] + 90.0*in[0]*in[1]*in[1] + 50.0*in[0]*in[0]*in[0] -\n+360.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[0]*in[0]*in[1] + 300.0*in[0]*in\n+[0]*in[0]*in[1]*in[1]);\n+88 out[5][1] = 0.0;\n+89 out[6][0] = 0.0;\n+90 out[6][1] = sign2*(-1.0 + 9.0*in[1] - 18.0*in[1]*in[1] + 10.0*in[1]*in[1]*in\n+[1]);\n+91 out[7][0] = 0.0;\n+92 out[7][1] = -3.0 + 6.0*in[0] + 27.0*in[1] - 54.0*in[0]*in[1] - 54.0*in[1]*in\n+[1] + 108.0*in[0]*in[1]*in[1] + 30.0*in[1]*in[1]*in[1] - 60.0*in[0]*in[1]*in\n+[1]*in[1];\n+93 out[8][0] = 0.0;\n+94 out[8][1] = sign2*(-5.0 + 30.0*in[0] + 45.0*in[1] - 270.0*in[0]*in[1] -\n+30.0*in[0]*in[0] - 90.0*in[1]*in[1] + 270.0*in[0]*in[0]*in[1] + 540.0*in[0]*in\n+[1]*in[1] + 50.0*in[1]*in[1]*in[1] - 540.0*in[0]*in[0]*in[1]*in[1] - 300.0*in\n+[0]*in[1]*in[1]*in[1] + 300.0*in[1]*in[1]*in[1]*in[0]*in[0]);\n+95 out[9][0] = 0.0;\n+96 out[9][1] = sign3*(3.0*in[1] - 12.0*in[1]*in[1] + 10.0*in[1]*in[1]*in[1]);\n+97 out[10][0] = 0.0;\n+98 out[10][1] = -9.0*in[1] + 18.0*in[0]*in[1] + 36.0*in[1]*in[1] - 72.0*in\n+[0]*in[1]*in[1] - 30.0*in[1]*in[1]*in[1] + 60.0*in[0]*in[1]*in[1]*in[1];\n+99 out[11][0] = 0.0;\n+100 out[11][1] = sign3*(15.0*in[1] - 90.0*in[0]*in[1] - 60.0*in[1]*in[1] +\n+90.0*in[0]*in[0]*in[1] + 360.0*in[0]*in[1]*in[1] + 50.0*in[1]*in[1]*in[1] -\n+360.0*in[0]*in[0]*in[1]*in[1] - 300.0*in[0]*in[1]*in[1]*in[1] + 300.0*in[1]*in\n+[1]*in[1]*in[0]*in[0]);\n+101 out[12][0] = 324.0*in[0] -1296.0*in[0]*in[1] - 864.0*in[0]*in[0] +\n+3456.0*in[0]*in[0]*in[1] + 1080.0*in[0]*in[1]*in[1] + 540.0*in[0]*in[0]*in[0] -\n+2880.0*in[0]*in[0]*in[1]*in[1] - 2160.0*in[0]*in[0]*in[0]*in[1] + 1800.0*in\n+[0]*in[0]*in[0]*in[1]*in[1];\n+102 out[12][1] = 0.0;\n+103 out[13][0] = 0.0;\n+104 out[13][1] = 324.0*in[1] - 1296.0*in[0]*in[1] - 864.0*in[1]*in[1] +\n+1080.0*in[0]*in[0]*in[1] + 3456.0*in[0]*in[1]*in[1] + 540.0*in[1]*in[1]*in[1] -\n+2880.0*in[0]*in[0]*in[1]*in[1] - 2160.0*in[0]*in[1]*in[1]*in[1] + 1800.0*in\n+[1]*in[1]*in[1]*in[0]*in[0];\n+105 out[14][0] = -540.0*in[0] + 2160.0*in[0]*in[1] + 1620.0*in[0]*in[0] -\n+6480.0*in[0]*in[0]*in[1] - 1800.0*in[0]*in[1]*in[1] - 1080.0*in[0]*in[0]*in[0]\n++ 5400.0*in[0]*in[0]*in[1]*in[1] + 4320.0*in[0]*in[0]*in[0]*in[1] - 3600.0*in\n+[0]*in[0]*in[0]*in[1]*in[1];\n+106 out[14][1] = 0.0;\n+107 out[15][0] = 0.0;\n+108 out[15][1] = -1296.0*in[1] + 6912.0*in[0]*in[1] + 3456.0*in[1]*in[1] -\n+6480.0*in[0]*in[0]*in[1] - 18432.0*in[0]*in[1]*in[1] - 2160.0*in[1]*in[1]*in[1]\n++ 17280.0*in[0]*in[0]*in[1]*in[1] + 11520.0*in[0]*in[1]*in[1]*in[1] -\n+10800.0*in[0]*in[0]*in[1]*in[1]*in[1];\n+109 out[16][0] = -1296.0*in[0] + 6912.0*in[0]*in[1] + 3456.0*in[0]*in[0] -\n+6480.0*in[0]*in[1]*in[1] - 18432.0*in[0]*in[0]*in[1] - 2160.0*in[0]*in[0]*in[0]\n++ 17280.0*in[0]*in[0]*in[1]*in[1] + 11520.0*in[1]*in[0]*in[0]*in[0] -\n+10800.0*in[0]*in[0]*in[0]*in[1]*in[1];\n+110 out[16][1] = 0.0;\n+111 out[17][0] = 0.0;\n+112 out[17][1] = -540.0*in[1] + 2160.0*in[0]*in[1] + 1620.0*in[1]*in[1] -\n+1800.0*in[0]*in[0]*in[1] - 6480.0*in[0]*in[1]*in[1] - 1080.0*in[1]*in[1]*in[1]\n++ 5400.0*in[0]*in[0]*in[1]*in[1] + 4320.0*in[0]*in[1]*in[1]*in[1] - 3600.0*in\n+[0]*in[0]*in[1]*in[1]*in[1];\n+113 out[18][0] = 2160.0*in[0] - 11520.0*in[0]*in[1] - 6480.0*in[0]*in[0] +\n+34560.0*in[0]*in[0]*in[1] + 10800.0*in[0]*in[1]*in[1] + 4320.0*in[0]*in[0]*in\n+[0] - 32400.0*in[0]*in[0]*in[1]*in[1] - 23040.0*in[0]*in[0]*in[0]*in[1] +\n+21600.0*in[0]*in[0]*in[0]*in[1]*in[1];\n+114 out[18][1] = 0.0;\n+115 out[19][0] = 0.0;\n+116 out[19][1] = 2160.0*in[1] - 11520.0*in[0]*in[1] - 6480.0*in[1]*in[1] +\n+10800.0*in[0]*in[0]*in[1] + 34560.0*in[0]*in[1]*in[1] + 4320.0*in[1]*in[1]*in\n+[1] - 32400.0*in[0]*in[0]*in[1]*in[1] - 23040.0*in[0]*in[1]*in[1]*in[1] +\n+21600.0*in[0]*in[0]*in[1]*in[1]*in[1];\n+117 out[20][0] = 1080.0*in[0] - 6480.0*in[0]*in[1] - 2880.0*in[0]*in[0] +\n+17280.0*in[0]*in[0]*in[1] + 6480.0*in[0]*in[1]*in[1] + 1800.0*in[0]*in[0]*in[0]\n+- 17280.0*in[0]*in[0]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[0]*in[1] +\n+10800.0*in[0]*in[0]*in[0]*in[1]*in[1];\n+118 out[20][1] = 0.0;\n+119 out[21][0] = 0.0;\n+120 out[21][1] = 1080.0*in[1] - 6480.0*in[0]*in[1] - 2880.0*in[1]*in[1] +\n+6480.0*in[0]*in[0]*in[1] + 17280.0*in[0]*in[1]*in[1] + 1800.0*in[1]*in[1]*in[1]\n+- 17280.0*in[0]*in[0]*in[1]*in[1] - 10800.0*in[0]*in[1]*in[1]*in[1] +\n+10800.0*in[0]*in[0]*in[1]*in[1]*in[1];\n+121 out[22][0] = -1800.0*in[0] + 10800.0*in[0]*in[1] + 5400.0*in[0]*in[0] -\n+32400.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[1]*in[1] - 3600.0*in[0]*in[0]*in\n+[0] + 32400.0*in[0]*in[0]*in[1]*in[1] + 21600.0*in[0]*in[0]*in[0]*in[1] -\n+21600.0*in[0]*in[0]*in[0]*in[1]*in[1];\n+122 out[22][1] = 0.0;\n+123 out[23][0] = 0.0;\n+124 out[23][1] = -1800.0*in[1] + 10800.0*in[0]*in[1] + 5400.0*in[1]*in[1] -\n+10800.0*in[0]*in[0]*in[1] - 32400.0*in[0]*in[1]*in[1] - 3600.0*in[1]*in[1]*in\n+[1] + 32400.0*in[0]*in[0]*in[1]*in[1] + 21600.0*in[0]*in[1]*in[1]*in[1] -\n+21600.0*in[0]*in[0]*in[1]*in[1]*in[1];\n+125 }\n+126\n+_\b1_\b3_\b3 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+134 std::vector& out) const\n+135 {\n+136 out.resize(24);\n+137\n+138 out[0][0][0] = sign0*(9.0 - 36.0*in[0] + 30.0*in[0]*in[0]);\n+139 out[0][0][1] = 0.0;\n+140 out[0][1][0] = 0.0;\n+141 out[0][1][1] = 0.0;\n+142\n+143 out[1][0][0] = -27.0 + 54.0*in[1] + 108.0*in[0] - 216.0*in[0]*in[1] -\n+90.0*in[0]*in[0] + 180.0*in[0]*in[0]*in[1];\n+144 out[1][0][1] = -6.0 + 54.0*in[0] - 108.0*in[0]*in[0] + 60.0*in[0]*in[0]*in\n+[0];\n+145 out[1][1][0] = 0.0;\n+146 out[1][1][1] = 0.0;\n+147\n+148 out[2][0][0] = sign0*(45.0 - 270.0*in[1] - 180.0*in[0] + 1080.0*in[0]*in[1]\n++ 270.0*in[1]*in[1] + 150.0*in[0]*in[0] - 1080.0*in[0]*in[1]*in[1] - 900.0*in\n+[0]*in[0]*in[1] + 900.0*in[0]*in[0]*in[1]*in[1]);\n+149 out[2][0][1] = sign0*(30.0 - 270.0*in[0] - 60.0*in[1] + 540.0*in[0]*in[0] +\n+540.0*in[0]*in[1] - 1080.0*in[0]*in[0]*in[1] - 300.0*in[0]*in[0]*in[0] +\n+600.0*in[0]*in[0]*in[0]*in[1]);\n+150 out[2][1][0] = 0.0;\n+151 out[2][1][1] = 0.0;\n+152\n+153 out[3][0][0] = sign1*(3.0 - 24.0*in[0] + 30.0*in[0]*in[0]);\n+154 out[3][0][1] = 0.0;\n+155 out[3][1][0] = 0.0;\n+156 out[3][1][1] = 0.0;\n+157\n+158 out[4][0][0] = 9.0 - 18.0*in[1] - 72.0*in[0] + 144.0*in[0]*in[1] + 90.0*in\n+[0]*in[0] - 180.0*in[0]*in[0]*in[1];\n+159 out[4][0][1] = -18.0*in[0] + 72.0*in[0]*in[0] - 60.0*in[0]*in[0]*in[0];\n+160 out[4][1][0] = 0.0;\n+161 out[4][1][1] = 0.0;\n+162\n+163 out[5][0][0] = sign1*(15.0 - 90.0*in[1] - 120.0*in[0] + 720.0*in[0]*in[1] +\n+90.0*in[1]*in[1] + 150.0*in[0]*in[0] - 720.0*in[0]*in[1]*in[1] - 900.0*in[0]*in\n+[0]*in[1] + 900.0*in[0]*in[0]*in[1]*in[1]);\n+164 out[5][0][1] = sign1*(-90.0*in[0] + 360.0*in[0]*in[0] + 180.0*in[0]*in[1] -\n+720.0*in[0]*in[0]*in[1] - 300.0*in[0]*in[0]*in[0] + 600.0*in[0]*in[0]*in[0]*in\n+[1]);\n+165 out[5][1][0] = 0.0;\n+166 out[5][1][1] = 0.0;\n+167\n+168\n+169 out[6][0][0] = 0.0;\n+170 out[6][0][1] = 0.0;\n+171 out[6][1][0] = 0.0;\n+172 out[6][1][1] = sign2*(9.0 - 36.0*in[1] + 30.0*in[1]*in[1]);\n+173\n+174 out[7][0][0] = 0.0;\n+175 out[7][0][1] = 0.0;\n+176 out[7][1][0] = 6.0 - 54.0*in[1] + 108.0*in[1]*in[1] - 60.0*in[1]*in[1]*in\n+[1];\n+177 out[7][1][1] = 27.0 - 54.0*in[0] - 108.0*in[1] + 216.0*in[0]*in[1] +\n+90.0*in[1]*in[1] - 180.0*in[0]*in[1]*in[1];\n+178\n+179 out[8][0][0] = 0.0;\n+180 out[8][0][1] = 0.0;\n+181 out[8][1][0] = sign2*(30.0 - 270.0*in[1] - 60.0*in[0] + 540.0*in[0]*in[1] +\n+540.0*in[1]*in[1] - 1080.0*in[0]*in[1]*in[1] - 300.0*in[1]*in[1]*in[1] +\n+600.0*in[1]*in[1]*in[1]*in[0]);\n+182 out[8][1][1] = sign2*(45.0 - 270.0*in[0] - 180.0*in[1] + 270.0*in[0]*in[0]\n++ 1080.0*in[0]*in[1] + 150.0*in[1]*in[1] - 1080.0*in[0]*in[0]*in[1] - 900.0*in\n+[0]*in[1]*in[1] + 900.0*in[1]*in[1]*in[0]*in[0]);\n+183\n+184 out[9][0][0] = 0.0;\n+185 out[9][0][1] = 0.0;\n+186 out[9][1][0] = 0.0;\n+187 out[9][1][1] = sign3*(3.0 - 24.0*in[1] + 30.0*in[1]*in[1]);\n+188\n+189 out[10][0][0] = 0.0;\n+190 out[10][0][1] = 0.0;\n+191 out[10][1][0] = 18.0*in[1] - 72.0*in[1]*in[1] + 60.0*in[1]*in[1]*in[1];\n+192 out[10][1][1] = -9.0 + 18.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1] -\n+90.0*in[1]*in[1] + 180.0*in[0]*in[1]*in[1];\n+193\n+194 out[11][0][0] = 0.0;\n+195 out[11][0][1] = 0.0;\n+196 out[11][1][0] = sign3*(-90.0*in[1] + 180.0*in[0]*in[1] + 360.0*in[1]*in[1]\n+- 720.0*in[0]*in[1]*in[1] - 300.0*in[1]*in[1]*in[1] + 600.0*in[1]*in[1]*in\n+[1]*in[0]);\n+197 out[11][1][1] = sign3*(15.0 - 90.0*in[0] - 120.0*in[1] + 90.0*in[0]*in[0] +\n+720.0*in[0]*in[1] + 150.0*in[1]*in[1] - 720.0*in[0]*in[0]*in[1] - 900.0*in\n+[0]*in[1]*in[1] + 900.0*in[1]*in[1]*in[0]*in[0]);\n+198\n+199 out[12][0][0] = 324 -1296.0*in[1] - 1728.0*in[0] + 6912.0*in[0]*in[1] +\n+1080.0*in[1]*in[1] + 1620.0*in[0]*in[0] - 5760.0*in[0]*in[1]*in[1] - 6480.0*in\n+[0]*in[0]*in[1] + 5400.0*in[0]*in[0]*in[1]*in[1];\n+200 out[12][0][1] = -1296.0*in[0] + 3456.0*in[0]*in[0] + 2160.0*in[0]*in[1] -\n+5760.0*in[0]*in[0]*in[1] - 2160.0*in[0]*in[0]*in[0] + 3600.0*in[0]*in[0]*in\n+[0]*in[1];\n+201 out[12][1][0] = 0.0;\n+202 out[12][1][1] = 0.0;\n+203\n+204 out[13][0][0] = 0.0;\n+205 out[13][0][1] = 0.0;\n+206 out[13][1][0] = -1296.0*in[1] + 2160.0*in[0]*in[1] + 3456.0*in[1]*in[1] -\n+5760.0*in[0]*in[1]*in[1] - 2160.0*in[1]*in[1]*in[1] + 3600.0*in[1]*in[1]*in\n+[1]*in[0];\n+207 out[13][1][1] = 324.0 - 1296.0*in[0] - 1728.0*in[1] + 1080.0*in[0]*in[0] +\n+6912.0*in[0]*in[1] + 1620.0*in[1]*in[1] - 5760.0*in[0]*in[0]*in[1] - 6480.0*in\n+[0]*in[1]*in[1] + 5400.0*in[1]*in[1]*in[0]*in[0];\n+208\n+209 out[14][0][0] = -540.0 + 2160.0*in[1] + 3240.0*in[0] - 12960.0*in[0]*in[1]\n+- 1800.0*in[1]*in[1] - 3240.0*in[0]*in[0] + 10800.0*in[0]*in[1]*in[1] +\n+12960.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1];\n+210 out[14][0][1] = 2160.0*in[0] - 6480.0*in[0]*in[0] - 3600.0*in[0]*in[1] +\n+10800.0*in[0]*in[0]*in[1] + 4320.0*in[0]*in[0]*in[0] - 7200.0*in[0]*in[0]*in\n+[0]*in[1];\n+211 out[14][1][0] = 0.0;\n+212 out[14][1][1] = 0.0;\n+213\n+214 out[15][0][0] = 0.0;\n+215 out[15][0][1] = 0.0;\n+216 out[15][1][0] = 6912.0*in[1] - 12960.0*in[0]*in[1] - 18432.0*in[1]*in[1] +\n+34560.0*in[0]*in[1]*in[1] + 11520.0*in[1]*in[1]*in[1] - 21600.0*in[0]*in[1]*in\n+[1]*in[1];\n+217 out[15][1][1] = -1296.0 + 6912.0*in[0] + 6912.0*in[1] - 6480.0*in[0]*in[0]\n+- 36864.0*in[0]*in[1] - 6480.0*in[1]*in[1] + 34560.0*in[0]*in[0]*in[1] +\n+34560.0*in[0]*in[1]*in[1] - 32400.0*in[0]*in[0]*in[1]*in[1];\n+218\n+219 out[16][0][0] = -1296.0 + 6912.0*in[1] + 6912.0*in[0] - 6480.0*in[1]*in[1]\n+- 36864.0*in[0]*in[1] - 6480.0*in[0]*in[0] + 34560.0*in[0]*in[1]*in[1] +\n+34560.0*in[1]*in[0]*in[0] - 32400.0*in[0]*in[0]*in[1]*in[1];\n+220 out[16][0][1] = 6912.0*in[0] - 12960.0*in[0]*in[1] - 18432.0*in[0]*in[0] +\n+34560.0*in[0]*in[0]*in[1] + 11520.0*in[0]*in[0]*in[0] - 21600.0*in[0]*in[0]*in\n+[0]*in[1];\n+221 out[16][1][0] = 0.0;\n+222 out[16][1][1] = 0.0;\n+223\n+224 out[17][0][0] = 0.0;\n+225 out[17][0][1] = 0.0;\n+226 out[17][1][0] = 2160.0*in[1] - 3600.0*in[0]*in[1] - 6480.0*in[1]*in[1] +\n+10800.0*in[0]*in[1]*in[1] + 4320.0*in[1]*in[1]*in[1] - 7200.0*in[0]*in[1]*in\n+[1]*in[1];\n+227 out[17][1][1] = -540.0 + 2160.0*in[0] + 3240.0*in[1] - 1800.0*in[0]*in[0] -\n+12960.0*in[0]*in[1] - 3240.0*in[1]*in[1] + 10800.0*in[0]*in[0]*in[1] +\n+12960.0*in[0]*in[1]*in[1] - 10800.0*in[0]*in[0]*in[1]*in[1];\n+228\n+229 out[18][0][0] = 2160.0 - 11520.0*in[1] - 12960.0*in[0] + 69120.0*in[0]*in\n+[1] + 10800.0*in[1]*in[1] + 12960.0*in[0]*in[0] - 64800.0*in[0]*in[1]*in[1] -\n+69120.0*in[0]*in[0]*in[1] + 64800.0*in[0]*in[0]*in[1]*in[1];\n+230 out[18][0][1] = -11520.0*in[0] + 34560.0*in[0]*in[0] + 21600.0*in[0]*in[1]\n+- 64800.0*in[0]*in[0]*in[1] - 23040.0*in[0]*in[0]*in[0] + 43200.0*in[0]*in\n+[0]*in[0]*in[1];\n+231 out[18][1][0] = 0.0;\n+232 out[18][1][1] = 0.0;\n+233\n+234 out[19][0][0] = 0.0;\n+235 out[19][0][1] = 0.0;\n+236 out[19][1][0] = -11520.0*in[1] + 21600.0*in[0]*in[1] + 34560.0*in[1]*in[1]\n+- 64800.0*in[0]*in[1]*in[1] - 23040.0*in[1]*in[1]*in[1] + 43200.0*in[0]*in\n+[1]*in[1]*in[1];\n+237 out[19][1][1] = 2160.0 - 11520.0*in[0] - 12960.0*in[1] + 10800.0*in[0]*in\n+[0] + 69120.0*in[0]*in[1] + 12960.0*in[1]*in[1] - 64800.0*in[0]*in[0]*in[1] -\n+69120.0*in[0]*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1]*in[1];\n+238\n+239 out[20][0][0] = 1080.0 - 6480.0*in[1] - 5760.0*in[0] + 34560.0*in[0]*in[1]\n++ 6480.0*in[1]*in[1] + 5400.0*in[0]*in[0] - 34560.0*in[0]*in[1]*in[1] -\n+32400.0*in[0]*in[0]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1];\n+240 out[20][0][1] = -6480.0*in[0] + 17280.0*in[0]*in[0] + 12960.0*in[0]*in[1] -\n+34560.0*in[0]*in[0]*in[1] - 10800.0*in[0]*in[0]*in[0] + 21600.0*in[0]*in[0]*in\n+[0]*in[1];\n+241 out[20][1][0] = 0.0;\n+242 out[20][1][1] = 0.0;\n+243\n+244 out[21][0][0] = 0.0;\n+245 out[21][0][1] = 0.0;\n+246 out[21][1][0] = -6480.0*in[1] + 12960.0*in[0]*in[1] + 17280.0*in[1]*in[1] -\n+34560.0*in[0]*in[1]*in[1] - 10800.0*in[1]*in[1]*in[1] + 21600.0*in[0]*in[1]*in\n+[1]*in[1];\n+247 out[21][1][1] = 1080.0 - 6480.0*in[0] - 5760.0*in[1] + 6480.0*in[0]*in[0] +\n+34560.0*in[0]*in[1] + 5400.0*in[1]*in[1] - 34560.0*in[0]*in[0]*in[1] -\n+32400.0*in[0]*in[1]*in[1] + 32400.0*in[0]*in[0]*in[1]*in[1];\n+248\n+249 out[22][0][0] = -1800.0 + 10800.0*in[1] + 10800.0*in[0] - 64800.0*in[0]*in\n+[1] - 10800.0*in[1]*in[1] - 10800.0*in[0]*in[0] + 64800.0*in[0]*in[1]*in[1] +\n+64800.0*in[0]*in[0]*in[1] - 64800.0*in[0]*in[0]*in[1]*in[1];\n+250 out[22][0][1] = 10800.0*in[0] - 32400.0*in[0]*in[0] - 21600.0*in[0]*in[1] +\n+64800.0*in[0]*in[0]*in[1] + 21600.0*in[0]*in[0]*in[0] - 43200.0*in[0]*in[0]*in\n+[0]*in[1];\n+251 out[22][1][0] = 0.0;\n+252 out[22][1][1] = 0.0;\n+253\n+254 out[23][0][0] = 0.0;\n+255 out[23][0][1] = 0.0;\n+256 out[23][1][0] = 10800.0*in[1] - 21600.0*in[0]*in[1] - 32400.0*in[1]*in[1] +\n+64800.0*in[0]*in[1]*in[1] + 21600.0*in[1]*in[1]*in[1] - 43200.0*in[0]*in[1]*in\n+[1]*in[1];\n+257 out[23][1][1] = -1800.0 + 10800.0*in[0] + 10800.0*in[1] - 10800.0*in[0]*in\n+[0] - 64800.0*in[0]*in[1] - 10800.0*in[1]*in[1] + 64800.0*in[0]*in[0]*in[1] +\n+64800.0*in[0]*in[1]*in[1] - 64800.0*in[0]*in[0]*in[1]*in[1];\n+258 }\n+259\n+_\b2_\b6_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+262 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+263 std::vector& out) const // return value\n+264 {\n+265 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+266 if (totalOrder == 0) {\n+267 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+268 } else {\n+269 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+270 }\n+271 }\n+272\n+_\b2_\b7_\b4 unsigned int _\bo_\br_\bd_\be_\br () const\n+275 {\n+276 return 5;\n+277 }\n+278\n+279 private:\n+280 R sign0, sign1, sign2, sign3;\n+281 };\n+282}\n+283#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-BDM1Cube3DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalcoefficients.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Second order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:261\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT2Cube2DLocalBasis(unsigned int s=0)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:274\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:72\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas1cube3d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube3dlocalbasis.hh File Reference
    \n+
    raviartthomas1cube3d.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <bitset>
    \n-#include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Cube3DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. More...
    class  Dune::RT1Cube3DLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1cube3dlocalbasis.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+raviartthomas1cube3d.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n- hexahedron. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas1cube3d.hh Source File\n \n \n \n \n \n \n \n@@ -70,322 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube3dlocalbasis.hh
    \n+
    raviartthomas1cube3d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <bitset>
    \n-
    10#include <numeric>
    \n-
    11#include <vector>
    \n-
    12
    \n-
    13#include <dune/common/fmatrix.hh>
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n
    14
    \n-
    15#include "../../common/localbasis.hh"
    \n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    29 template<class D, class R>
    \n-
    \n-\n-
    31 {
    \n-
    32
    \n-
    33 public:
    \n-\n-
    35 R,3,Dune::FieldVector<R,3>,
    \n-
    36 Dune::FieldMatrix<R,3,3> > Traits;
    \n-
    37
    \n-
    \n-\n-
    40 {
    \n-
    41 for (size_t i=0; i<6; i++)
    \n-
    42 sign_[i] = 1.0;
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    \n-
    50 BDM1Cube3DLocalBasis(std::bitset<6> s)
    \n-
    51 {
    \n-
    52 for (size_t i=0; i<6; i++)
    \n-
    53 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    \n-
    57 unsigned int size() const
    \n-
    58 {
    \n-
    59 return 18;
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    \n-
    68 inline void evaluateFunction(const typename Traits::DomainType& in,
    \n-
    69 std::vector<typename Traits::RangeType>& out) const
    \n-
    70 {
    \n-
    71 out.resize(size());
    \n-
    72
    \n-
    73 out[0][0] = sign_[0] * (in[0] - 1.0);
    \n-
    74 out[0][1] = 0;
    \n-
    75 out[0][2] = 0;
    \n-
    76 out[1][0] = sign_[1] * in[0];
    \n-
    77 out[1][1] = 0;
    \n-
    78 out[1][2] = 0;
    \n-
    79 out[2][0] = 0;
    \n-
    80 out[2][1] = sign_[2] * (in[1] - 1.0);
    \n-
    81 out[2][2] = 0;
    \n-
    82 out[3][0] = 0;
    \n-
    83 out[3][1] = sign_[3] * in[1];
    \n-
    84 out[3][2] = 0;
    \n-
    85 out[4][0] = 0;
    \n-
    86 out[4][1] = 0;
    \n-
    87 out[4][2] = sign_[4] * (in[2] - 1.0);
    \n-
    88 out[5][0] = 0;
    \n-
    89 out[5][1] = 0;
    \n-
    90 out[5][2] = sign_[5] * in[2];
    \n-
    91 out[6][0] = 6.0 * in[0] * in[1] - 3 * in[0]-6 * in[1] + 3.0;
    \n-
    92 out[6][1] = -3.0 * in[1] * in[1] + 3 * in[1];
    \n-
    93 out[6][2] = 0;
    \n-
    94 out[7][0] = -6.0 * in[0] * in[1] + 3 * in[0];
    \n-
    95 out[7][1] = 3.0 * in[1] * in[1] - 3 * in[1];
    \n-
    96 out[7][2] = 0;
    \n-
    97 out[8][0] = 3.0 * in[0] * in[0] - 3 * in[0];
    \n-
    98 out[8][1] = -6.0 * in[0] * in[1] + 3 * in[1]+6 * in[0]-3.0;
    \n-
    99 out[8][2] = 0;
    \n-
    100 out[9][0] = -3.0 * in[0] * in[0] + 3 * in[0];
    \n-
    101 out[9][1] = 6.0 * in[0] * in[1] - 3 * in[1];
    \n-
    102 out[9][2] = 0;
    \n-
    103 out[10][0] = -3.0 * in[0] * in[0] + 3 * in[0];
    \n-
    104 out[10][1] = 0;
    \n-
    105 out[10][2] = 6.0 * in[0] * in[2]-6 * in[0]-3 * in[2] + 3.0;
    \n-
    106 out[11][0] = 3.0 * in[0] * in[0]-3 * in[0];
    \n-
    107 out[11][1] = 0;
    \n-
    108 out[11][2] = -6.0 * in[0] * in[2] + 3 * in[2];
    \n-
    109 out[12][0] = -6.0 * in[0] * in[2]+6 * in[2] + 3 * in[0]-3.0;
    \n-
    110 out[12][1] = 0;
    \n-
    111 out[12][2] = 3.0 * in[2] * in[2]-3 * in[2];
    \n-
    112 out[13][0] = -3 * in[0]+6 * in[0] * in[2];
    \n-
    113 out[13][1] = 0;
    \n-
    114 out[13][2] = -3.0 * in[2] * in[2] + 3 * in[2];
    \n-
    115 out[14][0] = 0;
    \n-
    116 out[14][1] = 6.0 * in[1] * in[2]-3 * in[1]-6 * in[2] + 3.0;
    \n-
    117 out[14][2] = -3 * in[2] * in[2] + 3 * in[2];
    \n-
    118 out[15][0] = 0;
    \n-
    119 out[15][1] = -6.0 * in[1] * in[2] + 3 * in[1];
    \n-
    120 out[15][2] = 3.0 * in[2] * in[2]-3 * in[2];
    \n-
    121 out[16][0] = 0;
    \n-
    122 out[16][1] = 3.0 * in[1] * in[1]-3 * in[1];
    \n-
    123 out[16][2] = -6.0 * in[1] * in[2] + 3 * in[2]+6 * in[1]-3.0;
    \n-
    124 out[17][0] = 0;
    \n-
    125 out[17][1] = -3.0 * in[1] * in[1] + 3 * in[1];
    \n-
    126 out[17][2] = 6.0 * in[1] * in[2] - 3.0 * in[2];
    \n-
    127 }
    \n-
    \n-
    128
    \n-
    \n-
    135 inline void evaluateJacobian(const typename Traits::DomainType& in,
    \n-
    136 std::vector<typename Traits::JacobianType>& out) const
    \n-
    137 {
    \n-
    138 out.resize(size());
    \n-
    139
    \n-
    140 out[0][0] = { sign_[0], 0, 0};
    \n-
    141 out[0][1] = { 0, 0, 0};
    \n-
    142 out[0][2] = { 0, 0, 0};
    \n-
    143
    \n-
    144 out[1][0] = { sign_[1], 0, 0};
    \n-
    145 out[1][1] = { 0, 0, 0};
    \n-
    146 out[1][2] = { 0, 0, 0};
    \n-
    147
    \n-
    148 out[2][0] = { 0, 0, 0};
    \n-
    149 out[2][1] = { 0, sign_[2], 0};
    \n-
    150 out[2][2] = { 0, 0, 0};
    \n-
    151
    \n-
    152 out[3][0] = { 0, 0, 0};
    \n-
    153 out[3][1] = { 0, sign_[3], 0};
    \n-
    154 out[3][2] = { 0, 0, 0};
    \n-
    155
    \n-
    156 out[4][0] = { 0, 0, 0};
    \n-
    157 out[4][1] = { 0, 0, 0};
    \n-
    158 out[4][2] = { 0, 0, sign_[4]};
    \n-
    159
    \n-
    160 out[5][0] = { 0, 0, 0};
    \n-
    161 out[5][1] = { 0, 0, 0};
    \n-
    162 out[5][2] = { 0, 0, sign_[5]};
    \n-
    163
    \n-
    164 out[6][0] = { 6*in[1]-3, 6*in[0]-6, 0};
    \n-
    165 out[6][1] = { 0, -6*in[1]+3, 0};
    \n-
    166 out[6][2] = { 0, 0, 0};
    \n-
    167
    \n-
    168 out[7][0] = {-6*in[1]+3, -6*in[0], 0};
    \n-
    169 out[7][1] = { 0, 6*in[1]-3, 0};
    \n-
    170 out[7][2] = { 0, 0, 0};
    \n-
    171
    \n-
    172 out[8][0] = { 6*in[0]-3, 0, 0};
    \n-
    173 out[8][1] = {-6*in[1]+6, -6*in[0]+3, 0};
    \n-
    174 out[8][2] = { 0, 0, 0};
    \n-
    175
    \n-
    176 out[9][0] = {-6*in[0]+3, 0, 0};
    \n-
    177 out[9][1] = { 6*in[1], 6*in[0]-3, 0};
    \n-
    178 out[9][2] = { 0, 0, 0};
    \n-
    179
    \n-
    180 out[10][0] = {-6*in[0]+3, 0, 0};
    \n-
    181 out[10][1] = { 0, 0, 0};
    \n-
    182 out[10][2] = { 6*in[2]-6, 0, 6*in[0]-3};
    \n-
    183
    \n-
    184 out[11][0] = { 6*in[0]-3, 0, 0};
    \n-
    185 out[11][1] = { 0, 0, 0};
    \n-
    186 out[11][2] = { -6*in[2], 0, -6*in[0]+3};
    \n-
    187
    \n-
    188 out[12][0] = {-6*in[2]+3, 0, -6*in[0]+6};
    \n-
    189 out[12][1] = { 0, 0, 0};
    \n-
    190 out[12][2] = { 0, 0, 6*in[2]-3};
    \n-
    191
    \n-
    192 out[13][0] = { 6*in[2]-3, 0, 6*in[0]};
    \n-
    193 out[13][1] = { 0, 0, 0};
    \n-
    194 out[13][2] = { 0, 0, -6*in[2]+3};
    \n-
    195
    \n-
    196 out[14][0] = { 0, 0, 0};
    \n-
    197 out[14][1] = { 0, 6*in[2]-3, 6*in[1]-6};
    \n-
    198 out[14][2] = { 0, 0, -6*in[2]+3};
    \n-
    199
    \n-
    200 out[15][0] = { 0, 0, 0};
    \n-
    201 out[15][1] = { 0, -6*in[2]+3, -6*in[1]};
    \n-
    202 out[15][2] = { 0, 0, 6*in[2]-3};
    \n-
    203
    \n-
    204 out[16][0] = { 0, 0, 0};
    \n-
    205 out[16][1] = { 0, 6*in[1]-3, 0};
    \n-
    206 out[16][2] = { 0, -6*in[2]+6, -6*in[1]+3};
    \n-
    207
    \n-
    208 out[17][0] = { 0, 0, 0};
    \n-
    209 out[17][1] = { 0, -6*in[1]+3, 0};
    \n-
    210 out[17][2] = { 0, 6*in[2], 6*in[1]-3};
    \n-
    211 }
    \n-
    \n-
    212
    \n-
    \n-
    214 void partial (const std::array<unsigned int, 3>& order,
    \n-
    215 const typename Traits::DomainType& in, // position
    \n-
    216 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    217 {
    \n-
    218 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    219 if (totalOrder == 0) {
    \n-
    220 evaluateFunction(in, out);
    \n-
    221 } else if (totalOrder == 1) {
    \n-
    222 out.resize(size());
    \n-
    223 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    224
    \n-
    225 switch (direction) {
    \n-
    226 case 0:
    \n-
    227 out[0] = { sign_[0], 0, 0};
    \n-
    228 out[1] = { sign_[1], 0, 0};
    \n-
    229 out[2] = { 0, 0, 0};
    \n-
    230 out[3] = { 0, 0, 0};
    \n-
    231 out[4] = { 0, 0, 0};
    \n-
    232 out[5] = { 0, 0, 0};
    \n-
    233 out[6] = { 6*in[1]-3, 0, 0};
    \n-
    234 out[7] = {-6*in[1]+3, 0, 0};
    \n-
    235 out[8] = { 6*in[0]-3, -6*in[1]+6, 0};
    \n-
    236 out[9] = {-6*in[0]+3, 6*in[1], 0};
    \n-
    237 out[10] = {-6*in[0]+3, 0, 6*in[2]-6};
    \n-
    238 out[11] = { 6*in[0]-3, 0, -6*in[2]};
    \n-
    239 out[12] = {-6*in[2]+3, 0, 0};
    \n-
    240 out[13] = { 6*in[2]-3, 0, 0};
    \n-
    241 out[14] = { 0, 0, 0};
    \n-
    242 out[15] = { 0, 0, 0};
    \n-
    243 out[16] = { 0, 0, 0};
    \n-
    244 out[17] = { 0, 0, 0};
    \n-
    245 break;
    \n-
    246 case 1:
    \n-
    247 out[0] = { 0, 0, 0};
    \n-
    248 out[1] = { 0, 0, 0};
    \n-
    249 out[2] = { 0, sign_[2], 0};
    \n-
    250 out[3] = { 0, sign_[3], 0};
    \n-
    251 out[4] = { 0, 0, 0};
    \n-
    252 out[5] = { 0, 0, 0};
    \n-
    253 out[6] = { 6*in[0]-6, -6*in[1]+3, 0};
    \n-
    254 out[7] = { -6*in[0], 6*in[1]-3, 0};
    \n-
    255 out[8] = { 0, -6*in[0]+3, 0};
    \n-
    256 out[9] = { 0, 6*in[0]-3, 0};
    \n-
    257 out[10] = { 0, 0, 0};
    \n-
    258 out[11] = { 0, 0, 0};
    \n-
    259 out[12] = { 0, 0, 0};
    \n-
    260 out[13] = { 0, 0, 0};
    \n-
    261 out[14] = { 0, 6*in[2]-3, 0};
    \n-
    262 out[15] = { 0, -6*in[2]+3, 0};
    \n-
    263 out[16] = { 0, 6*in[1]-3, -6*in[2]+6};
    \n-
    264 out[17] = { 0, -6*in[1]+3, 6*in[2]};
    \n-
    265 break;
    \n-
    266 case 2:
    \n-
    267 out[0] = { 0, 0, 0};
    \n-
    268 out[1] = { 0, 0, 0};
    \n-
    269 out[2] = { 0, 0, 0};
    \n-
    270 out[3] = { 0, 0, 0};
    \n-
    271 out[4] = { 0, 0, sign_[4]};
    \n-
    272 out[5] = { 0, 0, sign_[5]};
    \n-
    273 out[6] = { 0, 0, 0};
    \n-
    274 out[7] = { 0, 0, 0};
    \n-
    275 out[8] = { 0, 0, 0};
    \n-
    276 out[9] = { 0, 0, 0};
    \n-
    277 out[10] = { 0, 0, 6*in[0]-3};
    \n-
    278 out[11] = { 0, 0, -6*in[0]+3};
    \n-
    279 out[12] = {-6*in[0]+6, 0, 6*in[2]-3};
    \n-
    280 out[13] = { 6*in[0], 0, -6*in[2]+3};
    \n-
    281 out[14] = { 0, 6*in[1]-6, -6*in[2]+3};
    \n-
    282 out[15] = { 0, -6*in[1], 6*in[2]-3};
    \n-
    283 out[16] = { 0, 0, -6*in[1]+3};
    \n-
    284 out[17] = { 0, 0, 6*in[1]-3};
    \n-
    285 break;
    \n-
    286 default:
    \n-
    287 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    288 }
    \n-
    289 } else {
    \n-
    290 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    291 }
    \n-
    292 }
    \n-
    \n-
    293
    \n-
    \n-
    295 unsigned int order() const
    \n-
    296 {
    \n-
    297 return 2;
    \n-
    298 }
    \n-
    \n-
    299
    \n-
    300 private:
    \n-
    301 std::array<R,6> sign_;
    \n-
    302 };
    \n-
    \n-
    303} // end namespace Dune
    \n-
    304#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28
    \n+
    29 public:
    \n+\n+\n+\n+\n+
    34
    \n+\n+
    38
    \n+
    \n+\n+
    45 basis(s),
    \n+
    46 interpolation(s)
    \n+
    47 {}
    \n+
    \n+
    48
    \n+
    \n+
    49 const typename Traits::LocalBasisType& localBasis () const
    \n+
    50 {
    \n+
    51 return basis;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    55 {
    \n+
    56 return coefficients;
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    \n+\n+
    60 {
    \n+
    61 return interpolation;
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    \n+
    65 unsigned int size () const
    \n+
    66 {
    \n+
    67 return basis.size();
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    \n+
    70 static constexpr GeometryType type ()
    \n+
    71 {
    \n+
    72 return GeometryTypes::hexahedron;
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75 private:
    \n+\n+
    77 RT1Cube3DLocalCoefficients coefficients;
    \n+\n+
    79 };
    \n+
    \n+
    80}
    \n+
    81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:31
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:135
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:68
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:36
    \n-
    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
    \n-
    BDM1Cube3DLocalBasis(std::bitset< 6 > s)
    Make set number s, where 0 <= s < 64.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:50
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:295
    \n-
    BDM1Cube3DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:39
    \n-
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini1cube3dlocalbasis.hh:57
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    First order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas1cube3d.hh:27
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas1cube3d.hh:59
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas1cube3d.hh:54
    \n+
    RT1Cube3DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas1cube3d.hh:36
    \n+
    RT1Cube3DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas1cube3d.hh:44
    \n+
    LocalFiniteElementTraits< RT1Cube3DLocalBasis< D, R >, RT1Cube3DLocalCoefficients, RT1Cube3DLocalInterpolation< RT1Cube3DLocalBasis< D, R > > > Traits
    Definition raviartthomas1cube3d.hh:33
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas1cube3d.hh:65
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas1cube3d.hh:70
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas1cube3d.hh:49
    \n+
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalbasis.hh:28
    \n+
    Layout map for Raviart-Thomas-1 elements on quadrilaterals.
    Definition raviartthomas1cube3dlocalcoefficients.hh:24
    \n+
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalinterpolation.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,334 +1,136 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n-brezzidouglasmarini1cube3dlocalbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas1cube3d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n-12\n-13#include \n+8#include \n+9\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n 14\n-15#include \"../../common/localbasis.hh\"\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-29 template\n-_\b3_\b0 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-31 {\n-32\n-33 public:\n-34 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,\n-35 R,3,Dune::FieldVector,\n-_\b3_\b6 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-37\n-_\b3_\b9 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n-40 {\n-41 for (size_t i=0; i<6; i++)\n-42 sign_[i] = 1.0;\n-43 }\n-44\n-_\b5_\b0 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs(std::bitset<6> s)\n-51 {\n-52 for (size_t i=0; i<6; i++)\n-53 sign_[i] = s[i] ? -1.0 : 1.0;\n-54 }\n-55\n-_\b5_\b7 unsigned int _\bs_\bi_\bz_\be() const\n-58 {\n-59 return 18;\n-60 }\n-61\n-_\b6_\b8 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-69 std::vector& out) const\n-70 {\n-71 out.resize(_\bs_\bi_\bz_\be());\n-72\n-73 out[0][0] = sign_[0] * (in[0] - 1.0);\n-74 out[0][1] = 0;\n-75 out[0][2] = 0;\n-76 out[1][0] = sign_[1] * in[0];\n-77 out[1][1] = 0;\n-78 out[1][2] = 0;\n-79 out[2][0] = 0;\n-80 out[2][1] = sign_[2] * (in[1] - 1.0);\n-81 out[2][2] = 0;\n-82 out[3][0] = 0;\n-83 out[3][1] = sign_[3] * in[1];\n-84 out[3][2] = 0;\n-85 out[4][0] = 0;\n-86 out[4][1] = 0;\n-87 out[4][2] = sign_[4] * (in[2] - 1.0);\n-88 out[5][0] = 0;\n-89 out[5][1] = 0;\n-90 out[5][2] = sign_[5] * in[2];\n-91 out[6][0] = 6.0 * in[0] * in[1] - 3 * in[0]-6 * in[1] + 3.0;\n-92 out[6][1] = -3.0 * in[1] * in[1] + 3 * in[1];\n-93 out[6][2] = 0;\n-94 out[7][0] = -6.0 * in[0] * in[1] + 3 * in[0];\n-95 out[7][1] = 3.0 * in[1] * in[1] - 3 * in[1];\n-96 out[7][2] = 0;\n-97 out[8][0] = 3.0 * in[0] * in[0] - 3 * in[0];\n-98 out[8][1] = -6.0 * in[0] * in[1] + 3 * in[1]+6 * in[0]-3.0;\n-99 out[8][2] = 0;\n-100 out[9][0] = -3.0 * in[0] * in[0] + 3 * in[0];\n-101 out[9][1] = 6.0 * in[0] * in[1] - 3 * in[1];\n-102 out[9][2] = 0;\n-103 out[10][0] = -3.0 * in[0] * in[0] + 3 * in[0];\n-104 out[10][1] = 0;\n-105 out[10][2] = 6.0 * in[0] * in[2]-6 * in[0]-3 * in[2] + 3.0;\n-106 out[11][0] = 3.0 * in[0] * in[0]-3 * in[0];\n-107 out[11][1] = 0;\n-108 out[11][2] = -6.0 * in[0] * in[2] + 3 * in[2];\n-109 out[12][0] = -6.0 * in[0] * in[2]+6 * in[2] + 3 * in[0]-3.0;\n-110 out[12][1] = 0;\n-111 out[12][2] = 3.0 * in[2] * in[2]-3 * in[2];\n-112 out[13][0] = -3 * in[0]+6 * in[0] * in[2];\n-113 out[13][1] = 0;\n-114 out[13][2] = -3.0 * in[2] * in[2] + 3 * in[2];\n-115 out[14][0] = 0;\n-116 out[14][1] = 6.0 * in[1] * in[2]-3 * in[1]-6 * in[2] + 3.0;\n-117 out[14][2] = -3 * in[2] * in[2] + 3 * in[2];\n-118 out[15][0] = 0;\n-119 out[15][1] = -6.0 * in[1] * in[2] + 3 * in[1];\n-120 out[15][2] = 3.0 * in[2] * in[2]-3 * in[2];\n-121 out[16][0] = 0;\n-122 out[16][1] = 3.0 * in[1] * in[1]-3 * in[1];\n-123 out[16][2] = -6.0 * in[1] * in[2] + 3 * in[2]+6 * in[1]-3.0;\n-124 out[17][0] = 0;\n-125 out[17][1] = -3.0 * in[1] * in[1] + 3 * in[1];\n-126 out[17][2] = 6.0 * in[1] * in[2] - 3.0 * in[2];\n-127 }\n-128\n-_\b1_\b3_\b5 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-136 std::vector& out) const\n-137 {\n-138 out.resize(_\bs_\bi_\bz_\be());\n-139\n-140 out[0][0] = { sign_[0], 0, 0};\n-141 out[0][1] = { 0, 0, 0};\n-142 out[0][2] = { 0, 0, 0};\n-143\n-144 out[1][0] = { sign_[1], 0, 0};\n-145 out[1][1] = { 0, 0, 0};\n-146 out[1][2] = { 0, 0, 0};\n-147\n-148 out[2][0] = { 0, 0, 0};\n-149 out[2][1] = { 0, sign_[2], 0};\n-150 out[2][2] = { 0, 0, 0};\n-151\n-152 out[3][0] = { 0, 0, 0};\n-153 out[3][1] = { 0, sign_[3], 0};\n-154 out[3][2] = { 0, 0, 0};\n-155\n-156 out[4][0] = { 0, 0, 0};\n-157 out[4][1] = { 0, 0, 0};\n-158 out[4][2] = { 0, 0, sign_[4]};\n-159\n-160 out[5][0] = { 0, 0, 0};\n-161 out[5][1] = { 0, 0, 0};\n-162 out[5][2] = { 0, 0, sign_[5]};\n-163\n-164 out[6][0] = { 6*in[1]-3, 6*in[0]-6, 0};\n-165 out[6][1] = { 0, -6*in[1]+3, 0};\n-166 out[6][2] = { 0, 0, 0};\n-167\n-168 out[7][0] = {-6*in[1]+3, -6*in[0], 0};\n-169 out[7][1] = { 0, 6*in[1]-3, 0};\n-170 out[7][2] = { 0, 0, 0};\n-171\n-172 out[8][0] = { 6*in[0]-3, 0, 0};\n-173 out[8][1] = {-6*in[1]+6, -6*in[0]+3, 0};\n-174 out[8][2] = { 0, 0, 0};\n-175\n-176 out[9][0] = {-6*in[0]+3, 0, 0};\n-177 out[9][1] = { 6*in[1], 6*in[0]-3, 0};\n-178 out[9][2] = { 0, 0, 0};\n-179\n-180 out[10][0] = {-6*in[0]+3, 0, 0};\n-181 out[10][1] = { 0, 0, 0};\n-182 out[10][2] = { 6*in[2]-6, 0, 6*in[0]-3};\n-183\n-184 out[11][0] = { 6*in[0]-3, 0, 0};\n-185 out[11][1] = { 0, 0, 0};\n-186 out[11][2] = { -6*in[2], 0, -6*in[0]+3};\n-187\n-188 out[12][0] = {-6*in[2]+3, 0, -6*in[0]+6};\n-189 out[12][1] = { 0, 0, 0};\n-190 out[12][2] = { 0, 0, 6*in[2]-3};\n-191\n-192 out[13][0] = { 6*in[2]-3, 0, 6*in[0]};\n-193 out[13][1] = { 0, 0, 0};\n-194 out[13][2] = { 0, 0, -6*in[2]+3};\n-195\n-196 out[14][0] = { 0, 0, 0};\n-197 out[14][1] = { 0, 6*in[2]-3, 6*in[1]-6};\n-198 out[14][2] = { 0, 0, -6*in[2]+3};\n-199\n-200 out[15][0] = { 0, 0, 0};\n-201 out[15][1] = { 0, -6*in[2]+3, -6*in[1]};\n-202 out[15][2] = { 0, 0, 6*in[2]-3};\n-203\n-204 out[16][0] = { 0, 0, 0};\n-205 out[16][1] = { 0, 6*in[1]-3, 0};\n-206 out[16][2] = { 0, -6*in[2]+6, -6*in[1]+3};\n-207\n-208 out[17][0] = { 0, 0, 0};\n-209 out[17][1] = { 0, -6*in[1]+3, 0};\n-210 out[17][2] = { 0, 6*in[2], 6*in[1]-3};\n-211 }\n-212\n-_\b2_\b1_\b4 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-215 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-216 std::vector& out) const // return value\n-217 {\n-218 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-219 if (totalOrder == 0) {\n-220 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-221 } else if (totalOrder == 1) {\n-222 out.resize(_\bs_\bi_\bz_\be());\n-223 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-224\n-225 switch (direction) {\n-226 case 0:\n-227 out[0] = { sign_[0], 0, 0};\n-228 out[1] = { sign_[1], 0, 0};\n-229 out[2] = { 0, 0, 0};\n-230 out[3] = { 0, 0, 0};\n-231 out[4] = { 0, 0, 0};\n-232 out[5] = { 0, 0, 0};\n-233 out[6] = { 6*in[1]-3, 0, 0};\n-234 out[7] = {-6*in[1]+3, 0, 0};\n-235 out[8] = { 6*in[0]-3, -6*in[1]+6, 0};\n-236 out[9] = {-6*in[0]+3, 6*in[1], 0};\n-237 out[10] = {-6*in[0]+3, 0, 6*in[2]-6};\n-238 out[11] = { 6*in[0]-3, 0, -6*in[2]};\n-239 out[12] = {-6*in[2]+3, 0, 0};\n-240 out[13] = { 6*in[2]-3, 0, 0};\n-241 out[14] = { 0, 0, 0};\n-242 out[15] = { 0, 0, 0};\n-243 out[16] = { 0, 0, 0};\n-244 out[17] = { 0, 0, 0};\n-245 break;\n-246 case 1:\n-247 out[0] = { 0, 0, 0};\n-248 out[1] = { 0, 0, 0};\n-249 out[2] = { 0, sign_[2], 0};\n-250 out[3] = { 0, sign_[3], 0};\n-251 out[4] = { 0, 0, 0};\n-252 out[5] = { 0, 0, 0};\n-253 out[6] = { 6*in[0]-6, -6*in[1]+3, 0};\n-254 out[7] = { -6*in[0], 6*in[1]-3, 0};\n-255 out[8] = { 0, -6*in[0]+3, 0};\n-256 out[9] = { 0, 6*in[0]-3, 0};\n-257 out[10] = { 0, 0, 0};\n-258 out[11] = { 0, 0, 0};\n-259 out[12] = { 0, 0, 0};\n-260 out[13] = { 0, 0, 0};\n-261 out[14] = { 0, 6*in[2]-3, 0};\n-262 out[15] = { 0, -6*in[2]+3, 0};\n-263 out[16] = { 0, 6*in[1]-3, -6*in[2]+6};\n-264 out[17] = { 0, -6*in[1]+3, 6*in[2]};\n-265 break;\n-266 case 2:\n-267 out[0] = { 0, 0, 0};\n-268 out[1] = { 0, 0, 0};\n-269 out[2] = { 0, 0, 0};\n-270 out[3] = { 0, 0, 0};\n-271 out[4] = { 0, 0, sign_[4]};\n-272 out[5] = { 0, 0, sign_[5]};\n-273 out[6] = { 0, 0, 0};\n-274 out[7] = { 0, 0, 0};\n-275 out[8] = { 0, 0, 0};\n-276 out[9] = { 0, 0, 0};\n-277 out[10] = { 0, 0, 6*in[0]-3};\n-278 out[11] = { 0, 0, -6*in[0]+3};\n-279 out[12] = {-6*in[0]+6, 0, 6*in[2]-3};\n-280 out[13] = { 6*in[0], 0, -6*in[2]+3};\n-281 out[14] = { 0, 6*in[1]-6, -6*in[2]+3};\n-282 out[15] = { 0, -6*in[1], 6*in[2]-3};\n-283 out[16] = { 0, 0, -6*in[1]+3};\n-284 out[17] = { 0, 0, 6*in[1]-3};\n-285 break;\n-286 default:\n-287 DUNE_THROW(RangeError, \"Component out of range.\");\n-288 }\n-289 } else {\n-290 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-291 }\n-292 }\n-293\n-_\b2_\b9_\b5 unsigned int _\bo_\br_\bd_\be_\br() const\n-296 {\n-297 return 2;\n-298 }\n-299\n-300 private:\n-301 std::array sign_;\n-302 };\n-303} // end namespace Dune\n-304#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+25 template\n+_\b2_\b6 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 {\n+28\n+29 public:\n+30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+31 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+32 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b6 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+37 {}\n+38\n+_\b4_\b4 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+45 basis(s),\n+46 interpolation(s)\n+47 {}\n+48\n+_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+50 {\n+51 return basis;\n+52 }\n+53\n+_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+55 {\n+56 return coefficients;\n+57 }\n+58\n+_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+60 {\n+61 return interpolation;\n+62 }\n+63\n+_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+66 {\n+67 return basis.size();\n+68 }\n+69\n+_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+71 {\n+72 return GeometryTypes::hexahedron;\n+73 }\n+74\n+75 private:\n+76 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+77 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+78 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+79 };\n+80}\n+81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:135\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n-3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:214\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM1Cube3DLocalBasis(std::bitset< 6 > s)\n-Make set number s, where 0 <= s < 64.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:295\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM1Cube3DLocalBasis()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT1Cube3DLocalFiniteElement()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT1Cube3DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 64.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT1Cube3DLocalBasis< D, R >,\n+RT1Cube3DLocalCoefficients, RT1Cube3DLocalInterpolation< RT1Cube3DLocalBasis<\n+D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalbasis.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalinterpolation.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas4cube2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference
    \n+
    raviartthomas4cube2d.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM1Cube3DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. More...
    class  Dune::RT4Cube2DLocalFiniteElement< D, R >
     Second order Raviart-Thomas shape functions on cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference\n-#include \n-#include \n+raviartthomas4cube2d.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on the reference\n- hexahedron. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 Second order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube3dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas4cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,134 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube3dlocalinterpolation.hh
    \n+
    raviartthomas4cube2d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n
    14
    \n-
    24 template<class LB>
    \n-
    \n-\n-
    26 {
    \n-
    27
    \n-
    28 public:
    \n-
    \n-\n-
    31 {
    \n-
    32 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n-
    33 }
    \n-
    \n-
    34
    \n-
    \n-\n-
    41 {
    \n-
    42 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n-
    43 if (s & 1)
    \n-
    44 {
    \n-
    45 sign0 = -1.0;
    \n-
    46 }
    \n-
    47 if (s & 2)
    \n-
    48 {
    \n-
    49 sign1 = -1.0;
    \n-
    50 }
    \n-
    51 if (s & 4)
    \n-
    52 {
    \n-
    53 sign2 = -1.0;
    \n-
    54 }
    \n-
    55 if (s & 8)
    \n-
    56 {
    \n-
    57 sign3 = -1.0;
    \n-
    58 }
    \n-
    59 if (s & 16)
    \n-
    60 {
    \n-
    61 sign4 = -1.0;
    \n-
    62 }
    \n-
    63 if (s & 32)
    \n-
    64 {
    \n-
    65 sign5 = -1.0;
    \n-
    66 }
    \n-
    67
    \n-
    68 n0[0] = -1.0;
    \n-
    69 n0[1] = 0.0;
    \n-
    70 n0[2] = 0.0;
    \n-
    71 n1[0] = 1.0;
    \n-
    72 n1[1] = 0.0;
    \n-
    73 n1[2] = 0.0;
    \n-
    74 n2[0] = 0.0;
    \n-
    75 n2[1] = -1.0;
    \n-
    76 n2[2] = 0.0;
    \n-
    77 n3[0] = 0.0;
    \n-
    78 n3[1] = 1.0;
    \n-
    79 n3[2] = 0.0;
    \n-
    80 n4[0] = 0.0;
    \n-
    81 n4[1] = 0.0;
    \n-
    82 n4[2] = -1.0;
    \n-
    83 n5[0] = 0.0;
    \n-
    84 n5[1] = 0.0;
    \n-
    85 n5[2] = 1.0;
    \n-
    86 }
    \n-
    \n-
    87
    \n-
    96 template<typename F, typename C>
    \n-
    \n-
    97 void interpolate(const F& f, std::vector<C>& out) const
    \n-
    98 {
    \n-
    99 // f gives v*outer normal at a point on the edge!
    \n-
    100 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    101 //typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    102
    \n-
    103 DUNE_THROW( NotImplemented, "Interpolation for BDM1Cube3D finite elements is not implemented." );
    \n-
    104
    \n-
    105 out.resize(18);
    \n-
    106 fill(out.begin(), out.end(), 0.0);
    \n-
    107
    \n-
    108 const int qOrder = 4;
    \n-
    109 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    110
    \n-
    111 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n-
    112 it != rule.end(); ++it)
    \n-
    113 {
    \n-
    114 // TODO: write interpolation
    \n-
    115 }
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    118 private:
    \n-
    119 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3, sign4, sign5;
    \n-
    120 typename LB::Traits::DomainType n0, n1, n2, n3, n4, n5;
    \n-
    121 };
    \n-
    \n-
    122} // end namespace Dune
    \n-
    123#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    27 template<class D, class R>
    \n+
    \n+\n+
    29 {
    \n+
    30
    \n+
    31 public:
    \n+\n+\n+\n+\n+
    36
    \n+\n+
    40
    \n+
    \n+\n+
    47 basis(s),
    \n+
    48 interpolation(s)
    \n+
    49 {}
    \n+
    \n+
    50
    \n+
    \n+
    51 const typename Traits::LocalBasisType& localBasis () const
    \n+
    52 {
    \n+
    53 return basis;
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    \n+\n+
    57 {
    \n+
    58 return coefficients;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+\n+
    62 {
    \n+
    63 return interpolation;
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    \n+
    67 unsigned int size () const
    \n+
    68 {
    \n+
    69 return basis.size();
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    \n+
    72 static constexpr GeometryType type ()
    \n+
    73 {
    \n+
    74 return GeometryTypes::quadrilateral;
    \n+
    75 }
    \n+
    \n+
    76
    \n+
    77 private:
    \n+\n+
    79 RT4Cube2DLocalCoefficients coefficients;
    \n+\n+
    81 };
    \n+
    \n+
    82}
    \n+
    83#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:26
    \n-
    BDM1Cube3DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:30
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:97
    \n-
    BDM1Cube3DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 64.
    Definition brezzidouglasmarini1cube3dlocalinterpolation.hh:40
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas4cube2d.hh:29
    \n+
    LocalFiniteElementTraits< RT4Cube2DLocalBasis< D, R >, RT4Cube2DLocalCoefficients, RT4Cube2DLocalInterpolation< RT4Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas4cube2d.hh:35
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas4cube2d.hh:67
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas4cube2d.hh:56
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas4cube2d.hh:61
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas4cube2d.hh:51
    \n+
    RT4Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas4cube2d.hh:46
    \n+
    RT4Cube2DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas4cube2d.hh:38
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas4cube2d.hh:72
    \n+
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas4cube2dlocalbasis.hh:29
    \n+
    Layout map for Raviart-Thomas-4 elements on quadrilaterals.
    Definition raviartthomas4cube2dlocalcoefficients.hh:23
    \n+
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas4cube2dlocalinterpolation.hh:25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,134 +1,136 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b1_\bc_\bu_\bb_\be_\b3_\bd\n-brezzidouglasmarini1cube3dlocalinterpolation.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas4cube2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n 14\n-24 template\n-_\b2_\b5 class _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-26 {\n-27\n-28 public:\n-_\b3_\b0 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n-31 {\n-32 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n-33 }\n-34\n-_\b4_\b0 _\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(unsigned int s)\n-41 {\n-42 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n-43 if (s & 1)\n-44 {\n-45 sign0 = -1.0;\n-46 }\n-47 if (s & 2)\n-48 {\n-49 sign1 = -1.0;\n-50 }\n-51 if (s & 4)\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+27 template\n+_\b2_\b8 class _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+29 {\n+30\n+31 public:\n+32 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+33 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+34 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b5 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+36\n+_\b3_\b8 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+39 {}\n+40\n+_\b4_\b6 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+47 basis(s),\n+48 interpolation(s)\n+49 {}\n+50\n+_\b5_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n 52 {\n-53 sign2 = -1.0;\n+53 return basis;\n 54 }\n-55 if (s & 8)\n-56 {\n-57 sign3 = -1.0;\n-58 }\n-59 if (s & 16)\n-60 {\n-61 sign4 = -1.0;\n-62 }\n-63 if (s & 32)\n-64 {\n-65 sign5 = -1.0;\n-66 }\n-67\n-68 n0[0] = -1.0;\n-69 n0[1] = 0.0;\n-70 n0[2] = 0.0;\n-71 n1[0] = 1.0;\n-72 n1[1] = 0.0;\n-73 n1[2] = 0.0;\n-74 n2[0] = 0.0;\n-75 n2[1] = -1.0;\n-76 n2[2] = 0.0;\n-77 n3[0] = 0.0;\n-78 n3[1] = 1.0;\n-79 n3[2] = 0.0;\n-80 n4[0] = 0.0;\n-81 n4[1] = 0.0;\n-82 n4[2] = -1.0;\n-83 n5[0] = 0.0;\n-84 n5[1] = 0.0;\n-85 n5[2] = 1.0;\n-86 }\n-87\n-96 template\n-_\b9_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const\n-98 {\n-99 // f gives v*outer normal at a point on the edge!\n-100 typedef typename LB::Traits::RangeFieldType Scalar;\n-101 //typedef typename LB::Traits::DomainFieldType Vector;\n-102\n-103 DUNE_THROW( NotImplemented, \"Interpolation for BDM1Cube3D finite elements\n-is not implemented.\" );\n-104\n-105 out.resize(18);\n-106 fill(out.begin(), out.end(), 0.0);\n-107\n-108 const int qOrder = 4;\n-109 const QuadratureRule& rule = QuadratureRules::rule\n-(GeometryTypes::cube(1), qOrder);\n-110\n-111 for (typename QuadratureRule::const_iterator it = rule.begin();\n-112 it != rule.end(); ++it)\n-113 {\n-114 // TODO: write interpolation\n-115 }\n-116 }\n-117\n-118 private:\n-119 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3, sign4,\n-sign5;\n-120 typename LB::Traits::DomainType n0, n1, n2, n3, n4, n5;\n-121 };\n-122} // end namespace Dune\n-123#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH\n+55\n+_\b5_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+57 {\n+58 return coefficients;\n+59 }\n+60\n+_\b6_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+62 {\n+63 return interpolation;\n+64 }\n+65\n+_\b6_\b7 unsigned int _\bs_\bi_\bz_\be () const\n+68 {\n+69 return basis.size();\n+70 }\n+71\n+_\b7_\b2 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+73 {\n+74 return GeometryTypes::quadrilateral;\n+75 }\n+76\n+77 private:\n+78 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+79 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+80 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+81 };\n+82}\n+83#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM1Cube3DLocalInterpolation()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT4Cube2DLocalBasis< D, R >,\n+RT4Cube2DLocalCoefficients, RT4Cube2DLocalInterpolation< RT4Cube2DLocalBasis<\n+D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT4Cube2DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT4Cube2DLocalFiniteElement()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM1Cube3DLocalInterpolation(unsigned int s)\n-Make set number s, where 0 <= s < 64.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini1cube3dlocalinterpolation.hh:40\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Second order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-4 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Second order Raviart-Thomas shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalinterpolation.hh:25\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas4cube2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2simplex2dlocalbasis.hh File Reference
    \n+
    raviartthomas4cube2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <bitset>
    \n+
    #include <bitset>
    \n #include <numeric>
    \n #include <vector>
    \n #include <dune/common/fmatrix.hh>
    \n #include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM2Simplex2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
    class  Dune::RT4Cube2DLocalBasis< D, R >
     Second order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,26 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini2simplex2dlocalbasis.hh File Reference\n-#include \n+raviartthomas4cube2dlocalbasis.hh File Reference\n #include \n #include \n #include \n #include \n #include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 Second order Raviart-Thomas shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas4cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,334 +70,814 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2simplex2dlocalbasis.hh
    \n+
    raviartthomas4cube2dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <bitset>
    \n-
    10#include <numeric>
    \n-
    11#include <vector>
    \n-
    12
    \n-
    13#include <dune/common/fmatrix.hh>
    \n-
    14
    \n-
    15#include "../../common/localbasis.hh"
    \n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    28 template<class D, class R>
    \n-
    \n-\n-
    30 {
    \n-
    31
    \n-
    32 public:
    \n-\n-
    34 R,2,Dune::FieldVector<R,2>,
    \n-
    35 Dune::FieldMatrix<R,2,2> > Traits;
    \n-
    36
    \n-
    \n-\n-
    39 {
    \n-
    40 for (size_t i=0; i<3; i++)
    \n-
    41 sign_[i] = 1.0;
    \n-
    42 }
    \n+
    8#include <bitset>
    \n+
    9#include <numeric>
    \n+
    10#include <vector>
    \n+
    11
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13
    \n+
    14#include "../../common/localbasis.hh"
    \n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    27 template<class D, class R>
    \n+
    \n+\n+
    29 {
    \n+
    30
    \n+
    31 public:
    \n+
    32 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    33 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    34
    \n+
    \n+
    40 RT4Cube2DLocalBasis (std::bitset<4> s = 0)
    \n+
    41 {
    \n+
    42 sign0 = (s[0]) ? -1.0 : 1.0;
    \n+
    43 sign1 = (s[1]) ? -1.0 : 1.0;
    \n+
    44 sign2 = (s[2]) ? -1.0 : 1.0;
    \n+
    45 sign3 = (s[3]) ? -1.0 : 1.0;
    \n+
    46 }
    \n
    \n-
    43
    \n+
    47
    \n
    \n-
    49 BDM2Simplex2DLocalBasis(std::bitset<3> s)
    \n-
    50 {
    \n-
    51 for (size_t i=0; i<3; i++)
    \n-
    52 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    \n-
    56 unsigned int size() const
    \n-
    57 {
    \n-
    58 return 12;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-
    67 inline void evaluateFunction(const typename Traits::DomainType& in,
    \n-
    68 std::vector<typename Traits::RangeType>& out) const
    \n-
    69 {
    \n-
    70 out.resize(size());
    \n-
    71
    \n-
    72 out[0][0] = sign_[0]*(-2*in[0]*in[1] + in[0]*in[0]);
    \n-
    73 out[0][1] = sign_[0]*(-1 + 6*in[1] -2*in[0]*in[1] - 5*in[1]*in[1]);
    \n-
    74
    \n-
    75 out[1][0] = 1.5*in[0] + 3*in[0]*in[1] - 4.5*in[0]*in[0];
    \n-
    76 out[1][1] = -3 + 6*in[0] + 10.5*in[1] - 15*in[0]*in[1] - 7.5*in[1]*in[1];
    \n+
    49 unsigned int size () const
    \n+
    50 {
    \n+
    51 return 60;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+
    60 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    61 std::vector<typename Traits::RangeType>& out) const
    \n+
    62 {
    \n+
    63 out.resize(60);
    \n+
    64
    \n+
    65 auto const& x = in[0], y = in[1];
    \n+
    66
    \n+
    67 const auto l1_x = 2*x - 1;
    \n+
    68 const auto l2_x = x*(6*x - 6) + 1;
    \n+
    69 const auto l3_x = x*(x*(20*x - 30) + 12) - 1;
    \n+
    70 const auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;
    \n+
    71 const auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;
    \n+
    72 const auto l1_y = 2*y - 1;
    \n+
    73 const auto l2_y = y*(6*y - 6) + 1;
    \n+
    74 const auto l3_y = y*(y*(20*y - 30) + 12) - 1;
    \n+
    75 const auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;
    \n+
    76 const auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;
    \n
    77
    \n-
    78 out[2][0] = sign_[0]*(-7.5*in[0] + 5*in[0]*in[1] + 12.5*in[0]*in[0]);
    \n-
    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]);
    \n-
    80
    \n-
    81
    \n-
    82
    \n-
    83 out[3][0] = sign_[1]*(-1 + 6*in[0] - 2*in[0]*in[1] - 5*in[0]*in[0]);
    \n-
    84 out[3][1] = sign_[1]*(-2*in[0]*in[1] + in[1]*in[1]);
    \n-
    85
    \n-
    86 out[4][0] = 3 - 10.5*in[0] - 6*in[1] + 15*in[0]*in[1] + 7.5*in[0]*in[0];
    \n-
    87 out[4][1] = -1.5*in[1] - 3*in[0]*in[1] + 4.5*in[1]*in[1];
    \n+
    78 out[0][0]=sign0*(0.5*(-l4_x)+0.5*l5_x);
    \n+
    79 out[0][1]=0.0;
    \n+
    80 out[1][0]=-(1.5)*l4_x*l1_y+1.5*l5_x*l1_y;
    \n+
    81 out[1][1]=0.0;
    \n+
    82 out[2][0]=sign0*(-(2.5)*l4_x*l2_y+2.5*l5_x*l2_y);
    \n+
    83 out[2][1]=0.0;
    \n+
    84 out[3][0]=-(3.5)*l4_x*l3_y+3.5*l5_x*l3_y;
    \n+
    85 out[3][1]=0.0;
    \n+
    86 out[4][0]=sign0*(-(4.5)*l4_x*l4_y+4.5*l5_x*l4_y);
    \n+
    87 out[4][1]=0.0;
    \n
    88
    \n-
    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]);
    \n-
    90 out[5][1] = sign_[1]*(-7.5*in[1] + 5*in[0]*in[1] + 12.5*in[1]*in[1]);
    \n-
    91
    \n-
    92
    \n-
    93
    \n-
    94 out[6][0] = sign_[2]*(-3*in[0] + 4*in[0]*in[1] + 4*in[0]*in[0]);
    \n-
    95 out[6][1] = sign_[2]*(-3*in[1] + 4*in[0]*in[1] + 4*in[1]*in[1]);
    \n-
    96
    \n-
    97 out[7][0] = -3*in[0] + 6*in[0]*in[0];
    \n-
    98 out[7][1] = 3*in[1] - 6*in[1]*in[1];
    \n+
    89 out[5][0]=sign1*(0.5*l4_x+0.5*l5_x);
    \n+
    90 out[5][1]=0.0;
    \n+
    91 out[6][0]=-(1.5)*l4_x*l1_y-1.5*l5_x*l1_y;
    \n+
    92 out[6][1]=0.0;
    \n+
    93 out[7][0]=sign1*(2.5*l4_x*l2_y+2.5*l5_x*l2_y);
    \n+
    94 out[7][1]=0.0;
    \n+
    95 out[8][0]=-(3.5)*l4_x*l3_y-3.5*l5_x*l3_y;
    \n+
    96 out[8][1]=0.0;
    \n+
    97 out[9][0]=sign1*(4.5*l4_x*l4_y+4.5*l5_x*l4_y);
    \n+
    98 out[9][1]=0.0;
    \n
    99
    \n-
    100 out[8][0] = sign_[2]*(-10*in[0]*in[1] + 5*in[0]*in[0]);
    \n-
    101 out[8][1] = sign_[2]*(-10*in[0]*in[1] + 5*in[1]*in[1]);
    \n-
    102
    \n-
    103
    \n-
    104
    \n-
    105 out[9][0] = 18*in[0] - 12*in[0]*in[1] - 18*in[0]*in[0];
    \n-
    106 out[9][1] = 6*in[1] - 12*in[0]*in[1] - 6*in[1]*in[1];
    \n-
    107
    \n-
    108 out[10][0] = 6*in[0] - 12*in[0]*in[1] - 6*in[0]*in[0];
    \n-
    109 out[10][1] = 18*in[1] - 12*in[0]*in[1] - 18*in[1]*in[1];
    \n+
    100 out[10][0]=0.0;
    \n+
    101 out[10][1]=sign2*(0.5*(-l4_y)+0.5*l5_y);
    \n+
    102 out[11][0]=0.0;
    \n+
    103 out[11][1]=1.5*l1_x*l4_y-1.5*l1_x*l5_y;
    \n+
    104 out[12][0]=0.0;
    \n+
    105 out[12][1]=sign2*(-(2.5)*l2_x*l4_y+2.5*l2_x*l5_y);
    \n+
    106 out[13][0]=0.0;
    \n+
    107 out[13][1]=3.5*l3_x*l4_y-3.5*l3_x*l5_y;
    \n+
    108 out[14][0]=0.0;
    \n+
    109 out[14][1]=sign2*(-(4.5)*l4_x*l4_y+4.5*l4_x*l5_y);
    \n
    110
    \n-
    111 out[11][0] = 90*in[0] - 180*in[0]*in[1] - 90*in[0]*in[0];
    \n-
    112 out[11][1] = -90*in[1] + 180*in[0]*in[1] + 90*in[1]*in[1];
    \n-
    113 }
    \n-
    \n-
    114
    \n-
    \n-
    121 inline void evaluateJacobian(const typename Traits::DomainType& in,
    \n-
    122 std::vector<typename Traits::JacobianType>& out) const
    \n-
    123 {
    \n-
    124 out.resize(size());
    \n-
    125
    \n-
    126 out[0][0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
    \n-
    127 out[0][0][1] = sign_[0]*(-2*in[0]);
    \n-
    128
    \n-
    129 out[0][1][0] = sign_[0]*(-2*in[1]);
    \n-
    130 out[0][1][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
    \n-
    131
    \n-
    132
    \n-
    133 out[1][0][0] = 1.5 + 3*in[1] - 9*in[0];
    \n-
    134 out[1][0][1] = 3*in[0];
    \n-
    135
    \n-
    136 out[1][1][0] = 6 - 15*in[1];
    \n-
    137 out[1][1][1] = 10.5 - 15*in[0] - 15*in[1];
    \n-
    138
    \n-
    139
    \n-
    140 out[2][0][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
    \n-
    141 out[2][0][1] = sign_[0]*(5*in[0]);
    \n-
    142
    \n-
    143 out[2][1][0] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
    \n-
    144 out[2][1][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
    \n-
    145
    \n-
    146
    \n-
    147
    \n-
    148 out[3][0][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
    \n-
    149 out[3][0][1] = sign_[1]*(-2*in[0]);
    \n-
    150
    \n-
    151 out[3][1][0] = sign_[1]*(-2*in[1]);
    \n-
    152 out[3][1][1] = sign_[1]*(-2*in[0] + 2*in[1]);
    \n-
    153
    \n-
    154
    \n-
    155 out[4][0][0] = -10.5 + 15*in[1] + 15*in[0];
    \n-
    156 out[4][0][1] = -6 + 15*in[0];
    \n-
    157
    \n-
    158 out[4][1][0] = -3*in[1];
    \n-
    159 out[4][1][1] = -1.5 - 3*in[0] + 9*in[1];
    \n-
    160
    \n-
    161
    \n-
    162 out[5][0][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
    \n-
    163 out[5][0][1] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
    \n-
    164
    \n-
    165 out[5][1][0] = sign_[1]*(5*in[1]);
    \n-
    166 out[5][1][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
    \n-
    167
    \n-
    168
    \n-
    169
    \n-
    170 out[6][0][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
    \n-
    171 out[6][0][1] = sign_[2]*(4*in[0]);
    \n-
    172
    \n-
    173 out[6][1][0] = sign_[2]*(4*in[1]);
    \n-
    174 out[6][1][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
    \n-
    175
    \n-
    176
    \n-
    177 out[7][0][0] = -3 + 12*in[0];
    \n-
    178 out[7][0][1] = 0;
    \n-
    179
    \n-
    180 out[7][1][0] = 0;
    \n-
    181 out[7][1][1] = 3 - 12*in[1];
    \n-
    182
    \n-
    183
    \n-
    184 out[8][0][0] = sign_[2]*(-10*in[1] + 10*in[0]);
    \n-
    185 out[8][0][1] = sign_[2]*(-10*in[0]);
    \n-
    186
    \n-
    187 out[8][1][0] = sign_[2]*(-10*in[1]);
    \n-
    188 out[8][1][1] = sign_[2]*(-10*in[0] + 10*in[1]);
    \n-
    189
    \n-
    190
    \n-
    191 out[9][0][0] = 18 - 12*in[1] - 36*in[0];
    \n-
    192 out[9][0][1] = -12*in[0];
    \n-
    193
    \n-
    194 out[9][1][0] = -12*in[1];
    \n-
    195 out[9][1][1] = 6 - 12*in[0] - 12*in[1];
    \n-
    196
    \n-
    197 out[10][0][0] = 6 - 12*in[1] - 12*in[0];
    \n-
    198 out[10][0][1] = -12*in[0];
    \n-
    199
    \n-
    200 out[10][1][0] = -12*in[1];
    \n-
    201 out[10][1][1] = 18 - 12*in[0] - 36*in[1];
    \n-
    202
    \n-
    203 out[11][0][0] = 90 - 180*in[1] - 180*in[0];
    \n-
    204 out[11][0][1] = -180*in[0];
    \n-
    205
    \n-
    206 out[11][1][0] = 180*in[1];
    \n-
    207 out[11][1][1] = -90 + 180*in[0] + 180*in[1];
    \n-
    208 }
    \n-
    \n-
    209
    \n-
    \n-
    211 void partial (const std::array<unsigned int, 2>& order,
    \n-
    212 const typename Traits::DomainType& in, // position
    \n-
    213 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    214 {
    \n-
    215 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    216 if (totalOrder == 0) {
    \n-
    217 evaluateFunction(in, out);
    \n-
    218 } else if (totalOrder == 1) {
    \n-
    219 out.resize(size());
    \n-
    220 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    221
    \n-
    222 switch (direction) {
    \n-
    223 case 0:
    \n-
    224 out[0][0] = sign_[0]*(-2*in[1] + 2*in[0]);
    \n-
    225 out[0][1] = sign_[0]*(-2*in[1]);
    \n+
    111 out[15][0]=0.0;
    \n+
    112 out[15][1]=sign3*(0.5*l4_y+0.5*l5_y);
    \n+
    113 out[16][0]=0.0;
    \n+
    114 out[16][1]=1.5*l1_x*l4_y+1.5*l1_x*l5_y;
    \n+
    115 out[17][0]=0.0;
    \n+
    116 out[17][1]=sign3*(2.5*l2_x*l4_y+2.5*l2_x*l5_y);
    \n+
    117 out[18][0]=0.0;
    \n+
    118 out[18][1]=3.5*l3_x*l4_y+3.5*l3_x*l5_y;
    \n+
    119 out[19][0]=0.0;
    \n+
    120 out[19][1]=sign3*(4.5*l4_x*l4_y+4.5*l4_x*l5_y);
    \n+
    121
    \n+
    122 out[20][0]=1.0-l4_x;
    \n+
    123 out[20][1]=0.0;
    \n+
    124 out[21][0]=3.0*l1_y-3.0*l4_x*l1_y;
    \n+
    125 out[21][1]=0.0;
    \n+
    126 out[22][0]=5.0*l2_y-5.0*l4_x*l2_y;
    \n+
    127 out[22][1]=0.0;
    \n+
    128 out[23][0]=7.0*l3_y-7.0*l4_x*l3_y;
    \n+
    129 out[23][1]=0.0;
    \n+
    130 out[24][0]=9.0*l4_y-9.0*l4_x*l4_y;
    \n+
    131 out[24][1]=0.0;
    \n+
    132 out[25][0]=3.0*l1_x-3.0*l5_x;
    \n+
    133 out[25][1]=0.0;
    \n+
    134 out[26][0]=9.0*l1_x*l1_y-9.0*l5_x*l1_y;
    \n+
    135 out[26][1]=0.0;
    \n+
    136 out[27][0]=15.0*l1_x*l2_y-15.0*l5_x*l2_y;
    \n+
    137 out[27][1]=0.0;
    \n+
    138 out[28][0]=21.0*l1_x*l3_y-21.0*l5_x*l3_y;
    \n+
    139 out[28][1]=0.0;
    \n+
    140 out[29][0]=27.0*l1_x*l4_y-27.0*l5_x*l4_y;
    \n+
    141 out[29][1]=0.0;
    \n+
    142 out[30][0]=5.0*l2_x-5.0*l4_x;
    \n+
    143 out[30][1]=0.0;
    \n+
    144 out[31][0]=15.0*l2_x*l1_y-15.0*l4_x*l1_y;
    \n+
    145 out[31][1]=0.0;
    \n+
    146 out[32][0]=25.0*l2_x*l2_y-25.0*l4_x*l2_y;
    \n+
    147 out[32][1]=0.0;
    \n+
    148 out[33][0]=35.0*l2_x*l3_y-35.0*l4_x*l3_y;
    \n+
    149 out[33][1]=0.0;
    \n+
    150 out[34][0]=45.0*l2_x*l4_y-45.0*l4_x*l4_y;
    \n+
    151 out[34][1]=0.0;
    \n+
    152 out[35][0]=7.0*l3_x-7.0*l5_x;
    \n+
    153 out[35][1]=0.0;
    \n+
    154 out[36][0]=21.0*l3_x*l1_y-21.0*l5_x*l1_y;
    \n+
    155 out[36][1]=0.0;
    \n+
    156 out[37][0]=35.0*l3_x*l2_y-35.0*l5_x*l2_y;
    \n+
    157 out[37][1]=0.0;
    \n+
    158 out[38][0]=49.0*l3_x*l3_y-49.0*l5_x*l3_y;
    \n+
    159 out[38][1]=0.0;
    \n+
    160 out[39][0]=63.0*l3_x*l4_y-63.0*l5_x*l4_y;
    \n+
    161 out[39][1]=0.0;
    \n+
    162 out[40][0]=0.0;
    \n+
    163 out[40][1]=1.0-l4_y;
    \n+
    164 out[41][0]=0.0;
    \n+
    165 out[41][1]=3.0*l1_y-3.0*l5_y;
    \n+
    166 out[42][0]=0.0;
    \n+
    167 out[42][1]=5.0*l2_y-5.0*l4_y;
    \n+
    168 out[43][0]=0.0;
    \n+
    169 out[43][1]=7.0*l3_y-7.0*l5_y;
    \n+
    170 out[44][0]=0.0;
    \n+
    171 out[44][1]=3.0*l1_x-3.0*l1_x*l4_y;
    \n+
    172 out[45][0]=0.0;
    \n+
    173 out[45][1]=9.0*l1_x*l1_y-9.0*l1_x*l5_y;
    \n+
    174 out[46][0]=0.0;
    \n+
    175 out[46][1]=15.0*l1_x*l2_y-15.0*l1_x*l4_y;
    \n+
    176 out[47][0]=0.0;
    \n+
    177 out[47][1]=21.0*l1_x*l3_y-21.0*l1_x*l5_y;
    \n+
    178 out[48][0]=0.0;
    \n+
    179 out[48][1]=5.0*l2_x-5.0*l2_x*l4_y;
    \n+
    180 out[49][0]=0.0;
    \n+
    181 out[49][1]=15.0*l2_x*l1_y-15.0*l2_x*l5_y;
    \n+
    182 out[50][0]=0.0;
    \n+
    183 out[50][1]=25.0*l2_x*l2_y-25.0*l2_x*l4_y;
    \n+
    184 out[51][0]=0.0;
    \n+
    185 out[51][1]=35.0*l2_x*l3_y-35.0*l2_x*l5_y;
    \n+
    186 out[52][0]=0.0;
    \n+
    187 out[52][1]=7.0*l3_x-7.0*l3_x*l4_y;
    \n+
    188 out[53][0]=0.0;
    \n+
    189 out[53][1]=21.0*l3_x*l1_y-21.0*l3_x*l5_y;
    \n+
    190 out[54][0]=0.0;
    \n+
    191 out[54][1]=35.0*l3_x*l2_y-35.0*l3_x*l4_y;
    \n+
    192 out[55][0]=0.0;
    \n+
    193 out[55][1]=49.0*l3_x*l3_y-49.0*l3_x*l5_y;
    \n+
    194 out[56][0]=0.0;
    \n+
    195 out[56][1]=9.0*l4_x-9.0*l4_x*l4_y;
    \n+
    196 out[57][0]=0.0;
    \n+
    197 out[57][1]=27.0*l4_x*l1_y-27.0*l4_x*l5_y;
    \n+
    198 out[58][0]=0.0;
    \n+
    199 out[58][1]=45.0*l4_x*l2_y-45.0*l4_x*l4_y;
    \n+
    200 out[59][0]=0.0;
    \n+
    201 out[59][1]=63.0*l4_x*l3_y-63.0*l4_x*l5_y;
    \n+
    202 }
    \n+
    \n+
    203
    \n+
    \n+
    210 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    211 std::vector<typename Traits::JacobianType>& out) const
    \n+
    212 {
    \n+
    213 out.resize(60);
    \n+
    214 auto const& x = in[0], y = in[1];
    \n+
    215
    \n+
    216 const auto l1_x = 2*x - 1;
    \n+
    217 const auto l2_x = x*(6*x - 6) + 1;
    \n+
    218 const auto l3_x = x*(x*(20*x - 30) + 12) - 1;
    \n+
    219 const auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;
    \n+
    220 const auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;
    \n+
    221 const auto l1_y = 2*y - 1;
    \n+
    222 const auto l2_y = y*(6*y - 6) + 1;
    \n+
    223 const auto l3_y = y*(y*(20*y - 30) + 12) - 1;
    \n+
    224 const auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;
    \n+
    225 const auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;
    \n
    226
    \n-
    227 out[1][0] = 1.5 + 3*in[1] - 9*in[0];
    \n-
    228 out[1][1] = 6 - 15*in[1];
    \n-
    229
    \n-
    230 out[2][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);
    \n-
    231 out[2][1] = sign_[0]*(30 - 25*in[1] - 60*in[0]);
    \n-
    232
    \n-
    233 out[3][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);
    \n-
    234 out[3][1] = sign_[1]*(-2*in[1]);
    \n-
    235
    \n-
    236 out[4][0] = -10.5 + 15*in[1] + 15*in[0];
    \n-
    237 out[4][1] = -3*in[1];
    \n-
    238
    \n-
    239 out[5][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);
    \n-
    240 out[5][1] = sign_[1]*(5*in[1]);
    \n-
    241
    \n-
    242 out[6][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);
    \n-
    243 out[6][1] = sign_[2]*(4*in[1]);
    \n-
    244
    \n-
    245 out[7][0] = -3 + 12*in[0];
    \n-
    246 out[7][1] = 0;
    \n-
    247
    \n-
    248 out[8][0] = sign_[2]*(-10*in[1] + 10*in[0]);
    \n-
    249 out[8][1] = sign_[2]*(-10*in[1]);
    \n-
    250
    \n-
    251 out[9][0] = 18 - 12*in[1] - 36*in[0];
    \n-
    252 out[9][1] = -12*in[1];
    \n-
    253
    \n-
    254 out[10][0] = 6 - 12*in[1] - 12*in[0];
    \n-
    255 out[10][1] = -12*in[1];
    \n-
    256
    \n-
    257 out[11][0] = 90 - 180*in[1] - 180*in[0];
    \n-
    258 out[11][1] = 180*in[1];
    \n-
    259 break;
    \n-
    260 case 1:
    \n-
    261 out[0][0] = sign_[0]*(-2*in[0]);
    \n-
    262 out[0][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);
    \n-
    263
    \n-
    264 out[1][0] = 3*in[0];
    \n-
    265 out[1][1] = 10.5 - 15*in[0] - 15*in[1];
    \n-
    266
    \n-
    267 out[2][0] = sign_[0]*(5*in[0]);
    \n-
    268 out[2][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);
    \n-
    269
    \n-
    270 out[3][0] = sign_[1]*(-2*in[0]);
    \n-
    271 out[3][1] = sign_[1]*(-2*in[0] + 2*in[1]);
    \n-
    272
    \n-
    273 out[4][0] = -6 + 15*in[0];
    \n-
    274 out[4][1] = -1.5 - 3*in[0] + 9*in[1];
    \n-
    275
    \n-
    276 out[5][0] = sign_[1]*(30 - 25*in[0] - 60*in[1]);
    \n-
    277 out[5][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);
    \n-
    278
    \n-
    279 out[6][0] = sign_[2]*(4*in[0]);
    \n-
    280 out[6][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);
    \n-
    281
    \n-
    282 out[7][0] = 0;
    \n-
    283 out[7][1] = 3 - 12*in[1];
    \n-
    284
    \n-
    285 out[8][0] = sign_[2]*(-10*in[0]);
    \n-
    286 out[8][1] = sign_[2]*(-10*in[0] + 10*in[1]);
    \n-
    287
    \n-
    288 out[9][0] = -12*in[0];
    \n-
    289 out[9][1] = 6 - 12*in[0] - 12*in[1];
    \n-
    290
    \n-
    291 out[10][0] = -12*in[0];
    \n-
    292 out[10][1] = 18 - 12*in[0] - 36*in[1];
    \n-
    293
    \n-
    294 out[11][0] = -180*in[0];
    \n-
    295 out[11][1] = -90 + 180*in[0] + 180*in[1];
    \n-
    296 break;
    \n-
    297 default:
    \n-
    298 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    299 }
    \n-
    300 } else {
    \n-
    301 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    302 }
    \n-
    303 }
    \n-
    \n-
    304
    \n-
    \n-
    306 unsigned int order() const
    \n-
    307 {
    \n-
    308 return 2; // TODO: check whether this is not order 3
    \n-
    309 }
    \n-
    \n-
    310
    \n-
    311 private:
    \n-
    312 std::array<R,3> sign_;
    \n-
    313 };
    \n-
    \n-
    314} // end namespace Dune
    \n-
    315#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
    \n+
    227 const auto dxl1_x = 2.0;
    \n+
    228 const auto dxl2_x = 12*x - 6;
    \n+
    229 const auto dxl3_x = x*(60*x - 60) + 12;
    \n+
    230 const auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;
    \n+
    231 const auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;
    \n+
    232 const auto dyl1_y = 2.0;
    \n+
    233 const auto dyl2_y = 12*y - 6;
    \n+
    234 const auto dyl3_y = y*(60*y - 60) + 12;
    \n+
    235 const auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;
    \n+
    236 const auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;
    \n+
    237
    \n+
    238 // x-component
    \n+
    239 out[0][0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);
    \n+
    240 out[0][1][0]=0.0;
    \n+
    241 out[1][0][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;
    \n+
    242 out[1][1][0]=0.0;
    \n+
    243 out[2][0][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
    \n+
    244 out[2][1][0]=0.0;
    \n+
    245 out[3][0][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;
    \n+
    246 out[3][1][0]=0.0;
    \n+
    247 out[4][0][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
    \n+
    248 out[4][1][0]=0.0;
    \n+
    249
    \n+
    250 out[5][0][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);
    \n+
    251 out[5][1][0]=0.0;
    \n+
    252 out[6][0][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;
    \n+
    253 out[6][1][0]=0.0;
    \n+
    254 out[7][0][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
    \n+
    255 out[7][1][0]=0.0;
    \n+
    256 out[8][0][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;
    \n+
    257 out[8][1][0]=0.0;
    \n+
    258 out[9][0][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
    \n+
    259 out[9][1][0]=0.0;
    \n+
    260
    \n+
    261 out[10][0][0]=0.0;
    \n+
    262 out[10][1][0]=0.0;
    \n+
    263 out[11][0][0]=0.0;
    \n+
    264 out[11][1][0]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;
    \n+
    265 out[12][0][0]=0.0;
    \n+
    266 out[12][1][0]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
    \n+
    267 out[13][0][0]=0.0;
    \n+
    268 out[13][1][0]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;
    \n+
    269 out[14][0][0]=0.0;
    \n+
    270 out[14][1][0]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
    \n+
    271
    \n+
    272 out[15][0][0]=0.0;
    \n+
    273 out[15][1][0]=0.0;
    \n+
    274 out[16][0][0]=0.0;
    \n+
    275 out[16][1][0]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;
    \n+
    276 out[17][0][0]=0.0;
    \n+
    277 out[17][1][0]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
    \n+
    278 out[18][0][0]=0.0;
    \n+
    279 out[18][1][0]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;
    \n+
    280 out[19][0][0]=0.0;
    \n+
    281 out[19][1][0]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
    \n+
    282
    \n+
    283 out[20][0][0]=-dxl4_x;
    \n+
    284 out[20][1][0]=0.0;
    \n+
    285 out[21][0][0]=-3.0*dxl4_x*l1_y;
    \n+
    286 out[21][1][0]=0.0;
    \n+
    287 out[22][0][0]=-5.0*dxl4_x*l2_y;
    \n+
    288 out[22][1][0]=0.0;
    \n+
    289 out[23][0][0]=-7.0*dxl4_x*l3_y;
    \n+
    290 out[23][1][0]=0.0;
    \n+
    291 out[24][0][0]=-9.0*dxl4_x*l4_y;
    \n+
    292 out[24][1][0]=0.0;
    \n+
    293 out[25][0][0]=3.0*dxl1_x-3.0*dxl5_x;
    \n+
    294 out[25][1][0]=0.0;
    \n+
    295 out[26][0][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;
    \n+
    296 out[26][1][0]=0.0;
    \n+
    297 out[27][0][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;
    \n+
    298 out[27][1][0]=0.0;
    \n+
    299 out[28][0][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;
    \n+
    300 out[28][1][0]=0.0;
    \n+
    301 out[29][0][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;
    \n+
    302 out[29][1][0]=0.0;
    \n+
    303 out[30][0][0]=5.0*dxl2_x-5.0*dxl4_x;
    \n+
    304 out[30][1][0]=0.0;
    \n+
    305 out[31][0][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;
    \n+
    306 out[31][1][0]=0.0;
    \n+
    307 out[32][0][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;
    \n+
    308 out[32][1][0]=0.0;
    \n+
    309 out[33][0][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;
    \n+
    310 out[33][1][0]=0.0;
    \n+
    311 out[34][0][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;
    \n+
    312 out[34][1][0]=0.0;
    \n+
    313 out[35][0][0]=7.0*dxl3_x-7.0*dxl5_x;
    \n+
    314 out[35][1][0]=0.0;
    \n+
    315 out[36][0][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;
    \n+
    316 out[36][1][0]=0.0;
    \n+
    317 out[37][0][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;
    \n+
    318 out[37][1][0]=0.0;
    \n+
    319 out[38][0][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;
    \n+
    320 out[38][1][0]=0.0;
    \n+
    321 out[39][0][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;
    \n+
    322 out[39][1][0]=0.0;
    \n+
    323 out[40][0][0]=0.0;
    \n+
    324 out[40][1][0]=0.0;
    \n+
    325 out[41][0][0]=0.0;
    \n+
    326 out[41][1][0]=0.0;
    \n+
    327 out[42][0][0]=0.0;
    \n+
    328 out[42][1][0]=0.0;
    \n+
    329 out[43][0][0]=0.0;
    \n+
    330 out[43][1][0]=0.0;
    \n+
    331 out[44][0][0]=0.0;
    \n+
    332 out[44][1][0]=3.0*dxl1_x-3.0*dxl1_x*l4_y;
    \n+
    333 out[45][0][0]=0.0;
    \n+
    334 out[45][1][0]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;
    \n+
    335 out[46][0][0]=0.0;
    \n+
    336 out[46][1][0]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;
    \n+
    337 out[47][0][0]=0.0;
    \n+
    338 out[47][1][0]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;
    \n+
    339 out[48][0][0]=0.0;
    \n+
    340 out[48][1][0]=5.0*dxl2_x-5.0*dxl2_x*l4_y;
    \n+
    341 out[49][0][0]=0.0;
    \n+
    342 out[49][1][0]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;
    \n+
    343 out[50][0][0]=0.0;
    \n+
    344 out[50][1][0]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;
    \n+
    345 out[51][0][0]=0.0;
    \n+
    346 out[51][1][0]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;
    \n+
    347 out[52][0][0]=0.0;
    \n+
    348 out[52][1][0]=7.0*dxl3_x-7.0*dxl3_x*l4_y;
    \n+
    349 out[53][0][0]=0.0;
    \n+
    350 out[53][1][0]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;
    \n+
    351 out[54][0][0]=0.0;
    \n+
    352 out[54][1][0]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;
    \n+
    353 out[55][0][0]=0.0;
    \n+
    354 out[55][1][0]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;
    \n+
    355 out[56][0][0]=0.0;
    \n+
    356 out[56][1][0]=9.0*dxl4_x-9.0*dxl4_x*l4_y;
    \n+
    357 out[57][0][0]=0.0;
    \n+
    358 out[57][1][0]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;
    \n+
    359 out[58][0][0]=0.0;
    \n+
    360 out[58][1][0]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;
    \n+
    361 out[59][0][0]=0.0;
    \n+
    362 out[59][1][0]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;
    \n+
    363
    \n+
    364 // y-component
    \n+
    365 out[0][0][1]=0.0;
    \n+
    366 out[0][1][1]=0.0;
    \n+
    367 out[1][0][1]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;
    \n+
    368 out[1][1][1]=0.0;
    \n+
    369 out[2][0][1]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
    \n+
    370 out[2][1][1]=0.0;
    \n+
    371 out[3][0][1]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;
    \n+
    372 out[3][1][1]=0.0;
    \n+
    373 out[4][0][1]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
    \n+
    374 out[4][1][1]=0.0;
    \n+
    375
    \n+
    376 out[5][0][1]=0.0;
    \n+
    377 out[5][1][1]=0.0;
    \n+
    378 out[6][0][1]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;
    \n+
    379 out[6][1][1]=0.0;
    \n+
    380 out[7][0][1]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
    \n+
    381 out[7][1][1]=0.0;
    \n+
    382 out[8][0][1]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;
    \n+
    383 out[8][1][1]=0.0;
    \n+
    384 out[9][0][1]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
    \n+
    385 out[9][1][1]=0.0;
    \n+
    386
    \n+
    387 out[10][0][1]=0.0;
    \n+
    388 out[10][1][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);
    \n+
    389 out[11][0][1]=0.0;
    \n+
    390 out[11][1][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;
    \n+
    391 out[12][0][1]=0.0;
    \n+
    392 out[12][1][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
    \n+
    393 out[13][0][1]=0.0;
    \n+
    394 out[13][1][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;
    \n+
    395 out[14][0][1]=0.0;
    \n+
    396 out[14][1][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
    \n+
    397
    \n+
    398 out[15][0][1]=0.0;
    \n+
    399 out[15][1][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);
    \n+
    400 out[16][0][1]=0.0;
    \n+
    401 out[16][1][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;
    \n+
    402 out[17][0][1]=0.0;
    \n+
    403 out[17][1][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
    \n+
    404 out[18][0][1]=0.0;
    \n+
    405 out[18][1][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;
    \n+
    406 out[19][0][1]=0.0;
    \n+
    407 out[19][1][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
    \n+
    408
    \n+
    409 out[20][0][1]=0.0;
    \n+
    410 out[20][1][1]=0.0;
    \n+
    411 out[21][0][1]=3.0*dyl1_y-3.0*l4_x*dyl1_y;
    \n+
    412 out[21][1][1]=0.0;
    \n+
    413 out[22][0][1]=5.0*dyl2_y-5.0*l4_x*dyl2_y;
    \n+
    414 out[22][1][1]=0.0;
    \n+
    415 out[23][0][1]=7.0*dyl3_y-7.0*l4_x*dyl3_y;
    \n+
    416 out[23][1][1]=0.0;
    \n+
    417 out[24][0][1]=9.0*dyl4_y-9.0*l4_x*dyl4_y;
    \n+
    418 out[24][1][1]=0.0;
    \n+
    419 out[25][0][1]=0.0;
    \n+
    420 out[25][1][1]=0.0;
    \n+
    421 out[26][0][1]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;
    \n+
    422 out[26][1][1]=0.0;
    \n+
    423 out[27][0][1]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;
    \n+
    424 out[27][1][1]=0.0;
    \n+
    425 out[28][0][1]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;
    \n+
    426 out[28][1][1]=0.0;
    \n+
    427 out[29][0][1]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;
    \n+
    428 out[29][1][1]=0.0;
    \n+
    429 out[30][0][1]=0.0;
    \n+
    430 out[30][1][1]=0.0;
    \n+
    431 out[31][0][1]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;
    \n+
    432 out[31][1][1]=0.0;
    \n+
    433 out[32][0][1]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;
    \n+
    434 out[32][1][1]=0.0;
    \n+
    435 out[33][0][1]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;
    \n+
    436 out[33][1][1]=0.0;
    \n+
    437 out[34][0][1]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;
    \n+
    438 out[34][1][1]=0.0;
    \n+
    439 out[35][0][1]=0.0;
    \n+
    440 out[35][1][1]=0.0;
    \n+
    441 out[36][0][1]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;
    \n+
    442 out[36][1][1]=0.0;
    \n+
    443 out[37][0][1]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;
    \n+
    444 out[37][1][1]=0.0;
    \n+
    445 out[38][0][1]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;
    \n+
    446 out[38][1][1]=0.0;
    \n+
    447 out[39][0][1]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;
    \n+
    448 out[39][1][1]=0.0;
    \n+
    449 out[40][0][1]=0.0;
    \n+
    450 out[40][1][1]=-dyl4_y;
    \n+
    451 out[41][0][1]=0.0;
    \n+
    452 out[41][1][1]=3.0*dyl1_y-3.0*dyl5_y;
    \n+
    453 out[42][0][1]=0.0;
    \n+
    454 out[42][1][1]=5.0*dyl2_y-5.0*dyl4_y;
    \n+
    455 out[43][0][1]=0.0;
    \n+
    456 out[43][1][1]=7.0*dyl3_y-7.0*dyl5_y;
    \n+
    457 out[44][0][1]=0.0;
    \n+
    458 out[44][1][1]=-3.0*l1_x*dyl4_y;
    \n+
    459 out[45][0][1]=0.0;
    \n+
    460 out[45][1][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;
    \n+
    461 out[46][0][1]=0.0;
    \n+
    462 out[46][1][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;
    \n+
    463 out[47][0][1]=0.0;
    \n+
    464 out[47][1][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;
    \n+
    465 out[48][0][1]=0.0;
    \n+
    466 out[48][1][1]=-5.0*l2_x*dyl4_y;
    \n+
    467 out[49][0][1]=0.0;
    \n+
    468 out[49][1][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;
    \n+
    469 out[50][0][1]=0.0;
    \n+
    470 out[50][1][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;
    \n+
    471 out[51][0][1]=0.0;
    \n+
    472 out[51][1][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;
    \n+
    473 out[52][0][1]=0.0;
    \n+
    474 out[52][1][1]=-7.0*l3_x*dyl4_y;
    \n+
    475 out[53][0][1]=0.0;
    \n+
    476 out[53][1][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;
    \n+
    477 out[54][0][1]=0.0;
    \n+
    478 out[54][1][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;
    \n+
    479 out[55][0][1]=0.0;
    \n+
    480 out[55][1][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;
    \n+
    481 out[56][0][1]=0.0;
    \n+
    482 out[56][1][1]=-9.0*l4_x*dyl4_y;
    \n+
    483 out[57][0][1]=0.0;
    \n+
    484 out[57][1][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;
    \n+
    485 out[58][0][1]=0.0;
    \n+
    486 out[58][1][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;
    \n+
    487 out[59][0][1]=0.0;
    \n+
    488 out[59][1][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;
    \n+
    489 }
    \n+
    \n+
    490
    \n+
    \n+
    492 void partial (const std::array<unsigned int, 2>& order,
    \n+
    493 const typename Traits::DomainType& in, // position
    \n+
    494 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    495 {
    \n+
    496 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    497 if (totalOrder == 0) {
    \n+
    498 evaluateFunction(in, out);
    \n+
    499 } else if (totalOrder == 1) {
    \n+
    500 out.resize(size());
    \n+
    501 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    502 auto const& x = in[0], y = in[1];
    \n+
    503
    \n+
    504 auto l1_x = 2*x - 1;
    \n+
    505 auto l2_x = x*(6*x - 6) + 1;
    \n+
    506 auto l3_x = x*(x*(20*x - 30) + 12) - 1;
    \n+
    507 auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;
    \n+
    508 auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;
    \n+
    509 auto l1_y = 2*y - 1;
    \n+
    510 auto l2_y = y*(6*y - 6) + 1;
    \n+
    511 auto l3_y = y*(y*(20*y - 30) + 12) - 1;
    \n+
    512 auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;
    \n+
    513 auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;
    \n+
    514
    \n+
    515 if (direction == 0) {
    \n+
    516 auto dxl1_x = 2.0;
    \n+
    517 auto dxl2_x = 12*x - 6;
    \n+
    518 auto dxl3_x = x*(60*x - 60) + 12;
    \n+
    519 auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;
    \n+
    520 auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;
    \n+
    521
    \n+
    522 out[0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);
    \n+
    523 out[0][1]=0.0;
    \n+
    524 out[1][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;
    \n+
    525 out[1][1]=0.0;
    \n+
    526 out[2][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
    \n+
    527 out[2][1]=0.0;
    \n+
    528 out[3][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;
    \n+
    529 out[3][1]=0.0;
    \n+
    530 out[4][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
    \n+
    531 out[4][1]=0.0;
    \n+
    532
    \n+
    533 out[5][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);
    \n+
    534 out[5][1]=0.0;
    \n+
    535 out[6][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;
    \n+
    536 out[6][1]=0.0;
    \n+
    537 out[7][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);
    \n+
    538 out[7][1]=0.0;
    \n+
    539 out[8][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;
    \n+
    540 out[8][1]=0.0;
    \n+
    541 out[9][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);
    \n+
    542 out[9][1]=0.0;
    \n+
    543
    \n+
    544 out[10][0]=0.0;
    \n+
    545 out[10][1]=0.0;
    \n+
    546 out[11][0]=0.0;
    \n+
    547 out[11][1]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;
    \n+
    548 out[12][0]=0.0;
    \n+
    549 out[12][1]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
    \n+
    550 out[13][0]=0.0;
    \n+
    551 out[13][1]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;
    \n+
    552 out[14][0]=0.0;
    \n+
    553 out[14][1]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
    \n+
    554
    \n+
    555 out[15][0]=0.0;
    \n+
    556 out[15][1]=0.0;
    \n+
    557 out[16][0]=0.0;
    \n+
    558 out[16][1]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;
    \n+
    559 out[17][0]=0.0;
    \n+
    560 out[17][1]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);
    \n+
    561 out[18][0]=0.0;
    \n+
    562 out[18][1]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;
    \n+
    563 out[19][0]=0.0;
    \n+
    564 out[19][1]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);
    \n+
    565
    \n+
    566 out[20][0]=-dxl4_x;
    \n+
    567 out[20][1]=0.0;
    \n+
    568 out[21][0]=-3.0*dxl4_x*l1_y;
    \n+
    569 out[21][1]=0.0;
    \n+
    570 out[22][0]=-5.0*dxl4_x*l2_y;
    \n+
    571 out[22][1]=0.0;
    \n+
    572 out[23][0]=-7.0*dxl4_x*l3_y;
    \n+
    573 out[23][1]=0.0;
    \n+
    574 out[24][0]=-9.0*dxl4_x*l4_y;
    \n+
    575 out[24][1]=0.0;
    \n+
    576 out[25][0]=3.0*dxl1_x-3.0*dxl5_x;
    \n+
    577 out[25][1]=0.0;
    \n+
    578 out[26][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;
    \n+
    579 out[26][1]=0.0;
    \n+
    580 out[27][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;
    \n+
    581 out[27][1]=0.0;
    \n+
    582 out[28][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;
    \n+
    583 out[28][1]=0.0;
    \n+
    584 out[29][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;
    \n+
    585 out[29][1]=0.0;
    \n+
    586 out[30][0]=5.0*dxl2_x-5.0*dxl4_x;
    \n+
    587 out[30][1]=0.0;
    \n+
    588 out[31][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;
    \n+
    589 out[31][1]=0.0;
    \n+
    590 out[32][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;
    \n+
    591 out[32][1]=0.0;
    \n+
    592 out[33][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;
    \n+
    593 out[33][1]=0.0;
    \n+
    594 out[34][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;
    \n+
    595 out[34][1]=0.0;
    \n+
    596 out[35][0]=7.0*dxl3_x-7.0*dxl5_x;
    \n+
    597 out[35][1]=0.0;
    \n+
    598 out[36][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;
    \n+
    599 out[36][1]=0.0;
    \n+
    600 out[37][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;
    \n+
    601 out[37][1]=0.0;
    \n+
    602 out[38][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;
    \n+
    603 out[38][1]=0.0;
    \n+
    604 out[39][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;
    \n+
    605 out[39][1]=0.0;
    \n+
    606 out[40][0]=0.0;
    \n+
    607 out[40][1]=0.0;
    \n+
    608 out[41][0]=0.0;
    \n+
    609 out[41][1]=0.0;
    \n+
    610 out[42][0]=0.0;
    \n+
    611 out[42][1]=0.0;
    \n+
    612 out[43][0]=0.0;
    \n+
    613 out[43][1]=0.0;
    \n+
    614 out[44][0]=0.0;
    \n+
    615 out[44][1]=3.0*dxl1_x-3.0*dxl1_x*l4_y;
    \n+
    616 out[45][0]=0.0;
    \n+
    617 out[45][1]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;
    \n+
    618 out[46][0]=0.0;
    \n+
    619 out[46][1]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;
    \n+
    620 out[47][0]=0.0;
    \n+
    621 out[47][1]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;
    \n+
    622 out[48][0]=0.0;
    \n+
    623 out[48][1]=5.0*dxl2_x-5.0*dxl2_x*l4_y;
    \n+
    624 out[49][0]=0.0;
    \n+
    625 out[49][1]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;
    \n+
    626 out[50][0]=0.0;
    \n+
    627 out[50][1]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;
    \n+
    628 out[51][0]=0.0;
    \n+
    629 out[51][1]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;
    \n+
    630 out[52][0]=0.0;
    \n+
    631 out[52][1]=7.0*dxl3_x-7.0*dxl3_x*l4_y;
    \n+
    632 out[53][0]=0.0;
    \n+
    633 out[53][1]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;
    \n+
    634 out[54][0]=0.0;
    \n+
    635 out[54][1]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;
    \n+
    636 out[55][0]=0.0;
    \n+
    637 out[55][1]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;
    \n+
    638 out[56][0]=0.0;
    \n+
    639 out[56][1]=9.0*dxl4_x-9.0*dxl4_x*l4_y;
    \n+
    640 out[57][0]=0.0;
    \n+
    641 out[57][1]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;
    \n+
    642 out[58][0]=0.0;
    \n+
    643 out[58][1]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;
    \n+
    644 out[59][0]=0.0;
    \n+
    645 out[59][1]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;
    \n+
    646
    \n+
    647 } else if (direction == 1) {
    \n+
    648 auto dyl1_y = 2.0;
    \n+
    649 auto dyl2_y = 12*y - 6;
    \n+
    650 auto dyl3_y = y*(60*y - 60) + 12;
    \n+
    651 auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;
    \n+
    652 auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;
    \n+
    653
    \n+
    654 out[0][0]=0.0;
    \n+
    655 out[0][1]=0.0;
    \n+
    656 out[1][0]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;
    \n+
    657 out[1][1]=0.0;
    \n+
    658 out[2][0]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
    \n+
    659 out[2][1]=0.0;
    \n+
    660 out[3][0]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;
    \n+
    661 out[3][1]=0.0;
    \n+
    662 out[4][0]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
    \n+
    663 out[4][1]=0.0;
    \n+
    664
    \n+
    665 out[5][0]=0.0;
    \n+
    666 out[5][1]=0.0;
    \n+
    667 out[6][0]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;
    \n+
    668 out[6][1]=0.0;
    \n+
    669 out[7][0]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);
    \n+
    670 out[7][1]=0.0;
    \n+
    671 out[8][0]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;
    \n+
    672 out[8][1]=0.0;
    \n+
    673 out[9][0]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);
    \n+
    674 out[9][1]=0.0;
    \n+
    675
    \n+
    676 out[10][0]=0.0;
    \n+
    677 out[10][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);
    \n+
    678 out[11][0]=0.0;
    \n+
    679 out[11][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;
    \n+
    680 out[12][0]=0.0;
    \n+
    681 out[12][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
    \n+
    682 out[13][0]=0.0;
    \n+
    683 out[13][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;
    \n+
    684 out[14][0]=0.0;
    \n+
    685 out[14][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
    \n+
    686
    \n+
    687 out[15][0]=0.0;
    \n+
    688 out[15][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);
    \n+
    689 out[16][0]=0.0;
    \n+
    690 out[16][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;
    \n+
    691 out[17][0]=0.0;
    \n+
    692 out[17][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);
    \n+
    693 out[18][0]=0.0;
    \n+
    694 out[18][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;
    \n+
    695 out[19][0]=0.0;
    \n+
    696 out[19][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);
    \n+
    697
    \n+
    698 out[20][0]=0.0;
    \n+
    699 out[20][1]=0.0;
    \n+
    700 out[21][0]=3.0*dyl1_y-3.0*l4_x*dyl1_y;
    \n+
    701 out[21][1]=0.0;
    \n+
    702 out[22][0]=5.0*dyl2_y-5.0*l4_x*dyl2_y;
    \n+
    703 out[22][1]=0.0;
    \n+
    704 out[23][0]=7.0*dyl3_y-7.0*l4_x*dyl3_y;
    \n+
    705 out[23][1]=0.0;
    \n+
    706 out[24][0]=9.0*dyl4_y-9.0*l4_x*dyl4_y;
    \n+
    707 out[24][1]=0.0;
    \n+
    708 out[25][0]=0.0;
    \n+
    709 out[25][1]=0.0;
    \n+
    710 out[26][0]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;
    \n+
    711 out[26][1]=0.0;
    \n+
    712 out[27][0]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;
    \n+
    713 out[27][1]=0.0;
    \n+
    714 out[28][0]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;
    \n+
    715 out[28][1]=0.0;
    \n+
    716 out[29][0]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;
    \n+
    717 out[29][1]=0.0;
    \n+
    718 out[30][0]=0.0;
    \n+
    719 out[30][1]=0.0;
    \n+
    720 out[31][0]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;
    \n+
    721 out[31][1]=0.0;
    \n+
    722 out[32][0]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;
    \n+
    723 out[32][1]=0.0;
    \n+
    724 out[33][0]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;
    \n+
    725 out[33][1]=0.0;
    \n+
    726 out[34][0]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;
    \n+
    727 out[34][1]=0.0;
    \n+
    728 out[35][0]=0.0;
    \n+
    729 out[35][1]=0.0;
    \n+
    730 out[36][0]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;
    \n+
    731 out[36][1]=0.0;
    \n+
    732 out[37][0]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;
    \n+
    733 out[37][1]=0.0;
    \n+
    734 out[38][0]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;
    \n+
    735 out[38][1]=0.0;
    \n+
    736 out[39][0]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;
    \n+
    737 out[39][1]=0.0;
    \n+
    738 out[40][0]=0.0;
    \n+
    739 out[40][1]=-dyl4_y;
    \n+
    740 out[41][0]=0.0;
    \n+
    741 out[41][1]=3.0*dyl1_y-3.0*dyl5_y;
    \n+
    742 out[42][0]=0.0;
    \n+
    743 out[42][1]=5.0*dyl2_y-5.0*dyl4_y;
    \n+
    744 out[43][0]=0.0;
    \n+
    745 out[43][1]=7.0*dyl3_y-7.0*dyl5_y;
    \n+
    746 out[44][0]=0.0;
    \n+
    747 out[44][1]=-3.0*l1_x*dyl4_y;
    \n+
    748 out[45][0]=0.0;
    \n+
    749 out[45][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;
    \n+
    750 out[46][0]=0.0;
    \n+
    751 out[46][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;
    \n+
    752 out[47][0]=0.0;
    \n+
    753 out[47][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;
    \n+
    754 out[48][0]=0.0;
    \n+
    755 out[48][1]=-5.0*l2_x*dyl4_y;
    \n+
    756 out[49][0]=0.0;
    \n+
    757 out[49][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;
    \n+
    758 out[50][0]=0.0;
    \n+
    759 out[50][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;
    \n+
    760 out[51][0]=0.0;
    \n+
    761 out[51][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;
    \n+
    762 out[52][0]=0.0;
    \n+
    763 out[52][1]=-7.0*l3_x*dyl4_y;
    \n+
    764 out[53][0]=0.0;
    \n+
    765 out[53][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;
    \n+
    766 out[54][0]=0.0;
    \n+
    767 out[54][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;
    \n+
    768 out[55][0]=0.0;
    \n+
    769 out[55][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;
    \n+
    770 out[56][0]=0.0;
    \n+
    771 out[56][1]=-9.0*l4_x*dyl4_y;
    \n+
    772 out[57][0]=0.0;
    \n+
    773 out[57][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;
    \n+
    774 out[58][0]=0.0;
    \n+
    775 out[58][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;
    \n+
    776 out[59][0]=0.0;
    \n+
    777 out[59][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;
    \n+
    778 } else {
    \n+
    779 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    780 }
    \n+
    781 } else {
    \n+
    782 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    783 }
    \n+
    784 }
    \n+
    \n+
    785
    \n+
    \n+
    787 unsigned int order () const
    \n+
    788 {
    \n+
    789 return 9;
    \n+
    790 }
    \n+
    \n+
    791
    \n+
    792 private:
    \n+
    793 R sign0, sign1, sign2, sign3;
    \n+
    794 };
    \n+
    \n+
    795}
    \n+
    796
    \n+
    797#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:30
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:121
    \n-
    BDM2Simplex2DLocalBasis(std::bitset< 3 > s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:49
    \n-
    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
    \n-
    unsigned int size() const
    number of shape functions
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:56
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:35
    \n-
    BDM2Simplex2DLocalBasis()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:38
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:67
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition brezzidouglasmarini2simplex2dlocalbasis.hh:306
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas4cube2dlocalbasis.hh:29
    \n+
    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 raviartthomas4cube2dlocalbasis.hh:492
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas4cube2dlocalbasis.hh:60
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas4cube2dlocalbasis.hh:33
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas4cube2dlocalbasis.hh:49
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas4cube2dlocalbasis.hh:787
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas4cube2dlocalbasis.hh:210
    \n+
    RT4Cube2DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas4cube2dlocalbasis.hh:40
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,348 +1,826 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n-brezzidouglasmarini2simplex2dlocalbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas4cube2dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10#include \n-11#include \n-12\n-13#include \n-14\n-15#include \"../../common/localbasis.hh\"\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-28 template\n-_\b2_\b9 class _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-30 {\n-31\n-32 public:\n-33 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,\n-34 R,2,Dune::FieldVector,\n-_\b3_\b5 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-36\n-_\b3_\b8 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n-39 {\n-40 for (size_t i=0; i<3; i++)\n-41 sign_[i] = 1.0;\n-42 }\n-43\n-_\b4_\b9 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs(std::bitset<3> s)\n+8#include \n+9#include \n+10#include \n+11\n+12#include \n+13\n+14#include \"../../common/localbasis.hh\"\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+27 template\n+_\b2_\b8 class _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+29 {\n+30\n+31 public:\n+32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n+FieldVector,\n+_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b4_\b0 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n+41 {\n+42 sign0 = (s[0]) ? -1.0 : 1.0;\n+43 sign1 = (s[1]) ? -1.0 : 1.0;\n+44 sign2 = (s[2]) ? -1.0 : 1.0;\n+45 sign3 = (s[3]) ? -1.0 : 1.0;\n+46 }\n+47\n+_\b4_\b9 unsigned int _\bs_\bi_\bz_\be () const\n 50 {\n-51 for (size_t i=0; i<3; i++)\n-52 sign_[i] = s[i] ? -1.0 : 1.0;\n-53 }\n-54\n-_\b5_\b6 unsigned int _\bs_\bi_\bz_\be() const\n-57 {\n-58 return 12;\n-59 }\n-60\n-_\b6_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-68 std::vector& out) const\n-69 {\n-70 out.resize(_\bs_\bi_\bz_\be());\n-71\n-72 out[0][0] = sign_[0]*(-2*in[0]*in[1] + in[0]*in[0]);\n-73 out[0][1] = sign_[0]*(-1 + 6*in[1] -2*in[0]*in[1] - 5*in[1]*in[1]);\n-74\n-75 out[1][0] = 1.5*in[0] + 3*in[0]*in[1] - 4.5*in[0]*in[0];\n-76 out[1][1] = -3 + 6*in[0] + 10.5*in[1] - 15*in[0]*in[1] - 7.5*in[1]*in[1];\n+51 return 60;\n+52 }\n+53\n+_\b6_\b0 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+61 std::vector& out) const\n+62 {\n+63 out.resize(60);\n+64\n+65 auto const& x = in[0], y = in[1];\n+66\n+67 const auto l1_x = 2*x - 1;\n+68 const auto l2_x = x*(6*x - 6) + 1;\n+69 const auto l3_x = x*(x*(20*x - 30) + 12) - 1;\n+70 const auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;\n+71 const auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;\n+72 const auto l1_y = 2*y - 1;\n+73 const auto l2_y = y*(6*y - 6) + 1;\n+74 const auto l3_y = y*(y*(20*y - 30) + 12) - 1;\n+75 const auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;\n+76 const auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;\n 77\n-78 out[2][0] = sign_[0]*(-7.5*in[0] + 5*in[0]*in[1] + 12.5*in[0]*in[0]);\n-79 out[2][1] = sign_[0]*(-5 + 30*in[0] + 7.5*in[1] - 25*in[0]*in[1] - 30*in\n-[0]*in[0] - 2.5*in[1]*in[1]);\n-80\n-81\n-82\n-83 out[3][0] = sign_[1]*(-1 + 6*in[0] - 2*in[0]*in[1] - 5*in[0]*in[0]);\n-84 out[3][1] = sign_[1]*(-2*in[0]*in[1] + in[1]*in[1]);\n-85\n-86 out[4][0] = 3 - 10.5*in[0] - 6*in[1] + 15*in[0]*in[1] + 7.5*in[0]*in[0];\n-87 out[4][1] = -1.5*in[1] - 3*in[0]*in[1] + 4.5*in[1]*in[1];\n+78 out[0][0]=sign0*(0.5*(-l4_x)+0.5*l5_x);\n+79 out[0][1]=0.0;\n+80 out[1][0]=-(1.5)*l4_x*l1_y+1.5*l5_x*l1_y;\n+81 out[1][1]=0.0;\n+82 out[2][0]=sign0*(-(2.5)*l4_x*l2_y+2.5*l5_x*l2_y);\n+83 out[2][1]=0.0;\n+84 out[3][0]=-(3.5)*l4_x*l3_y+3.5*l5_x*l3_y;\n+85 out[3][1]=0.0;\n+86 out[4][0]=sign0*(-(4.5)*l4_x*l4_y+4.5*l5_x*l4_y);\n+87 out[4][1]=0.0;\n 88\n-89 out[5][0] = sign_[1]*(-5 + 7.5*in[0] + 30*in[1] - 25*in[0]*in[1] - 2.5*in\n-[0]*in[0] - 30*in[1]*in[1]);\n-90 out[5][1] = sign_[1]*(-7.5*in[1] + 5*in[0]*in[1] + 12.5*in[1]*in[1]);\n-91\n-92\n-93\n-94 out[6][0] = sign_[2]*(-3*in[0] + 4*in[0]*in[1] + 4*in[0]*in[0]);\n-95 out[6][1] = sign_[2]*(-3*in[1] + 4*in[0]*in[1] + 4*in[1]*in[1]);\n-96\n-97 out[7][0] = -3*in[0] + 6*in[0]*in[0];\n-98 out[7][1] = 3*in[1] - 6*in[1]*in[1];\n+89 out[5][0]=sign1*(0.5*l4_x+0.5*l5_x);\n+90 out[5][1]=0.0;\n+91 out[6][0]=-(1.5)*l4_x*l1_y-1.5*l5_x*l1_y;\n+92 out[6][1]=0.0;\n+93 out[7][0]=sign1*(2.5*l4_x*l2_y+2.5*l5_x*l2_y);\n+94 out[7][1]=0.0;\n+95 out[8][0]=-(3.5)*l4_x*l3_y-3.5*l5_x*l3_y;\n+96 out[8][1]=0.0;\n+97 out[9][0]=sign1*(4.5*l4_x*l4_y+4.5*l5_x*l4_y);\n+98 out[9][1]=0.0;\n 99\n-100 out[8][0] = sign_[2]*(-10*in[0]*in[1] + 5*in[0]*in[0]);\n-101 out[8][1] = sign_[2]*(-10*in[0]*in[1] + 5*in[1]*in[1]);\n-102\n-103\n-104\n-105 out[9][0] = 18*in[0] - 12*in[0]*in[1] - 18*in[0]*in[0];\n-106 out[9][1] = 6*in[1] - 12*in[0]*in[1] - 6*in[1]*in[1];\n-107\n-108 out[10][0] = 6*in[0] - 12*in[0]*in[1] - 6*in[0]*in[0];\n-109 out[10][1] = 18*in[1] - 12*in[0]*in[1] - 18*in[1]*in[1];\n+100 out[10][0]=0.0;\n+101 out[10][1]=sign2*(0.5*(-l4_y)+0.5*l5_y);\n+102 out[11][0]=0.0;\n+103 out[11][1]=1.5*l1_x*l4_y-1.5*l1_x*l5_y;\n+104 out[12][0]=0.0;\n+105 out[12][1]=sign2*(-(2.5)*l2_x*l4_y+2.5*l2_x*l5_y);\n+106 out[13][0]=0.0;\n+107 out[13][1]=3.5*l3_x*l4_y-3.5*l3_x*l5_y;\n+108 out[14][0]=0.0;\n+109 out[14][1]=sign2*(-(4.5)*l4_x*l4_y+4.5*l4_x*l5_y);\n 110\n-111 out[11][0] = 90*in[0] - 180*in[0]*in[1] - 90*in[0]*in[0];\n-112 out[11][1] = -90*in[1] + 180*in[0]*in[1] + 90*in[1]*in[1];\n-113 }\n-114\n-_\b1_\b2_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-122 std::vector& out) const\n-123 {\n-124 out.resize(_\bs_\bi_\bz_\be());\n-125\n-126 out[0][0][0] = sign_[0]*(-2*in[1] + 2*in[0]);\n-127 out[0][0][1] = sign_[0]*(-2*in[0]);\n-128\n-129 out[0][1][0] = sign_[0]*(-2*in[1]);\n-130 out[0][1][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);\n-131\n-132\n-133 out[1][0][0] = 1.5 + 3*in[1] - 9*in[0];\n-134 out[1][0][1] = 3*in[0];\n-135\n-136 out[1][1][0] = 6 - 15*in[1];\n-137 out[1][1][1] = 10.5 - 15*in[0] - 15*in[1];\n-138\n-139\n-140 out[2][0][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);\n-141 out[2][0][1] = sign_[0]*(5*in[0]);\n-142\n-143 out[2][1][0] = sign_[0]*(30 - 25*in[1] - 60*in[0]);\n-144 out[2][1][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);\n-145\n-146\n-147\n-148 out[3][0][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);\n-149 out[3][0][1] = sign_[1]*(-2*in[0]);\n-150\n-151 out[3][1][0] = sign_[1]*(-2*in[1]);\n-152 out[3][1][1] = sign_[1]*(-2*in[0] + 2*in[1]);\n-153\n-154\n-155 out[4][0][0] = -10.5 + 15*in[1] + 15*in[0];\n-156 out[4][0][1] = -6 + 15*in[0];\n-157\n-158 out[4][1][0] = -3*in[1];\n-159 out[4][1][1] = -1.5 - 3*in[0] + 9*in[1];\n-160\n-161\n-162 out[5][0][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);\n-163 out[5][0][1] = sign_[1]*(30 - 25*in[0] - 60*in[1]);\n-164\n-165 out[5][1][0] = sign_[1]*(5*in[1]);\n-166 out[5][1][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);\n-167\n-168\n-169\n-170 out[6][0][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);\n-171 out[6][0][1] = sign_[2]*(4*in[0]);\n-172\n-173 out[6][1][0] = sign_[2]*(4*in[1]);\n-174 out[6][1][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);\n-175\n-176\n-177 out[7][0][0] = -3 + 12*in[0];\n-178 out[7][0][1] = 0;\n-179\n-180 out[7][1][0] = 0;\n-181 out[7][1][1] = 3 - 12*in[1];\n-182\n-183\n-184 out[8][0][0] = sign_[2]*(-10*in[1] + 10*in[0]);\n-185 out[8][0][1] = sign_[2]*(-10*in[0]);\n-186\n-187 out[8][1][0] = sign_[2]*(-10*in[1]);\n-188 out[8][1][1] = sign_[2]*(-10*in[0] + 10*in[1]);\n-189\n-190\n-191 out[9][0][0] = 18 - 12*in[1] - 36*in[0];\n-192 out[9][0][1] = -12*in[0];\n-193\n-194 out[9][1][0] = -12*in[1];\n-195 out[9][1][1] = 6 - 12*in[0] - 12*in[1];\n-196\n-197 out[10][0][0] = 6 - 12*in[1] - 12*in[0];\n-198 out[10][0][1] = -12*in[0];\n-199\n-200 out[10][1][0] = -12*in[1];\n-201 out[10][1][1] = 18 - 12*in[0] - 36*in[1];\n-202\n-203 out[11][0][0] = 90 - 180*in[1] - 180*in[0];\n-204 out[11][0][1] = -180*in[0];\n-205\n-206 out[11][1][0] = 180*in[1];\n-207 out[11][1][1] = -90 + 180*in[0] + 180*in[1];\n-208 }\n-209\n-_\b2_\b1_\b1 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-212 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-213 std::vector& out) const // return value\n-214 {\n-215 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-216 if (totalOrder == 0) {\n-217 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-218 } else if (totalOrder == 1) {\n-219 out.resize(_\bs_\bi_\bz_\be());\n-220 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n-(), _\bo_\br_\bd_\be_\br.end(), 1));\n-221\n-222 switch (direction) {\n-223 case 0:\n-224 out[0][0] = sign_[0]*(-2*in[1] + 2*in[0]);\n-225 out[0][1] = sign_[0]*(-2*in[1]);\n+111 out[15][0]=0.0;\n+112 out[15][1]=sign3*(0.5*l4_y+0.5*l5_y);\n+113 out[16][0]=0.0;\n+114 out[16][1]=1.5*l1_x*l4_y+1.5*l1_x*l5_y;\n+115 out[17][0]=0.0;\n+116 out[17][1]=sign3*(2.5*l2_x*l4_y+2.5*l2_x*l5_y);\n+117 out[18][0]=0.0;\n+118 out[18][1]=3.5*l3_x*l4_y+3.5*l3_x*l5_y;\n+119 out[19][0]=0.0;\n+120 out[19][1]=sign3*(4.5*l4_x*l4_y+4.5*l4_x*l5_y);\n+121\n+122 out[20][0]=1.0-l4_x;\n+123 out[20][1]=0.0;\n+124 out[21][0]=3.0*l1_y-3.0*l4_x*l1_y;\n+125 out[21][1]=0.0;\n+126 out[22][0]=5.0*l2_y-5.0*l4_x*l2_y;\n+127 out[22][1]=0.0;\n+128 out[23][0]=7.0*l3_y-7.0*l4_x*l3_y;\n+129 out[23][1]=0.0;\n+130 out[24][0]=9.0*l4_y-9.0*l4_x*l4_y;\n+131 out[24][1]=0.0;\n+132 out[25][0]=3.0*l1_x-3.0*l5_x;\n+133 out[25][1]=0.0;\n+134 out[26][0]=9.0*l1_x*l1_y-9.0*l5_x*l1_y;\n+135 out[26][1]=0.0;\n+136 out[27][0]=15.0*l1_x*l2_y-15.0*l5_x*l2_y;\n+137 out[27][1]=0.0;\n+138 out[28][0]=21.0*l1_x*l3_y-21.0*l5_x*l3_y;\n+139 out[28][1]=0.0;\n+140 out[29][0]=27.0*l1_x*l4_y-27.0*l5_x*l4_y;\n+141 out[29][1]=0.0;\n+142 out[30][0]=5.0*l2_x-5.0*l4_x;\n+143 out[30][1]=0.0;\n+144 out[31][0]=15.0*l2_x*l1_y-15.0*l4_x*l1_y;\n+145 out[31][1]=0.0;\n+146 out[32][0]=25.0*l2_x*l2_y-25.0*l4_x*l2_y;\n+147 out[32][1]=0.0;\n+148 out[33][0]=35.0*l2_x*l3_y-35.0*l4_x*l3_y;\n+149 out[33][1]=0.0;\n+150 out[34][0]=45.0*l2_x*l4_y-45.0*l4_x*l4_y;\n+151 out[34][1]=0.0;\n+152 out[35][0]=7.0*l3_x-7.0*l5_x;\n+153 out[35][1]=0.0;\n+154 out[36][0]=21.0*l3_x*l1_y-21.0*l5_x*l1_y;\n+155 out[36][1]=0.0;\n+156 out[37][0]=35.0*l3_x*l2_y-35.0*l5_x*l2_y;\n+157 out[37][1]=0.0;\n+158 out[38][0]=49.0*l3_x*l3_y-49.0*l5_x*l3_y;\n+159 out[38][1]=0.0;\n+160 out[39][0]=63.0*l3_x*l4_y-63.0*l5_x*l4_y;\n+161 out[39][1]=0.0;\n+162 out[40][0]=0.0;\n+163 out[40][1]=1.0-l4_y;\n+164 out[41][0]=0.0;\n+165 out[41][1]=3.0*l1_y-3.0*l5_y;\n+166 out[42][0]=0.0;\n+167 out[42][1]=5.0*l2_y-5.0*l4_y;\n+168 out[43][0]=0.0;\n+169 out[43][1]=7.0*l3_y-7.0*l5_y;\n+170 out[44][0]=0.0;\n+171 out[44][1]=3.0*l1_x-3.0*l1_x*l4_y;\n+172 out[45][0]=0.0;\n+173 out[45][1]=9.0*l1_x*l1_y-9.0*l1_x*l5_y;\n+174 out[46][0]=0.0;\n+175 out[46][1]=15.0*l1_x*l2_y-15.0*l1_x*l4_y;\n+176 out[47][0]=0.0;\n+177 out[47][1]=21.0*l1_x*l3_y-21.0*l1_x*l5_y;\n+178 out[48][0]=0.0;\n+179 out[48][1]=5.0*l2_x-5.0*l2_x*l4_y;\n+180 out[49][0]=0.0;\n+181 out[49][1]=15.0*l2_x*l1_y-15.0*l2_x*l5_y;\n+182 out[50][0]=0.0;\n+183 out[50][1]=25.0*l2_x*l2_y-25.0*l2_x*l4_y;\n+184 out[51][0]=0.0;\n+185 out[51][1]=35.0*l2_x*l3_y-35.0*l2_x*l5_y;\n+186 out[52][0]=0.0;\n+187 out[52][1]=7.0*l3_x-7.0*l3_x*l4_y;\n+188 out[53][0]=0.0;\n+189 out[53][1]=21.0*l3_x*l1_y-21.0*l3_x*l5_y;\n+190 out[54][0]=0.0;\n+191 out[54][1]=35.0*l3_x*l2_y-35.0*l3_x*l4_y;\n+192 out[55][0]=0.0;\n+193 out[55][1]=49.0*l3_x*l3_y-49.0*l3_x*l5_y;\n+194 out[56][0]=0.0;\n+195 out[56][1]=9.0*l4_x-9.0*l4_x*l4_y;\n+196 out[57][0]=0.0;\n+197 out[57][1]=27.0*l4_x*l1_y-27.0*l4_x*l5_y;\n+198 out[58][0]=0.0;\n+199 out[58][1]=45.0*l4_x*l2_y-45.0*l4_x*l4_y;\n+200 out[59][0]=0.0;\n+201 out[59][1]=63.0*l4_x*l3_y-63.0*l4_x*l5_y;\n+202 }\n+203\n+_\b2_\b1_\b0 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+211 std::vector& out) const\n+212 {\n+213 out.resize(60);\n+214 auto const& x = in[0], y = in[1];\n+215\n+216 const auto l1_x = 2*x - 1;\n+217 const auto l2_x = x*(6*x - 6) + 1;\n+218 const auto l3_x = x*(x*(20*x - 30) + 12) - 1;\n+219 const auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;\n+220 const auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;\n+221 const auto l1_y = 2*y - 1;\n+222 const auto l2_y = y*(6*y - 6) + 1;\n+223 const auto l3_y = y*(y*(20*y - 30) + 12) - 1;\n+224 const auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;\n+225 const auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;\n 226\n-227 out[1][0] = 1.5 + 3*in[1] - 9*in[0];\n-228 out[1][1] = 6 - 15*in[1];\n-229\n-230 out[2][0] = sign_[0]*(-7.5 + 5*in[1] + 25*in[0]);\n-231 out[2][1] = sign_[0]*(30 - 25*in[1] - 60*in[0]);\n-232\n-233 out[3][0] = sign_[1]*(6 - 2*in[1] - 10*in[0]);\n-234 out[3][1] = sign_[1]*(-2*in[1]);\n-235\n-236 out[4][0] = -10.5 + 15*in[1] + 15*in[0];\n-237 out[4][1] = -3*in[1];\n-238\n-239 out[5][0] = sign_[1]*(7.5 - 25*in[1] - 5*in[0]);\n-240 out[5][1] = sign_[1]*(5*in[1]);\n-241\n-242 out[6][0] = sign_[2]*(-3 + 4*in[1] + 8*in[0]);\n-243 out[6][1] = sign_[2]*(4*in[1]);\n-244\n-245 out[7][0] = -3 + 12*in[0];\n-246 out[7][1] = 0;\n-247\n-248 out[8][0] = sign_[2]*(-10*in[1] + 10*in[0]);\n-249 out[8][1] = sign_[2]*(-10*in[1]);\n-250\n-251 out[9][0] = 18 - 12*in[1] - 36*in[0];\n-252 out[9][1] = -12*in[1];\n-253\n-254 out[10][0] = 6 - 12*in[1] - 12*in[0];\n-255 out[10][1] = -12*in[1];\n-256\n-257 out[11][0] = 90 - 180*in[1] - 180*in[0];\n-258 out[11][1] = 180*in[1];\n-259 break;\n-260 case 1:\n-261 out[0][0] = sign_[0]*(-2*in[0]);\n-262 out[0][1] = sign_[0]*(6 -2*in[0] - 10*in[1]);\n-263\n-264 out[1][0] = 3*in[0];\n-265 out[1][1] = 10.5 - 15*in[0] - 15*in[1];\n-266\n-267 out[2][0] = sign_[0]*(5*in[0]);\n-268 out[2][1] = sign_[0]*(7.5 - 25*in[0] - 5*in[1]);\n-269\n-270 out[3][0] = sign_[1]*(-2*in[0]);\n-271 out[3][1] = sign_[1]*(-2*in[0] + 2*in[1]);\n-272\n-273 out[4][0] = -6 + 15*in[0];\n-274 out[4][1] = -1.5 - 3*in[0] + 9*in[1];\n-275\n-276 out[5][0] = sign_[1]*(30 - 25*in[0] - 60*in[1]);\n-277 out[5][1] = sign_[1]*(-7.5 + 5*in[0] + 25*in[1]);\n-278\n-279 out[6][0] = sign_[2]*(4*in[0]);\n-280 out[6][1] = sign_[2]*(-3 + 4*in[0] + 8*in[1]);\n-281\n-282 out[7][0] = 0;\n-283 out[7][1] = 3 - 12*in[1];\n-284\n-285 out[8][0] = sign_[2]*(-10*in[0]);\n-286 out[8][1] = sign_[2]*(-10*in[0] + 10*in[1]);\n-287\n-288 out[9][0] = -12*in[0];\n-289 out[9][1] = 6 - 12*in[0] - 12*in[1];\n-290\n-291 out[10][0] = -12*in[0];\n-292 out[10][1] = 18 - 12*in[0] - 36*in[1];\n-293\n-294 out[11][0] = -180*in[0];\n-295 out[11][1] = -90 + 180*in[0] + 180*in[1];\n-296 break;\n-297 default:\n-298 DUNE_THROW(RangeError, \"Component out of range.\");\n-299 }\n-300 } else {\n-301 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-302 }\n-303 }\n-304\n-_\b3_\b0_\b6 unsigned int _\bo_\br_\bd_\be_\br() const\n-307 {\n-308 return 2; // TODO: check whether this is not order 3\n-309 }\n-310\n-311 private:\n-312 std::array sign_;\n-313 };\n-314} // end namespace Dune\n-315#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH\n+227 const auto dxl1_x = 2.0;\n+228 const auto dxl2_x = 12*x - 6;\n+229 const auto dxl3_x = x*(60*x - 60) + 12;\n+230 const auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;\n+231 const auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;\n+232 const auto dyl1_y = 2.0;\n+233 const auto dyl2_y = 12*y - 6;\n+234 const auto dyl3_y = y*(60*y - 60) + 12;\n+235 const auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;\n+236 const auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;\n+237\n+238 // x-component\n+239 out[0][0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);\n+240 out[0][1][0]=0.0;\n+241 out[1][0][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;\n+242 out[1][1][0]=0.0;\n+243 out[2][0][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);\n+244 out[2][1][0]=0.0;\n+245 out[3][0][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;\n+246 out[3][1][0]=0.0;\n+247 out[4][0][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);\n+248 out[4][1][0]=0.0;\n+249\n+250 out[5][0][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);\n+251 out[5][1][0]=0.0;\n+252 out[6][0][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;\n+253 out[6][1][0]=0.0;\n+254 out[7][0][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);\n+255 out[7][1][0]=0.0;\n+256 out[8][0][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;\n+257 out[8][1][0]=0.0;\n+258 out[9][0][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);\n+259 out[9][1][0]=0.0;\n+260\n+261 out[10][0][0]=0.0;\n+262 out[10][1][0]=0.0;\n+263 out[11][0][0]=0.0;\n+264 out[11][1][0]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;\n+265 out[12][0][0]=0.0;\n+266 out[12][1][0]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);\n+267 out[13][0][0]=0.0;\n+268 out[13][1][0]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;\n+269 out[14][0][0]=0.0;\n+270 out[14][1][0]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);\n+271\n+272 out[15][0][0]=0.0;\n+273 out[15][1][0]=0.0;\n+274 out[16][0][0]=0.0;\n+275 out[16][1][0]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;\n+276 out[17][0][0]=0.0;\n+277 out[17][1][0]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);\n+278 out[18][0][0]=0.0;\n+279 out[18][1][0]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;\n+280 out[19][0][0]=0.0;\n+281 out[19][1][0]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);\n+282\n+283 out[20][0][0]=-dxl4_x;\n+284 out[20][1][0]=0.0;\n+285 out[21][0][0]=-3.0*dxl4_x*l1_y;\n+286 out[21][1][0]=0.0;\n+287 out[22][0][0]=-5.0*dxl4_x*l2_y;\n+288 out[22][1][0]=0.0;\n+289 out[23][0][0]=-7.0*dxl4_x*l3_y;\n+290 out[23][1][0]=0.0;\n+291 out[24][0][0]=-9.0*dxl4_x*l4_y;\n+292 out[24][1][0]=0.0;\n+293 out[25][0][0]=3.0*dxl1_x-3.0*dxl5_x;\n+294 out[25][1][0]=0.0;\n+295 out[26][0][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;\n+296 out[26][1][0]=0.0;\n+297 out[27][0][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;\n+298 out[27][1][0]=0.0;\n+299 out[28][0][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;\n+300 out[28][1][0]=0.0;\n+301 out[29][0][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;\n+302 out[29][1][0]=0.0;\n+303 out[30][0][0]=5.0*dxl2_x-5.0*dxl4_x;\n+304 out[30][1][0]=0.0;\n+305 out[31][0][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;\n+306 out[31][1][0]=0.0;\n+307 out[32][0][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;\n+308 out[32][1][0]=0.0;\n+309 out[33][0][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;\n+310 out[33][1][0]=0.0;\n+311 out[34][0][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;\n+312 out[34][1][0]=0.0;\n+313 out[35][0][0]=7.0*dxl3_x-7.0*dxl5_x;\n+314 out[35][1][0]=0.0;\n+315 out[36][0][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;\n+316 out[36][1][0]=0.0;\n+317 out[37][0][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;\n+318 out[37][1][0]=0.0;\n+319 out[38][0][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;\n+320 out[38][1][0]=0.0;\n+321 out[39][0][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;\n+322 out[39][1][0]=0.0;\n+323 out[40][0][0]=0.0;\n+324 out[40][1][0]=0.0;\n+325 out[41][0][0]=0.0;\n+326 out[41][1][0]=0.0;\n+327 out[42][0][0]=0.0;\n+328 out[42][1][0]=0.0;\n+329 out[43][0][0]=0.0;\n+330 out[43][1][0]=0.0;\n+331 out[44][0][0]=0.0;\n+332 out[44][1][0]=3.0*dxl1_x-3.0*dxl1_x*l4_y;\n+333 out[45][0][0]=0.0;\n+334 out[45][1][0]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;\n+335 out[46][0][0]=0.0;\n+336 out[46][1][0]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;\n+337 out[47][0][0]=0.0;\n+338 out[47][1][0]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;\n+339 out[48][0][0]=0.0;\n+340 out[48][1][0]=5.0*dxl2_x-5.0*dxl2_x*l4_y;\n+341 out[49][0][0]=0.0;\n+342 out[49][1][0]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;\n+343 out[50][0][0]=0.0;\n+344 out[50][1][0]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;\n+345 out[51][0][0]=0.0;\n+346 out[51][1][0]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;\n+347 out[52][0][0]=0.0;\n+348 out[52][1][0]=7.0*dxl3_x-7.0*dxl3_x*l4_y;\n+349 out[53][0][0]=0.0;\n+350 out[53][1][0]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;\n+351 out[54][0][0]=0.0;\n+352 out[54][1][0]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;\n+353 out[55][0][0]=0.0;\n+354 out[55][1][0]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;\n+355 out[56][0][0]=0.0;\n+356 out[56][1][0]=9.0*dxl4_x-9.0*dxl4_x*l4_y;\n+357 out[57][0][0]=0.0;\n+358 out[57][1][0]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;\n+359 out[58][0][0]=0.0;\n+360 out[58][1][0]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;\n+361 out[59][0][0]=0.0;\n+362 out[59][1][0]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;\n+363\n+364 // y-component\n+365 out[0][0][1]=0.0;\n+366 out[0][1][1]=0.0;\n+367 out[1][0][1]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;\n+368 out[1][1][1]=0.0;\n+369 out[2][0][1]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);\n+370 out[2][1][1]=0.0;\n+371 out[3][0][1]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;\n+372 out[3][1][1]=0.0;\n+373 out[4][0][1]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);\n+374 out[4][1][1]=0.0;\n+375\n+376 out[5][0][1]=0.0;\n+377 out[5][1][1]=0.0;\n+378 out[6][0][1]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;\n+379 out[6][1][1]=0.0;\n+380 out[7][0][1]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);\n+381 out[7][1][1]=0.0;\n+382 out[8][0][1]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;\n+383 out[8][1][1]=0.0;\n+384 out[9][0][1]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);\n+385 out[9][1][1]=0.0;\n+386\n+387 out[10][0][1]=0.0;\n+388 out[10][1][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);\n+389 out[11][0][1]=0.0;\n+390 out[11][1][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;\n+391 out[12][0][1]=0.0;\n+392 out[12][1][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);\n+393 out[13][0][1]=0.0;\n+394 out[13][1][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;\n+395 out[14][0][1]=0.0;\n+396 out[14][1][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);\n+397\n+398 out[15][0][1]=0.0;\n+399 out[15][1][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);\n+400 out[16][0][1]=0.0;\n+401 out[16][1][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;\n+402 out[17][0][1]=0.0;\n+403 out[17][1][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);\n+404 out[18][0][1]=0.0;\n+405 out[18][1][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;\n+406 out[19][0][1]=0.0;\n+407 out[19][1][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);\n+408\n+409 out[20][0][1]=0.0;\n+410 out[20][1][1]=0.0;\n+411 out[21][0][1]=3.0*dyl1_y-3.0*l4_x*dyl1_y;\n+412 out[21][1][1]=0.0;\n+413 out[22][0][1]=5.0*dyl2_y-5.0*l4_x*dyl2_y;\n+414 out[22][1][1]=0.0;\n+415 out[23][0][1]=7.0*dyl3_y-7.0*l4_x*dyl3_y;\n+416 out[23][1][1]=0.0;\n+417 out[24][0][1]=9.0*dyl4_y-9.0*l4_x*dyl4_y;\n+418 out[24][1][1]=0.0;\n+419 out[25][0][1]=0.0;\n+420 out[25][1][1]=0.0;\n+421 out[26][0][1]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;\n+422 out[26][1][1]=0.0;\n+423 out[27][0][1]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;\n+424 out[27][1][1]=0.0;\n+425 out[28][0][1]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;\n+426 out[28][1][1]=0.0;\n+427 out[29][0][1]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;\n+428 out[29][1][1]=0.0;\n+429 out[30][0][1]=0.0;\n+430 out[30][1][1]=0.0;\n+431 out[31][0][1]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;\n+432 out[31][1][1]=0.0;\n+433 out[32][0][1]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;\n+434 out[32][1][1]=0.0;\n+435 out[33][0][1]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;\n+436 out[33][1][1]=0.0;\n+437 out[34][0][1]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;\n+438 out[34][1][1]=0.0;\n+439 out[35][0][1]=0.0;\n+440 out[35][1][1]=0.0;\n+441 out[36][0][1]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;\n+442 out[36][1][1]=0.0;\n+443 out[37][0][1]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;\n+444 out[37][1][1]=0.0;\n+445 out[38][0][1]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;\n+446 out[38][1][1]=0.0;\n+447 out[39][0][1]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;\n+448 out[39][1][1]=0.0;\n+449 out[40][0][1]=0.0;\n+450 out[40][1][1]=-dyl4_y;\n+451 out[41][0][1]=0.0;\n+452 out[41][1][1]=3.0*dyl1_y-3.0*dyl5_y;\n+453 out[42][0][1]=0.0;\n+454 out[42][1][1]=5.0*dyl2_y-5.0*dyl4_y;\n+455 out[43][0][1]=0.0;\n+456 out[43][1][1]=7.0*dyl3_y-7.0*dyl5_y;\n+457 out[44][0][1]=0.0;\n+458 out[44][1][1]=-3.0*l1_x*dyl4_y;\n+459 out[45][0][1]=0.0;\n+460 out[45][1][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;\n+461 out[46][0][1]=0.0;\n+462 out[46][1][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;\n+463 out[47][0][1]=0.0;\n+464 out[47][1][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;\n+465 out[48][0][1]=0.0;\n+466 out[48][1][1]=-5.0*l2_x*dyl4_y;\n+467 out[49][0][1]=0.0;\n+468 out[49][1][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;\n+469 out[50][0][1]=0.0;\n+470 out[50][1][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;\n+471 out[51][0][1]=0.0;\n+472 out[51][1][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;\n+473 out[52][0][1]=0.0;\n+474 out[52][1][1]=-7.0*l3_x*dyl4_y;\n+475 out[53][0][1]=0.0;\n+476 out[53][1][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;\n+477 out[54][0][1]=0.0;\n+478 out[54][1][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;\n+479 out[55][0][1]=0.0;\n+480 out[55][1][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;\n+481 out[56][0][1]=0.0;\n+482 out[56][1][1]=-9.0*l4_x*dyl4_y;\n+483 out[57][0][1]=0.0;\n+484 out[57][1][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;\n+485 out[58][0][1]=0.0;\n+486 out[58][1][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;\n+487 out[59][0][1]=0.0;\n+488 out[59][1][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;\n+489 }\n+490\n+_\b4_\b9_\b2 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+493 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+494 std::vector& out) const // return value\n+495 {\n+496 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+497 if (totalOrder == 0) {\n+498 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+499 } else if (totalOrder == 1) {\n+500 out.resize(_\bs_\bi_\bz_\be());\n+501 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n+502 auto const& x = in[0], y = in[1];\n+503\n+504 auto l1_x = 2*x - 1;\n+505 auto l2_x = x*(6*x - 6) + 1;\n+506 auto l3_x = x*(x*(20*x - 30) + 12) - 1;\n+507 auto l4_x = x*(x*(x*(70*x - 140) + 90) - 20) + 1;\n+508 auto l5_x = x*(x*(x*(x*(252*x - 630) + 560) - 210) + 30) - 1;\n+509 auto l1_y = 2*y - 1;\n+510 auto l2_y = y*(6*y - 6) + 1;\n+511 auto l3_y = y*(y*(20*y - 30) + 12) - 1;\n+512 auto l4_y = y*(y*(y*(70*y - 140) + 90) - 20) + 1;\n+513 auto l5_y = y*(y*(y*(y*(252*y - 630) + 560) - 210) + 30) - 1;\n+514\n+515 if (direction == 0) {\n+516 auto dxl1_x = 2.0;\n+517 auto dxl2_x = 12*x - 6;\n+518 auto dxl3_x = x*(60*x - 60) + 12;\n+519 auto dxl4_x = x*(x*(280*x - 420) + 180) - 20;\n+520 auto dxl5_x = x*(x*(x*(1260*x - 2520) + 1680) - 420) + 30;\n+521\n+522 out[0][0]=sign0*(0.5*(-dxl4_x)+0.5*dxl5_x);\n+523 out[0][1]=0.0;\n+524 out[1][0]=-(1.5)*dxl4_x*l1_y+1.5*dxl5_x*l1_y;\n+525 out[1][1]=0.0;\n+526 out[2][0]=sign0*(-(2.5)*dxl4_x*l2_y+2.5*dxl5_x*l2_y);\n+527 out[2][1]=0.0;\n+528 out[3][0]=-(3.5)*dxl4_x*l3_y+3.5*dxl5_x*l3_y;\n+529 out[3][1]=0.0;\n+530 out[4][0]=sign0*(-(4.5)*dxl4_x*l4_y+4.5*dxl5_x*l4_y);\n+531 out[4][1]=0.0;\n+532\n+533 out[5][0]=sign1*(0.5*dxl4_x+0.5*dxl5_x);\n+534 out[5][1]=0.0;\n+535 out[6][0]=-(1.5)*dxl4_x*l1_y-1.5*dxl5_x*l1_y;\n+536 out[6][1]=0.0;\n+537 out[7][0]=sign1*(2.5*dxl4_x*l2_y+2.5*dxl5_x*l2_y);\n+538 out[7][1]=0.0;\n+539 out[8][0]=-(3.5)*dxl4_x*l3_y-3.5*dxl5_x*l3_y;\n+540 out[8][1]=0.0;\n+541 out[9][0]=sign1*(4.5*dxl4_x*l4_y+4.5*dxl5_x*l4_y);\n+542 out[9][1]=0.0;\n+543\n+544 out[10][0]=0.0;\n+545 out[10][1]=0.0;\n+546 out[11][0]=0.0;\n+547 out[11][1]=1.5*dxl1_x*l4_y-1.5*dxl1_x*l5_y;\n+548 out[12][0]=0.0;\n+549 out[12][1]=sign2*(-(2.5)*dxl2_x*l4_y+2.5*dxl2_x*l5_y);\n+550 out[13][0]=0.0;\n+551 out[13][1]=3.5*dxl3_x*l4_y-3.5*dxl3_x*l5_y;\n+552 out[14][0]=0.0;\n+553 out[14][1]=sign2*(-(4.5)*dxl4_x*l4_y+4.5*dxl4_x*l5_y);\n+554\n+555 out[15][0]=0.0;\n+556 out[15][1]=0.0;\n+557 out[16][0]=0.0;\n+558 out[16][1]=1.5*dxl1_x*l4_y+1.5*dxl1_x*l5_y;\n+559 out[17][0]=0.0;\n+560 out[17][1]=sign3*(2.5*dxl2_x*l4_y+2.5*dxl2_x*l5_y);\n+561 out[18][0]=0.0;\n+562 out[18][1]=3.5*dxl3_x*l4_y+3.5*dxl3_x*l5_y;\n+563 out[19][0]=0.0;\n+564 out[19][1]=sign3*(4.5*dxl4_x*l4_y+4.5*dxl4_x*l5_y);\n+565\n+566 out[20][0]=-dxl4_x;\n+567 out[20][1]=0.0;\n+568 out[21][0]=-3.0*dxl4_x*l1_y;\n+569 out[21][1]=0.0;\n+570 out[22][0]=-5.0*dxl4_x*l2_y;\n+571 out[22][1]=0.0;\n+572 out[23][0]=-7.0*dxl4_x*l3_y;\n+573 out[23][1]=0.0;\n+574 out[24][0]=-9.0*dxl4_x*l4_y;\n+575 out[24][1]=0.0;\n+576 out[25][0]=3.0*dxl1_x-3.0*dxl5_x;\n+577 out[25][1]=0.0;\n+578 out[26][0]=9.0*dxl1_x*l1_y-9.0*dxl5_x*l1_y;\n+579 out[26][1]=0.0;\n+580 out[27][0]=15.0*dxl1_x*l2_y-15.0*dxl5_x*l2_y;\n+581 out[27][1]=0.0;\n+582 out[28][0]=21.0*dxl1_x*l3_y-21.0*dxl5_x*l3_y;\n+583 out[28][1]=0.0;\n+584 out[29][0]=27.0*dxl1_x*l4_y-27.0*dxl5_x*l4_y;\n+585 out[29][1]=0.0;\n+586 out[30][0]=5.0*dxl2_x-5.0*dxl4_x;\n+587 out[30][1]=0.0;\n+588 out[31][0]=15.0*dxl2_x*l1_y-15.0*dxl4_x*l1_y;\n+589 out[31][1]=0.0;\n+590 out[32][0]=25.0*dxl2_x*l2_y-25.0*dxl4_x*l2_y;\n+591 out[32][1]=0.0;\n+592 out[33][0]=35.0*dxl2_x*l3_y-35.0*dxl4_x*l3_y;\n+593 out[33][1]=0.0;\n+594 out[34][0]=45.0*dxl2_x*l4_y-45.0*dxl4_x*l4_y;\n+595 out[34][1]=0.0;\n+596 out[35][0]=7.0*dxl3_x-7.0*dxl5_x;\n+597 out[35][1]=0.0;\n+598 out[36][0]=21.0*dxl3_x*l1_y-21.0*dxl5_x*l1_y;\n+599 out[36][1]=0.0;\n+600 out[37][0]=35.0*dxl3_x*l2_y-35.0*dxl5_x*l2_y;\n+601 out[37][1]=0.0;\n+602 out[38][0]=49.0*dxl3_x*l3_y-49.0*dxl5_x*l3_y;\n+603 out[38][1]=0.0;\n+604 out[39][0]=63.0*dxl3_x*l4_y-63.0*dxl5_x*l4_y;\n+605 out[39][1]=0.0;\n+606 out[40][0]=0.0;\n+607 out[40][1]=0.0;\n+608 out[41][0]=0.0;\n+609 out[41][1]=0.0;\n+610 out[42][0]=0.0;\n+611 out[42][1]=0.0;\n+612 out[43][0]=0.0;\n+613 out[43][1]=0.0;\n+614 out[44][0]=0.0;\n+615 out[44][1]=3.0*dxl1_x-3.0*dxl1_x*l4_y;\n+616 out[45][0]=0.0;\n+617 out[45][1]=9.0*dxl1_x*l1_y-9.0*dxl1_x*l5_y;\n+618 out[46][0]=0.0;\n+619 out[46][1]=15.0*dxl1_x*l2_y-15.0*dxl1_x*l4_y;\n+620 out[47][0]=0.0;\n+621 out[47][1]=21.0*dxl1_x*l3_y-21.0*dxl1_x*l5_y;\n+622 out[48][0]=0.0;\n+623 out[48][1]=5.0*dxl2_x-5.0*dxl2_x*l4_y;\n+624 out[49][0]=0.0;\n+625 out[49][1]=15.0*dxl2_x*l1_y-15.0*dxl2_x*l5_y;\n+626 out[50][0]=0.0;\n+627 out[50][1]=25.0*dxl2_x*l2_y-25.0*dxl2_x*l4_y;\n+628 out[51][0]=0.0;\n+629 out[51][1]=35.0*dxl2_x*l3_y-35.0*dxl2_x*l5_y;\n+630 out[52][0]=0.0;\n+631 out[52][1]=7.0*dxl3_x-7.0*dxl3_x*l4_y;\n+632 out[53][0]=0.0;\n+633 out[53][1]=21.0*dxl3_x*l1_y-21.0*dxl3_x*l5_y;\n+634 out[54][0]=0.0;\n+635 out[54][1]=35.0*dxl3_x*l2_y-35.0*dxl3_x*l4_y;\n+636 out[55][0]=0.0;\n+637 out[55][1]=49.0*dxl3_x*l3_y-49.0*dxl3_x*l5_y;\n+638 out[56][0]=0.0;\n+639 out[56][1]=9.0*dxl4_x-9.0*dxl4_x*l4_y;\n+640 out[57][0]=0.0;\n+641 out[57][1]=27.0*dxl4_x*l1_y-27.0*dxl4_x*l5_y;\n+642 out[58][0]=0.0;\n+643 out[58][1]=45.0*dxl4_x*l2_y-45.0*dxl4_x*l4_y;\n+644 out[59][0]=0.0;\n+645 out[59][1]=63.0*dxl4_x*l3_y-63.0*dxl4_x*l5_y;\n+646\n+647 } else if (direction == 1) {\n+648 auto dyl1_y = 2.0;\n+649 auto dyl2_y = 12*y - 6;\n+650 auto dyl3_y = y*(60*y - 60) + 12;\n+651 auto dyl4_y = y*(y*(280*y - 420) + 180) - 20;\n+652 auto dyl5_y = y*(y*(y*(1260*y - 2520) + 1680) - 420) + 30;\n+653\n+654 out[0][0]=0.0;\n+655 out[0][1]=0.0;\n+656 out[1][0]=-(1.5)*l4_x*dyl1_y+1.5*l5_x*dyl1_y;\n+657 out[1][1]=0.0;\n+658 out[2][0]=sign0*(-(2.5)*l4_x*dyl2_y+2.5*l5_x*dyl2_y);\n+659 out[2][1]=0.0;\n+660 out[3][0]=-(3.5)*l4_x*dyl3_y+3.5*l5_x*dyl3_y;\n+661 out[3][1]=0.0;\n+662 out[4][0]=sign0*(-(4.5)*l4_x*dyl4_y+4.5*l5_x*dyl4_y);\n+663 out[4][1]=0.0;\n+664\n+665 out[5][0]=0.0;\n+666 out[5][1]=0.0;\n+667 out[6][0]=-(1.5)*l4_x*dyl1_y-1.5*l5_x*dyl1_y;\n+668 out[6][1]=0.0;\n+669 out[7][0]=sign1*(2.5*l4_x*dyl2_y+2.5*l5_x*dyl2_y);\n+670 out[7][1]=0.0;\n+671 out[8][0]=-(3.5)*l4_x*dyl3_y-3.5*l5_x*dyl3_y;\n+672 out[8][1]=0.0;\n+673 out[9][0]=sign1*(4.5*l4_x*dyl4_y+4.5*l5_x*dyl4_y);\n+674 out[9][1]=0.0;\n+675\n+676 out[10][0]=0.0;\n+677 out[10][1]=sign2*(0.5*(-dyl4_y)+0.5*dyl5_y);\n+678 out[11][0]=0.0;\n+679 out[11][1]=1.5*l1_x*dyl4_y-1.5*l1_x*dyl5_y;\n+680 out[12][0]=0.0;\n+681 out[12][1]=sign2*(-(2.5)*l2_x*dyl4_y+2.5*l2_x*dyl5_y);\n+682 out[13][0]=0.0;\n+683 out[13][1]=3.5*l3_x*dyl4_y-3.5*l3_x*dyl5_y;\n+684 out[14][0]=0.0;\n+685 out[14][1]=sign2*(-(4.5)*l4_x*dyl4_y+4.5*l4_x*dyl5_y);\n+686\n+687 out[15][0]=0.0;\n+688 out[15][1]=sign3*(0.5*dyl4_y+0.5*dyl5_y);\n+689 out[16][0]=0.0;\n+690 out[16][1]=1.5*l1_x*dyl4_y+1.5*l1_x*dyl5_y;\n+691 out[17][0]=0.0;\n+692 out[17][1]=sign3*(2.5*l2_x*dyl4_y+2.5*l2_x*dyl5_y);\n+693 out[18][0]=0.0;\n+694 out[18][1]=3.5*l3_x*dyl4_y+3.5*l3_x*dyl5_y;\n+695 out[19][0]=0.0;\n+696 out[19][1]=sign3*(4.5*l4_x*dyl4_y+4.5*l4_x*dyl5_y);\n+697\n+698 out[20][0]=0.0;\n+699 out[20][1]=0.0;\n+700 out[21][0]=3.0*dyl1_y-3.0*l4_x*dyl1_y;\n+701 out[21][1]=0.0;\n+702 out[22][0]=5.0*dyl2_y-5.0*l4_x*dyl2_y;\n+703 out[22][1]=0.0;\n+704 out[23][0]=7.0*dyl3_y-7.0*l4_x*dyl3_y;\n+705 out[23][1]=0.0;\n+706 out[24][0]=9.0*dyl4_y-9.0*l4_x*dyl4_y;\n+707 out[24][1]=0.0;\n+708 out[25][0]=0.0;\n+709 out[25][1]=0.0;\n+710 out[26][0]=9.0*l1_x*dyl1_y-9.0*l5_x*dyl1_y;\n+711 out[26][1]=0.0;\n+712 out[27][0]=15.0*l1_x*dyl2_y-15.0*l5_x*dyl2_y;\n+713 out[27][1]=0.0;\n+714 out[28][0]=21.0*l1_x*dyl3_y-21.0*l5_x*dyl3_y;\n+715 out[28][1]=0.0;\n+716 out[29][0]=27.0*l1_x*dyl4_y-27.0*l5_x*dyl4_y;\n+717 out[29][1]=0.0;\n+718 out[30][0]=0.0;\n+719 out[30][1]=0.0;\n+720 out[31][0]=15.0*l2_x*dyl1_y-15.0*l4_x*dyl1_y;\n+721 out[31][1]=0.0;\n+722 out[32][0]=25.0*l2_x*dyl2_y-25.0*l4_x*dyl2_y;\n+723 out[32][1]=0.0;\n+724 out[33][0]=35.0*l2_x*dyl3_y-35.0*l4_x*dyl3_y;\n+725 out[33][1]=0.0;\n+726 out[34][0]=45.0*l2_x*dyl4_y-45.0*l4_x*dyl4_y;\n+727 out[34][1]=0.0;\n+728 out[35][0]=0.0;\n+729 out[35][1]=0.0;\n+730 out[36][0]=21.0*l3_x*dyl1_y-21.0*l5_x*dyl1_y;\n+731 out[36][1]=0.0;\n+732 out[37][0]=35.0*l3_x*dyl2_y-35.0*l5_x*dyl2_y;\n+733 out[37][1]=0.0;\n+734 out[38][0]=49.0*l3_x*dyl3_y-49.0*l5_x*dyl3_y;\n+735 out[38][1]=0.0;\n+736 out[39][0]=63.0*l3_x*dyl4_y-63.0*l5_x*dyl4_y;\n+737 out[39][1]=0.0;\n+738 out[40][0]=0.0;\n+739 out[40][1]=-dyl4_y;\n+740 out[41][0]=0.0;\n+741 out[41][1]=3.0*dyl1_y-3.0*dyl5_y;\n+742 out[42][0]=0.0;\n+743 out[42][1]=5.0*dyl2_y-5.0*dyl4_y;\n+744 out[43][0]=0.0;\n+745 out[43][1]=7.0*dyl3_y-7.0*dyl5_y;\n+746 out[44][0]=0.0;\n+747 out[44][1]=-3.0*l1_x*dyl4_y;\n+748 out[45][0]=0.0;\n+749 out[45][1]=9.0*l1_x*dyl1_y-9.0*l1_x*dyl5_y;\n+750 out[46][0]=0.0;\n+751 out[46][1]=15.0*l1_x*dyl2_y-15.0*l1_x*dyl4_y;\n+752 out[47][0]=0.0;\n+753 out[47][1]=21.0*l1_x*dyl3_y-21.0*l1_x*dyl5_y;\n+754 out[48][0]=0.0;\n+755 out[48][1]=-5.0*l2_x*dyl4_y;\n+756 out[49][0]=0.0;\n+757 out[49][1]=15.0*l2_x*dyl1_y-15.0*l2_x*dyl5_y;\n+758 out[50][0]=0.0;\n+759 out[50][1]=25.0*l2_x*dyl2_y-25.0*l2_x*dyl4_y;\n+760 out[51][0]=0.0;\n+761 out[51][1]=35.0*l2_x*dyl3_y-35.0*l2_x*dyl5_y;\n+762 out[52][0]=0.0;\n+763 out[52][1]=-7.0*l3_x*dyl4_y;\n+764 out[53][0]=0.0;\n+765 out[53][1]=21.0*l3_x*dyl1_y-21.0*l3_x*dyl5_y;\n+766 out[54][0]=0.0;\n+767 out[54][1]=35.0*l3_x*dyl2_y-35.0*l3_x*dyl4_y;\n+768 out[55][0]=0.0;\n+769 out[55][1]=49.0*l3_x*dyl3_y-49.0*l3_x*dyl5_y;\n+770 out[56][0]=0.0;\n+771 out[56][1]=-9.0*l4_x*dyl4_y;\n+772 out[57][0]=0.0;\n+773 out[57][1]=27.0*l4_x*dyl1_y-27.0*l4_x*dyl5_y;\n+774 out[58][0]=0.0;\n+775 out[58][1]=45.0*l4_x*dyl2_y-45.0*l4_x*dyl4_y;\n+776 out[59][0]=0.0;\n+777 out[59][1]=63.0*l4_x*dyl3_y-63.0*l4_x*dyl5_y;\n+778 } else {\n+779 DUNE_THROW(RangeError, \"Component out of range.\");\n+780 }\n+781 } else {\n+782 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+783 }\n+784 }\n+785\n+_\b7_\b8_\b7 unsigned int _\bo_\br_\bd_\be_\br () const\n+788 {\n+789 return 9;\n+790 }\n+791\n+792 private:\n+793 R sign0, sign1, sign2, sign3;\n+794 };\n+795}\n+796\n+797#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-First order Brezzi-Douglas-Marini shape functions on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM2Simplex2DLocalBasis(std::bitset< 3 > s)\n-Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Second order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n void partial(const std::array< unsigned int, 2 > &order, const typename\n Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:211\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n-2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-BDM2Simplex2DLocalBasis()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:492\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n typename Traits::RangeType > &out) const\n Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n unsigned int order() const\n Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalbasis.hh:306\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:787\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:210\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT4Cube2DLocalBasis(std::bitset< 4 > s=0)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalbasis.hh:40\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas4cube2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference
    \n+
    raviartthomas4cube2dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM2Simplex2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-2 elements on triangles. More...
    class  Dune::RT4Cube2DLocalInterpolation< LB >
     Second order Raviart-Thomas shape functions on the reference triangle. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference\n-#include \n+raviartthomas4cube2dlocalinterpolation.hh File Reference\n #include \n-#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for Brezzi-Douglas-Marini-2 elements on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 Second order Raviart-Thomas shape functions on the reference triangle.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2simplex2dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas4cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,84 +70,173 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2simplex2dlocalcoefficients.hh
    \n+
    raviartthomas4cube2dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include "../../common/localkey.hh"
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    \n-\n-
    24 {
    \n-
    25
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for (std::size_t i = 0; i < 3; ++i)
    \n-
    31 {
    \n-
    32 li[3 * i] = LocalKey(i,1,0);
    \n-
    33 li[3 * i + 1] = LocalKey(i,1,1);
    \n-
    34 li[3 * i + 2] = LocalKey(i,1,2);
    \n-
    35 }
    \n-
    36
    \n-
    37 // last DOFs are associated with the cell (codim=0)
    \n-
    38 li[9] = LocalKey(0,0,0);
    \n-
    39 li[10] = LocalKey(0,0,1);
    \n-
    40 li[11] = LocalKey(0,0,2);
    \n-
    41 }
    \n-
    \n-
    42
    \n-
    \n-
    44 std::size_t size() const
    \n-
    45 {
    \n-
    46 return 12;
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    \n-
    50 const LocalKey& localKey(std::size_t i) const
    \n-
    51 {
    \n-
    52 return li[i];
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    55 private:
    \n-
    56 std::vector<LocalKey> li;
    \n-
    57 };
    \n-
    \n-
    58} // end namespace Dune
    \n-
    59#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    23 template<class LB>
    \n+
    \n+\n+
    25 {
    \n+
    26
    \n+
    27 public:
    \n+
    28
    \n+
    \n+
    34 RT4Cube2DLocalInterpolation (unsigned int s = 0)
    \n+
    35 {
    \n+
    36 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n+
    37 if (s & 1)
    \n+
    38 {
    \n+
    39 sign0 *= -1.0;
    \n+
    40 }
    \n+
    41 if (s & 2)
    \n+
    42 {
    \n+
    43 sign1 *= -1.0;
    \n+
    44 }
    \n+
    45 if (s & 4)
    \n+
    46 {
    \n+
    47 sign2 *= -1.0;
    \n+
    48 }
    \n+
    49 if (s & 8)
    \n+
    50 {
    \n+
    51 sign3 *= -1.0;
    \n+
    52 }
    \n+
    53
    \n+
    54 n0[0] = -1.0;
    \n+
    55 n0[1] = 0.0;
    \n+
    56 n1[0] = 1.0;
    \n+
    57 n1[1] = 0.0;
    \n+
    58 n2[0] = 0.0;
    \n+
    59 n2[1] = -1.0;
    \n+
    60 n3[0] = 0.0;
    \n+
    61 n3[1] = 1.0;
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    72 template<typename F, typename C>
    \n+
    \n+
    73 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    74 {
    \n+
    75 // f gives v*outer normal at a point on the edge!
    \n+
    76 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    77 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    78
    \n+
    79 out.resize(60);
    \n+
    80 fill(out.begin(), out.end(), 0.0);
    \n+
    81
    \n+
    82 const int qOrder = 12;
    \n+
    83 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    84
    \n+
    85 for (typename QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n+
    86 {
    \n+
    87 Scalar qPos = it->position();
    \n+
    88 typename LB::Traits::DomainType localPos;
    \n+
    89
    \n+
    90 localPos[0] = 0.0;
    \n+
    91 localPos[1] = qPos;
    \n+
    92 auto y = f(localPos);
    \n+
    93 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n+
    94 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    95 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0;
    \n+
    96 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos + 12.0*qPos - 1.0)*it->weight();
    \n+
    97 out[4] += (y[0]*n0[0] + y[1]*n0[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign0;
    \n+
    98
    \n+
    99 localPos[0] = 1.0;
    \n+
    100 localPos[1] = qPos;
    \n+
    101 y = f(localPos);
    \n+
    102 out[5] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
    \n+
    103 out[6] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    104 out[7] += (y[0]*n1[0] + y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1;
    \n+
    105 out[8] += (y[0]*n1[0] + y[1]*n1[1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos - 12.0*qPos + 1.0)*it->weight();
    \n+
    106 out[9] += (y[0]*n1[0] + y[1]*n1[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign1;
    \n+
    107
    \n+
    108 localPos[0] = qPos;
    \n+
    109 localPos[1] = 0.0;
    \n+
    110 y = f(localPos);
    \n+
    111 out[10] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n+
    112 out[11] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    113 out[12] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2;
    \n+
    114 out[13] += (y[0]*n2[0] + y[1]*n2[1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos - 12.0*qPos + 1.0)*it->weight();
    \n+
    115 out[14] += (y[0]*n2[0] + y[1]*n2[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign2;
    \n+
    116
    \n+
    117 localPos[0] = qPos;
    \n+
    118 localPos[1] = 1.0;
    \n+
    119 y = f(localPos);
    \n+
    120 out[15] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n+
    121 out[16] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    122 out[17] += (y[0]*n3[0] + y[1]*n3[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign3;
    \n+
    123 out[18] += (y[0]*n3[0] + y[1]*n3[1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos + 12.0*qPos - 1.0)*it->weight();
    \n+
    124 out[19] += (y[0]*n3[0] + y[1]*n3[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign3;
    \n+
    125 }
    \n+
    126
    \n+
    127 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    128
    \n+
    129 for (typename QuadratureRule<Vector,2>::const_iterator it = rule2.begin();
    \n+
    130 it != rule2.end(); ++it)
    \n+
    131 {
    \n+
    132 FieldVector<double,2> qPos = it->position();
    \n+
    133
    \n+
    134 auto y = f(qPos);
    \n+
    135 std::vector<std::vector<double> > l(2,std::vector<double> (5));
    \n+
    136 l[0][0]=1.0;
    \n+
    137 l[1][0]=1.0;
    \n+
    138 l[0][1]=2.0*qPos[0]-1.0;
    \n+
    139 l[1][1]=2.0*qPos[1]-1.0;
    \n+
    140 l[0][2]=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;
    \n+
    141 l[1][2]=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;
    \n+
    142 l[0][3]=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0] - 1.0;
    \n+
    143 l[1][3]=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1] - 1.0;
    \n+
    144 l[0][4]=1.0-20.0*qPos[0]+90.0*pow(qPos[0],2)-140.0*pow(qPos[0],3)+70.0*pow(qPos[0],4);
    \n+
    145 l[1][4]=1.0-20.0*qPos[1]+90.0*pow(qPos[1],2)-140.0*pow(qPos[1],3)+70.0*pow(qPos[1],4);
    \n+
    146
    \n+
    147 for (int i=0;i<4;i++)
    \n+
    148 for (int j=0;j<5;j++)
    \n+
    149 out[20+i*5+j] +=y[0]*l[0][i]*l[1][j]*it->weight();
    \n+
    150
    \n+
    151 for (int i=0;i<5;i++)
    \n+
    152 for (int j=0;j<4;j++)
    \n+
    153 out[40+i*4+j] +=y[1]*l[0][i]*l[1][j]*it->weight();
    \n+
    154 }
    \n+
    155 }
    \n+
    \n+
    156
    \n+
    157 private:
    \n+
    158 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n+
    159 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n+
    160 };
    \n+
    \n+
    161}
    \n+
    162
    \n+
    163#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Layout map for Brezzi-Douglas-Marini-2 elements on triangles.
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:24
    \n-
    BDM2Simplex2DLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:28
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:50
    \n-
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasmarini2simplex2dlocalcoefficients.hh:44
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas4cube2dlocalinterpolation.hh:25
    \n+
    RT4Cube2DLocalInterpolation(unsigned int s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas4cube2dlocalinterpolation.hh:34
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas4cube2dlocalinterpolation.hh:73
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,85 +1,187 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n-brezzidouglasmarini2simplex2dlocalcoefficients.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas4cube2dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \"../../common/localkey.hh\"\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-_\b2_\b3 class _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n-25\n-26 public:\n-_\b2_\b8 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(12)\n-29 {\n-30 for (std::size_t i = 0; i < 3; ++i)\n-31 {\n-32 li[3 * i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-33 li[3 * i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n-34 li[3 * i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n-35 }\n-36\n-37 // last DOFs are associated with the cell (codim=0)\n-38 li[9] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0);\n-39 li[10] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,1);\n-40 li[11] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,2);\n-41 }\n-42\n-_\b4_\b4 std::size_t _\bs_\bi_\bz_\be() const\n-45 {\n-46 return 12;\n-47 }\n-48\n-_\b5_\b0 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const\n-51 {\n-52 return li[i];\n-53 }\n-54\n-55 private:\n-56 std::vector li;\n-57 };\n-58} // end namespace Dune\n-59#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n+8#include \n+9\n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+23 template\n+_\b2_\b4 class _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+25 {\n+26\n+27 public:\n+28\n+_\b3_\b4 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (unsigned int s = 0)\n+35 {\n+36 sign0 = sign1 = sign2 = sign3 = 1.0;\n+37 if (s & 1)\n+38 {\n+39 sign0 *= -1.0;\n+40 }\n+41 if (s & 2)\n+42 {\n+43 sign1 *= -1.0;\n+44 }\n+45 if (s & 4)\n+46 {\n+47 sign2 *= -1.0;\n+48 }\n+49 if (s & 8)\n+50 {\n+51 sign3 *= -1.0;\n+52 }\n+53\n+54 n0[0] = -1.0;\n+55 n0[1] = 0.0;\n+56 n1[0] = 1.0;\n+57 n1[1] = 0.0;\n+58 n2[0] = 0.0;\n+59 n2[1] = -1.0;\n+60 n3[0] = 0.0;\n+61 n3[1] = 1.0;\n+62 }\n+63\n+72 template\n+_\b7_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+74 {\n+75 // f gives v*outer normal at a point on the edge!\n+76 typedef typename LB::Traits::RangeFieldType Scalar;\n+77 typedef typename LB::Traits::DomainFieldType Vector;\n+78\n+79 out.resize(60);\n+80 fill(out.begin(), out.end(), 0.0);\n+81\n+82 const int qOrder = 12;\n+83 const QuadratureRule& rule = QuadratureRules::rule\n+(GeometryTypes::cube(1), qOrder);\n+84\n+85 for (typename QuadratureRule::const_iterator it=rule.begin();\n+it!=rule.end(); ++it)\n+86 {\n+87 Scalar qPos = it->position();\n+88 typename LB::Traits::DomainType localPos;\n+89\n+90 localPos[0] = 0.0;\n+91 localPos[1] = qPos;\n+92 auto y = f(localPos);\n+93 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n+94 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n+95 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign0;\n+96 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos +\n+12.0*qPos - 1.0)*it->weight();\n+97 out[4] += (y[0]*n0[0] + y[1]*n0[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-\n+140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign0;\n+98\n+99 localPos[0] = 1.0;\n+100 localPos[1] = qPos;\n+101 y = f(localPos);\n+102 out[5] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;\n+103 out[6] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n+104 out[7] += (y[0]*n1[0] + y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign1;\n+105 out[8] += (y[0]*n1[0] + y[1]*n1[1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos\n+- 12.0*qPos + 1.0)*it->weight();\n+106 out[9] += (y[0]*n1[0] + y[1]*n1[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-\n+140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign1;\n+107\n+108 localPos[0] = qPos;\n+109 localPos[1] = 0.0;\n+110 y = f(localPos);\n+111 out[10] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n+112 out[11] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n+113 out[12] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign2;\n+114 out[13] += (y[0]*n2[0] + y[1]*n2[1])*(-20.0*qPos*qPos*qPos + 30.0*qPos*qPos\n+- 12.0*qPos + 1.0)*it->weight();\n+115 out[14] += (y[0]*n2[0] + y[1]*n2[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-\n+140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign2;\n+116\n+117 localPos[0] = qPos;\n+118 localPos[1] = 1.0;\n+119 y = f(localPos);\n+120 out[15] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n+121 out[16] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n+122 out[17] += (y[0]*n3[0] + y[1]*n3[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign3;\n+123 out[18] += (y[0]*n3[0] + y[1]*n3[1])*(20.0*qPos*qPos*qPos - 30.0*qPos*qPos\n++ 12.0*qPos - 1.0)*it->weight();\n+124 out[19] += (y[0]*n3[0] + y[1]*n3[1])*(1.0-20.0*qPos+90.0*pow(qPos,2)-\n+140.0*pow(qPos,3)+70.0*pow(qPos,4))*it->weight()*sign3;\n+125 }\n+126\n+127 const QuadratureRule& rule2 = QuadratureRules::rule\n+(GeometryTypes::cube(2), qOrder);\n+128\n+129 for (typename QuadratureRule::const_iterator it = rule2.begin();\n+130 it != rule2.end(); ++it)\n+131 {\n+132 FieldVector qPos = it->position();\n+133\n+134 auto y = f(qPos);\n+135 std::vector > l(2,std::vector (5));\n+136 l[0][0]=1.0;\n+137 l[1][0]=1.0;\n+138 l[0][1]=2.0*qPos[0]-1.0;\n+139 l[1][1]=2.0*qPos[1]-1.0;\n+140 l[0][2]=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;\n+141 l[1][2]=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;\n+142 l[0][3]=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0]\n+- 1.0;\n+143 l[1][3]=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1]\n+- 1.0;\n+144 l[0][4]=1.0-20.0*qPos[0]+90.0*pow(qPos[0],2)-140.0*pow(qPos[0],3)+70.0*pow\n+(qPos[0],4);\n+145 l[1][4]=1.0-20.0*qPos[1]+90.0*pow(qPos[1],2)-140.0*pow(qPos[1],3)+70.0*pow\n+(qPos[1],4);\n+146\n+147 for (int i=0;i<4;i++)\n+148 for (int j=0;j<5;j++)\n+149 out[20+i*5+j] +=y[0]*l[0][i]*l[1][j]*it->weight();\n+150\n+151 for (int i=0;i<5;i++)\n+152 for (int j=0;j<4;j++)\n+153 out[40+i*4+j] +=y[1]*l[0][i]*l[1][j]*it->weight();\n+154 }\n+155 }\n+156\n+157 private:\n+158 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n+159 typename LB::Traits::DomainType n0, n1, n2, n3;\n+160 };\n+161}\n+162\n+163#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Marini-2 elements on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-BDM2Simplex2DLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalcoefficients.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Second order Raviart-Thomas shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT4Cube2DLocalInterpolation(unsigned int s=0)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalinterpolation.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalinterpolation.hh:73\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas4cube2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,33 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference
    \n+
    raviartthomas4cube2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDM2Simplex2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on triangles. More...
    class  Dune::RT4Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-4 elements on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference\n+raviartthomas4cube2dlocalcoefficients.hh File Reference\n+#include \n #include \n-#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 First order Brezzi-Douglas-Marini shape functions on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Raviart-Thomas-4 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas4cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,155 +70,85 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2simplex2dlocalinterpolation.hh
    \n+
    raviartthomas4cube2dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    23 template<class LB>
    \n-
    \n-\n-
    25 {
    \n-
    26
    \n-
    27 public:
    \n-
    \n-\n-
    30 {
    \n-
    31 sign0 = sign1 = sign2 = 1.0;
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    \n-\n-
    40 {
    \n-
    41 sign0 = sign1 = sign2 = 1.0;
    \n-
    42 if (s & 1)
    \n-
    43 {
    \n-
    44 sign0 = -1.0;
    \n-
    45 }
    \n-
    46 if (s & 2)
    \n-
    47 {
    \n-
    48 sign1 = -1.0;
    \n-
    49 }
    \n-
    50 if (s & 4)
    \n-
    51 {
    \n-
    52 sign2 = -1.0;
    \n-
    53 }
    \n-
    54
    \n-
    55 m0[0] = 0.5;
    \n-
    56 m0[1] = 0.0;
    \n-
    57 m1[0] = 0.0;
    \n-
    58 m1[1] = 0.5;
    \n-
    59 m2[0] = 0.5;
    \n-
    60 m2[1] = 0.5;
    \n-
    61 n0[0] = 0.0;
    \n-
    62 n0[1] = -1.0;
    \n-
    63 n1[0] = -1.0;
    \n-
    64 n1[1] = 0.0;
    \n-
    65 n2[0] = 1.0/sqrt(2.0);
    \n-
    66 n2[1] = 1.0/sqrt(2.0);
    \n-
    67 c0 = 0.5*n0[0] - 1.0*n0[1];
    \n-
    68 c1 = -1.0*n1[0] + 0.5*n1[1];
    \n-
    69 c2 = 0.5*n2[0] + 0.5*n2[1];
    \n-
    70 }
    \n-
    \n-
    71
    \n-
    80 template<typename F, typename C>
    \n-
    \n-
    81 void interpolate(const F& f, std::vector<C>& out) const
    \n-
    82 {
    \n-
    83 // f gives v*outer normal at a point on the edge!
    \n-
    84 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    85 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    86
    \n-
    87 out.resize(12);
    \n-
    88 fill(out.begin(), out.end(), 0.0);
    \n-
    89
    \n-
    90 const int qOrder = 4;
    \n-
    91 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
    \n-
    92
    \n-
    93 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n-
    94 {
    \n-
    95 Scalar qPos = it->position();
    \n-
    96
    \n-
    97 typename LB::Traits::DomainType localPos;
    \n-
    98
    \n-
    99 localPos[0] = qPos;
    \n-
    100 localPos[1] = 0.0;
    \n-
    101 auto y = f(localPos);
    \n-
    102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
    \n-
    103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;
    \n-
    104 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0/c0;
    \n-
    105
    \n-
    106 localPos[0] = 0.0;
    \n-
    107 localPos[1] = qPos;
    \n-
    108 y = f(localPos);
    \n-
    109 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;
    \n-
    110 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;
    \n-
    111 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1/c1;
    \n-
    112
    \n-
    113 localPos[0] = 1.0 - qPos;
    \n-
    114 localPos[1] = qPos;
    \n-
    115 y = f(localPos);
    \n-
    116 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
    \n-
    117 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;
    \n-
    118 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2/c2;
    \n-
    119 }
    \n-
    120
    \n-
    121 // a volume part is needed here for dofs: 9 10 11
    \n-
    122 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::simplex(2), qOrder);
    \n-
    123
    \n-
    124 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
    \n-
    125 {
    \n-
    126 typename LB::Traits::DomainType localPos = it->position();
    \n-
    127 auto y = f(localPos);
    \n-
    128
    \n-
    129 out[9] += y[0]*it->weight();
    \n-
    130 out[10] += y[1]*it->weight();
    \n-
    131 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos[0]*localPos[0])
    \n-
    132 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos[1]))*it->weight();
    \n-
    133 }
    \n-
    134 }
    \n-
    \n-
    135
    \n-
    136 private:
    \n-
    137 typename LB::Traits::RangeFieldType sign0, sign1, sign2;
    \n-
    138 typename LB::Traits::DomainType m0, m1, m2;
    \n-
    139 typename LB::Traits::DomainType n0, n1, n2;
    \n-
    140 typename LB::Traits::RangeFieldType c0, c1, c2;
    \n-
    141 };
    \n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include "../../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    \n+\n+
    23 {
    \n+
    24
    \n+
    25 public:
    \n+
    \n+\n+
    28 {
    \n+
    29 for (std::size_t i = 0; i < 4; i++)
    \n+
    30 {
    \n+
    31 li[5*i] = LocalKey(i,1,0);
    \n+
    32 li[5*i + 1] = LocalKey(i,1,1);
    \n+
    33 li[5*i + 2] = LocalKey(i,1,2);
    \n+
    34 li[5*i + 3] = LocalKey(i,1,3);
    \n+
    35 li[5*i + 4] = LocalKey(i,1,4);
    \n+
    36 }
    \n+
    37
    \n+
    38 for (std::size_t i=0; i<40; i++)
    \n+
    39 {
    \n+
    40 li[20 + i] = LocalKey(0,0,i);
    \n+
    41 }
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    \n+
    45 std::size_t size () const
    \n+
    46 {
    \n+
    47 return 60;
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    \n+
    51 const LocalKey& localKey (std::size_t i) const
    \n+
    52 {
    \n+
    53 return li[i];
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    56 private:
    \n+
    57 std::vector<LocalKey> li;
    \n+
    58 };
    \n
    \n-
    142} // end namespace Dune
    \n-
    143#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    59}
    \n+
    60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:25
    \n-
    BDM2Simplex2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:29
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:81
    \n-
    BDM2Simplex2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:39
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for Raviart-Thomas-4 elements on quadrilaterals.
    Definition raviartthomas4cube2dlocalcoefficients.hh:23
    \n+
    RT4Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas4cube2dlocalcoefficients.hh:27
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas4cube2dlocalcoefficients.hh:45
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas4cube2dlocalcoefficients.hh:51
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,163 +1,83 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bm_\ba_\br_\bi_\bn_\bi_\b2_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bd\n-brezzidouglasmarini2simplex2dlocalinterpolation.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas4cube2dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9\n-10#include \n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-23 template\n-_\b2_\b4 class _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-25 {\n-26\n-27 public:\n-_\b2_\b9 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n+8#include \n+9#include \n+10\n+11#include \"../../common/localkey.hh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+_\b2_\b2 class _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+23 {\n+24\n+25 public:\n+_\b2_\b7 _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(60)\n+28 {\n+29 for (std::size_t i = 0; i < 4; i++)\n 30 {\n-31 sign0 = sign1 = sign2 = 1.0;\n-32 }\n-33\n-_\b3_\b9 _\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(unsigned int s)\n-40 {\n-41 sign0 = sign1 = sign2 = 1.0;\n-42 if (s & 1)\n-43 {\n-44 sign0 = -1.0;\n-45 }\n-46 if (s & 2)\n-47 {\n-48 sign1 = -1.0;\n-49 }\n-50 if (s & 4)\n-51 {\n-52 sign2 = -1.0;\n-53 }\n-54\n-55 m0[0] = 0.5;\n-56 m0[1] = 0.0;\n-57 m1[0] = 0.0;\n-58 m1[1] = 0.5;\n-59 m2[0] = 0.5;\n-60 m2[1] = 0.5;\n-61 n0[0] = 0.0;\n-62 n0[1] = -1.0;\n-63 n1[0] = -1.0;\n-64 n1[1] = 0.0;\n-65 n2[0] = 1.0/sqrt(2.0);\n-66 n2[1] = 1.0/sqrt(2.0);\n-67 c0 = 0.5*n0[0] - 1.0*n0[1];\n-68 c1 = -1.0*n1[0] + 0.5*n1[1];\n-69 c2 = 0.5*n2[0] + 0.5*n2[1];\n-70 }\n-71\n-80 template\n-_\b8_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const\n-82 {\n-83 // f gives v*outer normal at a point on the edge!\n-84 typedef typename LB::Traits::RangeFieldType Scalar;\n-85 typedef typename LB::Traits::DomainFieldType Vector;\n-86\n-87 out.resize(12);\n-88 fill(out.begin(), out.end(), 0.0);\n-89\n-90 const int qOrder = 4;\n-91 const Dune::QuadratureRule& rule = Dune::\n-QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder);\n-92\n-93 for (typename Dune::QuadratureRule::const_iterator it=rule.begin\n-(); it!=rule.end(); ++it)\n-94 {\n-95 Scalar qPos = it->position();\n-96\n-97 typename LB::Traits::DomainType localPos;\n-98\n-99 localPos[0] = qPos;\n-100 localPos[1] = 0.0;\n-101 auto y = f(localPos);\n-102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;\n-103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;\n-104 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign0/c0;\n-105\n-106 localPos[0] = 0.0;\n-107 localPos[1] = qPos;\n-108 y = f(localPos);\n-109 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;\n-110 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;\n-111 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign1/c1;\n-112\n-113 localPos[0] = 1.0 - qPos;\n-114 localPos[1] = qPos;\n-115 y = f(localPos);\n-116 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;\n-117 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;\n-118 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign2/c2;\n-119 }\n-120\n-121 // a volume part is needed here for dofs: 9 10 11\n-122 const QuadratureRule& rule2 = QuadratureRules::rule\n-(GeometryTypes::simplex(2), qOrder);\n-123\n-124 for (typename QuadratureRule::const_iterator it=rule2.begin();\n-it!=rule2.end(); ++it)\n-125 {\n-126 typename LB::Traits::DomainType localPos = it->position();\n-127 auto y = f(localPos);\n-128\n-129 out[9] += y[0]*it->weight();\n-130 out[10] += y[1]*it->weight();\n-131 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos\n-[0]*localPos[0])\n-132 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos\n-[1]))*it->weight();\n-133 }\n-134 }\n-135\n-136 private:\n-137 typename LB::Traits::RangeFieldType sign0, sign1, sign2;\n-138 typename LB::Traits::DomainType m0, m1, m2;\n-139 typename LB::Traits::DomainType n0, n1, n2;\n-140 typename LB::Traits::RangeFieldType c0, c1, c2;\n-141 };\n-142} // end namespace Dune\n-143#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH\n+31 li[5*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+32 li[5*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+33 li[5*i + 2] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,2);\n+34 li[5*i + 3] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,3);\n+35 li[5*i + 4] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,4);\n+36 }\n+37\n+38 for (std::size_t i=0; i<40; i++)\n+39 {\n+40 li[20 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n+41 }\n+42 }\n+43\n+_\b4_\b5 std::size_t _\bs_\bi_\bz_\be () const\n+46 {\n+47 return 60;\n+48 }\n+49\n+_\b5_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+52 {\n+53 return li[i];\n+54 }\n+55\n+56 private:\n+57 std::vector li;\n+58 };\n+59}\n+60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-First order Brezzi-Douglas-Marini shape functions on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM2Simplex2DLocalInterpolation()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-4 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT4Cube2DLocalCoefficients()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bM_\b2_\bS_\bi_\bm_\bp_\bl_\be_\bx_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDM2Simplex2DLocalInterpolation(unsigned int s)\n-Make set number s, where 0 <= s < 8.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasmarini2simplex2dlocalinterpolation.hh:39\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalcoefficients.hh:51\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: mimeticall.hh File Reference\n+dune-localfunctions: raviartthomaslfecache.hh File Reference\n \n \n \n \n \n \n \n@@ -65,48 +65,44 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    mimeticall.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    raviartthomaslfecache.hh File Reference
    \n \n
    \n-
    #include <cstddef>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n+
    #include <tuple>
    \n+#include <utility>
    \n #include <dune/geometry/type.hh>
    \n-#include "../common/localbasis.hh"
    \n-#include "../common/localkey.hh"
    \n+#include <dune/geometry/typeindex.hh>
    \n+#include <dune/localfunctions/raviartthomas.hh>
    \n+#include <dune/localfunctions/common/localfiniteelementvariantcache.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n-\n-\n-\n-\n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::MimeticLocalBasis< D, R, dim >
     
    class  Dune::MimeticLocalInterpolation< LB >
     
    class  Dune::MimeticLocalCoefficients
     ! More...
     
    \n \n \n \n+

    \n Namespaces

    namespace  Dune
     
    \n+\n+\n+\n+\n+\n

    \n+Typedefs

    template<class D , class R , std::size_t dim, std::size_t order>
    using Dune::RaviartThomasLocalFiniteElementCache = LocalFiniteElementVariantCache< Impl::ImplementedRaviartThomasLocalFiniteElements< D, R, dim, order > >
     A cache that stores all available Raviart-Thomas local finite elements for the given dimension and order.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,29 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\bi_\bm_\be_\bt_\bi_\bc\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-mimeticall.hh File Reference\n-#include \n-#include \n-#include \n-#include \n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n+raviartthomaslfecache.hh File Reference\n+#include \n+#include \n #include \n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 ! _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be =\n+ _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be< Impl::\n+ ImplementedRaviartThomasLocalFiniteElements< D, R, dim, order > >\n+\u00a0 A cache that stores all available Raviart-Thomas local finite elements\n+ for the given dimension and order.\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: mimeticall.hh Source File\n+dune-localfunctions: raviartthomaslfecache.hh Source File\n \n \n \n \n \n \n \n@@ -70,173 +70,124 @@\n
    \n \n \n \n \n \n \n
    \n-
    mimeticall.hh
    \n+
    raviartthomaslfecache.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_MIMETIC_ALL_HH
    \n-
    6#define DUNE_MIMETIC_ALL_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9
    \n-
    10#include <dune/common/exceptions.hh>
    \n-
    11#include <dune/common/fvector.hh>
    \n-
    12#include <dune/common/fmatrix.hh>
    \n+
    8#include <tuple>
    \n+
    9#include <utility>
    \n+
    10
    \n+
    11#include <dune/geometry/type.hh>
    \n+
    12#include <dune/geometry/typeindex.hh>
    \n
    13
    \n-
    14#include <dune/geometry/type.hh>
    \n-
    15
    \n-
    16#include "../common/localbasis.hh"
    \n-
    17#include "../common/localkey.hh"
    \n+\n+\n+
    16
    \n+
    17namespace Dune {
    \n
    18
    \n-
    19namespace Dune
    \n-
    20{
    \n-
    21 template<class D, class R, int dim>
    \n-
    \n-\n-
    23 {
    \n-
    24 public:
    \n-\n-
    26 R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,dim> > Traits;
    \n-
    27
    \n-
    \n-
    28 MimeticLocalBasis (unsigned int variant_)
    \n-
    29 : variant(variant_)
    \n-
    30 {}
    \n-
    \n-
    31
    \n-
    \n-\n-
    33 : variant(0)
    \n-
    34 {}
    \n-
    \n-
    35
    \n-
    36 unsigned int size () const { return variant; }
    \n-
    37
    \n-
    \n-
    39 inline void evaluateFunction (
    \n-
    40 const typename Traits::DomainType& in,
    \n-
    41 std::vector<typename Traits::RangeType>& out) const
    \n-
    42 {
    \n-
    43 DUNE_THROW(Dune::Exception,"mimetic basis evaluation not available");
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    \n-
    47 inline void evaluateJacobian (
    \n-
    48 const typename Traits::DomainType& in,
    \n-
    49 std::vector<typename Traits::JacobianType>& out) const
    \n-
    50 {
    \n-
    51 DUNE_THROW(Dune::Exception,"mimetic basis Jacobian evaluation not available");
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-
    55 void partial (const std::array<unsigned int, dim>& /*order*/,
    \n-
    56 const typename Traits::DomainType& /*in*/, // position
    \n-
    57 std::vector<typename Traits::RangeType>& /*out*/) const // return value
    \n+
    19namespace Impl {
    \n+
    20
    \n+
    21 // Provide implemented Raviart-Thomas local finite elements
    \n+
    22
    \n+
    23 template<class D, class R, std::size_t dim, std::size_t order>
    \n+
    24 struct ImplementedRaviartThomasLocalFiniteElements
    \n+
    25 {};
    \n+
    26
    \n+
    27 template<class D, class R>
    \n+
    28 struct ImplementedRaviartThomasLocalFiniteElements<D,R,2,0> : public FixedDimLocalGeometryTypeIndex<2>
    \n+
    29 {
    \n+
    30 using FixedDimLocalGeometryTypeIndex<2>::index;
    \n+
    31 static auto getImplementations()
    \n+
    32 {
    \n+
    33 return std::make_tuple(
    \n+
    34 std::make_pair(index(GeometryTypes::triangle), []() { return RT02DLocalFiniteElement<D,R>(); }),
    \n+
    35 std::make_pair(index(GeometryTypes::quadrilateral), []() { return RT0Cube2DLocalFiniteElement<D,R>(); })
    \n+
    36 );
    \n+
    37 }
    \n+
    38 };
    \n+
    39
    \n+
    40 template<class D, class R>
    \n+
    41 struct ImplementedRaviartThomasLocalFiniteElements<D,R,2,1> : public FixedDimLocalGeometryTypeIndex<2>
    \n+
    42 {
    \n+
    43 using FixedDimLocalGeometryTypeIndex<2>::index;
    \n+
    44 static auto getImplementations()
    \n+
    45 {
    \n+
    46 return std::make_tuple(
    \n+
    47 std::make_pair(index(GeometryTypes::triangle), []() { return RT12DLocalFiniteElement<D,R>(); }),
    \n+
    48 std::make_pair(index(GeometryTypes::quadrilateral), []() { return RT1Cube2DLocalFiniteElement<D,R>(); })
    \n+
    49 );
    \n+
    50 }
    \n+
    51 };
    \n+
    52
    \n+
    53 template<class D, class R>
    \n+
    54 struct ImplementedRaviartThomasLocalFiniteElements<D,R,2,2> : public FixedDimLocalGeometryTypeIndex<2>
    \n+
    55 {
    \n+
    56 using FixedDimLocalGeometryTypeIndex<2>::index;
    \n+
    57 static auto getImplementations()
    \n
    58 {
    \n-
    59 DUNE_THROW(Dune::Exception,"mimetic basis partial derivative evaluation not available");
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    \n-
    63 unsigned int order () const
    \n-
    64 {
    \n-
    65 DUNE_THROW(Dune::Exception,"mimetic order evaluation not available");
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    68 private:
    \n-
    69 unsigned int variant;
    \n-
    70 };
    \n-
    \n-
    71
    \n-
    72 template<class LB>
    \n-
    \n-\n-
    74 {
    \n-
    75 public:
    \n-
    76
    \n-
    78 template<typename F, typename C>
    \n-
    \n-
    79 void interpolate (const F& f, std::vector<C>& out) const {
    \n-
    80 DUNE_THROW(Dune::Exception,"mimetic local interpolation not available");
    \n-
    81 }
    \n-
    \n-
    82 };
    \n-
    \n-
    83
    \n-
    \n-\n-
    88 {
    \n-
    89 public:
    \n-
    \n-
    90 MimeticLocalCoefficients (unsigned int variant_)
    \n-
    91 : variant(variant_), li(variant_)
    \n-
    92 {
    \n-
    93 for (unsigned int i=0; i<variant; i++)
    \n-\n-
    95 }
    \n-
    \n-
    96
    \n-
    \n-\n-
    98 : variant(0), li(0)
    \n-
    99 {}
    \n-
    \n-
    100
    \n-
    102 std::size_t size () const { return variant; }
    \n-
    103
    \n-
    \n-
    105 const Dune::LocalKey& localKey (std::size_t i) const {
    \n-
    106 return li[i];
    \n-
    107 }
    \n-
    \n-
    108
    \n-
    109 private:
    \n-
    110 unsigned int variant;
    \n-
    111 std::vector<Dune::LocalKey> li;
    \n-
    112 };
    \n-
    \n-
    113}
    \n-
    114
    \n-
    115#endif
    \n+
    59 return std::make_tuple(
    \n+
    60 std::make_pair(index(GeometryTypes::quadrilateral), []() { return RT2Cube2DLocalFiniteElement<D,R>(); })
    \n+
    61 );
    \n+
    62 }
    \n+
    63 };
    \n+
    64
    \n+
    65 template<class D, class R>
    \n+
    66 struct ImplementedRaviartThomasLocalFiniteElements<D,R,3,0> : public FixedDimLocalGeometryTypeIndex<3>
    \n+
    67 {
    \n+
    68 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n+
    69 static auto getImplementations()
    \n+
    70 {
    \n+
    71 return std::make_tuple(
    \n+
    72 std::make_pair(index(GeometryTypes::tetrahedron), []() { return RT03DLocalFiniteElement<D,R>(); }),
    \n+
    73 std::make_pair(index(GeometryTypes::hexahedron), []() { return RT0Cube3DLocalFiniteElement<D,R>(); })
    \n+
    74 );
    \n+
    75 }
    \n+
    76 };
    \n+
    77
    \n+
    78 template<class D, class R>
    \n+
    79 struct ImplementedRaviartThomasLocalFiniteElements<D,R,3,1> : public FixedDimLocalGeometryTypeIndex<3>
    \n+
    80 {
    \n+
    81 using FixedDimLocalGeometryTypeIndex<3>::index;
    \n+
    82 static auto getImplementations()
    \n+
    83 {
    \n+
    84 return std::make_tuple(
    \n+
    85 std::make_pair(index(GeometryTypes::hexahedron), []() { RT1Cube3DLocalFiniteElement<D,R>(); })
    \n+
    86 );
    \n+
    87 }
    \n+
    88 };
    \n+
    89
    \n+
    90} // namespace Impl
    \n+
    91
    \n+
    92
    \n+
    93
    \n+
    103template<class D, class R, std::size_t dim, std::size_t order>
    \n+\n+
    105
    \n+
    106} // namespace Dune
    \n+
    107
    \n+
    108#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    @ intersectionCodim
    Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
    Definition localkey.hh:37
    \n-
    Definition mimeticall.hh:23
    \n-
    MimeticLocalBasis(unsigned int variant_)
    Definition mimeticall.hh:28
    \n-
    Dune::LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    Definition mimeticall.hh:26
    \n-
    MimeticLocalBasis()
    Definition mimeticall.hh:32
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition mimeticall.hh:47
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition mimeticall.hh:63
    \n-
    void partial(const std::array< unsigned int, dim > &, const typename Traits::DomainType &, std::vector< typename Traits::RangeType > &) const
    Evaluate partial derivatives of all shape functions.
    Definition mimeticall.hh:55
    \n-
    unsigned int size() const
    Definition mimeticall.hh:36
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition mimeticall.hh:39
    \n-
    Definition mimeticall.hh:74
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Local interpolation of a function.
    Definition mimeticall.hh:79
    \n-
    !
    Definition mimeticall.hh:88
    \n-
    const Dune::LocalKey & localKey(std::size_t i) const
    map index i to local key
    Definition mimeticall.hh:105
    \n-
    MimeticLocalCoefficients(unsigned int variant_)
    Definition mimeticall.hh:90
    \n-
    std::size_t size() const
    number of coefficients
    Definition mimeticall.hh:102
    \n-
    MimeticLocalCoefficients()
    Definition mimeticall.hh:97
    \n+
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,193 +1,134 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\bi_\bm_\be_\bt_\bi_\bc\n-mimeticall.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomaslfecache.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_MIMETIC_ALL_HH\n-6#define DUNE_MIMETIC_ALL_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH\n 7\n-8#include \n-9\n-10#include \n-11#include \n-12#include \n+8#include \n+9#include \n+10\n+11#include \n+12#include \n 13\n-14#include \n-15\n-16#include \"../common/localbasis.hh\"\n-17#include \"../common/localkey.hh\"\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b._\bh_\bh>\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh>\n+16\n+17namespace _\bD_\bu_\bn_\be {\n 18\n-19namespace _\bD_\bu_\bn_\be\n-20{\n-21 template\n-_\b2_\b2 class _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-23 {\n-24 public:\n-25 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\bi_\bm_\b>,\n-_\b2_\b6 R,1,Dune::FieldVector, Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-27\n-_\b2_\b8 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (unsigned int variant_)\n-29 : variant(variant_)\n-30 {}\n-31\n-_\b3_\b2 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs ()\n-33 : variant(0)\n-34 {}\n-35\n-_\b3_\b6 unsigned int _\bs_\bi_\bz_\be () const { return variant; }\n-37\n-_\b3_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (\n-40 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-41 std::vector& out) const\n+19namespace Impl {\n+20\n+21 // Provide implemented Raviart-Thomas local finite elements\n+22\n+23 template\n+24 struct ImplementedRaviartThomasLocalFiniteElements\n+25 {};\n+26\n+27 template\n+28 struct ImplementedRaviartThomasLocalFiniteElements : public\n+FixedDimLocalGeometryTypeIndex<2>\n+29 {\n+30 using FixedDimLocalGeometryTypeIndex<2>::index;\n+31 static auto getImplementations()\n+32 {\n+33 return std::make_tuple(\n+34 std::make_pair(index(GeometryTypes::triangle), []() { return\n+RT02DLocalFiniteElement(); }),\n+35 std::make_pair(index(GeometryTypes::quadrilateral), []() { return\n+RT0Cube2DLocalFiniteElement(); })\n+36 );\n+37 }\n+38 };\n+39\n+40 template\n+41 struct ImplementedRaviartThomasLocalFiniteElements : public\n+FixedDimLocalGeometryTypeIndex<2>\n 42 {\n-43 DUNE_THROW(Dune::Exception,\"mimetic basis evaluation not available\");\n-44 }\n-45\n-_\b4_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (\n-48 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-49 std::vector& out) const\n-50 {\n-51 DUNE_THROW(Dune::Exception,\"mimetic basis Jacobian evaluation not\n-available\");\n-52 }\n-53\n-_\b5_\b5 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& /*order*/,\n-56 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& /*in*/, // position\n-57 std::vector& /*out*/) const // return value\n+43 using FixedDimLocalGeometryTypeIndex<2>::index;\n+44 static auto getImplementations()\n+45 {\n+46 return std::make_tuple(\n+47 std::make_pair(index(GeometryTypes::triangle), []() { return\n+RT12DLocalFiniteElement(); }),\n+48 std::make_pair(index(GeometryTypes::quadrilateral), []() { return\n+RT1Cube2DLocalFiniteElement(); })\n+49 );\n+50 }\n+51 };\n+52\n+53 template\n+54 struct ImplementedRaviartThomasLocalFiniteElements : public\n+FixedDimLocalGeometryTypeIndex<2>\n+55 {\n+56 using FixedDimLocalGeometryTypeIndex<2>::index;\n+57 static auto getImplementations()\n 58 {\n-59 DUNE_THROW(Dune::Exception,\"mimetic basis partial derivative evaluation not\n-available\");\n-60 }\n-61\n-_\b6_\b3 unsigned int _\bo_\br_\bd_\be_\br () const\n-64 {\n-65 DUNE_THROW(Dune::Exception,\"mimetic order evaluation not available\");\n-66 }\n-67\n-68 private:\n-69 unsigned int variant;\n-70 };\n-71\n-72 template\n-_\b7_\b3 class _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-74 {\n-75 public:\n-76\n-78 template\n-_\b7_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const {\n-80 DUNE_THROW(Dune::Exception,\"mimetic local interpolation not available\");\n-81 }\n-82 };\n-83\n-_\b8_\b7 class _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-88 {\n-89 public:\n-_\b9_\b0 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs (unsigned int variant_)\n-91 : variant(variant_), li(variant_)\n-92 {\n-93 for (unsigned int i=0; i li;\n-112 };\n-113}\n-114\n-115#endif\n+59 return std::make_tuple(\n+60 std::make_pair(index(GeometryTypes::quadrilateral), []() { return\n+RT2Cube2DLocalFiniteElement(); })\n+61 );\n+62 }\n+63 };\n+64\n+65 template\n+66 struct ImplementedRaviartThomasLocalFiniteElements : public\n+FixedDimLocalGeometryTypeIndex<3>\n+67 {\n+68 using FixedDimLocalGeometryTypeIndex<3>::index;\n+69 static auto getImplementations()\n+70 {\n+71 return std::make_tuple(\n+72 std::make_pair(index(GeometryTypes::tetrahedron), []() { return\n+RT03DLocalFiniteElement(); }),\n+73 std::make_pair(index(GeometryTypes::hexahedron), []() { return\n+RT0Cube3DLocalFiniteElement(); })\n+74 );\n+75 }\n+76 };\n+77\n+78 template\n+79 struct ImplementedRaviartThomasLocalFiniteElements : public\n+FixedDimLocalGeometryTypeIndex<3>\n+80 {\n+81 using FixedDimLocalGeometryTypeIndex<3>::index;\n+82 static auto getImplementations()\n+83 {\n+84 return std::make_tuple(\n+85 std::make_pair(index(GeometryTypes::hexahedron), []()\n+{ RT1Cube3DLocalFiniteElement(); })\n+86 );\n+87 }\n+88 };\n+89\n+90} // namespace Impl\n+91\n+92\n+93\n+103template\n+_\b1_\b0_\b4using _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be =\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n+_\bI_\bm_\bp_\bl_\be_\bm_\be_\bn_\bt_\be_\bd_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bo_\br_\bd_\be_\br_\b>>;\n+105\n+106} // namespace Dune\n+107\n+108#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bv_\ba_\br_\bi_\ba_\bn_\bt_\bc_\ba_\bc_\bh_\be_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bd_\bi_\bm\n-@ intersectionCodim\n-Codimension returned by LocalKey::codim() for degrees of freedom attached to an\n-intersection.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-MimeticLocalBasis(unsigned int variant_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-Dune::LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::\n-FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-MimeticLocalBasis()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, dim > &, const typename Traits::\n-DomainType &, std::vector< typename Traits::RangeType > &) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Local interpolation of a function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-!\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const Dune::LocalKey & localKey(std::size_t i) const\n-map index i to local key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-MimeticLocalCoefficients(unsigned int variant_)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:102\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-MimeticLocalCoefficients()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\ba_\br_\bi_\ba_\bn_\bt_\bC_\ba_\bc_\bh_\be\n+A cache storing a compile time selection of local finite element\n+implementations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementvariantcache.hh:68\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedsimplexlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas02d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,54 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    refinedsimplexlocalbasis.hh File Reference
    \n+
    raviartthomas02d.hh File Reference
    \n
    \n
    \n-\n-

    Contains a base class for LocalBasis classes based on uniform refinement. \n-More...

    \n-
    #include <dune/common/fvector.hh>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RefinedSimplexLocalBasis< D, dim >
     
    class  Dune::RefinedSimplexLocalBasis< D, 1 >
     Base class for LocalBasis classes based on uniform refinement in 1D; provides numbering and local coordinates of subelements. More...
     
    class  Dune::RefinedSimplexLocalBasis< D, 2 >
     Base class for LocalBasis classes based on uniform refinement in 2D; provides numbering and local coordinates of subelements. More...
     
    class  Dune::RefinedSimplexLocalBasis< D, 3 >
     Base class for LocalBasis classes based on uniform refinement in 3D; provides numbering and local coordinates of subelements. More...
    class  Dune::RT02DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on triangles. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-

    Detailed Description

    \n-

    Contains a base class for LocalBasis classes based on uniform refinement.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,38 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinedsimplexlocalbasis.hh File Reference\n-Contains a base class for LocalBasis classes based on uniform refinement.\n-_\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+raviartthomas02d.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b1_\b _\b>\n-\u00a0 Base class for LocalBasis classes based on uniform refinement in 1D;\n- provides numbering and local coordinates of subelements. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b2_\b _\b>\n-\u00a0 Base class for LocalBasis classes based on uniform refinement in 2D;\n- provides numbering and local coordinates of subelements. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b3_\b _\b>\n-\u00a0 Base class for LocalBasis classes based on uniform refinement in 3D;\n- provides numbering and local coordinates of subelements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 _\bZ_\be_\br_\bo order Raviart-Thomas shape functions on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Contains a base class for LocalBasis classes based on uniform refinement.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedsimplexlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas02d.hh Source File\n \n \n \n \n \n \n \n@@ -70,291 +70,125 @@\n \n \n \n \n \n \n \n
    \n-
    refinedsimplexlocalbasis.hh
    \n+
    raviartthomas02d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_REFINED_SIMPLEX_LOCALBASIS_HH
    \n-
    6#define DUNE_REFINED_SIMPLEX_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH
    \n
    7
    \n-
    12#include <dune/common/fvector.hh>
    \n-
    13#include <dune/common/exceptions.hh>
    \n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18 template<class D, int dim>
    \n-
    \n-\n-
    20 {
    \n-
    21 protected:
    \n-
    \n-\n-
    23 {
    \n-
    24 DUNE_THROW(Dune::NotImplemented,"RefinedSimplexLocalBasis not implemented for dim > 3.");
    \n-
    25 }
    \n-
    \n-
    26 };
    \n-
    \n-
    27
    \n-
    36 template<class D>
    \n-
    \n-\n-
    38 {
    \n-
    39 protected:
    \n-
    40
    \n-\n-
    43
    \n-
    \n-
    54 static int getSubElement(const FieldVector<D,1>& global)
    \n-
    55 {
    \n-
    56 if (global[0] <= 0.5)
    \n-
    57 return 0;
    \n-
    58 else if (global[0] <= 1.0)
    \n-
    59 return 1;
    \n-
    60
    \n-
    61 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n-
    62 }
    \n-
    \n-
    63
    \n-
    \n-
    70 static void getSubElement(const FieldVector<D,1>& global,
    \n-
    71 int& subElement,
    \n-
    72 FieldVector<D,1>& local)
    \n-
    73 {
    \n-
    74 if (global[0] <= 0.5) {
    \n-
    75 subElement = 0;
    \n-
    76 local[0] = 2.0 * global[0];
    \n-
    77 return;
    \n-
    78 }
    \n-
    79
    \n-
    80 subElement = 1;
    \n-
    81 local[0] = 2.0 * global[0] - 1.0;
    \n-
    82 }
    \n-
    \n-
    83
    \n-
    84 };
    \n-
    \n-
    85
    \n-
    86
    \n-
    98 template<class D>
    \n-
    \n-\n-
    100 {
    \n-
    101 protected:
    \n-
    102
    \n-\n-
    105
    \n-
    \n-
    121 static int getSubElement(const FieldVector<D,2>& global)
    \n-
    122 {
    \n-
    123 if (global[0] + global[1] <= 0.5)
    \n-
    124 return 0;
    \n-
    125 else if (global[0] >= 0.5)
    \n-
    126 return 1;
    \n-
    127 else if (global[1] >= 0.5)
    \n-
    128 return 2;
    \n-
    129
    \n-
    130 return 3;
    \n-
    131 }
    \n-
    \n-
    132
    \n-
    \n-
    139 static void getSubElement(const FieldVector<D,2>& global,
    \n-
    140 int& subElement,
    \n-
    141 FieldVector<D,2>& local)
    \n-
    142 {
    \n-
    143 if (global[0] + global[1] <= 0.5) {
    \n-
    144 subElement = 0;
    \n-
    145 local[0] = 2*global[0];
    \n-
    146 local[1] = 2*global[1];
    \n-
    147 return;
    \n-
    148 } else if (global[0] >= 0.5) {
    \n-
    149 subElement = 1;
    \n-
    150 local[0] = 2*global[0]-1;
    \n-
    151 local[1] = 2*global[1];
    \n-
    152 return;
    \n-
    153 } else if (global[1] >= 0.5) {
    \n-
    154 subElement = 2;
    \n-
    155 local[0] = 2*global[0];
    \n-
    156 local[1] = 2*global[1]-1;
    \n-
    157 return;
    \n-
    158 }
    \n-
    159
    \n-
    160 subElement = 3;
    \n-
    161 local[0] = -2 * global[0] + 1;
    \n-
    162 local[1] = -2 * global[1] + 1;
    \n-
    163
    \n-
    164 }
    \n-
    \n-
    165
    \n-
    166
    \n-
    167 };
    \n-
    \n-
    168
    \n-
    180 template<class D>
    \n-
    \n-\n-
    182 {
    \n-
    183 protected:
    \n-
    184
    \n-\n-
    187
    \n-
    \n-
    218 static int getSubElement(const FieldVector<D,3>& global)
    \n-
    219 {
    \n-
    220 if (global[0] + global[1] + global[2] <= 0.5)
    \n-
    221 return 0;
    \n-
    222 else if (global[0] >= 0.5)
    \n-
    223 return 1;
    \n-
    224 else if (global[1] >= 0.5)
    \n-
    225 return 2;
    \n-
    226 else if (global[2] >= 0.5)
    \n-
    227 return 3;
    \n-
    228 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5))
    \n-
    229 return 4;
    \n-
    230 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5))
    \n-
    231 return 5;
    \n-
    232 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5))
    \n-
    233 return 6;
    \n-
    234 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5))
    \n-
    235 return 7;
    \n-
    236
    \n-
    237 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n-
    238
    \n-
    239 }
    \n-
    \n-
    \n-
    246 static void getSubElement(const FieldVector<D,3>& global,
    \n-
    247 int& subElement,
    \n-
    248 FieldVector<D,3>& local)
    \n-
    249 {
    \n-
    250 if (global[0] + global[1] + global[2] <= 0.5) {
    \n-
    251 subElement = 0;
    \n-
    252 local = global;
    \n-
    253 local *= 2.0;
    \n-
    254 return;
    \n-
    255 } else if (global[0] >= 0.5) {
    \n-
    256 subElement = 1;
    \n-
    257 local = global;
    \n-
    258 local[0] -= 0.5;
    \n-
    259 local *= 2.0;
    \n-
    260 return;
    \n-
    261 } else if (global[1] >= 0.5) {
    \n-
    262 subElement = 2;
    \n-
    263 local = global;
    \n-
    264 local[1] -= 0.5;
    \n-
    265 local *= 2.0;
    \n-
    266 return;
    \n-
    267 } else if (global[2] >= 0.5) {
    \n-
    268 subElement = 3;
    \n-
    269 local = global;
    \n-
    270 local[2] -= 0.5;
    \n-
    271 local *= 2.0;
    \n-
    272 return;
    \n-
    273 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5)) {
    \n-
    274 subElement = 4;
    \n-
    275 local[0] = 2.0 * global[1];
    \n-
    276 local[1] = 2.0 * (0.5 - global[0] - global[1]);
    \n-
    277 local[2] = 2.0 * (-0.5 + global[0] + global[1] + global[2]);
    \n-
    278 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n-
    279 // A[0][1] = 2.0;
    \n-
    280 // A[1][0] = -2.0;
    \n-
    281 // A[1][1] = -2.0;
    \n-
    282 // A[2][0] = 2.0;
    \n-
    283 // A[2][1] = 2.0;
    \n-
    284 // A[2][2] = 2.0;
    \n-
    285 // A.mv(global,local);
    \n-
    286 // local[1] += 1.0;
    \n-
    287 // local[2] -= 1.0;
    \n-
    288 return;
    \n-
    289 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5)) {
    \n-
    290 subElement = 5;
    \n-
    291 local[0] = 2.0 * (0.5 - global[0]);
    \n-
    292 local[1] = 2.0 * (0.5 - global[1] - global[2]);
    \n-
    293 local[2] = 2.0 * global[2];
    \n-
    294 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n-
    295 // A[0][0] = -2.0;
    \n-
    296 // A[1][1] = -2.0;
    \n-
    297 // A[1][2] = -2.0;
    \n-
    298 // A[2][2] = 2.0;
    \n-
    299 // A.mv(global,local);
    \n-
    300 // local[0] += 1.0;
    \n-
    301 // local[1] += 1.0;
    \n-
    302 return;
    \n-
    303 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5)) {
    \n-
    304 subElement = 6;
    \n-
    305 local[0] = 2.0 * (0.5 - global[0] - global[1]);
    \n-
    306 local[1] = 2.0 * global[0];
    \n-
    307 local[2] = 2.0 * (-0.5 + global[1] + global[2]);
    \n-
    308 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n-
    309 // A[0][0] = -2.0;
    \n-
    310 // A[0][1] = -2.0;
    \n-
    311 // A[1][0] = 2.0;
    \n-
    312 // A[2][1] = 2.0;
    \n-
    313 // A[2][2] = 2.0;
    \n-
    314 // A.mv(global,local);
    \n-
    315 // local[0] += 1.0;
    \n-
    316 // local[2] -= 1.0;
    \n-
    317 return;
    \n-
    318 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5)) {
    \n-
    319 subElement = 7;
    \n-
    320 local[0] = 2.0 * (-0.5 + global[1] + global[2]);
    \n-
    321 local[1] = 2.0 * (0.5 - global[1]);
    \n-
    322 local[2] = 2.0 * (-0.5 + global[0] + global[1]);
    \n-
    323 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n-
    324 // A[0][1] = 2.0;
    \n-
    325 // A[0][2] = 2.0;
    \n-
    326 // A[1][1] = -2.0;
    \n-
    327 // A[2][0] = 2.0;
    \n-
    328 // A[2][1] = 2.0;
    \n-
    329 // A.mv(global,local);
    \n-
    330 // local[0] -= 1.0;
    \n-
    331 // local[1] += 1.0;
    \n-
    332 // local[2] -= 1.0;
    \n-
    333 return;
    \n-
    334 }
    \n-
    335
    \n-
    336 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n-
    337
    \n-
    338 }
    \n-
    \n-
    339
    \n-
    340 };
    \n-
    \n-
    341
    \n-
    342
    \n-
    343}
    \n-
    344
    \n-
    345#endif
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n+\n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17
    \n+
    26 template<class D, class R>
    \n+
    \n+
    27 class
    \n+\n+
    29 {
    \n+
    30 public:
    \n+\n+\n+
    33
    \n+
    \n+\n+
    36 {}
    \n+
    \n+
    37
    \n+
    \n+
    43 RT02DLocalFiniteElement (std::bitset<3> s) :
    \n+
    44 basis(s),
    \n+
    45 interpolation(s)
    \n+
    46 {}
    \n+
    \n+
    47
    \n+
    \n+
    48 const typename Traits::LocalBasisType& localBasis () const
    \n+
    49 {
    \n+
    50 return basis;
    \n+
    51 }
    \n+
    \n+
    52
    \n+
    \n+\n+
    54 {
    \n+
    55 return coefficients;
    \n+
    56 }
    \n+
    \n+
    57
    \n+
    \n+\n+
    59 {
    \n+
    60 return interpolation;
    \n+
    61 }
    \n+
    \n+
    62
    \n+
    \n+
    63 unsigned int size () const
    \n+
    64 {
    \n+
    65 return 3;
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    \n+
    68 static constexpr GeometryType type ()
    \n+
    69 {
    \n+
    70 return GeometryTypes::triangle;
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    73 private:
    \n+\n+
    75 RT02DLocalCoefficients coefficients;
    \n+\n+
    77 };
    \n+
    \n+
    78
    \n+
    79}
    \n+
    80
    \n+
    81#endif
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition refinedsimplexlocalbasis.hh:20
    \n-
    RefinedSimplexLocalBasis()
    Definition refinedsimplexlocalbasis.hh:22
    \n-
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:42
    \n-
    static void getSubElement(const FieldVector< D, 1 > &global, int &subElement, FieldVector< D, 1 > &local)
    Get local coordinates in the subelement.
    Definition refinedsimplexlocalbasis.hh:70
    \n-
    static int getSubElement(const FieldVector< D, 1 > &global)
    Get the number of the subelement containing a given point.
    Definition refinedsimplexlocalbasis.hh:54
    \n-
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:104
    \n-
    static int getSubElement(const FieldVector< D, 2 > &global)
    Get the number of the subtriangle containing a given point.
    Definition refinedsimplexlocalbasis.hh:121
    \n-
    static void getSubElement(const FieldVector< D, 2 > &global, int &subElement, FieldVector< D, 2 > &local)
    Get local coordinates in the subtriangle.
    Definition refinedsimplexlocalbasis.hh:139
    \n-
    static void getSubElement(const FieldVector< D, 3 > &global, int &subElement, FieldVector< D, 3 > &local)
    Get local coordinates in the subsimplex.
    Definition refinedsimplexlocalbasis.hh:246
    \n-
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:186
    \n-
    static int getSubElement(const FieldVector< D, 3 > &global)
    Get the number of the subsimplex containing a given point in the reference element.
    Definition refinedsimplexlocalbasis.hh:218
    \n-\n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Zero order Raviart-Thomas shape functions on triangles.
    Definition raviartthomas02d.hh:29
    \n+
    RT02DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas02d.hh:35
    \n+
    LocalFiniteElementTraits< RT02DLocalBasis< D, R >, RT02DLocalCoefficients, RT02DLocalInterpolation< RT02DLocalBasis< D, R > > > Traits
    Definition raviartthomas02d.hh:32
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas02d.hh:68
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas02d.hh:58
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas02d.hh:48
    \n+
    RT02DLocalFiniteElement(std::bitset< 3 > s)
    Constructor with explicitly given edge orientations.
    Definition raviartthomas02d.hh:43
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas02d.hh:53
    \n+
    unsigned int size() const
    Definition raviartthomas02d.hh:63
    \n+
    Definition raviartthomas02dlocalbasis.hh:27
    \n+
    Definition raviartthomas02dlocalcoefficients.hh:25
    \n+
    Definition raviartthomas02dlocalinterpolation.hh:20
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,304 +1,134 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-refinedsimplexlocalbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas02d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_REFINED_SIMPLEX_LOCALBASIS_HH\n-6#define DUNE_REFINED_SIMPLEX_LOCALBASIS_HH\n+5#ifndef DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH\n+6#define DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH\n 7\n-12#include \n-13#include \n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18 template\n-_\b1_\b9 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-20 {\n-21 protected:\n-_\b2_\b2 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n-23 {\n-24 DUNE_THROW(Dune::NotImplemented,\"RefinedSimplexLocalBasis not implemented\n-for dim > 3.\");\n-25 }\n-26 };\n-27\n-36 template\n-_\b3_\b7 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-38 {\n-39 protected:\n-40\n-_\b4_\b2 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() {}\n-43\n-_\b5_\b4 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n-55 {\n-56 if (global[0] <= 0.5)\n-57 return 0;\n-58 else if (global[0] <= 1.0)\n-59 return 1;\n-60\n-61 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n-62 }\n-63\n-_\b7_\b0 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n-71 int& subElement,\n-72 FieldVector& local)\n-73 {\n-74 if (global[0] <= 0.5) {\n-75 subElement = 0;\n-76 local[0] = 2.0 * global[0];\n-77 return;\n-78 }\n-79\n-80 subElement = 1;\n-81 local[0] = 2.0 * global[0] - 1.0;\n-82 }\n-83\n-84 };\n-85\n-86\n-98 template\n-_\b9_\b9 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-100 {\n-101 protected:\n-102\n-_\b1_\b0_\b4 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() {}\n-105\n-_\b1_\b2_\b1 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n-122 {\n-123 if (global[0] + global[1] <= 0.5)\n-124 return 0;\n-125 else if (global[0] >= 0.5)\n-126 return 1;\n-127 else if (global[1] >= 0.5)\n-128 return 2;\n-129\n-130 return 3;\n-131 }\n-132\n-_\b1_\b3_\b9 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n-140 int& subElement,\n-141 FieldVector& local)\n-142 {\n-143 if (global[0] + global[1] <= 0.5) {\n-144 subElement = 0;\n-145 local[0] = 2*global[0];\n-146 local[1] = 2*global[1];\n-147 return;\n-148 } else if (global[0] >= 0.5) {\n-149 subElement = 1;\n-150 local[0] = 2*global[0]-1;\n-151 local[1] = 2*global[1];\n-152 return;\n-153 } else if (global[1] >= 0.5) {\n-154 subElement = 2;\n-155 local[0] = 2*global[0];\n-156 local[1] = 2*global[1]-1;\n-157 return;\n-158 }\n-159\n-160 subElement = 3;\n-161 local[0] = -2 * global[0] + 1;\n-162 local[1] = -2 * global[1] + 1;\n-163\n-164 }\n-165\n-166\n-167 };\n-168\n-180 template\n-_\b1_\b8_\b1 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-182 {\n-183 protected:\n-184\n-_\b1_\b8_\b6 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() {}\n-187\n-_\b2_\b1_\b8 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n-219 {\n-220 if (global[0] + global[1] + global[2] <= 0.5)\n-221 return 0;\n-222 else if (global[0] >= 0.5)\n-223 return 1;\n-224 else if (global[1] >= 0.5)\n-225 return 2;\n-226 else if (global[2] >= 0.5)\n-227 return 3;\n-228 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5))\n-229 return 4;\n-230 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5))\n-231 return 5;\n-232 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5))\n-233 return 6;\n-234 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5))\n-235 return 7;\n-236\n-237 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n-238\n-239 }\n-_\b2_\b4_\b6 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n-247 int& subElement,\n-248 FieldVector& local)\n-249 {\n-250 if (global[0] + global[1] + global[2] <= 0.5) {\n-251 subElement = 0;\n-252 local = global;\n-253 local *= 2.0;\n-254 return;\n-255 } else if (global[0] >= 0.5) {\n-256 subElement = 1;\n-257 local = global;\n-258 local[0] -= 0.5;\n-259 local *= 2.0;\n-260 return;\n-261 } else if (global[1] >= 0.5) {\n-262 subElement = 2;\n-263 local = global;\n-264 local[1] -= 0.5;\n-265 local *= 2.0;\n-266 return;\n-267 } else if (global[2] >= 0.5) {\n-268 subElement = 3;\n-269 local = global;\n-270 local[2] -= 0.5;\n-271 local *= 2.0;\n-272 return;\n-273 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <=\n-0.5)) {\n-274 subElement = 4;\n-275 local[0] = 2.0 * global[1];\n-276 local[1] = 2.0 * (0.5 - global[0] - global[1]);\n-277 local[2] = 2.0 * (-0.5 + global[0] + global[1] + global[2]);\n-278 // Dune::FieldMatrix A(0.0);\n-279 // A[0][1] = 2.0;\n-280 // A[1][0] = -2.0;\n-281 // A[1][1] = -2.0;\n-282 // A[2][0] = 2.0;\n-283 // A[2][1] = 2.0;\n-284 // A[2][2] = 2.0;\n-285 // A.mv(global,local);\n-286 // local[1] += 1.0;\n-287 // local[2] -= 1.0;\n-288 return;\n-289 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <=\n-0.5)) {\n-290 subElement = 5;\n-291 local[0] = 2.0 * (0.5 - global[0]);\n-292 local[1] = 2.0 * (0.5 - global[1] - global[2]);\n-293 local[2] = 2.0 * global[2];\n-294 // Dune::FieldMatrix A(0.0);\n-295 // A[0][0] = -2.0;\n-296 // A[1][1] = -2.0;\n-297 // A[1][2] = -2.0;\n-298 // A[2][2] = 2.0;\n-299 // A.mv(global,local);\n-300 // local[0] += 1.0;\n-301 // local[1] += 1.0;\n-302 return;\n-303 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >=\n-0.5)) {\n-304 subElement = 6;\n-305 local[0] = 2.0 * (0.5 - global[0] - global[1]);\n-306 local[1] = 2.0 * global[0];\n-307 local[2] = 2.0 * (-0.5 + global[1] + global[2]);\n-308 // Dune::FieldMatrix A(0.0);\n-309 // A[0][0] = -2.0;\n-310 // A[0][1] = -2.0;\n-311 // A[1][0] = 2.0;\n-312 // A[2][1] = 2.0;\n-313 // A[2][2] = 2.0;\n-314 // A.mv(global,local);\n-315 // local[0] += 1.0;\n-316 // local[2] -= 1.0;\n-317 return;\n-318 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >=\n-0.5)) {\n-319 subElement = 7;\n-320 local[0] = 2.0 * (-0.5 + global[1] + global[2]);\n-321 local[1] = 2.0 * (0.5 - global[1]);\n-322 local[2] = 2.0 * (-0.5 + global[0] + global[1]);\n-323 // Dune::FieldMatrix A(0.0);\n-324 // A[0][1] = 2.0;\n-325 // A[0][2] = 2.0;\n-326 // A[1][1] = -2.0;\n-327 // A[2][0] = 2.0;\n-328 // A[2][1] = 2.0;\n-329 // A.mv(global,local);\n-330 // local[0] -= 1.0;\n-331 // local[1] += 1.0;\n-332 // local[2] -= 1.0;\n-333 return;\n-334 }\n-335\n-336 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n-337\n-338 }\n-339\n-340 };\n-341\n-342\n-343}\n-344\n-345#endif\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17\n+26 template\n+_\b2_\b7 class\n+28 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+29 {\n+30 public:\n+31 typedef\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b2 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b5 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+36 {}\n+37\n+_\b4_\b3 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset<3> s) :\n+44 basis(s),\n+45 interpolation(s)\n+46 {}\n+47\n+_\b4_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+49 {\n+50 return basis;\n+51 }\n+52\n+_\b5_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+54 {\n+55 return coefficients;\n+56 }\n+57\n+_\b5_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+59 {\n+60 return interpolation;\n+61 }\n+62\n+_\b6_\b3 unsigned int _\bs_\bi_\bz_\be () const\n+64 {\n+65 return 3;\n+66 }\n+67\n+_\b6_\b8 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+69 {\n+70 return GeometryTypes::triangle;\n+71 }\n+72\n+73 private:\n+74 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+75 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+76 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+77 };\n+78\n+79}\n+80\n+81#endif\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RefinedSimplexLocalBasis()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b1_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RefinedSimplexLocalBasis()\n-Protected default constructor so this class can only be instantiated as a base\n-class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b1_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n-static void getSubElement(const FieldVector< D, 1 > &global, int &subElement,\n-FieldVector< D, 1 > &local)\n-Get local coordinates in the subelement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b1_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n-static int getSubElement(const FieldVector< D, 1 > &global)\n-Get the number of the subelement containing a given point.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b2_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RefinedSimplexLocalBasis()\n-Protected default constructor so this class can only be instantiated as a base\n-class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:104\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b2_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n-static int getSubElement(const FieldVector< D, 2 > &global)\n-Get the number of the subtriangle containing a given point.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:121\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b2_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n-static void getSubElement(const FieldVector< D, 2 > &global, int &subElement,\n-FieldVector< D, 2 > &local)\n-Get local coordinates in the subtriangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:139\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b3_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n-static void getSubElement(const FieldVector< D, 3 > &global, int &subElement,\n-FieldVector< D, 3 > &local)\n-Get local coordinates in the subsimplex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:246\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b3_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RefinedSimplexLocalBasis()\n-Protected default constructor so this class can only be instantiated as a base\n-class.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:186\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\b3_\b _\b>_\b:_\b:_\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt\n-static int getSubElement(const FieldVector< D, 3 > &global)\n-Get the number of the subsimplex containing a given point in the reference\n-element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:218\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Zero order Raviart-Thomas shape functions on triangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT02DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT02DLocalBasis< D, R >, RT02DLocalCoefficients,\n+RT02DLocalInterpolation< RT02DLocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT02DLocalFiniteElement(std::bitset< 3 > s)\n+Constructor with explicitly given edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02d.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:20\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp1.hh File Reference\n+dune-localfunctions: raviartthomas03d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    refinedp1.hh File Reference
    \n+
    raviartthomas03d.hh File Reference
    \n
    \n
    \n \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RefinedP1LocalFiniteElement< D, R, dim >
     Piecewise linear continuous Lagrange functions on a uniformly refined simplex element. More...
    class  Dune::RT03DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on tetrahedra. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinedp1.hh File Reference\n+raviartthomas03d.hh File Reference\n #include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Piecewise linear continuous Lagrange functions on a uniformly refined\n- simplex element. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 _\bZ_\be_\br_\bo order Raviart-Thomas shape functions on tetrahedra. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp1.hh Source File\n+dune-localfunctions: raviartthomas03d.hh Source File\n \n \n \n \n \n \n \n@@ -70,120 +70,125 @@\n
    \n \n \n \n \n \n \n
    \n-
    refinedp1.hh
    \n+
    raviartthomas03d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH
    \n
    7
    \n
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-\n-\n-
    12
    \n-\n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    27 template<class D, class R, int dim>
    \n-
    \n-\n+\n+\n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17
    \n+
    26 template<class D, class R>
    \n+
    \n+
    27 class
    \n+\n
    29 {
    \n
    30 public:
    \n-\n-
    34 Impl::LagrangeSimplexLocalCoefficients<dim,2>,
    \n-
    35 Impl::LagrangeSimplexLocalInterpolation<Impl::LagrangeSimplexLocalBasis<D,R,dim,2> > > Traits;
    \n-
    36
    \n-\n-
    41
    \n-
    \n-
    44 const typename Traits::LocalBasisType& localBasis () const
    \n-
    45 {
    \n-
    46 return basis_;
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    \n-\n-
    52 {
    \n-
    53 return coefficients_;
    \n-
    54 }
    \n+\n+\n+
    33
    \n+
    \n+\n+
    36 {}
    \n+
    \n+
    37
    \n+
    \n+
    43 RT03DLocalFiniteElement (std::bitset<4> s) :
    \n+
    44 basis(s),
    \n+
    45 interpolation(s)
    \n+
    46 {}
    \n+
    \n+
    47
    \n+
    \n+
    48 const typename Traits::LocalBasisType& localBasis () const
    \n+
    49 {
    \n+
    50 return basis;
    \n+
    51 }
    \n+
    \n+
    52
    \n+
    \n+\n+
    54 {
    \n+
    55 return coefficients;
    \n+
    56 }
    \n
    \n-
    55
    \n+
    57
    \n
    \n-\n+\n
    59 {
    \n-
    60 return interpolation_;
    \n+
    60 return interpolation;
    \n
    61 }
    \n
    \n
    62
    \n-
    \n-
    64 unsigned int size () const
    \n-
    65 {
    \n-
    66 return basis_.size();
    \n-
    67 }
    \n-
    \n-
    68
    \n-
    \n-
    71 static constexpr GeometryType type ()
    \n-
    72 {
    \n-
    73 return GeometryTypes::simplex(dim);
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    76 private:
    \n-\n-
    78 Impl::LagrangeSimplexLocalCoefficients<dim,2> coefficients_;
    \n-
    79 // Yes, the template argument here really is LagrangeSimplexLocalBasis, even though this is not
    \n-
    80 // the local basis of the refined locale finite element: The reason is that LagrangeSimplexLocalInterpolation
    \n-
    81 // uses this argument to determine the polynomial order, and RefinedP1LocalBasis returns order 1
    \n-
    82 // whereas order 2 is needed here.
    \n-
    83 Impl::LagrangeSimplexLocalInterpolation<Impl::LagrangeSimplexLocalBasis<D,R,dim,2> > interpolation_;
    \n-
    84 };
    \n-
    \n-
    85
    \n-
    86}
    \n-
    87
    \n-
    88#endif // DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH
    \n-\n-\n-\n-
    Linear Lagrange shape functions on a uniformly refined reference element.
    \n+
    \n+
    63 unsigned int size () const
    \n+
    64 {
    \n+
    65 return 4;
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    \n+
    68 static constexpr GeometryType type ()
    \n+
    69 {
    \n+
    70 return GeometryTypes::tetrahedron;
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    73 private:
    \n+\n+
    75 RT03DLocalCoefficients coefficients;
    \n+\n+
    77 };
    \n+
    \n+
    78
    \n+
    79}
    \n+
    80
    \n+
    81#endif
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Piecewise linear continuous Lagrange functions on a uniformly refined simplex element.
    Definition refinedp1.hh:29
    \n-
    static constexpr GeometryType type()
    The element type that this finite element is defined on.
    Definition refinedp1.hh:71
    \n-
    unsigned int size() const
    Number of shape functions of this finite element.
    Definition refinedp1.hh:64
    \n-
    RefinedP1LocalFiniteElement()
    Default constructor.
    Definition refinedp1.hh:39
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Evaluates all degrees of freedom for a given function.
    Definition refinedp1.hh:58
    \n-
    LocalFiniteElementTraits< RefinedP1LocalBasis< D, R, dim >, Impl::LagrangeSimplexLocalCoefficients< dim, 2 >, Impl::LagrangeSimplexLocalInterpolation< Impl::LagrangeSimplexLocalBasis< D, R, dim, 2 > > > Traits
    Export all types used by this implementation.
    Definition refinedp1.hh:35
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Produces the assignments of the degrees of freedom to the element subentities.
    Definition refinedp1.hh:51
    \n-
    const Traits::LocalBasisType & localBasis() const
    The set of shape functions.
    Definition refinedp1.hh:44
    \n-
    Definition refinedp1localbasis.hh:23
    \n+
    Zero order Raviart-Thomas shape functions on tetrahedra.
    Definition raviartthomas03d.hh:29
    \n+
    LocalFiniteElementTraits< RT03DLocalBasis< D, R >, RT03DLocalCoefficients, RT03DLocalInterpolation< RT03DLocalBasis< D, R > > > Traits
    Definition raviartthomas03d.hh:32
    \n+
    unsigned int size() const
    Definition raviartthomas03d.hh:63
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas03d.hh:68
    \n+
    RT03DLocalFiniteElement(std::bitset< 4 > s)
    Constructor with explicitly given face orientations.
    Definition raviartthomas03d.hh:43
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas03d.hh:53
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas03d.hh:48
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas03d.hh:58
    \n+
    RT03DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas03d.hh:35
    \n+
    Definition raviartthomas03dlocalbasis.hh:27
    \n+
    Definition raviartthomas03dlocalcoefficients.hh:25
    \n+
    Definition raviartthomas03dlocalinterpolation.hh:17
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,140 +1,134 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n-refinedp1.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas03d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH\n-6#define DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH\n 7\n 8#include \n 9\n 10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-27 template\n-_\b2_\b8 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17\n+26 template\n+_\b2_\b7 class\n+28 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n 29 {\n 30 public:\n-33 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,\n-34 Impl::LagrangeSimplexLocalCoefficients,\n-_\b3_\b5 Impl::LagrangeSimplexLocalInterpolation > > _\bT_\br_\ba_\bi_\bt_\bs;\n-36\n-_\b3_\b9 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-40 {}\n-41\n-_\b4_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-45 {\n-46 return basis_;\n-47 }\n-48\n-_\b5_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-52 {\n-53 return coefficients_;\n-54 }\n-55\n+31 typedef\n+_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b2 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b5 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+36 {}\n+37\n+_\b4_\b3 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset<4> s) :\n+44 basis(s),\n+45 interpolation(s)\n+46 {}\n+47\n+_\b4_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+49 {\n+50 return basis;\n+51 }\n+52\n+_\b5_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+54 {\n+55 return coefficients;\n+56 }\n+57\n _\b5_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n 59 {\n-60 return interpolation_;\n+60 return interpolation;\n 61 }\n 62\n-_\b6_\b4 unsigned int _\bs_\bi_\bz_\be () const\n-65 {\n-66 return basis_.size();\n-67 }\n-68\n-_\b7_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-72 {\n-73 return GeometryTypes::simplex(dim);\n-74 }\n-75\n-76 private:\n-77 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> basis_;\n-78 Impl::LagrangeSimplexLocalCoefficients coefficients_;\n-79 // Yes, the template argument here really is LagrangeSimplexLocalBasis, even\n-though this is not\n-80 // the local basis of the refined locale finite element: The reason is that\n-LagrangeSimplexLocalInterpolation\n-81 // uses this argument to determine the polynomial order, and\n-RefinedP1LocalBasis returns order 1\n-82 // whereas order 2 is needed here.\n-83 Impl::LagrangeSimplexLocalInterpolation > interpolation_;\n-84 };\n-85\n-86}\n-87\n-88#endif // DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bp_\b0_\b._\bh_\bh\n+_\b6_\b3 unsigned int _\bs_\bi_\bz_\be () const\n+64 {\n+65 return 4;\n+66 }\n+67\n+_\b6_\b8 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+69 {\n+70 return GeometryTypes::tetrahedron;\n+71 }\n+72\n+73 private:\n+74 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+75 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+76 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+77 };\n+78\n+79}\n+80\n+81#endif\n _\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-Linear Lagrange shape functions on a uniformly refined reference element.\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n traits helper struct\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n LB LocalBasisType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n LC LocalCoefficientsType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n LI LocalInterpolationType\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Piecewise linear continuous Lagrange functions on a uniformly refined simplex\n-element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-The element type that this finite element is defined on.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Zero order Raviart-Thomas shape functions on tetrahedra.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT03DLocalBasis< D, R >, RT03DLocalCoefficients,\n+RT03DLocalInterpolation< RT03DLocalBasis< D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n-Number of shape functions of this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RefinedP1LocalFiniteElement()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-Evaluates all degrees of freedom for a given function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RefinedP1LocalBasis< D, R, dim >, Impl::\n-LagrangeSimplexLocalCoefficients< dim, 2 >, Impl::\n-LagrangeSimplexLocalInterpolation< Impl::LagrangeSimplexLocalBasis< D, R, dim,\n-2 > > > Traits\n-Export all types used by this implementation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT03DLocalFiniteElement(std::bitset< 4 > s)\n+Constructor with explicitly given face orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n const Traits::LocalCoefficientsType & localCoefficients() const\n-Produces the assignments of the degrees of freedom to the element subentities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n const Traits::LocalBasisType & localBasis() const\n-The set of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:23\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT03DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03d.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalinterpolation.hh:17\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0localinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas0cube2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,34 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    refinedp0localinterpolation.hh File Reference
    \n+
    raviartthomas0cube2d.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/refined/refinedp0/refinedp0localbasis.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RefinedP0LocalInterpolation< LB >
     
    class  Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > >
     
    class  Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > >
     
    class  Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > >
    class  Dune::RT0Cube2DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on rectangles. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinedp0localinterpolation.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+raviartthomas0cube2d.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\ba_\bl_\bl_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 _\bZ_\be_\br_\bo order Raviart-Thomas shape functions on rectangles. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0localinterpolation.hh Source File\n+dune-localfunctions: raviartthomas0cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,197 +70,119 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    refinedp0localinterpolation.hh
    \n+
    raviartthomas0cube2d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_REFINED_P0_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_REFINED_P0_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-\n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    15 template<class LB>
    \n-
    \n-\n-
    17 {};
    \n-
    \n-
    18
    \n-
    22 template<class D, class R>
    \n-
    \n-\n-
    24 {
    \n-\n-
    26 typedef typename LB::Traits::DomainType DT;
    \n-
    27
    \n-
    28 public:
    \n-
    \n-\n-
    30 interpolationPoints_(2)
    \n-
    31 {
    \n-
    32 // Interpolation is done by evaluating at the halved segments centers
    \n-
    33 interpolationPoints_[0][0] = 1.0/4.0;
    \n+\n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    23 template<class D, class R>
    \n+
    \n+\n+
    25 {
    \n+
    26 public:
    \n+\n+\n+\n+\n+
    31
    \n+\n
    34
    \n-
    35 interpolationPoints_[1][0] = 3.0/4.0;
    \n-
    36 }
    \n+
    \n+\n+
    36 basis(s),
    \n+
    37 interpolation(s)
    \n+
    38 {}
    \n
    \n-
    37
    \n-
    38
    \n-
    39 template<typename F, typename C>
    \n+
    39
    \n
    \n-
    40 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    40 const typename Traits::LocalBasisType& localBasis () const
    \n
    41 {
    \n-
    42 out.resize(interpolationPoints_.size());
    \n-
    43 for (size_t i = 0; i < out.size(); ++i)
    \n-
    44 {
    \n-
    45 out[i] = f(interpolationPoints_[i]);
    \n-
    46 }
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    49 private:
    \n-
    50 std::vector<DT> interpolationPoints_;
    \n-
    51 };
    \n-
    \n-
    52
    \n-
    56 template<class D, class R>
    \n-
    \n-\n-
    58 {
    \n-\n-
    60 typedef typename LB::Traits::DomainType DT;
    \n-
    61
    \n-
    62 public:
    \n-
    \n-\n-
    64 interpolationPoints_(4)
    \n-
    65 {
    \n-
    66 // Interpolation is done by evaluating at the subtriangle centers
    \n-
    67 interpolationPoints_[0][0] = 1.0/6;
    \n-
    68 interpolationPoints_[0][1] = 1.0/6;
    \n-
    69
    \n-
    70 interpolationPoints_[1][0] = 4.0/6;
    \n-
    71 interpolationPoints_[1][1] = 1.0/6;
    \n-
    72
    \n-
    73 interpolationPoints_[2][0] = 1.0/6;
    \n-
    74 interpolationPoints_[2][1] = 4.0/6;
    \n-
    75
    \n-
    76 interpolationPoints_[3][0] = 2.0/6;
    \n-
    77 interpolationPoints_[3][1] = 2.0/6;
    \n-
    78 }
    \n-
    \n-
    79
    \n-
    80
    \n-
    81 template<typename F, typename C>
    \n-
    \n-
    82 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    83 {
    \n-
    84 out.resize(interpolationPoints_.size());
    \n-
    85 for (size_t i = 0; i < out.size(); ++i)
    \n-
    86 {
    \n-
    87 out[i] = f(interpolationPoints_[i]);
    \n-
    88 }
    \n-
    89 }
    \n-
    \n-
    90
    \n-
    91 private:
    \n-
    92 std::vector<DT> interpolationPoints_;
    \n-
    93 };
    \n-
    \n-
    94
    \n-
    98 template<class D, class R>
    \n-
    \n-\n-
    100 {
    \n-\n-
    102 typedef typename LB::Traits::DomainType DT;
    \n-
    103
    \n-
    104 public:
    \n-
    \n-\n-
    106 interpolationPoints_(8)
    \n-
    107 {
    \n-
    108 // Interpolation is done by evaluating at the subtriangle centers
    \n-
    109 interpolationPoints_[0][0] = 1.0/8;
    \n-
    110 interpolationPoints_[0][1] = 1.0/8;
    \n-
    111 interpolationPoints_[0][2] = 1.0/8;
    \n-
    112
    \n-
    113 interpolationPoints_[1][0] = 5.0/8;
    \n-
    114 interpolationPoints_[1][1] = 1.0/8;
    \n-
    115 interpolationPoints_[1][2] = 1.0/8;
    \n-
    116
    \n-
    117 interpolationPoints_[2][0] = 1.0/8;
    \n-
    118 interpolationPoints_[2][1] = 5.0/8;
    \n-
    119 interpolationPoints_[2][2] = 1.0/8;
    \n-
    120
    \n-
    121 interpolationPoints_[3][0] = 1.0/8;
    \n-
    122 interpolationPoints_[3][1] = 1.0/8;
    \n-
    123 interpolationPoints_[3][2] = 5.0/8;
    \n-
    124
    \n-
    125 interpolationPoints_[4][0] = 1.0/4;
    \n-
    126 interpolationPoints_[4][1] = 1.0/8;
    \n-
    127 interpolationPoints_[4][2] = 1.0/4;
    \n-
    128
    \n-
    129 interpolationPoints_[5][0] = 3.0/8;
    \n-
    130 interpolationPoints_[5][1] = 1.0/4;
    \n-
    131 interpolationPoints_[5][2] = 1.0/8;
    \n-
    132
    \n-
    133 interpolationPoints_[6][0] = 1.0/8;
    \n-
    134 interpolationPoints_[6][1] = 1.0/4;
    \n-
    135 interpolationPoints_[6][2] = 3.0/8;
    \n-
    136
    \n-
    137 interpolationPoints_[7][0] = 1.0/4;
    \n-
    138 interpolationPoints_[7][1] = 3.0/8;
    \n-
    139 interpolationPoints_[7][2] = 1.0/4;
    \n-
    140 }
    \n-
    \n-
    141
    \n-
    142
    \n-
    143 template<typename F, typename C>
    \n-
    \n-
    144 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    145 {
    \n-
    146 out.resize(interpolationPoints_.size());
    \n-
    147 for (size_t i = 0; i < out.size(); ++i)
    \n-
    148 {
    \n-
    149 out[i] = f(interpolationPoints_[i]);
    \n-
    150 }
    \n-
    151 }
    \n-
    \n-
    152
    \n-
    153 private:
    \n-
    154 std::vector<DT> interpolationPoints_;
    \n-
    155 };
    \n-
    \n-
    156}
    \n-
    157
    \n-
    158#endif
    \n-\n+
    42 return basis;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+\n+
    46 {
    \n+
    47 return coefficients;
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    \n+\n+
    51 {
    \n+
    52 return interpolation;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+
    56 unsigned int size () const
    \n+
    57 {
    \n+
    58 return basis.size();
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    61 static constexpr GeometryType type ()
    \n+
    62 {
    \n+
    63 return GeometryTypes::quadrilateral;
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    66 private:
    \n+\n+
    68 RT0Cube2DLocalCoefficients coefficients;
    \n+\n+
    70 };
    \n+
    \n+
    71}
    \n+
    72#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:41
    \n-
    Definition refinedp0localinterpolation.hh:17
    \n-
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:29
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:40
    \n-
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:63
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:82
    \n-
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:105
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:144
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Zero order Raviart-Thomas shape functions on rectangles.
    Definition raviartthomas0cube2d.hh:25
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas0cube2d.hh:45
    \n+
    RT0Cube2DLocalFiniteElement()
    Definition raviartthomas0cube2d.hh:32
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas0cube2d.hh:50
    \n+
    LocalFiniteElementTraits< RT0Cube2DLocalBasis< D, R >, RT0Cube2DLocalCoefficients, RT0Cube2DLocalInterpolation< RT0Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas0cube2d.hh:30
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas0cube2d.hh:56
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas0cube2d.hh:40
    \n+
    RT0Cube2DLocalFiniteElement(int s)
    Definition raviartthomas0cube2d.hh:35
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas0cube2d.hh:61
    \n+
    Definition raviartthomas0cube2dall.hh:30
    \n+
    Definition raviartthomas0cube2dall.hh:135
    \n+
    Definition raviartthomas0cube2dall.hh:187
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,191 +1,127 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n-refinedp0localinterpolation.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas0cube2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_REFINED_P0_LOCALINTERPOLATION_HH\n-6#define DUNE_REFINED_P0_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+8#include \n 9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-15 template\n-_\b1_\b6 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-17 {};\n-18\n-22 template\n-_\b2_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs >\n-24 {\n-25 typedef _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b> _\bL_\bB;\n-26 typedef typename LB::Traits::DomainType DT;\n-27\n-28 public:\n-_\b2_\b9 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() :\n-30 interpolationPoints_(2)\n-31 {\n-32 // Interpolation is done by evaluating at the halved segments centers\n-33 interpolationPoints_[0][0] = 1.0/4.0;\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\ba_\bl_\bl_\b._\bh_\bh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+23 template\n+_\b2_\b4 class _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+25 {\n+26 public:\n+27 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+28 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+29 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b0 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+31\n+_\b3_\b2 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+33 {}\n 34\n-35 interpolationPoints_[1][0] = 3.0/4.0;\n-36 }\n-37\n-38\n-39 template\n-_\b4_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+_\b3_\b5 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+36 basis(s),\n+37 interpolation(s)\n+38 {}\n+39\n+_\b4_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n 41 {\n-42 out.resize(interpolationPoints_.size());\n-43 for (size_t i = 0; i < out.size(); ++i)\n-44 {\n-45 out[i] = f(interpolationPoints_[i]);\n-46 }\n-47 }\n-48\n-49 private:\n-50 std::vector
    interpolationPoints_;\n-51 };\n-52\n-56 template\n-_\b5_\b7 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs >\n-58 {\n-59 typedef _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b> _\bL_\bB;\n-60 typedef typename LB::Traits::DomainType DT;\n-61\n-62 public:\n-_\b6_\b3 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() :\n-64 interpolationPoints_(4)\n-65 {\n-66 // Interpolation is done by evaluating at the subtriangle centers\n-67 interpolationPoints_[0][0] = 1.0/6;\n-68 interpolationPoints_[0][1] = 1.0/6;\n-69\n-70 interpolationPoints_[1][0] = 4.0/6;\n-71 interpolationPoints_[1][1] = 1.0/6;\n-72\n-73 interpolationPoints_[2][0] = 1.0/6;\n-74 interpolationPoints_[2][1] = 4.0/6;\n-75\n-76 interpolationPoints_[3][0] = 2.0/6;\n-77 interpolationPoints_[3][1] = 2.0/6;\n-78 }\n-79\n-80\n-81 template\n-_\b8_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-83 {\n-84 out.resize(interpolationPoints_.size());\n-85 for (size_t i = 0; i < out.size(); ++i)\n-86 {\n-87 out[i] = f(interpolationPoints_[i]);\n-88 }\n-89 }\n-90\n-91 private:\n-92 std::vector
    interpolationPoints_;\n-93 };\n-94\n-98 template\n-_\b9_\b9 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs >\n-100 {\n-101 typedef _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b> _\bL_\bB;\n-102 typedef typename LB::Traits::DomainType DT;\n-103\n-104 public:\n-_\b1_\b0_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() :\n-106 interpolationPoints_(8)\n-107 {\n-108 // Interpolation is done by evaluating at the subtriangle centers\n-109 interpolationPoints_[0][0] = 1.0/8;\n-110 interpolationPoints_[0][1] = 1.0/8;\n-111 interpolationPoints_[0][2] = 1.0/8;\n-112\n-113 interpolationPoints_[1][0] = 5.0/8;\n-114 interpolationPoints_[1][1] = 1.0/8;\n-115 interpolationPoints_[1][2] = 1.0/8;\n-116\n-117 interpolationPoints_[2][0] = 1.0/8;\n-118 interpolationPoints_[2][1] = 5.0/8;\n-119 interpolationPoints_[2][2] = 1.0/8;\n-120\n-121 interpolationPoints_[3][0] = 1.0/8;\n-122 interpolationPoints_[3][1] = 1.0/8;\n-123 interpolationPoints_[3][2] = 5.0/8;\n-124\n-125 interpolationPoints_[4][0] = 1.0/4;\n-126 interpolationPoints_[4][1] = 1.0/8;\n-127 interpolationPoints_[4][2] = 1.0/4;\n-128\n-129 interpolationPoints_[5][0] = 3.0/8;\n-130 interpolationPoints_[5][1] = 1.0/4;\n-131 interpolationPoints_[5][2] = 1.0/8;\n-132\n-133 interpolationPoints_[6][0] = 1.0/8;\n-134 interpolationPoints_[6][1] = 1.0/4;\n-135 interpolationPoints_[6][2] = 3.0/8;\n-136\n-137 interpolationPoints_[7][0] = 1.0/4;\n-138 interpolationPoints_[7][1] = 3.0/8;\n-139 interpolationPoints_[7][2] = 1.0/4;\n-140 }\n-141\n-142\n-143 template\n-_\b1_\b4_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-145 {\n-146 out.resize(interpolationPoints_.size());\n-147 for (size_t i = 0; i < out.size(); ++i)\n-148 {\n-149 out[i] = f(interpolationPoints_[i]);\n-150 }\n-151 }\n-152\n-153 private:\n-154 std::vector
    interpolationPoints_;\n-155 };\n-156}\n-157\n-158#endif\n-_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+42 return basis;\n+43 }\n+44\n+_\b4_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+46 {\n+47 return coefficients;\n+48 }\n+49\n+_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+51 {\n+52 return interpolation;\n+53 }\n+54\n+_\b5_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+57 {\n+58 return basis.size();\n+59 }\n+60\n+_\b6_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+62 {\n+63 return GeometryTypes::quadrilateral;\n+64 }\n+65\n+66 private:\n+67 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+68 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+69 _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+70 };\n+71}\n+72#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_LOCALFINITEELEMENT_HH\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\ba_\bl_\bl_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Uniformly refined constant shape functions on a unit simplex in R^dim.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:17\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:\n-_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RefinedP0LocalInterpolation()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b _\b>_\b:_\b:\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b _\b>_\b:_\b:\n-_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RefinedP0LocalInterpolation()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b _\b>_\b:_\b:\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:82\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b _\b>_\b:_\b:\n-_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-RefinedP0LocalInterpolation()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:105\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b _\b>_\b:_\b:\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:144\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Zero order Raviart-Thomas shape functions on rectangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT0Cube2DLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT0Cube2DLocalBasis< D, R >,\n+RT0Cube2DLocalCoefficients, RT0Cube2DLocalInterpolation< RT0Cube2DLocalBasis<\n+D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT0Cube2DLocalFiniteElement(int s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:187\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0localcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas3cube2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    refinedp0localcoefficients.hh File Reference
    \n+
    raviartthomas3cube2d.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <iostream>
    \n-#include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RefinedP0LocalCoefficients< k >
     Layout map for RefinedP0 elements. More...
    class  Dune::RT3Cube2DLocalFiniteElement< D, R >
     Second order Raviart-Thomas shape functions on cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinedp0localcoefficients.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+raviartthomas3cube2d.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bk_\b _\b>\n-\u00a0 Layout map for RefinedP0 elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 Second order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0localcoefficients.hh Source File\n+dune-localfunctions: raviartthomas3cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,85 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    refinedp0localcoefficients.hh
    \n+
    raviartthomas3cube2d.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_REFINED_P0_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_REFINED_P0_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <iostream>
    \n-
    10#include <vector>
    \n-
    11
    \n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    24 template<unsigned int k>
    \n-
    \n-\n-
    26 {
    \n-
    27 // 2 to the k-th power
    \n-
    28 constexpr static int N = 1<<k;
    \n-
    29
    \n-
    30 public:
    \n-
    \n-\n-
    32 localKeys_(N)
    \n-
    33 {
    \n-
    34 // All functions are associated to the element
    \n-
    35 for (int i = 0; i < N; ++i)
    \n-
    36 localKeys_[i] = LocalKey(0,0,i);
    \n-
    37 }
    \n-
    \n-
    38
    \n-
    \n-
    40 std::size_t size () const
    \n-
    41 {
    \n-
    42 return N;
    \n-
    43 }
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    27 template<class D, class R>
    \n+
    \n+\n+
    29 {
    \n+
    30
    \n+
    31 public:
    \n+\n+\n+\n+\n+
    36
    \n+\n-
    44
    \n+
    40
    \n
    \n-
    46 const LocalKey& localKey (std::size_t i) const
    \n-
    47 {
    \n-
    48 return localKeys_[i];
    \n-
    49 }
    \n+\n+
    47 basis(s),
    \n+
    48 interpolation(s)
    \n+
    49 {}
    \n
    \n
    50
    \n-
    51 private:
    \n-
    52 std::vector<LocalKey> localKeys_;
    \n-
    53
    \n-
    54 };
    \n+
    \n+
    51 const typename Traits::LocalBasisType& localBasis () const
    \n+
    52 {
    \n+
    53 return basis;
    \n+
    54 }
    \n
    \n
    55
    \n-
    56}
    \n-
    57
    \n-
    58#endif
    \n-\n+
    \n+\n+
    57 {
    \n+
    58 return coefficients;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+\n+
    62 {
    \n+
    63 return interpolation;
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    \n+
    67 unsigned int size () const
    \n+
    68 {
    \n+
    69 return basis.size();
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    \n+
    72 static constexpr GeometryType type ()
    \n+
    73 {
    \n+
    74 return GeometryTypes::quadrilateral;
    \n+
    75 }
    \n+
    \n+
    76
    \n+
    77 private:
    \n+\n+
    79 RT3Cube2DLocalCoefficients coefficients;
    \n+\n+
    81 };
    \n+
    \n+
    82}
    \n+
    83#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for RefinedP0 elements.
    Definition refinedp0localcoefficients.hh:26
    \n-
    RefinedP0LocalCoefficients()
    Definition refinedp0localcoefficients.hh:31
    \n-
    std::size_t size() const
    number of coefficients
    Definition refinedp0localcoefficients.hh:40
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition refinedp0localcoefficients.hh:46
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas3cube2d.hh:29
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas3cube2d.hh:56
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas3cube2d.hh:72
    \n+
    LocalFiniteElementTraits< RT3Cube2DLocalBasis< D, R >, RT3Cube2DLocalCoefficients, RT3Cube2DLocalInterpolation< RT3Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas3cube2d.hh:35
    \n+
    RT3Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas3cube2d.hh:46
    \n+
    RT3Cube2DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas3cube2d.hh:38
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas3cube2d.hh:67
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas3cube2d.hh:51
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas3cube2d.hh:61
    \n+
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalbasis.hh:29
    \n+
    Layout map for Raviart-Thomas-3 elements on quadrilaterals.
    Definition raviartthomas3cube2dlocalcoefficients.hh:23
    \n+
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalinterpolation.hh:25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,82 +1,136 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n-refinedp0localcoefficients.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas3cube2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_REFINED_P0_LOCALCOEFFICIENTS_HH\n-6#define DUNE_REFINED_P0_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-24 template\n-_\b2_\b5 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-26 {\n-27 // 2 to the k-th power\n-28 constexpr static int N = 1<\n+9\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+27 template\n+_\b2_\b8 class _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+29 {\n+30\n+31 public:\n+32 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+33 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+34 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b5 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+36\n+_\b3_\b8 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+39 {}\n+40\n+_\b4_\b6 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+47 basis(s),\n+48 interpolation(s)\n+49 {}\n 50\n-51 private:\n-52 std::vector localKeys_;\n-53\n-54 };\n+_\b5_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+52 {\n+53 return basis;\n+54 }\n 55\n-56}\n-57\n-58#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\b5_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+57 {\n+58 return coefficients;\n+59 }\n+60\n+_\b6_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+62 {\n+63 return interpolation;\n+64 }\n+65\n+_\b6_\b7 unsigned int _\bs_\bi_\bz_\be () const\n+68 {\n+69 return basis.size();\n+70 }\n+71\n+_\b7_\b2 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+73 {\n+74 return GeometryTypes::quadrilateral;\n+75 }\n+76\n+77 private:\n+78 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+79 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+80 _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+81 };\n+82}\n+83#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALFINITEELEMENT_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for RefinedP0 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-RefinedP0LocalCoefficients()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT3Cube2DLocalBasis< D, R >,\n+RT3Cube2DLocalCoefficients, RT3Cube2DLocalInterpolation< RT3Cube2DLocalBasis<\n+D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT3Cube2DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT3Cube2DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Second order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalbasis.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-3 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalcoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Second order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:25\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0localbasis.hh File Reference\n+dune-localfunctions: raviartthomas0pyramidlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,35 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    refinedp0localbasis.hh File Reference
    \n+
    raviartthomas0pyramidlocalbasis.hh File Reference
    \n
    \n
    \n
    #include <numeric>
    \n-#include <dune/common/fvector.hh>
    \n+#include <vector>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RefinedP0LocalBasis< D, R, dim >
     Uniformly refined constant shape functions on a unit simplex in R^dim. More...
    class  Dune::RT0PyramidLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference pyramid. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinedp0localbasis.hh File Reference\n+raviartthomas0pyramidlocalbasis.hh File Reference\n #include \n-#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Uniformly refined constant shape functions on a unit simplex in R^dim.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference pyramid.\n _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0localbasis.hh Source File\n+dune-localfunctions: raviartthomas0pyramidlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,119 +70,148 @@\n
    \n \n \n \n \n \n \n
    \n-
    refinedp0localbasis.hh
    \n+
    raviartthomas0pyramidlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_REFINED_P0_LOCALBASIS_HH
    \n-
    6#define DUNE_REFINED_P0_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH
    \n
    7
    \n
    8#include <numeric>
    \n-
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n+
    9#include <vector>
    \n+
    10
    \n
    11#include <dune/common/fmatrix.hh>
    \n
    12
    \n-\n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    38 template<class D, class R, int dim>
    \n-
    \n-\n-
    40 : public RefinedSimplexLocalBasis<D,dim>
    \n-
    41 {
    \n-
    42 // 2 to the k-th power
    \n-
    43 constexpr static int N = 1<<dim;
    \n-
    44 public:
    \n-
    46 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,dim> > Traits;
    \n-
    47
    \n-
    \n-
    49 unsigned int size () const
    \n-
    50 {
    \n-
    51 return N;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-
    55 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    56 std::vector<typename Traits::RangeType>& out) const
    \n-
    57 {
    \n-
    58 int subElement = this->getSubElement(in);
    \n-
    59 out.resize(N);
    \n-
    60 for(int i=0; i<N; ++i)
    \n-
    61 out[i] = (i==subElement) ? 1 : 0;
    \n-
    62 }
    \n-
    \n+
    13#include "../../common/localbasis.hh"
    \n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    26 template<class D, class R>
    \n+
    \n+\n+
    28 {
    \n+
    29
    \n+
    30 public:
    \n+
    31 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n+
    32 Dune::FieldMatrix<R,3,3> > Traits;
    \n+
    33
    \n+
    \n+
    39 RT0PyramidLocalBasis (std::bitset<5> s = 0)
    \n+
    40 {
    \n+
    41 for (size_t i=0; i<size(); i++)
    \n+
    42 sign[i] = s[i] ? -1.0 : 1.0;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+
    46 unsigned int size () const
    \n+
    47 {
    \n+
    48 return 5;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    57 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    58 std::vector<typename Traits::RangeType>& out) const
    \n+
    59 {
    \n+
    60 out.resize(5);
    \n+
    61 for (std::size_t i=0; i<out.size(); i++)
    \n+
    62 out[i] = {0.0,0.0,0.0};
    \n
    63
    \n-
    64 inline void
    \n-
    \n-
    65 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    66 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    67 {
    \n-
    68 out.resize(N);
    \n-
    69 for(int i=0; i<N; ++i)
    \n-
    70 out[i][0] = 0;
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    74 void partial (const std::array<unsigned int, dim>& order,
    \n-
    75 const typename Traits::DomainType& in, // position
    \n-
    76 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    77 {
    \n-
    78 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    79 if (totalOrder == 0) {
    \n-
    80 evaluateFunction(in, out);
    \n-
    81 } else {
    \n-
    82 out.resize(size());
    \n-
    83 for (std::size_t i = 0; i < size(); ++i)
    \n-
    84 out[i] = 0;
    \n-
    85 }
    \n-
    86 }
    \n-
    \n-
    87
    \n-
    \n-
    92 unsigned int order () const
    \n-
    93 {
    \n-
    94 return 0;
    \n-
    95 }
    \n-
    \n-
    96
    \n-
    97 };
    \n-
    \n+
    64 out[0][0] = 1.5*in[0];
    \n+
    65 out[0][1] = 1.5*in[1];
    \n+
    66 out[0][2] = -1.0;
    \n+
    67
    \n+
    68 out[1][0] = -2.0 + 3.0*in[0];
    \n+
    69
    \n+
    70 out[2][0] = 3.0*in[0];
    \n+
    71
    \n+
    72 out[3][1] = -2.0 + 3.0*in[1];
    \n+
    73
    \n+
    74 out[4][1] = 3.0*in[1];
    \n+
    75
    \n+
    76 for (std::size_t i=0; i<out.size(); i++)
    \n+
    77 out[i] *= sign[i];
    \n+
    78
    \n+
    79 }
    \n+
    \n+
    80
    \n+
    \n+
    87 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    88 std::vector<typename Traits::JacobianType>& out) const
    \n+
    89 {
    \n+
    90 out.resize(5);
    \n+
    91
    \n+
    92 for(int i=0; i<size(); i++)
    \n+
    93 for(int j=0; j<3; j++)
    \n+
    94 out[i][j] = {0.0, 0.0, 0.0};
    \n+
    95
    \n+
    96 out[0][0][0] = sign[0]*(1.5);
    \n+
    97 out[0][1][1] = sign[0]*(1.5);
    \n
    98
    \n-
    99}
    \n-
    100#endif
    \n-
    Contains a base class for LocalBasis classes based on uniform refinement.
    \n+
    99 out[1][0][0] = sign[1]*(3.0);
    \n+
    100
    \n+
    101 out[2][0][0] = sign[2]*(3.0);
    \n+
    102
    \n+
    103 out[3][1][1] = sign[3]*(3.0);
    \n+
    104
    \n+
    105 out[4][1][1] = sign[4]*(3.0);
    \n+
    106 }
    \n+
    \n+
    107
    \n+
    \n+
    109 void partial (const std::array<unsigned int, 3>& order,
    \n+
    110 const typename Traits::DomainType& in, // position
    \n+
    111 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    112 {
    \n+
    113 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    114 if (totalOrder == 0) {
    \n+
    115 evaluateFunction(in, out);
    \n+
    116 } else {
    \n+
    117 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    118 }
    \n+
    119 }
    \n+
    \n+
    120
    \n+
    \n+
    122 unsigned int order () const
    \n+
    123 {
    \n+
    124 return 1;
    \n+
    125 }
    \n+
    \n+
    126
    \n+
    127 private:
    \n+
    128 std::array<R,5> sign;
    \n+
    129 };
    \n+
    \n+
    130}
    \n+
    131#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Definition refinedsimplexlocalbasis.hh:20
    \n-
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:41
    \n-
    void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition refinedp0localbasis.hh:74
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp0localbasis.hh:55
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Definition refinedp0localbasis.hh:65
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition refinedp0localbasis.hh:92
    \n-
    LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    export type traits for function signature
    Definition refinedp0localbasis.hh:46
    \n-
    unsigned int size() const
    number of shape functions
    Definition refinedp0localbasis.hh:49
    \n-\n+
    First order Raviart-Thomas shape functions on the reference pyramid.
    Definition raviartthomas0pyramidlocalbasis.hh:28
    \n+
    RT0PyramidLocalBasis(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0pyramidlocalbasis.hh:39
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas0pyramidlocalbasis.hh:57
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas0pyramidlocalbasis.hh:87
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas0pyramidlocalbasis.hh:32
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas0pyramidlocalbasis.hh:122
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas0pyramidlocalbasis.hh:46
    \n+
    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 raviartthomas0pyramidlocalbasis.hh:109
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,131 +1,159 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0\n-refinedp0localbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n+raviartthomas0pyramidlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_REFINED_P0_LOCALBASIS_HH\n-6#define DUNE_REFINED_P0_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH\n 7\n 8#include \n-9\n-10#include \n+9#include \n+10\n 11#include \n 12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-38 template\n-_\b3_\b9 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-40 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-41 {\n-42 // 2 to the k-th power\n-43 constexpr static int N = 1<,R,1,Dune::\n-FieldVector, Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-47\n-_\b4_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-50 {\n-51 return N;\n-52 }\n-53\n-_\b5_\b5 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-56 std::vector& out) const\n-57 {\n-58 int subElement = this->getSubElement(in);\n-59 out.resize(N);\n-60 for(int i=0; i\n+_\b2_\b7 class _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+28 {\n+29\n+30 public:\n+31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n+FieldVector,\n+_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b9 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<5> s = 0)\n+40 {\n+41 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n+42 sign[i] = s[i] ? -1.0 : 1.0;\n+43 }\n+44\n+_\b4_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+47 {\n+48 return 5;\n+49 }\n+50\n+_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+58 std::vector& out) const\n+59 {\n+60 out.resize(5);\n+61 for (std::size_t i=0; i& out) const // return value\n-67 {\n-68 out.resize(N);\n-69 for(int i=0; i& _\bo_\br_\bd_\be_\br,\n-75 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-76 std::vector& out) const // return value\n-77 {\n-78 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-79 if (totalOrder == 0) {\n-80 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-81 } else {\n-82 out.resize(_\bs_\bi_\bz_\be());\n-83 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-84 out[i] = 0;\n-85 }\n-86 }\n-87\n-_\b9_\b2 unsigned int _\bo_\br_\bd_\be_\br () const\n-93 {\n-94 return 0;\n-95 }\n-96\n-97 };\n+64 out[0][0] = 1.5*in[0];\n+65 out[0][1] = 1.5*in[1];\n+66 out[0][2] = -1.0;\n+67\n+68 out[1][0] = -2.0 + 3.0*in[0];\n+69\n+70 out[2][0] = 3.0*in[0];\n+71\n+72 out[3][1] = -2.0 + 3.0*in[1];\n+73\n+74 out[4][1] = 3.0*in[1];\n+75\n+76 for (std::size_t i=0; i& out) const\n+89 {\n+90 out.resize(5);\n+91\n+92 for(int i=0; i<_\bs_\bi_\bz_\be(); i++)\n+93 for(int j=0; j<3; j++)\n+94 out[i][j] = {0.0, 0.0, 0.0};\n+95\n+96 out[0][0][0] = sign[0]*(1.5);\n+97 out[0][1][1] = sign[0]*(1.5);\n 98\n-99}\n-100#endif\n-_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-Contains a base class for LocalBasis classes based on uniform refinement.\n+99 out[1][0][0] = sign[1]*(3.0);\n+100\n+101 out[2][0][0] = sign[2]*(3.0);\n+102\n+103 out[3][1][1] = sign[3]*(3.0);\n+104\n+105 out[4][1][1] = sign[4]*(3.0);\n+106 }\n+107\n+_\b1_\b0_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+110 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+111 std::vector& out) const // return value\n+112 {\n+113 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+114 if (totalOrder == 0) {\n+115 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+116 } else {\n+117 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+118 }\n+119 }\n+120\n+_\b1_\b2_\b2 unsigned int _\bo_\br_\bd_\be_\br () const\n+123 {\n+124 return 1;\n+125 }\n+126\n+127 private:\n+128 std::array sign;\n+129 };\n+130}\n+131#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n Type traits for LocalBasisVirtualInterface.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Uniformly refined constant shape functions on a unit simplex in R^dim.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, dim > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference pyramid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT0PyramidLocalBasis(std::bitset< 5 > s=0)\n+Make set number s, where 0 <= s < 32.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n typename Traits::RangeType > &out) const\n Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n typename Traits::JacobianType > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:87\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n+3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n unsigned int order() const\n Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector<\n-R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n unsigned int size() const\n number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:49\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalbasis.hh:109\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0.hh File Reference\n+dune-localfunctions: raviartthomas0pyramidlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,58 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    refinedp0.hh File Reference
    \n+
    raviartthomas0pyramidlocalinterpolation.hh File Reference
    \n
    \n
    \n-\n-

    Piecewise P0 finite element. \n-More...

    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/lagrange/p0.hh>
    \n-#include "refinedp0/refinedp0localbasis.hh"
    \n-#include "refinedp0/refinedp0localcoefficients.hh"
    \n-#include "refinedp0/refinedp0localinterpolation.hh"
    \n+
    #include <vector>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RefinedP0LocalFiniteElement< D, R, dim >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
     
    class  Dune::RefinedP0LocalFiniteElement< D, R, 1 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
     
    class  Dune::RefinedP0LocalFiniteElement< D, R, 2 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
     
    class  Dune::RefinedP0LocalFiniteElement< D, R, 3 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
    class  Dune::RT0PyramidLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference hexahedron. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-

    Detailed Description

    \n-

    Piecewise P0 finite element.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,41 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinedp0.hh File Reference\n-Piecewise P0 finite element. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n-#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+raviartthomas0pyramidlocalinterpolation.hh File Reference\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Local finite element that is piecewise P0 on a once uniformly refined\n- reference geometry. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>\n-\u00a0 Local finite element that is piecewise P0 on a once uniformly refined\n- reference geometry. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>\n-\u00a0 Local finite element that is piecewise P0 on a once uniformly refined\n- reference geometry. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>\n-\u00a0 Local finite element that is piecewise P0 on a once uniformly refined\n- reference geometry. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference hexahedron.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Piecewise P0 finite element.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0.hh Source File\n+dune-localfunctions: raviartthomas0pyramidlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,264 +70,97 @@\n \n \n \n \n \n \n \n
    \n-
    refinedp0.hh
    \n+
    raviartthomas0pyramidlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_REFINED_P0_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_REFINED_P0_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <vector>
    \n
    9
    \n-\n-\n-
    12
    \n-\n-\n-\n-
    16
    \n-
    20namespace Dune
    \n-
    21{
    \n-
    22
    \n-
    27 template<class D, class R, int dim>
    \n-
    \n-\n-
    29 {
    \n-\n-
    31
    \n-
    32 public:
    \n-
    33 // We steal the p0 traits since they exist for all dim.
    \n-
    34 // This allows to instantiate the type and access the Traits.
    \n-\n-
    36 };
    \n-
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    20 template<class LB>
    \n+
    \n+\n+
    22 {
    \n+
    23
    \n+
    24 public:
    \n+
    25
    \n+
    \n+
    31 RT0PyramidLocalInterpolation (std::bitset<5> s = 0)
    \n+
    32 {
    \n+
    33 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    34
    \n+
    35 for (size_t i=0; i<5; i++)
    \n+
    36 sign[i] = (s[i]) ? -1.0 : 1.0;
    \n
    37
    \n-
    42 template<class D, class R>
    \n-
    \n-\n-
    44 {
    \n-
    45 public:
    \n-\n-\n-\n-\n-
    52
    \n-\n-
    57
    \n-
    \n-
    60 const typename Traits::LocalBasisType& localBasis () const
    \n-
    61 {
    \n-
    62 return basis_;
    \n-
    63 }
    \n-
    \n-
    64
    \n-
    \n-\n-
    68 {
    \n-
    69 return coefficients_;
    \n-
    70 }
    \n-
    \n-
    71
    \n-
    \n-\n-
    75 {
    \n-
    76 return interpolation_;
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    80 unsigned int size () const
    \n-
    81 {
    \n-
    82 return basis_.size();
    \n-
    83 }
    \n-
    \n-
    84
    \n-
    \n-
    87 static constexpr GeometryType type ()
    \n-
    88 {
    \n-
    89 return GeometryTypes::line;
    \n-
    90 }
    \n-
    \n-
    91
    \n-
    92 private:
    \n-\n-\n-\n-
    96 };
    \n-
    \n-
    97
    \n-
    102 template<class D, class R>
    \n-
    \n-\n-
    104 {
    \n-
    105 public:
    \n-\n-\n-\n-\n-
    112
    \n-\n-
    117
    \n-
    \n-
    120 const typename Traits::LocalBasisType& localBasis () const
    \n-
    121 {
    \n-
    122 return basis_;
    \n-
    123 }
    \n-
    \n-
    124
    \n-
    \n-\n-
    128 {
    \n-
    129 return coefficients_;
    \n-
    130 }
    \n-
    \n-
    131
    \n-
    \n-\n-
    135 {
    \n-
    136 return interpolation_;
    \n-
    137 }
    \n-
    \n-
    138
    \n-
    \n-
    140 unsigned int size () const
    \n-
    141 {
    \n-
    142 return basis_.size();
    \n-
    143 }
    \n-
    \n-
    144
    \n-
    \n-
    147 static constexpr GeometryType type ()
    \n-
    148 {
    \n-
    149 return GeometryTypes::triangle;
    \n-
    150 }
    \n-
    \n-
    151
    \n-
    152 private:
    \n-\n-
    154 RefinedP0LocalCoefficients<2> coefficients_;
    \n-\n-
    156 };
    \n-
    \n-
    157
    \n-
    162 template<class D, class R>
    \n-
    \n-\n-
    164 {
    \n-
    165 public:
    \n-\n-\n-\n-\n-
    172
    \n-\n-
    177
    \n-
    \n-
    180 const typename Traits::LocalBasisType& localBasis () const
    \n-
    181 {
    \n-
    182 return basis_;
    \n-
    183 }
    \n-
    \n-
    184
    \n-
    \n-\n-
    188 {
    \n-
    189 return coefficients_;
    \n-
    190 }
    \n-
    \n-
    191
    \n-
    \n-\n-
    195 {
    \n-
    196 return interpolation_;
    \n-
    197 }
    \n-
    \n-
    198
    \n-
    \n-
    200 unsigned int size () const
    \n-
    201 {
    \n-
    202 return basis_.size();
    \n-
    203 }
    \n-
    \n-
    204
    \n-
    \n-
    207 static constexpr GeometryType type ()
    \n-
    208 {
    \n-
    209 return GeometryTypes::tetrahedron;
    \n-
    210 }
    \n-
    \n-
    211
    \n-
    212 private:
    \n-\n-
    214 RefinedP0LocalCoefficients<3> coefficients_;
    \n-\n-
    216 };
    \n+
    38 Scalar r = 1/std::sqrt(2);
    \n+
    39
    \n+
    40 n[0] = { 0.0, 0.0, -1.0};
    \n+
    41 n[1] = {-1.0, 0.0, 0.0};
    \n+
    42 n[2] = { r, 0.0, r};
    \n+
    43 n[3] = { 0.0, -1.0, 0.0};
    \n+
    44 n[4] = { 0.0, r, r};
    \n+
    45
    \n+
    46 c[0] = 1.0;
    \n+
    47 c[1] = 1/2.0;
    \n+
    48 c[2] = 1/2.0 * std::sqrt(2);
    \n+
    49 c[3] = 1/2.0;
    \n+
    50 c[4] = 1/2.0 * std::sqrt(2);
    \n+
    51
    \n+
    52 m[0] = { 0.5, 0.5, 0.0};
    \n+
    53 m[1] = { 0.0, 1/3.0, 1/3.0};
    \n+
    54 m[2] = { 2/3.0, 1/3.0, 1/3.0};
    \n+
    55 m[3] = { 1/3.0, 0.0, 1/3.0};
    \n+
    56 m[4] = { 1/3.0, 2/3.0, 1/3.0};
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    67 template<class F, class C>
    \n+
    \n+
    68 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    69 {
    \n+
    70 out.resize(5);
    \n+
    71 for(int i=0; i<5; i++)
    \n+
    72 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75 private:
    \n+
    76 // Facet orientations
    \n+
    77 std::array<typename LB::Traits::RangeFieldType, 5> sign;
    \n+
    78 // Facet area
    \n+
    79 std::array<typename LB::Traits::RangeFieldType, 5> c;
    \n+
    80
    \n+
    81 // Facet normals
    \n+
    82 std::array<typename LB::Traits::DomainType, 5> n;
    \n+
    83 // Facet midpoints
    \n+
    84 std::array<typename LB::Traits::DomainType, 5> m;
    \n+
    85 };
    \n
    \n-
    217
    \n-
    218
    \n-
    219}
    \n-
    220
    \n-
    221#endif
    \n-\n-\n-\n-\n-\n+
    86}
    \n+
    87#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Local finite element that is piecewise P0 on a once uniformly refined reference geometry.
    Definition refinedp0.hh:29
    \n-
    P0LocalFiniteElement< D, R, dim >::Traits Traits
    Definition refinedp0.hh:35
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:60
    \n-
    static constexpr GeometryType type()
    Definition refinedp0.hh:87
    \n-
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:55
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:74
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:67
    \n-
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 1 >, RefinedP0LocalCoefficients< 1 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > > > Traits
    Definition refinedp0.hh:51
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:80
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:140
    \n-
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:115
    \n-
    static constexpr GeometryType type()
    Definition refinedp0.hh:147
    \n-
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 2 >, RefinedP0LocalCoefficients< 2 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > > > Traits
    Definition refinedp0.hh:111
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:127
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:134
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:120
    \n-
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:175
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:180
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:194
    \n-
    static constexpr GeometryType type()
    Definition refinedp0.hh:207
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:200
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:187
    \n-
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 3 >, RefinedP0LocalCoefficients< 3 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > > > Traits
    Definition refinedp0.hh:171
    \n-
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:41
    \n-
    Layout map for RefinedP0 elements.
    Definition refinedp0localcoefficients.hh:26
    \n-
    Definition refinedp0localinterpolation.hh:17
    \n+
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0pyramidlocalinterpolation.hh:22
    \n+
    RT0PyramidLocalInterpolation(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0pyramidlocalinterpolation.hh:31
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas0pyramidlocalinterpolation.hh:68
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,281 +1,92 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n-refinedp0.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n+raviartthomas0pyramidlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_REFINED_P0_LOCALFINITEELEMENT_HH\n-6#define DUNE_REFINED_P0_LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH\n 7\n-8#include \n+8#include \n 9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n-12\n-13#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-14#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-15#include \"_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-16\n-20namespace _\bD_\bu_\bn_\be\n-21{\n-22\n-27 template\n-_\b2_\b8 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-29 {\n-30 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt() {}\n-31\n-32 public:\n-33 // We steal the p0 traits since they exist for all dim.\n-34 // This allows to instantiate the type and access the Traits.\n-_\b3_\b5 typedef typename _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n-36 };\n+10namespace _\bD_\bu_\bn_\be\n+11{\n+20 template\n+_\b2_\b1 class _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+22 {\n+23\n+24 public:\n+25\n+_\b3_\b1 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<5> s = 0)\n+32 {\n+33 typedef typename LB::Traits::RangeFieldType Scalar;\n+34\n+35 for (size_t i=0; i<5; i++)\n+36 sign[i] = (s[i]) ? -1.0 : 1.0;\n 37\n-42 template\n-_\b4_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-44 {\n-45 public:\n-48 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-49 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b>,\n-50 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b1_\b>,\n-_\b5_\b1 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-52\n-_\b5_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-56 {}\n-57\n-_\b6_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-61 {\n-62 return basis_;\n-63 }\n-64\n-_\b6_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-68 {\n-69 return coefficients_;\n-70 }\n-71\n-_\b7_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-75 {\n-76 return interpolation_;\n-77 }\n-78\n-_\b8_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-81 {\n-82 return basis_.size();\n-83 }\n-84\n-_\b8_\b7 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-88 {\n-89 return GeometryTypes::line;\n-90 }\n-91\n-92 private:\n-93 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b> basis_;\n-94 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b1_\b> coefficients_;\n-95 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b1_\b> > interpolation_;\n-96 };\n-97\n-102 template\n-_\b1_\b0_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-104 {\n-105 public:\n-108 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-109 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b>,\n-110 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b2_\b>,\n-_\b1_\b1_\b1 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-112\n-_\b1_\b1_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-116 {}\n-117\n-_\b1_\b2_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-121 {\n-122 return basis_;\n-123 }\n-124\n-_\b1_\b2_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-128 {\n-129 return coefficients_;\n-130 }\n-131\n-_\b1_\b3_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-135 {\n-136 return interpolation_;\n-137 }\n-138\n-_\b1_\b4_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-141 {\n-142 return basis_.size();\n-143 }\n-144\n-_\b1_\b4_\b7 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-148 {\n-149 return GeometryTypes::triangle;\n-150 }\n-151\n-152 private:\n-153 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b> basis_;\n-154 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b2_\b> coefficients_;\n-155 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b2_\b> > interpolation_;\n-156 };\n-157\n-162 template\n-_\b1_\b6_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-164 {\n-165 public:\n-168 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-169 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b>,\n-170 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b3_\b>,\n-_\b1_\b7_\b1 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-172\n-_\b1_\b7_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-176 {}\n-177\n-_\b1_\b8_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-181 {\n-182 return basis_;\n-183 }\n-184\n-_\b1_\b8_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-188 {\n-189 return coefficients_;\n-190 }\n-191\n-_\b1_\b9_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-195 {\n-196 return interpolation_;\n-197 }\n-198\n-_\b2_\b0_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-201 {\n-202 return basis_.size();\n-203 }\n-204\n-_\b2_\b0_\b7 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-208 {\n-209 return GeometryTypes::tetrahedron;\n-210 }\n-211\n-212 private:\n-213 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b> basis_;\n-214 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b3_\b> coefficients_;\n-215 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\b3_\b> > interpolation_;\n-216 };\n-217\n-218\n-219}\n-220\n-221#endif\n-_\bp_\b0_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b0_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+38 Scalar r = 1/std::sqrt(2);\n+39\n+40 n[0] = { 0.0, 0.0, -1.0};\n+41 n[1] = {-1.0, 0.0, 0.0};\n+42 n[2] = { r, 0.0, r};\n+43 n[3] = { 0.0, -1.0, 0.0};\n+44 n[4] = { 0.0, r, r};\n+45\n+46 c[0] = 1.0;\n+47 c[1] = 1/2.0;\n+48 c[2] = 1/2.0 * std::sqrt(2);\n+49 c[3] = 1/2.0;\n+50 c[4] = 1/2.0 * std::sqrt(2);\n+51\n+52 m[0] = { 0.5, 0.5, 0.0};\n+53 m[1] = { 0.0, 1/3.0, 1/3.0};\n+54 m[2] = { 2/3.0, 1/3.0, 1/3.0};\n+55 m[3] = { 1/3.0, 0.0, 1/3.0};\n+56 m[4] = { 1/3.0, 2/3.0, 1/3.0};\n+57 }\n+58\n+67 template\n+_\b6_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+69 {\n+70 out.resize(5);\n+71 for(int i=0; i<5; i++)\n+72 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];\n+73 }\n+74\n+75 private:\n+76 // Facet orientations\n+77 std::array sign;\n+78 // Facet area\n+79 std::array c;\n+80\n+81 // Facet normals\n+82 std::array n;\n+83 // Facet midpoints\n+84 std::array m;\n+85 };\n+86}\n+87#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Local finite element that is piecewise P0 on a once uniformly refined reference\n-geometry.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-P0LocalFiniteElement< D, R, dim >::Traits Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RefinedP0LocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:55\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 1 >,\n-RefinedP0LocalCoefficients< 1 >, RefinedP0LocalInterpolation<\n-RefinedP0LocalBasis< D, R, 1 > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:140\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RefinedP0LocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 2 >,\n-RefinedP0LocalCoefficients< 2 >, RefinedP0LocalInterpolation<\n-RefinedP0LocalBasis< D, R, 2 > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:120\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-RefinedP0LocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:175\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:180\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:194\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:207\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:200\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 3 >,\n-RefinedP0LocalCoefficients< 3 >, RefinedP0LocalInterpolation<\n-RefinedP0LocalBasis< D, R, 3 > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0.hh:171\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Uniformly refined constant shape functions on a unit simplex in R^dim.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for RefinedP0 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalinterpolation.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT0PyramidLocalInterpolation(std::bitset< 5 > s=0)\n+Make set number s, where 0 <= s < 32.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalinterpolation.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalinterpolation.hh:68\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp1localbasis.hh File Reference\n+dune-localfunctions: raviartthomas0pyramidlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,54 +65,41 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    refinedp1localbasis.hh File Reference
    \n+
    raviartthomas0pyramidlocalcoefficients.hh File Reference
    \n
    \n
    \n-\n-

    Linear Lagrange shape functions on a uniformly refined reference element. \n-More...

    \n-
    #include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RefinedP1LocalBasis< D, R, dim >
     
    class  Dune::RefinedP1LocalBasis< D, R, 1 >
     Uniformly refined linear Lagrange shape functions in 1D. More...
     
    class  Dune::RefinedP1LocalBasis< D, R, 2 >
     Uniformly refined linear Lagrange shape functions on the triangle. More...
     
    class  Dune::RefinedP1LocalBasis< D, R, 3 >
     Uniformly refined linear Lagrange shape functions on the 3D-simplex (tetrahedron). More...
    class  Dune::RT0PyramidLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on pyramids. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-

    Detailed Description

    \n-

    Linear Lagrange shape functions on a uniformly refined reference element.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,37 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinedp1localbasis.hh File Reference\n-Linear Lagrange shape functions on a uniformly refined reference element.\n-_\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+raviartthomas0pyramidlocalcoefficients.hh File Reference\n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>\n-\u00a0 Uniformly refined linear Lagrange shape functions in 1D. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>\n-\u00a0 Uniformly refined linear Lagrange shape functions on the triangle.\n- _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>\n-\u00a0 Uniformly refined linear Lagrange shape functions on the 3D-simplex\n- (tetrahedron). _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Raviart-Thomas-1 elements on pyramids. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Linear Lagrange shape functions on a uniformly refined reference element.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp1localbasis.hh Source File\n+dune-localfunctions: raviartthomas0pyramidlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,831 +70,75 @@\n \n \n \n \n \n \n \n
    \n-
    refinedp1localbasis.hh
    \n+
    raviartthomas0pyramidlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_REFINED_P1_LOCALBASIS_HH
    \n-
    6#define DUNE_REFINED_P1_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    12#include <numeric>
    \n-
    13
    \n-
    14#include <dune/common/fmatrix.hh>
    \n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include "../../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n
    15
    \n-\n-
    17
    \n-
    18namespace Dune
    \n-
    19{
    \n-
    20 template<class D, class R, int dim>
    \n-
    \n-\n-
    22 : public RefinedSimplexLocalBasis<D,dim>
    \n-
    23 {
    \n-
    24 public:
    \n-
    \n-\n-
    26 {
    \n-
    27 DUNE_THROW(Dune::NotImplemented,"RefinedP1LocalBasis not implemented for dim > 3.");
    \n-
    28 }
    \n-
    \n-
    29 };
    \n-
    \n-
    30
    \n-
    53 template<class D, class R>
    \n-
    \n-\n-
    55 : public RefinedSimplexLocalBasis<D,1>
    \n-
    56 {
    \n-
    57 public:
    \n-
    59 typedef LocalBasisTraits<D,1,Dune::FieldVector<D,1>,R,1,Dune::FieldVector<R,1>,
    \n-
    60 Dune::FieldMatrix<R,1,1> > Traits;
    \n-
    61
    \n-
    \n-
    63 static constexpr unsigned int size ()
    \n-
    64 {
    \n-
    65 return 3;
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    69 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    70 std::vector<typename Traits::RangeType>& out) const
    \n-
    71 {
    \n-
    72 out.resize(3);
    \n-
    73
    \n-
    74 int subElement;
    \n-
    75 typename Traits::DomainType local;
    \n-
    76 this->getSubElement(in, subElement, local);
    \n-
    77
    \n-
    78 switch (subElement) {
    \n-
    79 case 0 :
    \n-
    80
    \n-
    81 out[0] = 1 - local[0];
    \n-
    82 out[1] = local[0];
    \n-
    83 out[2] = 0;
    \n-
    84 break;
    \n-
    85
    \n-
    86 case 1 :
    \n-
    87
    \n-
    88 out[0] = 0;
    \n-
    89 out[1] = 1 - local[0];
    \n-
    90 out[2] = local[0];
    \n-
    91 break;
    \n-
    92
    \n-
    93 }
    \n-
    94
    \n-
    95 }
    \n-
    \n-
    96
    \n-
    98 inline void
    \n-
    \n-
    99 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    100 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    101 {
    \n-
    102 out.resize(3);
    \n-
    103
    \n-
    104 int subElement;
    \n-
    105 typename Traits::DomainType local;
    \n-
    106 this->getSubElement(in, subElement, local);
    \n-
    107
    \n-
    108 switch (subElement) {
    \n-
    109 case 0 :
    \n-
    110
    \n-
    111 out[0][0][0] = -2;
    \n-
    112 out[1][0][0] = 2;
    \n-
    113 out[2][0][0] = 0;
    \n-
    114 break;
    \n-
    115
    \n-
    116 case 1 :
    \n-
    117
    \n-
    118 out[0][0][0] = 0;
    \n-
    119 out[1][0][0] = -2;
    \n-
    120 out[2][0][0] = 2;
    \n-
    121 break;
    \n-
    122
    \n-
    123 }
    \n-
    124 }
    \n-
    \n-
    125
    \n-
    \n-
    127 void partial (const std::array<unsigned int, 1>& order,
    \n-
    128 const typename Traits::DomainType& in, // position
    \n-
    129 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    130 {
    \n-
    131 auto totalOrder = order[0];
    \n-
    132 if (totalOrder == 0) {
    \n-
    133 evaluateFunction(in, out);
    \n-
    134 } else if (totalOrder == 1)
    \n-
    135 {
    \n-
    136 out.resize(3);
    \n-
    137
    \n-
    138 int subElement;
    \n-
    139 typename Traits::DomainType local;
    \n-
    140 this->getSubElement(in, subElement, local);
    \n-
    141
    \n-
    142 switch (subElement) {
    \n-
    143 case 0:
    \n-
    144 out[0] = -2;
    \n-
    145 out[1] = 2;
    \n-
    146 out[2] = 0;
    \n-
    147 break;
    \n-
    148 case 1:
    \n-
    149 out[0] = 0;
    \n-
    150 out[1] = -2;
    \n-
    151 out[2] = 2;
    \n-
    152 break;
    \n-
    153 }
    \n-
    154 } else {
    \n-
    155 out.resize(3);
    \n-
    156 out[0] = out[1] = out[2] = 0;
    \n-
    157 }
    \n-
    158 }
    \n-
    \n-
    159
    \n-
    \n-
    163 static constexpr unsigned int order ()
    \n-
    164 {
    \n-
    165 return 1;
    \n-
    166 }
    \n-
    \n-
    167
    \n-
    168 };
    \n-
    \n-
    169
    \n-
    195 template<class D, class R>
    \n-
    \n-\n-
    197 : public RefinedSimplexLocalBasis<D,2>
    \n-
    198 {
    \n-
    199 public:
    \n-
    201 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,1,Dune::FieldVector<R,1>,
    \n-
    202 Dune::FieldMatrix<R,1,2> > Traits;
    \n-
    203
    \n-
    \n-
    205 static constexpr unsigned int size ()
    \n-
    206 {
    \n-
    207 return 6;
    \n-
    208 }
    \n-
    \n-
    209
    \n-
    \n-
    211 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    212 std::vector<typename Traits::RangeType>& out) const
    \n-
    213 {
    \n-
    214 out.resize(6);
    \n-
    215
    \n-
    216 int subElement;
    \n-
    217 typename Traits::DomainType local;
    \n-
    218 this->getSubElement(in, subElement, local);
    \n-
    219
    \n-
    220 switch (subElement) {
    \n-
    221 case 0 :
    \n-
    222
    \n-
    223 out[0] = 1 - local[0] - local[1];
    \n-
    224 out[1] = local[0];
    \n-
    225 out[2] = 0;
    \n-
    226 out[3] = local[1];
    \n-
    227 out[4] = 0;
    \n-
    228 out[5] = 0;
    \n-
    229 break;
    \n-
    230
    \n-
    231 case 1 :
    \n-
    232
    \n-
    233 out[0] = 0;
    \n-
    234 out[1] = 1 - local[0] - local[1];
    \n-
    235 out[2] = local[0];
    \n-
    236 out[3] = 0;
    \n-
    237 out[4] = local[1];
    \n-
    238 out[5] = 0;
    \n-
    239 break;
    \n-
    240
    \n-
    241 case 2 :
    \n-
    242
    \n-
    243 out[0] = 0;
    \n-
    244 out[1] = 0;
    \n-
    245 out[2] = 0;
    \n-
    246 out[3] = 1 - local[0] - local[1];
    \n-
    247 out[4] = local[0];
    \n-
    248 out[5] = local[1];
    \n-
    249 break;
    \n-
    250 case 3 :
    \n-
    251
    \n-
    252 out[0] = 0;
    \n-
    253 out[1] = local[1];
    \n-
    254 out[2] = 0;
    \n-
    255 out[3] = local[0];
    \n-
    256 out[4] = 1 - local[0] - local[1];
    \n-
    257 out[5] = 0;
    \n-
    258 }
    \n-
    259
    \n-
    260 }
    \n-
    \n-
    261
    \n-
    263 inline void
    \n-
    \n-
    264 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    265 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    266 {
    \n-
    267 out.resize(6);
    \n-
    268
    \n-
    269 int subElement;
    \n-
    270 typename Traits::DomainType local;
    \n-
    271 this->getSubElement(in, subElement, local);
    \n-
    272
    \n-
    273 switch (subElement) {
    \n-
    274 case 0 :
    \n-
    275
    \n-
    276 out[0][0][0] = -2; out[0][0][1] = -2;
    \n-
    277 out[1][0][0] = 2; out[1][0][1] = 0;
    \n-
    278 out[2][0][0] = 0; out[2][0][1] = 0;
    \n-
    279 out[3][0][0] = 0; out[3][0][1] = 2;
    \n-
    280 out[4][0][0] = 0; out[4][0][1] = 0;
    \n-
    281 out[5][0][0] = 0; out[5][0][1] = 0;
    \n-
    282 break;
    \n-
    283
    \n-
    284 case 1 :
    \n-
    285
    \n-
    286 out[0][0][0] = 0; out[0][0][1] = 0;
    \n-
    287 out[1][0][0] = -2; out[1][0][1] = -2;
    \n-
    288 out[2][0][0] = 2; out[2][0][1] = 0;
    \n-
    289 out[3][0][0] = 0; out[3][0][1] = 0;
    \n-
    290 out[4][0][0] = 0; out[4][0][1] = 2;
    \n-
    291 out[5][0][0] = 0; out[5][0][1] = 0;
    \n-
    292 break;
    \n-
    293
    \n-
    294 case 2 :
    \n-
    295
    \n-
    296 out[0][0][0] = 0; out[0][0][1] = 0;
    \n-
    297 out[1][0][0] = 0; out[1][0][1] = 0;
    \n-
    298 out[2][0][0] = 0; out[2][0][1] = 0;
    \n-
    299 out[3][0][0] = -2; out[3][0][1] = -2;
    \n-
    300 out[4][0][0] = 2; out[4][0][1] = 0;
    \n-
    301 out[5][0][0] = 0; out[5][0][1] = 2;
    \n-
    302 break;
    \n-
    303 case 3 :
    \n-
    304
    \n-
    305 out[0][0][0] = 0; out[0][0][1] = 0;
    \n-
    306 out[1][0][0] = 0; out[1][0][1] = -2;
    \n-
    307 out[2][0][0] = 0; out[2][0][1] = 0;
    \n-
    308 out[3][0][0] = -2; out[3][0][1] = 0;
    \n-
    309 out[4][0][0] = 2; out[4][0][1] = 2;
    \n-
    310 out[5][0][0] = 0; out[5][0][1] = 0;
    \n-
    311 }
    \n-
    312 }
    \n-
    \n-
    313
    \n-
    \n-
    315 void partial (const std::array<unsigned int, 2>& order,
    \n-
    316 const typename Traits::DomainType& in, // position
    \n-
    317 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    318 {
    \n-
    319 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    320 if (totalOrder == 0) {
    \n-
    321 evaluateFunction(in, out);
    \n-
    322 } else if (totalOrder == 1) {
    \n-
    323 int subElement;
    \n-
    324 typename Traits::DomainType local;
    \n-
    325 this->getSubElement(in, subElement, local);
    \n-
    326
    \n-
    327 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    328 out.resize(size());
    \n-
    329
    \n-
    330 for (std::size_t i = 0; i < size(); ++i)
    \n-
    331 out[i] = 0;
    \n-
    332
    \n-
    333 switch (direction) {
    \n-
    334 case 0: // direction == 0
    \n-
    335
    \n-
    336 switch (subElement) {
    \n-
    337 case 0 :
    \n-
    338 out[0] = -2;
    \n-
    339 out[1] = 2;
    \n-
    340 break;
    \n-
    341 case 1 :
    \n-
    342 out[1] = -2;
    \n-
    343 out[2] = 2;
    \n-
    344 break;
    \n-
    345 case 2 :
    \n-
    346 out[3] = -2;
    \n-
    347 out[4] = 2;
    \n-
    348 break;
    \n-
    349 case 3 :
    \n-
    350 out[3] = -2;
    \n-
    351 out[4] = 2;
    \n-
    352 }
    \n-
    353 break;
    \n-
    354
    \n-
    355 case 1: // direction == 1
    \n-
    356
    \n-
    357 switch (subElement) {
    \n-
    358 case 0 :
    \n-
    359 out[0] = -2;
    \n-
    360 out[3] = 2;
    \n-
    361 break;
    \n-
    362 case 1 :
    \n-
    363 out[1] = -2;
    \n-
    364 out[4] = 2;
    \n-
    365 break;
    \n-
    366 case 2 :
    \n-
    367 out[3] = -2;
    \n-
    368 out[5] = 2;
    \n-
    369 break;
    \n-
    370 case 3 :
    \n-
    371 out[1] = -2;
    \n-
    372 out[4] = 2;
    \n-
    373 }
    \n-
    374 break;
    \n-
    375
    \n-
    376 default:
    \n-
    377 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    378 }
    \n-
    379 } else {
    \n-
    380 out.resize(size());
    \n-
    381 for (std::size_t i = 0; i < size(); ++i)
    \n-
    382 out[i] = 0;
    \n-
    383 }
    \n-
    384 }
    \n-
    \n-
    385
    \n-
    \n-
    389 static constexpr unsigned int order ()
    \n-
    390 {
    \n-
    391 return 1;
    \n-
    392 }
    \n-
    \n-
    393
    \n-
    394 };
    \n-
    \n-
    395
    \n-
    425 template<class D, class R>
    \n-
    \n-\n-
    427 : public RefinedSimplexLocalBasis<D,3>
    \n-
    428 {
    \n-
    429 public:
    \n-
    431 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
    \n-
    432 Dune::FieldMatrix<R,1,3> > Traits;
    \n-
    433
    \n-
    \n-
    435 static constexpr unsigned int size ()
    \n-
    436 {
    \n-
    437 return 10;
    \n-
    438 }
    \n-
    \n-
    439
    \n-
    \n-
    441 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    442 std::vector<typename Traits::RangeType>& out) const
    \n-
    443 {
    \n-
    444 out.resize(10);
    \n-
    445
    \n-
    446 int subElement;
    \n-
    447 typename Traits::DomainType local;
    \n-
    448 this->getSubElement(in, subElement, local);
    \n-
    449
    \n-
    450 switch (subElement) {
    \n-
    451 case 0 :
    \n-
    452
    \n-
    453 out[0] = 1 - local[0] - local[1] - local[2];
    \n-
    454 out[1] = local[0];
    \n-
    455 out[2] = 0;
    \n-
    456 out[3] = local[1];
    \n-
    457 out[4] = 0;
    \n-
    458 out[5] = 0;
    \n-
    459 out[6] = local[2];
    \n-
    460 out[7] = 0;
    \n-
    461 out[8] = 0;
    \n-
    462 out[9] = 0;
    \n-
    463 break;
    \n-
    464
    \n-
    465 case 1 :
    \n-
    466
    \n-
    467 out[0] = 0;
    \n-
    468 out[1] = 1 - local[0] - local[1] -local[2];
    \n-
    469 out[2] = local[0];
    \n-
    470 out[3] = 0;
    \n-
    471 out[4] = local[1];
    \n-
    472 out[5] = 0;
    \n-
    473 out[6] = 0;
    \n-
    474 out[7] = local[2];
    \n-
    475 out[8] = 0;
    \n-
    476 out[9] = 0;
    \n-
    477 break;
    \n-
    478
    \n-
    479 case 2 :
    \n-
    480
    \n-
    481 out[0] = 0;
    \n-
    482 out[1] = 0;
    \n-
    483 out[2] = 0;
    \n-
    484 out[3] = 1 - local[0] - local[1] -local[2];
    \n-
    485 out[4] = local[0];
    \n-
    486 out[5] = local[1];
    \n-
    487 out[6] = 0;
    \n-
    488 out[7] = 0;
    \n-
    489 out[8] = local[2];
    \n-
    490 out[9] = 0;
    \n-
    491 break;
    \n-
    492
    \n-
    493 case 3 :
    \n-
    494
    \n-
    495 out[0] = 0;
    \n-
    496 out[1] = 0;
    \n-
    497 out[2] = 0;
    \n-
    498 out[3] = 0;
    \n-
    499 out[4] = 0;
    \n-
    500 out[5] = 0;
    \n-
    501 out[6] = 1 - local[0] - local[1] -local[2];
    \n-
    502 out[7] = local[0];
    \n-
    503 out[8] = local[1];
    \n-
    504 out[9] = local[2];
    \n-
    505 break;
    \n-
    506
    \n-
    507 case 4 :
    \n-
    508
    \n-
    509 out[0] = 0;
    \n-
    510 out[1] = 1 - local[0] - local[1] -local[2];
    \n-
    511 out[2] = 0;
    \n-
    512 out[3] = local[0];
    \n-
    513 out[4] = 0;
    \n-
    514 out[5] = 0;
    \n-
    515 out[6] = local[1];
    \n-
    516 out[7] = local[2];
    \n-
    517 out[8] = 0;
    \n-
    518 out[9] = 0;
    \n-
    519 break;
    \n-
    520
    \n-
    521 case 5 :
    \n-
    522
    \n-
    523 out[0] = 0;
    \n-
    524 out[1] = local[1];
    \n-
    525 out[2] = 0;
    \n-
    526 out[3] = local[0];
    \n-
    527 out[4] = 1 - local[0] - local[1] -local[2];
    \n-
    528 out[5] = 0;
    \n-
    529 out[6] = 0;
    \n-
    530 out[7] = local[2];
    \n-
    531 out[8] = 0;
    \n-
    532 out[9] = 0;
    \n-
    533 break;
    \n-
    534
    \n-
    535 case 6 :
    \n-
    536
    \n-
    537 out[0] = 0;
    \n-
    538 out[1] = 0;
    \n-
    539 out[2] = 0;
    \n-
    540 out[3] = 1 - local[0] - local[1] -local[2];
    \n-
    541 out[4] = 0;
    \n-
    542 out[5] = 0;
    \n-
    543 out[6] = local[0];
    \n-
    544 out[7] = local[1];
    \n-
    545 out[8] = local[2];
    \n-
    546 out[9] = 0;
    \n-
    547 break;
    \n-
    548
    \n-
    549 case 7 :
    \n-
    550
    \n-
    551 out[0] = 0;
    \n-
    552 out[1] = 0;
    \n-
    553 out[2] = 0;
    \n-
    554 out[3] = 1 - local[0] - local[1] -local[2];
    \n-
    555 out[4] = local[2];
    \n-
    556 out[5] = 0;
    \n-
    557 out[6] = 0;
    \n-
    558 out[7] = local[1];
    \n-
    559 out[8] = local[0];
    \n-
    560 out[9] = 0;
    \n-
    561 break;
    \n-
    562 }
    \n-
    563
    \n-
    564 }
    \n-
    \n-
    565
    \n-
    567 inline void
    \n-
    \n-
    568 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    569 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    570 {
    \n-
    571 out.resize(10);
    \n-
    572
    \n-
    573 int subElement;
    \n-
    574 typename Traits::DomainType local;
    \n-
    575 this->getSubElement(in, subElement, local);
    \n-
    576
    \n-
    577 switch (subElement) {
    \n-
    578 case 0 :
    \n-
    579
    \n-
    580 out[0][0][0] = -2; out[0][0][1] = -2; out[0][0][2] = -2;
    \n-
    581 out[1][0][0] = 2; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    582 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    583 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;
    \n-
    584 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    585 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    586 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 2;
    \n-
    587 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;
    \n-
    588 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n-
    589 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    590 break;
    \n-
    591
    \n-
    592 case 1 :
    \n-
    593
    \n-
    594 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    595 out[1][0][0] = -2; out[1][0][1] = -2; out[1][0][2] = -2;
    \n-
    596 out[2][0][0] = 2; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    597 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;
    \n-
    598 out[4][0][0] = 0; out[4][0][1] = 2; out[4][0][2] = 0;
    \n-
    599 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    600 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n-
    601 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;
    \n-
    602 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n-
    603 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    604 break;
    \n-
    605
    \n-
    606 case 2 :
    \n-
    607
    \n-
    608 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    609 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    610 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    611 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;
    \n-
    612 out[4][0][0] = 2; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    613 out[5][0][0] = 0; out[5][0][1] = 2; out[5][0][2] = 0;
    \n-
    614 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n-
    615 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;
    \n-
    616 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 2;
    \n-
    617 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    618 break;
    \n-
    619
    \n-
    620 case 3 :
    \n-
    621
    \n-
    622 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    623 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    624 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    625 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;
    \n-
    626 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    627 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    628 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = -2;
    \n-
    629 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;
    \n-
    630 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 0;
    \n-
    631 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 2;
    \n-
    632 break;
    \n-
    633
    \n-
    634 case 4 :
    \n-
    635
    \n-
    636 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    637 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;
    \n-
    638 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    639 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;
    \n-
    640 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    641 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    642 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;
    \n-
    643 out[7][0][0] = 2; out[7][0][1] = 2; out[7][0][2] = 2;
    \n-
    644 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n-
    645 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    646 break;
    \n-
    647
    \n-
    648 case 5 :
    \n-
    649
    \n-
    650 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    651 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;
    \n-
    652 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    653 out[3][0][0] = -2; out[3][0][1] = 0; out[3][0][2] = 0;
    \n-
    654 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;
    \n-
    655 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    656 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n-
    657 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;
    \n-
    658 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n-
    659 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    660 break;
    \n-
    661
    \n-
    662 case 6 :
    \n-
    663
    \n-
    664 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    665 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    666 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    667 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = -2;
    \n-
    668 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    669 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    670 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;
    \n-
    671 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;
    \n-
    672 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;
    \n-
    673 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    674 break;
    \n-
    675
    \n-
    676 case 7 :
    \n-
    677
    \n-
    678 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    679 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    680 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    681 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;
    \n-
    682 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;
    \n-
    683 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    684 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n-
    685 out[7][0][0] = 0; out[7][0][1] = -2; out[7][0][2] = 0;
    \n-
    686 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;
    \n-
    687 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    688 break;
    \n-
    689 }
    \n-
    690 }
    \n-
    \n-
    691
    \n-
    \n-
    693 void partial (const std::array<unsigned int, 3>& order,
    \n-
    694 const typename Traits::DomainType& in, // position
    \n-
    695 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    696 {
    \n-
    697 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    698 if (totalOrder == 0) {
    \n-
    699 evaluateFunction(in, out);
    \n-
    700 } else if (totalOrder == 1) {
    \n-
    701 int subElement;
    \n-
    702 typename Traits::DomainType local;
    \n-
    703 this->getSubElement(in, subElement, local);
    \n-
    704
    \n-
    705 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    706 out.resize(size());
    \n-
    707
    \n-
    708 for (std::size_t i = 0; i < size(); ++i)
    \n-
    709 out[i] = 0;
    \n-
    710
    \n-
    711 switch (direction) {
    \n-
    712 case 0: // direction == 0
    \n-
    713
    \n-
    714 switch (subElement) {
    \n-
    715 case 0 :
    \n-
    716 out[0] = -2;
    \n-
    717 out[1] = 2;
    \n-
    718 break;
    \n-
    719 case 1 :
    \n-
    720 out[1] = -2;
    \n-
    721 out[2] = 2;
    \n-
    722 break;
    \n-
    723 case 2 :
    \n-
    724 out[3] = -2;
    \n-
    725 out[4] = 2;
    \n-
    726 break;
    \n-
    727 case 3 :
    \n-
    728 out[6] = -2;
    \n-
    729 out[7] = 2;
    \n-
    730 break;
    \n-
    731 case 4 :
    \n-
    732 out[6] = -2;
    \n-
    733 out[7] = 2;
    \n-
    734 break;
    \n-
    735 case 5 :
    \n-
    736 out[3] = -2;
    \n-
    737 out[4] = 2;
    \n-
    738 break;
    \n-
    739 case 6 :
    \n-
    740 out[6] = -2;
    \n-
    741 out[7] = 2;
    \n-
    742 break;
    \n-
    743 case 7 :
    \n-
    744 out[3] = -2;
    \n-
    745 out[4] = 2;
    \n-
    746 break;
    \n-
    747 }
    \n-
    748 break;
    \n-
    749
    \n-
    750 case 1: // direction == 1
    \n-
    751
    \n-
    752 switch (subElement) {
    \n-
    753 case 0 :
    \n-
    754 out[0] = -2;
    \n-
    755 out[3] = 2;
    \n-
    756 break;
    \n-
    757 case 1 :
    \n-
    758 out[1] = -2;
    \n-
    759 out[4] = 2;
    \n-
    760 break;
    \n-
    761 case 2 :
    \n-
    762 out[3] = -2;
    \n-
    763 out[5] = 2;
    \n-
    764 break;
    \n-
    765 case 3 :
    \n-
    766 out[6] = -2;
    \n-
    767 out[8] = 2;
    \n-
    768 break;
    \n-
    769 case 4 :
    \n-
    770 out[1] = -2;
    \n-
    771 out[3] = 2;
    \n-
    772 out[6] = -2;
    \n-
    773 break;
    \n-
    774 case 5 :
    \n-
    775 out[1] = -2;
    \n-
    776 out[4] = 2;
    \n-
    777 break;
    \n-
    778 case 6 :
    \n-
    779 out[6] = -2;
    \n-
    780 out[8] = 2;
    \n-
    781 break;
    \n-
    782 case 7 :
    \n-
    783 out[3] = -2;
    \n-
    784 out[4] = 2;
    \n-
    785 out[7] = -2;
    \n-
    786 out[8] = 2;
    \n-
    787 break;
    \n-
    788 }
    \n-
    789 break;
    \n-
    790
    \n-
    791 case 2: // direction == 2
    \n-
    792
    \n-
    793 switch (subElement) {
    \n-
    794 case 0 :
    \n-
    795 out[0] = -2;
    \n-
    796 out[6] = 2;
    \n-
    797 break;
    \n-
    798 case 1 :
    \n-
    799 out[1] = -2;
    \n-
    800 out[7] = 2;
    \n-
    801 break;
    \n-
    802 case 2 :
    \n-
    803 out[3] = -2;
    \n-
    804 out[8] = 2;
    \n-
    805 break;
    \n-
    806 case 3 :
    \n-
    807 out[6] = -2;
    \n-
    808 out[9] = 2;
    \n-
    809 break;
    \n-
    810 case 4 :
    \n-
    811 out[1] = -2;
    \n-
    812 out[7] = 2;
    \n-
    813 break;
    \n-
    814 case 5 :
    \n-
    815 out[1] = -2;
    \n-
    816 out[7] = 2;
    \n-
    817 break;
    \n-
    818 case 6 :
    \n-
    819 out[3] = -2;
    \n-
    820 out[8] = 2;
    \n-
    821 break;
    \n-
    822 case 7 :
    \n-
    823 out[3] = -2;
    \n-
    824 out[8] = 2;
    \n-
    825 break;
    \n-
    826 }
    \n-
    827 break;
    \n-
    828
    \n-
    829 default:
    \n-
    830 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    831 }
    \n-
    832 } else {
    \n-
    833 out.resize(size());
    \n-
    834 for (std::size_t i = 0; i < size(); ++i)
    \n-
    835 out[i] = 0;
    \n-
    836 }
    \n-
    837 }
    \n-
    \n-
    838
    \n-
    \n-
    842 static constexpr unsigned int order ()
    \n-
    843 {
    \n-
    844 return 1;
    \n-
    845 }
    \n-
    \n-
    846
    \n-
    847 };
    \n-
    \n-
    848}
    \n-
    849#endif
    \n-
    Contains a base class for LocalBasis classes based on uniform refinement.
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for(std::size_t i=0; i< size(); i++)
    \n+
    31 li[i] = LocalKey(i,1,0);
    \n+
    32 }
    \n+
    \n+
    33
    \n+
    \n+
    35 std::size_t size () const
    \n+
    36 {
    \n+
    37 return 5;
    \n+
    38 }
    \n+
    \n+
    39
    \n+
    \n+
    41 const LocalKey& localKey (std::size_t i) const
    \n+
    42 {
    \n+
    43 return li[i];
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    46 private:
    \n+
    47 std::vector<LocalKey> li;
    \n+
    48 };
    \n+
    \n+
    49}
    \n+
    50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Definition refinedsimplexlocalbasis.hh:20
    \n-
    Definition refinedp1localbasis.hh:23
    \n-
    RefinedP1LocalBasis()
    Definition refinedp1localbasis.hh:25
    \n-
    LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 1 > > Traits
    export type traits for function signature
    Definition refinedp1localbasis.hh:60
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition refinedp1localbasis.hh:99
    \n-
    static constexpr unsigned int order()
    Polynomial order of the shape functions Doesn't really apply: these shape functions are only piecewis...
    Definition refinedp1localbasis.hh:163
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp1localbasis.hh:69
    \n-
    void partial(const std::array< unsigned int, 1 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition refinedp1localbasis.hh:127
    \n-
    static constexpr unsigned int size()
    number of shape functions
    Definition refinedp1localbasis.hh:63
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition refinedp1localbasis.hh:264
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 2 > > Traits
    export type traits for function signature
    Definition refinedp1localbasis.hh:202
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp1localbasis.hh:211
    \n-
    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 refinedp1localbasis.hh:315
    \n-
    static constexpr unsigned int order()
    Polynomial order of the shape functions Doesn't really apply: these shape functions are only piecewis...
    Definition refinedp1localbasis.hh:389
    \n-
    static constexpr unsigned int size()
    number of shape functions
    Definition refinedp1localbasis.hh:205
    \n-
    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 refinedp1localbasis.hh:693
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp1localbasis.hh:441
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
    export type traits for function signature
    Definition refinedp1localbasis.hh:432
    \n-
    static constexpr unsigned int size()
    number of shape functions
    Definition refinedp1localbasis.hh:435
    \n-
    static constexpr unsigned int order()
    Polynomial order of the shape functions Doesn't really apply: these shape functions are only piecewis...
    Definition refinedp1localbasis.hh:842
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition refinedp1localbasis.hh:568
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for Raviart-Thomas-1 elements on pyramids.
    Definition raviartthomas0pyramidlocalcoefficients.hh:24
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0pyramidlocalcoefficients.hh:41
    \n+
    RT0PyramidLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0pyramidlocalcoefficients.hh:28
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0pyramidlocalcoefficients.hh:35
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,869 +1,73 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\be_\bf_\bi_\bn_\be_\bd\n- * _\br_\be_\bf_\bi_\bn_\be_\bd_\bp_\b1\n-refinedp1localbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\by_\br_\ba_\bm_\bi_\bd\n+raviartthomas0pyramidlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_REFINED_P1_LOCALBASIS_HH\n-6#define DUNE_REFINED_P1_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH\n 7\n-12#include \n-13\n-14#include \n+8#include \n+9#include \n+10\n+11#include \"../../common/localkey.hh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n 15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-17\n-18namespace _\bD_\bu_\bn_\be\n-19{\n-20 template\n-_\b2_\b1 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-22 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-23 {\n-24 public:\n-_\b2_\b5 _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs()\n-26 {\n-27 DUNE_THROW(Dune::NotImplemented,\"RefinedP1LocalBasis not implemented for dim\n-> 3.\");\n-28 }\n-29 };\n-30\n-53 template\n-_\b5_\b4 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-55 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-56 {\n-57 public:\n-59 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b1_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b1_\b>,R,1,Dune::\n-FieldVector,\n-_\b6_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-61\n-_\b6_\b3 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-64 {\n-65 return 3;\n-66 }\n-67\n-_\b6_\b9 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-70 std::vector& out) const\n-71 {\n-72 out.resize(3);\n-73\n-74 int subElement;\n-75 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-76 this->getSubElement(in, subElement, local);\n-77\n-78 switch (subElement) {\n-79 case 0 :\n-80\n-81 out[0] = 1 - local[0];\n-82 out[1] = local[0];\n-83 out[2] = 0;\n-84 break;\n-85\n-86 case 1 :\n-87\n-88 out[0] = 0;\n-89 out[1] = 1 - local[0];\n-90 out[2] = local[0];\n-91 break;\n-92\n-93 }\n-94\n-95 }\n-96\n-98 inline void\n-_\b9_\b9 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-100 std::vector& out) const // return value\n-101 {\n-102 out.resize(3);\n-103\n-104 int subElement;\n-105 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-106 this->getSubElement(in, subElement, local);\n-107\n-108 switch (subElement) {\n-109 case 0 :\n-110\n-111 out[0][0][0] = -2;\n-112 out[1][0][0] = 2;\n-113 out[2][0][0] = 0;\n-114 break;\n-115\n-116 case 1 :\n-117\n-118 out[0][0][0] = 0;\n-119 out[1][0][0] = -2;\n-120 out[2][0][0] = 2;\n-121 break;\n-122\n-123 }\n-124 }\n-125\n-_\b1_\b2_\b7 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-128 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-129 std::vector& out) const // return value\n-130 {\n-131 auto totalOrder = order[0];\n-132 if (totalOrder == 0) {\n-133 evaluateFunction(in, out);\n-134 } else if (totalOrder == 1)\n-135 {\n-136 out.resize(3);\n-137\n-138 int subElement;\n-139 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-140 this->getSubElement(in, subElement, local);\n-141\n-142 switch (subElement) {\n-143 case 0:\n-144 out[0] = -2;\n-145 out[1] = 2;\n-146 out[2] = 0;\n-147 break;\n-148 case 1:\n-149 out[0] = 0;\n-150 out[1] = -2;\n-151 out[2] = 2;\n-152 break;\n-153 }\n-154 } else {\n-155 out.resize(3);\n-156 out[0] = out[1] = out[2] = 0;\n-157 }\n-158 }\n-159\n-_\b1_\b6_\b3 static constexpr unsigned int _\bo_\br_\bd_\be_\br ()\n-164 {\n-165 return 1;\n-166 }\n-167\n-168 };\n-169\n-195 template\n-_\b1_\b9_\b6 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-197 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-198 {\n-199 public:\n-201 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,1,Dune::\n-FieldVector,\n-_\b2_\b0_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-203\n-_\b2_\b0_\b5 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-206 {\n-207 return 6;\n-208 }\n-209\n-_\b2_\b1_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-212 std::vector& out) const\n-213 {\n-214 out.resize(6);\n-215\n-216 int subElement;\n-217 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-218 this->getSubElement(in, subElement, local);\n-219\n-220 switch (subElement) {\n-221 case 0 :\n-222\n-223 out[0] = 1 - local[0] - local[1];\n-224 out[1] = local[0];\n-225 out[2] = 0;\n-226 out[3] = local[1];\n-227 out[4] = 0;\n-228 out[5] = 0;\n-229 break;\n-230\n-231 case 1 :\n-232\n-233 out[0] = 0;\n-234 out[1] = 1 - local[0] - local[1];\n-235 out[2] = local[0];\n-236 out[3] = 0;\n-237 out[4] = local[1];\n-238 out[5] = 0;\n-239 break;\n-240\n-241 case 2 :\n-242\n-243 out[0] = 0;\n-244 out[1] = 0;\n-245 out[2] = 0;\n-246 out[3] = 1 - local[0] - local[1];\n-247 out[4] = local[0];\n-248 out[5] = local[1];\n-249 break;\n-250 case 3 :\n-251\n-252 out[0] = 0;\n-253 out[1] = local[1];\n-254 out[2] = 0;\n-255 out[3] = local[0];\n-256 out[4] = 1 - local[0] - local[1];\n-257 out[5] = 0;\n-258 }\n-259\n-260 }\n-261\n-263 inline void\n-_\b2_\b6_\b4 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-265 std::vector& out) const // return value\n-266 {\n-267 out.resize(6);\n-268\n-269 int subElement;\n-270 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-271 this->getSubElement(in, subElement, local);\n-272\n-273 switch (subElement) {\n-274 case 0 :\n-275\n-276 out[0][0][0] = -2; out[0][0][1] = -2;\n-277 out[1][0][0] = 2; out[1][0][1] = 0;\n-278 out[2][0][0] = 0; out[2][0][1] = 0;\n-279 out[3][0][0] = 0; out[3][0][1] = 2;\n-280 out[4][0][0] = 0; out[4][0][1] = 0;\n-281 out[5][0][0] = 0; out[5][0][1] = 0;\n-282 break;\n-283\n-284 case 1 :\n-285\n-286 out[0][0][0] = 0; out[0][0][1] = 0;\n-287 out[1][0][0] = -2; out[1][0][1] = -2;\n-288 out[2][0][0] = 2; out[2][0][1] = 0;\n-289 out[3][0][0] = 0; out[3][0][1] = 0;\n-290 out[4][0][0] = 0; out[4][0][1] = 2;\n-291 out[5][0][0] = 0; out[5][0][1] = 0;\n-292 break;\n-293\n-294 case 2 :\n-295\n-296 out[0][0][0] = 0; out[0][0][1] = 0;\n-297 out[1][0][0] = 0; out[1][0][1] = 0;\n-298 out[2][0][0] = 0; out[2][0][1] = 0;\n-299 out[3][0][0] = -2; out[3][0][1] = -2;\n-300 out[4][0][0] = 2; out[4][0][1] = 0;\n-301 out[5][0][0] = 0; out[5][0][1] = 2;\n-302 break;\n-303 case 3 :\n-304\n-305 out[0][0][0] = 0; out[0][0][1] = 0;\n-306 out[1][0][0] = 0; out[1][0][1] = -2;\n-307 out[2][0][0] = 0; out[2][0][1] = 0;\n-308 out[3][0][0] = -2; out[3][0][1] = 0;\n-309 out[4][0][0] = 2; out[4][0][1] = 2;\n-310 out[5][0][0] = 0; out[5][0][1] = 0;\n-311 }\n-312 }\n-313\n-_\b3_\b1_\b5 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-316 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-317 std::vector& out) const // return value\n-318 {\n-319 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-320 if (totalOrder == 0) {\n-321 evaluateFunction(in, out);\n-322 } else if (totalOrder == 1) {\n-323 int subElement;\n-324 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-325 this->getSubElement(in, subElement, local);\n-326\n-327 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-328 out.resize(size());\n-329\n-330 for (std::size_t i = 0; i < size(); ++i)\n-331 out[i] = 0;\n-332\n-333 switch (direction) {\n-334 case 0: // direction == 0\n-335\n-336 switch (subElement) {\n-337 case 0 :\n-338 out[0] = -2;\n-339 out[1] = 2;\n-340 break;\n-341 case 1 :\n-342 out[1] = -2;\n-343 out[2] = 2;\n-344 break;\n-345 case 2 :\n-346 out[3] = -2;\n-347 out[4] = 2;\n-348 break;\n-349 case 3 :\n-350 out[3] = -2;\n-351 out[4] = 2;\n-352 }\n-353 break;\n-354\n-355 case 1: // direction == 1\n-356\n-357 switch (subElement) {\n-358 case 0 :\n-359 out[0] = -2;\n-360 out[3] = 2;\n-361 break;\n-362 case 1 :\n-363 out[1] = -2;\n-364 out[4] = 2;\n-365 break;\n-366 case 2 :\n-367 out[3] = -2;\n-368 out[5] = 2;\n-369 break;\n-370 case 3 :\n-371 out[1] = -2;\n-372 out[4] = 2;\n-373 }\n-374 break;\n-375\n-376 default:\n-377 DUNE_THROW(RangeError, \"Component out of range.\");\n-378 }\n-379 } else {\n-380 out.resize(size());\n-381 for (std::size_t i = 0; i < size(); ++i)\n-382 out[i] = 0;\n-383 }\n-384 }\n-385\n-_\b3_\b8_\b9 static constexpr unsigned int _\bo_\br_\bd_\be_\br ()\n-390 {\n-391 return 1;\n-392 }\n-393\n-394 };\n-395\n-425 template\n-_\b4_\b2_\b6 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-427 : public _\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-428 {\n-429 public:\n-431 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,1,Dune::\n-FieldVector,\n-_\b4_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-433\n-_\b4_\b3_\b5 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-436 {\n-437 return 10;\n-438 }\n-439\n-_\b4_\b4_\b1 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-442 std::vector& out) const\n-443 {\n-444 out.resize(10);\n-445\n-446 int subElement;\n-447 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-448 this->getSubElement(in, subElement, local);\n-449\n-450 switch (subElement) {\n-451 case 0 :\n-452\n-453 out[0] = 1 - local[0] - local[1] - local[2];\n-454 out[1] = local[0];\n-455 out[2] = 0;\n-456 out[3] = local[1];\n-457 out[4] = 0;\n-458 out[5] = 0;\n-459 out[6] = local[2];\n-460 out[7] = 0;\n-461 out[8] = 0;\n-462 out[9] = 0;\n-463 break;\n-464\n-465 case 1 :\n-466\n-467 out[0] = 0;\n-468 out[1] = 1 - local[0] - local[1] -local[2];\n-469 out[2] = local[0];\n-470 out[3] = 0;\n-471 out[4] = local[1];\n-472 out[5] = 0;\n-473 out[6] = 0;\n-474 out[7] = local[2];\n-475 out[8] = 0;\n-476 out[9] = 0;\n-477 break;\n-478\n-479 case 2 :\n-480\n-481 out[0] = 0;\n-482 out[1] = 0;\n-483 out[2] = 0;\n-484 out[3] = 1 - local[0] - local[1] -local[2];\n-485 out[4] = local[0];\n-486 out[5] = local[1];\n-487 out[6] = 0;\n-488 out[7] = 0;\n-489 out[8] = local[2];\n-490 out[9] = 0;\n-491 break;\n-492\n-493 case 3 :\n-494\n-495 out[0] = 0;\n-496 out[1] = 0;\n-497 out[2] = 0;\n-498 out[3] = 0;\n-499 out[4] = 0;\n-500 out[5] = 0;\n-501 out[6] = 1 - local[0] - local[1] -local[2];\n-502 out[7] = local[0];\n-503 out[8] = local[1];\n-504 out[9] = local[2];\n-505 break;\n-506\n-507 case 4 :\n-508\n-509 out[0] = 0;\n-510 out[1] = 1 - local[0] - local[1] -local[2];\n-511 out[2] = 0;\n-512 out[3] = local[0];\n-513 out[4] = 0;\n-514 out[5] = 0;\n-515 out[6] = local[1];\n-516 out[7] = local[2];\n-517 out[8] = 0;\n-518 out[9] = 0;\n-519 break;\n-520\n-521 case 5 :\n-522\n-523 out[0] = 0;\n-524 out[1] = local[1];\n-525 out[2] = 0;\n-526 out[3] = local[0];\n-527 out[4] = 1 - local[0] - local[1] -local[2];\n-528 out[5] = 0;\n-529 out[6] = 0;\n-530 out[7] = local[2];\n-531 out[8] = 0;\n-532 out[9] = 0;\n-533 break;\n-534\n-535 case 6 :\n-536\n-537 out[0] = 0;\n-538 out[1] = 0;\n-539 out[2] = 0;\n-540 out[3] = 1 - local[0] - local[1] -local[2];\n-541 out[4] = 0;\n-542 out[5] = 0;\n-543 out[6] = local[0];\n-544 out[7] = local[1];\n-545 out[8] = local[2];\n-546 out[9] = 0;\n-547 break;\n-548\n-549 case 7 :\n-550\n-551 out[0] = 0;\n-552 out[1] = 0;\n-553 out[2] = 0;\n-554 out[3] = 1 - local[0] - local[1] -local[2];\n-555 out[4] = local[2];\n-556 out[5] = 0;\n-557 out[6] = 0;\n-558 out[7] = local[1];\n-559 out[8] = local[0];\n-560 out[9] = 0;\n-561 break;\n-562 }\n-563\n-564 }\n-565\n-567 inline void\n-_\b5_\b6_\b8 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-569 std::vector& out) const // return value\n-570 {\n-571 out.resize(10);\n-572\n-573 int subElement;\n-574 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-575 this->getSubElement(in, subElement, local);\n-576\n-577 switch (subElement) {\n-578 case 0 :\n-579\n-580 out[0][0][0] = -2; out[0][0][1] = -2; out[0][0][2] = -2;\n-581 out[1][0][0] = 2; out[1][0][1] = 0; out[1][0][2] = 0;\n-582 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-583 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;\n-584 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n-585 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-586 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 2;\n-587 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;\n-588 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n-589 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-590 break;\n-591\n-592 case 1 :\n-593\n-594 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-595 out[1][0][0] = -2; out[1][0][1] = -2; out[1][0][2] = -2;\n-596 out[2][0][0] = 2; out[2][0][1] = 0; out[2][0][2] = 0;\n-597 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;\n-598 out[4][0][0] = 0; out[4][0][1] = 2; out[4][0][2] = 0;\n-599 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-600 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n-601 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;\n-602 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n-603 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-604 break;\n-605\n-606 case 2 :\n-607\n-608 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-609 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n-610 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-611 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;\n-612 out[4][0][0] = 2; out[4][0][1] = 0; out[4][0][2] = 0;\n-613 out[5][0][0] = 0; out[5][0][1] = 2; out[5][0][2] = 0;\n-614 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n-615 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;\n-616 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 2;\n-617 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-618 break;\n-619\n-620 case 3 :\n-621\n-622 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-623 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n-624 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-625 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;\n-626 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n-627 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-628 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = -2;\n-629 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;\n-630 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 0;\n-631 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 2;\n-632 break;\n-633\n-634 case 4 :\n-635\n-636 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-637 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;\n-638 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-639 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;\n-640 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n-641 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-642 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;\n-643 out[7][0][0] = 2; out[7][0][1] = 2; out[7][0][2] = 2;\n-644 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n-645 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-646 break;\n-647\n-648 case 5 :\n-649\n-650 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-651 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;\n-652 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-653 out[3][0][0] = -2; out[3][0][1] = 0; out[3][0][2] = 0;\n-654 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;\n-655 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-656 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n-657 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;\n-658 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n-659 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-660 break;\n-661\n-662 case 6 :\n-663\n-664 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-665 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n-666 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-667 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = -2;\n-668 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n-669 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-670 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;\n-671 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;\n-672 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;\n-673 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-674 break;\n-675\n-676 case 7 :\n-677\n-678 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-679 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n-680 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-681 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;\n-682 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;\n-683 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-684 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n-685 out[7][0][0] = 0; out[7][0][1] = -2; out[7][0][2] = 0;\n-686 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;\n-687 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-688 break;\n-689 }\n-690 }\n-691\n-_\b6_\b9_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-694 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-695 std::vector& out) const // return value\n-696 {\n-697 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-698 if (totalOrder == 0) {\n-699 evaluateFunction(in, out);\n-700 } else if (totalOrder == 1) {\n-701 int subElement;\n-702 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-703 this->getSubElement(in, subElement, local);\n-704\n-705 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-706 out.resize(size());\n-707\n-708 for (std::size_t i = 0; i < size(); ++i)\n-709 out[i] = 0;\n-710\n-711 switch (direction) {\n-712 case 0: // direction == 0\n-713\n-714 switch (subElement) {\n-715 case 0 :\n-716 out[0] = -2;\n-717 out[1] = 2;\n-718 break;\n-719 case 1 :\n-720 out[1] = -2;\n-721 out[2] = 2;\n-722 break;\n-723 case 2 :\n-724 out[3] = -2;\n-725 out[4] = 2;\n-726 break;\n-727 case 3 :\n-728 out[6] = -2;\n-729 out[7] = 2;\n-730 break;\n-731 case 4 :\n-732 out[6] = -2;\n-733 out[7] = 2;\n-734 break;\n-735 case 5 :\n-736 out[3] = -2;\n-737 out[4] = 2;\n-738 break;\n-739 case 6 :\n-740 out[6] = -2;\n-741 out[7] = 2;\n-742 break;\n-743 case 7 :\n-744 out[3] = -2;\n-745 out[4] = 2;\n-746 break;\n-747 }\n-748 break;\n-749\n-750 case 1: // direction == 1\n-751\n-752 switch (subElement) {\n-753 case 0 :\n-754 out[0] = -2;\n-755 out[3] = 2;\n-756 break;\n-757 case 1 :\n-758 out[1] = -2;\n-759 out[4] = 2;\n-760 break;\n-761 case 2 :\n-762 out[3] = -2;\n-763 out[5] = 2;\n-764 break;\n-765 case 3 :\n-766 out[6] = -2;\n-767 out[8] = 2;\n-768 break;\n-769 case 4 :\n-770 out[1] = -2;\n-771 out[3] = 2;\n-772 out[6] = -2;\n-773 break;\n-774 case 5 :\n-775 out[1] = -2;\n-776 out[4] = 2;\n-777 break;\n-778 case 6 :\n-779 out[6] = -2;\n-780 out[8] = 2;\n-781 break;\n-782 case 7 :\n-783 out[3] = -2;\n-784 out[4] = 2;\n-785 out[7] = -2;\n-786 out[8] = 2;\n-787 break;\n-788 }\n-789 break;\n-790\n-791 case 2: // direction == 2\n-792\n-793 switch (subElement) {\n-794 case 0 :\n-795 out[0] = -2;\n-796 out[6] = 2;\n-797 break;\n-798 case 1 :\n-799 out[1] = -2;\n-800 out[7] = 2;\n-801 break;\n-802 case 2 :\n-803 out[3] = -2;\n-804 out[8] = 2;\n-805 break;\n-806 case 3 :\n-807 out[6] = -2;\n-808 out[9] = 2;\n-809 break;\n-810 case 4 :\n-811 out[1] = -2;\n-812 out[7] = 2;\n-813 break;\n-814 case 5 :\n-815 out[1] = -2;\n-816 out[7] = 2;\n-817 break;\n-818 case 6 :\n-819 out[3] = -2;\n-820 out[8] = 2;\n-821 break;\n-822 case 7 :\n-823 out[3] = -2;\n-824 out[8] = 2;\n-825 break;\n-826 }\n-827 break;\n-828\n-829 default:\n-830 DUNE_THROW(RangeError, \"Component out of range.\");\n-831 }\n-832 } else {\n-833 out.resize(size());\n-834 for (std::size_t i = 0; i < size(); ++i)\n-835 out[i] = 0;\n-836 }\n-837 }\n-838\n-_\b8_\b4_\b2 static constexpr unsigned int _\bo_\br_\bd_\be_\br ()\n-843 {\n-844 return 1;\n-845 }\n-846\n-847 };\n-848}\n-849#endif\n-_\br_\be_\bf_\bi_\bn_\be_\bd_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-Contains a base class for LocalBasis classes based on uniform refinement.\n+_\b2_\b3 class _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+24 {\n+25\n+26 public:\n+_\b2_\b8 _\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(_\bs_\bi_\bz_\be())\n+29 {\n+30 for(std::size_t i=0; i< _\bs_\bi_\bz_\be(); i++)\n+31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+32 }\n+33\n+_\b3_\b5 std::size_t _\bs_\bi_\bz_\be () const\n+36 {\n+37 return 5;\n+38 }\n+39\n+_\b4_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+42 {\n+43 return li[i];\n+44 }\n+45\n+46 private:\n+47 std::vector li;\n+48 };\n+49}\n+50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedsimplexlocalbasis.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-RefinedP1LocalBasis()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R,\n-1 >, Dune::FieldMatrix< R, 1, 1 > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:99\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n-static constexpr unsigned int order()\n-Polynomial order of the shape functions Doesn't really apply: these shape\n-functions are only piecewis...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 1 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr unsigned int size()\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:264\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R,\n-1 >, Dune::FieldMatrix< R, 1, 2 > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:202\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:211\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 2 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:315\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n-static constexpr unsigned int order()\n-Polynomial order of the shape functions Doesn't really apply: these shape\n-functions are only piecewis...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:389\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr unsigned int size()\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, 3 > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:693\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:441\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R,\n-1 >, Dune::FieldMatrix< R, 1, 3 > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:432\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr unsigned int size()\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:435\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n-static constexpr unsigned int order()\n-Polynomial order of the shape functions Doesn't really apply: these shape\n-functions are only piecewis...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:842\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:568\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on pyramids.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT0PyramidLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\by_\br_\ba_\bm_\bi_\bd_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:35\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: common.hh File Reference\n+dune-localfunctions: raviartthomas12dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    common.hh File Reference
    \n+
    raviartthomas12dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <dune/geometry/dimension.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/type.hh>
    \n+
    #include <numeric>
    \n+#include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::EdgeS0_5Common< dim, DF >
     Common base class for edge elements. More...
    class  Dune::RT12DLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference triangle. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n- * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-common.hh File Reference\n-#include \n-#include \n-#include \n-#include \n+raviartthomas12dlocalbasis.hh File Reference\n+#include \n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b<_\b _\bd_\bi_\bm_\b,_\b _\bD_\bF_\b _\b>\n-\u00a0 Common base class for edge elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference triangle.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: common.hh Source File\n+dune-localfunctions: raviartthomas12dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,60 +70,215 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    common.hh
    \n+
    raviartthomas12dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
    \n-
    8
    \n-
    9#include <cstddef>
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH
    \n+
    7
    \n+
    8#include <numeric>
    \n+
    9#include <vector>
    \n
    10
    \n-
    11#include <dune/geometry/dimension.hh>
    \n-
    12#include <dune/geometry/referenceelements.hh>
    \n-
    13#include <dune/geometry/type.hh>
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \n+
    13#include "../../common/localbasis.hh"
    \n
    14
    \n-
    15namespace Dune {
    \n-
    16
    \n-
    22 template<std::size_t dim, class DF = double>
    \n-
    \n-\n-
    25 using RefElem =
    \n-
    26 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim),
    \n-
    27 Dim<dim>{}));
    \n-
    28
    \n-
    30 RefElem refelem = referenceElement(DF{}, GeometryTypes::simplex(dim),
    \n-
    31 Dim<dim>{});
    \n-
    32
    \n-
    34
    \n-
    38 std::size_t s = refelem.size(dim-1);
    \n-
    39 };
    \n-
    \n-
    40
    \n-
    41} // namespace Dune
    \n-
    42
    \n-
    43#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    26 template<class D, class R>
    \n+
    \n+\n+
    28 {
    \n+
    29
    \n+
    30 public:
    \n+
    31 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    32 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    33
    \n+
    \n+
    39 RT12DLocalBasis (std::bitset<3> s = 0)
    \n+
    40 {
    \n+
    41 for (size_t i=0; i<3; i++)
    \n+
    42 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+
    46 unsigned int size () const
    \n+
    47 {
    \n+
    48 return 8;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    57 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    58 std::vector<typename Traits::RangeType>& out) const
    \n+
    59 {
    \n+
    60 out.resize(8);
    \n+
    61 out[0][0] = sign_[0]*(in[0] - 4.0*in[0]*in[1]);
    \n+
    62 out[0][1] = sign_[0]*(-1.0 + 5.0*in[1] - 4.0*in[1]*in[1]);
    \n+
    63 out[1][0] = sign_[1]*(-1.0 + 5.0*in[0] - 4.0*in[0]*in[0]);
    \n+
    64 out[1][1] = sign_[1]*(in[1] - 4.0*in[0]*in[1]);
    \n+
    65 out[2][0] = sign_[2]*(-3.0*in[0] + 4.0*in[0]*in[0] + 4.0*in[1]*in[0]);
    \n+
    66 out[2][1] = sign_[2]*(-3.0*in[1] + 4.0*in[0]*in[1] + 4.0*in[1]*in[1]);
    \n+
    67 out[3][0] = -5.0*in[0] + 8.0*in[0]*in[0] + 4.0*in[1]*in[0];
    \n+
    68 out[3][1] = 3.0 - 6.0*in[0] - 7.0*in[1] + 8.0*in[0]*in[1] + 4.0*in[1]*in[1];
    \n+
    69 out[4][0] = -3.0 + 7.0*in[0] + 6.0*in[1] - 4.0*in[0]*in[0] - 8.0*in[1]*in[0];
    \n+
    70 out[4][1] = 5.0*in[1] - 4.0*in[0]*in[1] - 8.0*in[1]*in[1];
    \n+
    71 out[5][0] = in[0] - 4.0*in[0]*in[0] + 4.0*in[1]*in[0];
    \n+
    72 out[5][1] = -1.0*in[1] - 4.0*in[0]*in[1] + 4.0*in[1]*in[1];
    \n+
    73 out[6][0] = 16.0*in[0] - 16.0*in[0]*in[0] - 8.0*in[1]*in[0];
    \n+
    74 out[6][1] = 8.0*in[1] - 16.0*in[0]*in[1] - 8.0*in[1]*in[1];
    \n+
    75 out[7][0] = 8.0*in[0] - 8.0*in[0]*in[0] - 16.0*in[1]*in[0];
    \n+
    76 out[7][1] = 16.0*in[1] - 8.0*in[0]*in[1] - 16.0*in[1]*in[1];
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    \n+
    85 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    86 std::vector<typename Traits::JacobianType>& out) const
    \n+
    87 {
    \n+
    88 out.resize(8);
    \n+
    89
    \n+
    90 out[0][0][0] = sign_[0]*(1.0 - 4.0*in[1]);
    \n+
    91 out[0][0][1] = sign_[0]*(-4.0*in[0]);
    \n+
    92 out[0][1][0] = 0.0;
    \n+
    93 out[0][1][1] = sign_[0]*(5.0 - 8.0*in[1]);
    \n+
    94
    \n+
    95 out[1][0][0] = sign_[1]*(5.0 - 8.0*in[0]);
    \n+
    96 out[1][0][1] = 0.0;
    \n+
    97 out[1][1][0] = sign_[1]*(-4.0*in[1]);
    \n+
    98 out[1][1][1] = sign_[1]*(1.0 - 4.0*in[0]);
    \n+
    99
    \n+
    100 out[2][0][0] = sign_[2]*(-3.0 + 8.0*in[0] + 4.0*in[1]);
    \n+
    101 out[2][0][1] = sign_[2]*(4.0*in[0]);
    \n+
    102 out[2][1][0] = sign_[2]*(4.0*in[1]);
    \n+
    103 out[2][1][1] = sign_[2]*(-3.0 + 4.0*in[0] + 8.0*in[1]);
    \n+
    104
    \n+
    105 out[3][0][0] = -5.0 + 16.0*in[0] + 4.0*in[1];
    \n+
    106 out[3][0][1] = 4.0*in[0];
    \n+
    107 out[3][1][0] = -6.0 + 8.0*in[1];
    \n+
    108 out[3][1][1] = -7.0 + 8.0*in[0] + 8.0*in[1];
    \n+
    109
    \n+
    110 out[4][0][0] = 7.0 - 8.0*in[0] - 8.0*in[1];
    \n+
    111 out[4][0][1] = 6.0 - 8.0*in[0];
    \n+
    112 out[4][1][0] = -4.0*in[1];
    \n+
    113 out[4][1][1] = 5.0 - 4.0*in[0] - 16.0*in[1];
    \n+
    114
    \n+
    115 out[5][0][0] = 1.0 - 8.0*in[0] + 4*in[1];
    \n+
    116 out[5][0][1] = 4.0*in[0];
    \n+
    117 out[5][1][0] = -4.0*in[1];
    \n+
    118 out[5][1][1] = -1.0 - 4.0*in[0] + 8.0*in[1];
    \n+
    119
    \n+
    120 out[6][0][0] = 16.0 - 32.0*in[0] - 8.0*in[1];
    \n+
    121 out[6][0][1] = -8.0*in[0];
    \n+
    122 out[6][1][0] = -16.0*in[1];
    \n+
    123 out[6][1][1] = 8.0 - 16.0*in[0] - 16.0*in[1];
    \n+
    124
    \n+
    125 out[7][0][0] = 8.0 - 16.0*in[0] - 16.0*in[1];
    \n+
    126 out[7][0][1] = -16.0*in[0];
    \n+
    127 out[7][1][0] = -8.0*in[1];
    \n+
    128 out[7][1][1] = 16.0 - 8.0*in[0] - 32.0*in[1];
    \n+
    129 }
    \n+
    \n+
    130
    \n+
    \n+
    132 void partial (const std::array<unsigned int, 2>& order,
    \n+
    133 const typename Traits::DomainType& in, // position
    \n+
    134 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    135 {
    \n+
    136 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    137 if (totalOrder == 0) {
    \n+
    138 evaluateFunction(in, out);
    \n+
    139 } else if (totalOrder == 1) {
    \n+
    140 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    141 out.resize(size());
    \n+
    142
    \n+
    143 switch (direction) {
    \n+
    144 case 0:
    \n+
    145 out[0][0] = sign_[0]*(1.0 - 4.0*in[1]);
    \n+
    146 out[0][1] = 0.0;
    \n+
    147 out[1][0] = sign_[1]*(5.0 - 8.0*in[0]);
    \n+
    148 out[1][1] = sign_[1]*(-4.0*in[1]);
    \n+
    149 out[2][0] = sign_[2]*(-3.0 + 8.0*in[0] + 4.0*in[1]);
    \n+
    150 out[2][1] = sign_[2]*(4.0*in[1]);
    \n+
    151 out[3][0] = -5.0 + 16.0*in[0] + 4.0*in[1];
    \n+
    152 out[3][1] = -6.0 + 8.0*in[1];
    \n+
    153 out[4][0] = 7.0 - 8.0*in[0] - 8.0*in[1];
    \n+
    154 out[4][1] = -4.0*in[1];
    \n+
    155 out[5][0] = 1.0 - 8.0*in[0] + 4*in[1];
    \n+
    156 out[5][1] = -4.0*in[1];
    \n+
    157 out[6][0] = 16.0 - 32.0*in[0] - 8.0*in[1];
    \n+
    158 out[6][1] = -16.0*in[1];
    \n+
    159 out[7][0] = 8.0 - 16.0*in[0] - 16.0*in[1];
    \n+
    160 out[7][1] = -8.0*in[1];
    \n+
    161 break;
    \n+
    162 case 1:
    \n+
    163 out[2][1] = sign_[2]*(-3.0 + 4.0*in[0] + 8.0*in[1]);
    \n+
    164 out[2][0] = sign_[2]*(4.0*in[0]);
    \n+
    165 out[1][1] = sign_[1]*(1.0 - 4.0*in[0]);
    \n+
    166 out[1][0] = 0.0;
    \n+
    167 out[0][0] = sign_[0]*(-4.0*in[0]);
    \n+
    168 out[0][1] = sign_[0]*(5.0 - 8.0*in[1]);
    \n+
    169 out[3][0] = 4.0*in[0];
    \n+
    170 out[3][1] = -7.0 + 8.0*in[0] + 8.0*in[1];
    \n+
    171 out[4][0] = 6.0 - 8.0*in[0];
    \n+
    172 out[4][1] = 5.0 - 4.0*in[0] - 16.0*in[1];
    \n+
    173 out[5][0] = 4.0*in[0];
    \n+
    174 out[5][1] = -1.0 - 4.0*in[0] + 8.0*in[1];
    \n+
    175 out[6][0] = -8.0*in[0];
    \n+
    176 out[6][1] = 8.0 - 16.0*in[0] - 16.0*in[1];
    \n+
    177 out[7][0] = -16.0*in[0];
    \n+
    178 out[7][1] = 16.0 - 8.0*in[0] - 32.0*in[1];
    \n+
    179 break;
    \n+
    180 default:
    \n+
    181 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    182 }
    \n+
    183 } else {
    \n+
    184 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    185 }
    \n+
    186 }
    \n+
    \n+
    187
    \n+
    \n+
    189 unsigned int order () const
    \n+
    190 {
    \n+
    191 return 2;
    \n+
    192 }
    \n+
    \n+
    193
    \n+
    194 private:
    \n+
    195 std::array<R,3> sign_;
    \n+
    196 };
    \n+
    \n+
    197}
    \n+
    198#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Common base class for edge elements.
    Definition common.hh:23
    \n-
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:30
    \n-
    decltype(referenceElement(DF{}, GeometryTypes::simplex(dim), Dim< dim >{})) RefElem
    The type of the referenceElement.
    Definition common.hh:27
    \n-
    std::size_t s
    The number of base functions.
    Definition common.hh:38
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    First order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas12dlocalbasis.hh:28
    \n+
    RT12DLocalBasis(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas12dlocalbasis.hh:39
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas12dlocalbasis.hh:46
    \n+
    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 raviartthomas12dlocalbasis.hh:132
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas12dlocalbasis.hh:85
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas12dlocalbasis.hh:189
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas12dlocalbasis.hh:32
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas12dlocalbasis.hh:57
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,63 +1,228 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n- * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n-common.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n+raviartthomas12dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH\n-7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH\n-8\n-9#include \n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH\n+7\n+8#include \n+9#include \n 10\n-11#include \n-12#include \n-13#include \n+11#include \n+12\n+13#include \"../../common/localbasis.hh\"\n 14\n-15namespace _\bD_\bu_\bn_\be {\n-16\n-22 template\n-_\b2_\b3 struct _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn {\n-_\b2_\b5 using _\bR_\be_\bf_\bE_\bl_\be_\bm =\n-26 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim),\n-27 Dim{}));\n-28\n-_\b3_\b0 _\bR_\be_\bf_\bE_\bl_\be_\bm _\br_\be_\bf_\be_\bl_\be_\bm = referenceElement(DF{}, GeometryTypes::simplex(dim),\n-31 Dim{});\n-32\n-34\n-_\b3_\b8 std::size_t _\bs = _\br_\be_\bf_\be_\bl_\be_\bm.size(dim-1);\n-39 };\n-40\n-41} // namespace Dune\n-42\n-43#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+26 template\n+_\b2_\b7 class _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+28 {\n+29\n+30 public:\n+31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n+FieldVector,\n+_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b9 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<3> s = 0)\n+40 {\n+41 for (size_t i=0; i<3; i++)\n+42 sign_[i] = (s[i]) ? -1.0 : 1.0;\n+43 }\n+44\n+_\b4_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+47 {\n+48 return 8;\n+49 }\n+50\n+_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+58 std::vector& out) const\n+59 {\n+60 out.resize(8);\n+61 out[0][0] = sign_[0]*(in[0] - 4.0*in[0]*in[1]);\n+62 out[0][1] = sign_[0]*(-1.0 + 5.0*in[1] - 4.0*in[1]*in[1]);\n+63 out[1][0] = sign_[1]*(-1.0 + 5.0*in[0] - 4.0*in[0]*in[0]);\n+64 out[1][1] = sign_[1]*(in[1] - 4.0*in[0]*in[1]);\n+65 out[2][0] = sign_[2]*(-3.0*in[0] + 4.0*in[0]*in[0] + 4.0*in[1]*in[0]);\n+66 out[2][1] = sign_[2]*(-3.0*in[1] + 4.0*in[0]*in[1] + 4.0*in[1]*in[1]);\n+67 out[3][0] = -5.0*in[0] + 8.0*in[0]*in[0] + 4.0*in[1]*in[0];\n+68 out[3][1] = 3.0 - 6.0*in[0] - 7.0*in[1] + 8.0*in[0]*in[1] + 4.0*in[1]*in[1];\n+69 out[4][0] = -3.0 + 7.0*in[0] + 6.0*in[1] - 4.0*in[0]*in[0] - 8.0*in[1]*in\n+[0];\n+70 out[4][1] = 5.0*in[1] - 4.0*in[0]*in[1] - 8.0*in[1]*in[1];\n+71 out[5][0] = in[0] - 4.0*in[0]*in[0] + 4.0*in[1]*in[0];\n+72 out[5][1] = -1.0*in[1] - 4.0*in[0]*in[1] + 4.0*in[1]*in[1];\n+73 out[6][0] = 16.0*in[0] - 16.0*in[0]*in[0] - 8.0*in[1]*in[0];\n+74 out[6][1] = 8.0*in[1] - 16.0*in[0]*in[1] - 8.0*in[1]*in[1];\n+75 out[7][0] = 8.0*in[0] - 8.0*in[0]*in[0] - 16.0*in[1]*in[0];\n+76 out[7][1] = 16.0*in[1] - 8.0*in[0]*in[1] - 16.0*in[1]*in[1];\n+77 }\n+78\n+_\b8_\b5 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+86 std::vector& out) const\n+87 {\n+88 out.resize(8);\n+89\n+90 out[0][0][0] = sign_[0]*(1.0 - 4.0*in[1]);\n+91 out[0][0][1] = sign_[0]*(-4.0*in[0]);\n+92 out[0][1][0] = 0.0;\n+93 out[0][1][1] = sign_[0]*(5.0 - 8.0*in[1]);\n+94\n+95 out[1][0][0] = sign_[1]*(5.0 - 8.0*in[0]);\n+96 out[1][0][1] = 0.0;\n+97 out[1][1][0] = sign_[1]*(-4.0*in[1]);\n+98 out[1][1][1] = sign_[1]*(1.0 - 4.0*in[0]);\n+99\n+100 out[2][0][0] = sign_[2]*(-3.0 + 8.0*in[0] + 4.0*in[1]);\n+101 out[2][0][1] = sign_[2]*(4.0*in[0]);\n+102 out[2][1][0] = sign_[2]*(4.0*in[1]);\n+103 out[2][1][1] = sign_[2]*(-3.0 + 4.0*in[0] + 8.0*in[1]);\n+104\n+105 out[3][0][0] = -5.0 + 16.0*in[0] + 4.0*in[1];\n+106 out[3][0][1] = 4.0*in[0];\n+107 out[3][1][0] = -6.0 + 8.0*in[1];\n+108 out[3][1][1] = -7.0 + 8.0*in[0] + 8.0*in[1];\n+109\n+110 out[4][0][0] = 7.0 - 8.0*in[0] - 8.0*in[1];\n+111 out[4][0][1] = 6.0 - 8.0*in[0];\n+112 out[4][1][0] = -4.0*in[1];\n+113 out[4][1][1] = 5.0 - 4.0*in[0] - 16.0*in[1];\n+114\n+115 out[5][0][0] = 1.0 - 8.0*in[0] + 4*in[1];\n+116 out[5][0][1] = 4.0*in[0];\n+117 out[5][1][0] = -4.0*in[1];\n+118 out[5][1][1] = -1.0 - 4.0*in[0] + 8.0*in[1];\n+119\n+120 out[6][0][0] = 16.0 - 32.0*in[0] - 8.0*in[1];\n+121 out[6][0][1] = -8.0*in[0];\n+122 out[6][1][0] = -16.0*in[1];\n+123 out[6][1][1] = 8.0 - 16.0*in[0] - 16.0*in[1];\n+124\n+125 out[7][0][0] = 8.0 - 16.0*in[0] - 16.0*in[1];\n+126 out[7][0][1] = -16.0*in[0];\n+127 out[7][1][0] = -8.0*in[1];\n+128 out[7][1][1] = 16.0 - 8.0*in[0] - 32.0*in[1];\n+129 }\n+130\n+_\b1_\b3_\b2 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+133 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+134 std::vector& out) const // return value\n+135 {\n+136 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+137 if (totalOrder == 0) {\n+138 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+139 } else if (totalOrder == 1) {\n+140 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin\n+(), _\bo_\br_\bd_\be_\br.end(), 1));\n+141 out.resize(_\bs_\bi_\bz_\be());\n+142\n+143 switch (direction) {\n+144 case 0:\n+145 out[0][0] = sign_[0]*(1.0 - 4.0*in[1]);\n+146 out[0][1] = 0.0;\n+147 out[1][0] = sign_[1]*(5.0 - 8.0*in[0]);\n+148 out[1][1] = sign_[1]*(-4.0*in[1]);\n+149 out[2][0] = sign_[2]*(-3.0 + 8.0*in[0] + 4.0*in[1]);\n+150 out[2][1] = sign_[2]*(4.0*in[1]);\n+151 out[3][0] = -5.0 + 16.0*in[0] + 4.0*in[1];\n+152 out[3][1] = -6.0 + 8.0*in[1];\n+153 out[4][0] = 7.0 - 8.0*in[0] - 8.0*in[1];\n+154 out[4][1] = -4.0*in[1];\n+155 out[5][0] = 1.0 - 8.0*in[0] + 4*in[1];\n+156 out[5][1] = -4.0*in[1];\n+157 out[6][0] = 16.0 - 32.0*in[0] - 8.0*in[1];\n+158 out[6][1] = -16.0*in[1];\n+159 out[7][0] = 8.0 - 16.0*in[0] - 16.0*in[1];\n+160 out[7][1] = -8.0*in[1];\n+161 break;\n+162 case 1:\n+163 out[2][1] = sign_[2]*(-3.0 + 4.0*in[0] + 8.0*in[1]);\n+164 out[2][0] = sign_[2]*(4.0*in[0]);\n+165 out[1][1] = sign_[1]*(1.0 - 4.0*in[0]);\n+166 out[1][0] = 0.0;\n+167 out[0][0] = sign_[0]*(-4.0*in[0]);\n+168 out[0][1] = sign_[0]*(5.0 - 8.0*in[1]);\n+169 out[3][0] = 4.0*in[0];\n+170 out[3][1] = -7.0 + 8.0*in[0] + 8.0*in[1];\n+171 out[4][0] = 6.0 - 8.0*in[0];\n+172 out[4][1] = 5.0 - 4.0*in[0] - 16.0*in[1];\n+173 out[5][0] = 4.0*in[0];\n+174 out[5][1] = -1.0 - 4.0*in[0] + 8.0*in[1];\n+175 out[6][0] = -8.0*in[0];\n+176 out[6][1] = 8.0 - 16.0*in[0] - 16.0*in[1];\n+177 out[7][0] = -16.0*in[0];\n+178 out[7][1] = 16.0 - 8.0*in[0] - 32.0*in[1];\n+179 break;\n+180 default:\n+181 DUNE_THROW(RangeError, \"Component out of range.\");\n+182 }\n+183 } else {\n+184 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+185 }\n+186 }\n+187\n+_\b1_\b8_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+190 {\n+191 return 2;\n+192 }\n+193\n+194 private:\n+195 std::array sign_;\n+196 };\n+197}\n+198#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n-Common base class for edge elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm\n-RefElem refelem\n-The reference element for this edge element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bR_\be_\bf_\bE_\bl_\be_\bm\n-decltype(referenceElement(DF{}, GeometryTypes::simplex(dim), Dim< dim >{}))\n-RefElem\n-The type of the referenceElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs\n-std::size_t s\n-The number of base functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT12DLocalBasis(std::bitset< 3 > s=0)\n+Make set number s, where 0 <= s < 8.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:132\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:85\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:189\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalbasis.hh:57\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: edges0.5.hh File Reference\n+dune-localfunctions: raviartthomas12dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    edges0.5.hh File Reference
    \n+
    raviartthomas12dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/whitney/edges0.5/basis.hh>
    \n-#include <dune/localfunctions/whitney/edges0.5/coefficients.hh>
    \n-#include <dune/localfunctions/whitney/edges0.5/interpolation.hh>
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    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...
    class  Dune::RT12DLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-edges0.5.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+raviartthomas12dlocalinterpolation.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n-\u00a0 FiniteElement for lowest order edge elements on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n-\u00a0 Factory for _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt objects. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: edges0.5.hh Source File\n+dune-localfunctions: raviartthomas12dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,132 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    edges0.5.hh
    \n+
    raviartthomas12dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH
    \n-
    8
    \n-
    9#include <dune/geometry/type.hh>
    \n-
    10
    \n-\n-\n-\n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH
    \n+
    7
    \n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n
    14
    \n-
    15namespace Dune {
    \n-
    16
    \n-
    18 //
    \n-
    19 // FiniteElement
    \n-
    20 //
    \n-
    21
    \n-
    23
    \n-
    41 template<class Geometry, class RF>
    \n-
    \n-\n-
    43 public:
    \n-\n-
    53
    \n-
    54 private:
    \n-
    55 typename Traits::Basis basis_;
    \n-
    56 typename Traits::Interpolation interpolation_;
    \n-
    57 static const typename Traits::Coefficients& coefficients_;
    \n-
    58
    \n-
    59 public:
    \n-
    61
    \n-
    64 template<class VertexOrder>
    \n-
    \n-
    65 EdgeS0_5FiniteElement(const Geometry& geo,
    \n-
    66 const VertexOrder& vertexOrder) :
    \n-
    67 basis_(geo, vertexOrder), interpolation_(geo, vertexOrder)
    \n-
    68 { }
    \n-
    \n+
    23 template<class LB>
    \n+
    \n+\n+
    25 {
    \n+
    26
    \n+
    27 public:
    \n+
    28
    \n+
    \n+
    34 RT12DLocalInterpolation (std::bitset<3> s = 0)
    \n+
    35 {
    \n+
    36 using std::sqrt;
    \n+
    37 for (size_t i=0; i<3; i++)
    \n+
    38 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    39
    \n+
    40 n_[0] = { 0.0, -1.0};
    \n+
    41 n_[1] = {-1.0, 0.0};
    \n+
    42 n_[2] = { 1.0/sqrt(2.0), 1.0/sqrt(2.0)};
    \n+
    43
    \n+
    44 c_ = { 0.5*n_[0][0] - 1.0*n_[0][1],
    \n+
    45 -1.0*n_[1][0] + 0.5*n_[1][1],
    \n+
    46 0.5*n_[2][0] + 0.5*n_[2][1]};
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    57 template<typename F, typename C>
    \n+
    \n+
    58 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    59 {
    \n+
    60 // f gives v*outer normal at a point on the edge!
    \n+
    61 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    62 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    63
    \n+
    64 out.resize(8);
    \n+
    65 fill(out.begin(), out.end(), 0.0);
    \n+
    66
    \n+
    67 const int qOrder1 = 4;
    \n+
    68 const auto& rule1 = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder1);
    \n
    69
    \n-
    71 const typename Traits::Basis& basis() const { return basis_; }
    \n-
    \n-
    73 const typename Traits::Interpolation& interpolation() const
    \n-
    74 { return interpolation_; }
    \n-
    \n-
    \n-
    76 const typename Traits::Coefficients& coefficients() const
    \n-
    77 { return coefficients_; }
    \n-
    \n-
    79 static constexpr GeometryType type() { return GeometryTypes::simplex(Geometry::mydimension); }
    \n-
    80 };
    \n-
    \n-
    81
    \n-
    82 template<class Geometry, class RF>
    \n-\n-
    84 EdgeS0_5FiniteElement<Geometry, RF>::coefficients_ =
    \n-
    85 typename Traits::Coefficients();
    \n-
    86
    \n-
    88 //
    \n-
    89 // Factory
    \n-
    90 //
    \n-
    91
    \n+
    70 for (auto&& qp : rule1)
    \n+
    71 {
    \n+
    72 Scalar qPos = qp.position();
    \n+
    73 typename LB::Traits::DomainType localPos;
    \n+
    74
    \n+
    75 localPos = {qPos, 0.0};
    \n+
    76 auto y = f(localPos);
    \n+
    77 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0]/c_[0];
    \n+
    78 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight()/c_[0];
    \n+
    79
    \n+
    80 localPos = {0.0, qPos};
    \n+
    81 y = f(localPos);
    \n+
    82 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1]/c_[1];
    \n+
    83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight()/c_[1];
    \n+
    84
    \n+
    85 localPos = {1.0 - qPos, qPos};
    \n+
    86 y = f(localPos);
    \n+
    87 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2]/c_[2];
    \n+
    88 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(2.0*qPos - 1.0)*qp.weight()/c_[2];
    \n+
    89 }
    \n+
    90
    \n+
    91 const int qOrder2 = 8;
    \n+
    92 const auto& rule2 = Dune::QuadratureRules<Vector,2>::rule(Dune::GeometryTypes::simplex(2), qOrder2);
    \n
    93
    \n-
    102 template<class Geometry, class RF>
    \n-
    \n-\n-\n-
    105
    \n+
    94 for (auto&& qp : rule2)
    \n+
    95 {
    \n+
    96 auto qPos = qp.position();
    \n+
    97
    \n+
    98 auto y = f(qPos);
    \n+
    99 out[6] += y[0]*qp.weight();
    \n+
    100 out[7] += y[1]*qp.weight();
    \n+
    101 }
    \n+
    102 }
    \n+
    \n+
    103
    \n+
    104 private:
    \n+
    105 // Edge orientations
    \n+
    106 std::array<typename LB::Traits::RangeFieldType, 3> sign_;
    \n
    107
    \n-
    121 template<class VertexOrder>
    \n-
    \n-
    122 const FiniteElement make(const Geometry& geometry,
    \n-
    123 const VertexOrder& vertexOrder)
    \n-
    124 { return FiniteElement(geometry, vertexOrder); }
    \n-
    \n-
    125 };
    \n-
    \n-
    126
    \n-
    127} // namespace Dune
    \n-
    128
    \n-
    129#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH
    \n+
    108 // Edge normals
    \n+
    109 std::array<typename LB::Traits::DomainType, 3> n_;
    \n+
    110
    \n+
    111 std::array<typename LB::Traits::RangeFieldType, 3> c_;
    \n+
    112 };
    \n+
    \n+
    113}
    \n+
    114#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    FiniteElement for lowest order edge elements on simplices.
    Definition edges0.5.hh:42
    \n-
    EdgeS0_5FiniteElement(const Geometry &geo, const VertexOrder &vertexOrder)
    Constructor.
    Definition edges0.5.hh:65
    \n-
    static constexpr GeometryType type()
    return geometry type of this element
    Definition edges0.5.hh:79
    \n-
    const Traits::Basis & basis() const
    return reference to the basis object
    Definition edges0.5.hh:71
    \n-
    const Traits::Interpolation & interpolation() const
    return reference to the interpolation object
    Definition edges0.5.hh:73
    \n-
    const Traits::Coefficients & coefficients() const
    return reference to the coefficients object
    Definition edges0.5.hh:76
    \n-
    Definition edges0.5.hh:47
    \n-
    EdgeS0_5Coefficients< Geometry::mydimension > Coefficients
    Definition edges0.5.hh:51
    \n-
    EdgeS0_5Interpolation< Geometry, typename Basis::Traits > Interpolation
    Definition edges0.5.hh:50
    \n-
    EdgeS0_5Basis< Geometry, RF > Basis
    Definition edges0.5.hh:48
    \n-
    Factory for EdgeS0_5FiniteElement objects.
    Definition edges0.5.hh:103
    \n-
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct the factory
    Definition edges0.5.hh:122
    \n-
    EdgeS0_5FiniteElement< Geometry, RF > FiniteElement
    Definition edges0.5.hh:104
    \n-
    Basis for order 0.5 (lowest order) edge elements on simplices.
    Definition whitney/edges0.5/basis.hh:38
    \n-
    export type traits for function signature
    Definition whitney/edges0.5/basis.hh:41
    \n-
    Coefficients for lowest order edge elements on simplices.
    Definition whitney/edges0.5/coefficients.hh:31
    \n-
    Interpolation for lowest order edge elements on simplices.
    Definition whitney/edges0.5/interpolation.hh:33
    \n-\n-\n-\n+
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas12dlocalinterpolation.hh:25
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas12dlocalinterpolation.hh:58
    \n+
    RT12DLocalInterpolation(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas12dlocalinterpolation.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,151 +1,124 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n-edges0.5.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n+raviartthomas12dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH\n-7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH\n-8\n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH\n+7\n+8#include \n+9\n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n 14\n-15namespace _\bD_\bu_\bn_\be {\n-16\n-18 //\n-19 // FiniteElement\n-20 //\n-21\n-23\n-41 template\n-_\b4_\b2 class _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n-43 public:\n-_\b4_\b7 struct _\bT_\br_\ba_\bi_\bt_\bs {\n-_\b4_\b8 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b> _\bB_\ba_\bs_\bi_\bs;\n-49 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-_\b5_\b1 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bm_\by_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-52 };\n-53\n-54 private:\n-55 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n-56 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n-57 static const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& coefficients_;\n-58\n-59 public:\n-61\n-64 template\n-_\b6_\b5 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry& geo,\n-66 const VertexOrder& vertexOrder) :\n-67 basis_(geo, vertexOrder), interpolation_(geo, vertexOrder)\n-68 { }\n+23 template\n+_\b2_\b4 class _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+25 {\n+26\n+27 public:\n+28\n+_\b3_\b4 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<3> s = 0)\n+35 {\n+36 using std::sqrt;\n+37 for (size_t i=0; i<3; i++)\n+38 sign_[i] = (s[i]) ? -1.0 : 1.0;\n+39\n+40 n_[0] = { 0.0, -1.0};\n+41 n_[1] = {-1.0, 0.0};\n+42 n_[2] = { 1.0/sqrt(2.0), 1.0/sqrt(2.0)};\n+43\n+44 c_ = { 0.5*n_[0][0] - 1.0*n_[0][1],\n+45 -1.0*n_[1][0] + 0.5*n_[1][1],\n+46 0.5*n_[2][0] + 0.5*n_[2][1]};\n+47 }\n+48\n+57 template\n+_\b5_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+59 {\n+60 // f gives v*outer normal at a point on the edge!\n+61 typedef typename LB::Traits::RangeFieldType Scalar;\n+62 typedef typename LB::Traits::DomainFieldType Vector;\n+63\n+64 out.resize(8);\n+65 fill(out.begin(), out.end(), 0.0);\n+66\n+67 const int qOrder1 = 4;\n+68 const auto& rule1 = Dune::QuadratureRules::rule(Dune::\n+GeometryTypes::simplex(1), qOrder1);\n 69\n-_\b7_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\n-_\b7_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n-74 { return interpolation_; }\n-_\b7_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n-77 { return coefficients_; }\n-_\b7_\b9 static constexpr GeometryType _\bt_\by_\bp_\be() { return GeometryTypes::simplex\n-(Geometry::mydimension); }\n-80 };\n-81\n-82 template\n-83 const typename _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs&\n-84 EdgeS0_5FiniteElement::coefficients_ =\n-85 typename Traits::Coefficients();\n-86\n-88 //\n-89 // Factory\n-90 //\n-91\n+70 for (auto&& qp : rule1)\n+71 {\n+72 Scalar qPos = qp.position();\n+73 typename LB::Traits::DomainType localPos;\n+74\n+75 localPos = {qPos, 0.0};\n+76 auto y = f(localPos);\n+77 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0]/c_[0];\n+78 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight()/c_\n+[0];\n+79\n+80 localPos = {0.0, qPos};\n+81 y = f(localPos);\n+82 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1]/c_[1];\n+83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight()/c_\n+[1];\n+84\n+85 localPos = {1.0 - qPos, qPos};\n+86 y = f(localPos);\n+87 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2]/c_[2];\n+88 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(2.0*qPos - 1.0)*qp.weight()/c_\n+[2];\n+89 }\n+90\n+91 const int qOrder2 = 8;\n+92 const auto& rule2 = Dune::QuadratureRules::rule(Dune::\n+GeometryTypes::simplex(2), qOrder2);\n 93\n-102 template\n-_\b1_\b0_\b3 struct _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-_\b1_\b0_\b4 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-105\n+94 for (auto&& qp : rule2)\n+95 {\n+96 auto qPos = qp.position();\n+97\n+98 auto y = f(qPos);\n+99 out[6] += y[0]*qp.weight();\n+100 out[7] += y[1]*qp.weight();\n+101 }\n+102 }\n+103\n+104 private:\n+105 // Edge orientations\n+106 std::array sign_;\n 107\n-121 template\n-_\b1_\b2_\b2 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n-123 const VertexOrder& vertexOrder)\n-124 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n-125 };\n-126\n-127} // namespace Dune\n-128\n-129#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_HH\n+108 // Edge normals\n+109 std::array n_;\n+110\n+111 std::array c_;\n+112 };\n+113}\n+114#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-FiniteElement for lowest order edge elements on simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-EdgeS0_5FiniteElement(const Geometry &geo, const VertexOrder &vertexOrder)\n-Constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-return geometry type of this element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n-const Traits::Basis & basis() const\n-return reference to the basis object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::Interpolation & interpolation() const\n-return reference to the interpolation object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::Coefficients & coefficients() const\n-return reference to the coefficients object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-EdgeS0_5Coefficients< Geometry::mydimension > Coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-EdgeS0_5Interpolation< Geometry, typename Basis::Traits > Interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-EdgeS0_5Basis< Geometry, RF > Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for EdgeS0_5FiniteElement objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:103\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const Geometry &geometry, const VertexOrder\n-&vertexOrder)\n-construct the factory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-EdgeS0_5FiniteElement< Geometry, RF > FiniteElement\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn edges0.5.hh:104\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs\n-Basis for order 0.5 (lowest order) edge elements on simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Coefficients for lowest order edge elements on simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Interpolation for lowest order edge elements on simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:33\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalinterpolation.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalinterpolation.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT12DLocalInterpolation(std::bitset< 3 > s=0)\n+Make set number s, where 0 <= s < 8.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalinterpolation.hh:34\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrange.hh File Reference\n+dune-localfunctions: raviartthomas12dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,54 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    lagrange.hh File Reference
    \n+
    raviartthomas12dlocalcoefficients.hh File Reference
    \n
    \n
    \n-\n-

    Convenience header that includes all implementations of Lagrange finite elements. \n-More...

    \n-
    #include <dune/localfunctions/utility/localfiniteelement.hh>
    \n-#include <dune/localfunctions/utility/dglocalcoefficients.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangecoefficients.hh>
    \n-#include <dune/localfunctions/lagrange/interpolation.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangebasis.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangepyramid.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangeprism.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n-#include <dune/localfunctions/lagrange/p0.hh>
    \n-#include <dune/localfunctions/lagrange/pq22d.hh>
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::LagrangeLocalFiniteElement< LP, dimDomain, D, R, SF, CF >
     Lagrange local finite elements for a given set of interpolation points. More...
    class  Dune::RT12DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on the reference triangle. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-

    Detailed Description

    \n-

    Convenience header that includes all implementations of Lagrange finite elements.

    \n-
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,35 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-lagrange.hh File Reference\n-Convenience header that includes all implementations of Lagrange finite\n-elements. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\bq_\b2_\b2_\bd_\b._\bh_\bh>\n+raviartthomas12dlocalcoefficients.hh File Reference\n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bD_\b,_\b _\bR_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n-\u00a0 Lagrange local finite elements for a given set of interpolation points.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Raviart-Thomas-1 elements on the reference triangle.\n _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n-Convenience header that includes all implementations of Lagrange finite\n-elements.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrange.hh Source File\n+dune-localfunctions: raviartthomas12dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,90 +70,82 @@\n \n \n \n \n \n \n \n
    \n-
    lagrange.hh
    \n+
    raviartthomas12dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    12// Headers for Lagrange elements with run-time order
    \n-\n-\n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include "../../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n
    15
    \n-\n-\n-\n-
    19
    \n-
    20// Headers for Lagrange elements with compile-time order
    \n-\n-\n-\n-\n-\n-\n-
    27
    \n-
    28namespace Dune
    \n-
    29{
    \n-
    59 template< template <class,unsigned int> class LP,
    \n-
    60 unsigned int dimDomain, class D, class R,
    \n-
    61 class SF=R, class CF=SF >
    \n-
    \n-\n-
    63 : public GenericLocalFiniteElement< LagrangeBasisFactory< LP, dimDomain, SF, CF >,
    \n-
    64 LagrangeCoefficientsFactory<LP, dimDomain, SF >,
    \n-
    65 LagrangeInterpolationFactory< LP, dimDomain, SF > >
    \n-
    66 {
    \n-\n-\n-\n-
    70 public:
    \n-
    71 typedef typename Base::Traits Traits;
    \n-
    72
    \n-
    \n-
    75 LagrangeLocalFiniteElement ( const GeometryType &gt, unsigned int order )
    \n-
    76 : Base( gt, order )
    \n-
    77 {}
    \n-
    \n-
    78 };
    \n-
    \n-
    79}
    \n-
    80
    \n-
    81#endif // #ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH
    \n-\n-\n-\n-\n-\n-\n-\n-\n-\n+
    \n+\n+
    23 {
    \n+
    24
    \n+
    25 public:
    \n+
    \n+\n+
    28 {
    \n+
    29 for (std::size_t i = 0; i < 3; i++)
    \n+
    30 {
    \n+
    31 li[i] = LocalKey(i,1,0);
    \n+
    32 li[3 + i] = LocalKey(i,1,1);
    \n+
    33 }
    \n+
    34
    \n+
    35 // last two DOF are associated with the cell (codim = 0)
    \n+
    36 li[6] = LocalKey(0,0,0);
    \n+
    37 li[7] = LocalKey(0,0,1);
    \n+
    38 }
    \n+
    \n+
    39
    \n+
    \n+
    41 std::size_t size () const
    \n+
    42 {
    \n+
    43 return 8;
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    \n+
    47 const LocalKey& localKey (std::size_t i) const
    \n+
    48 {
    \n+
    49 return li[i];
    \n+
    50 }
    \n+
    \n+
    51
    \n+
    52 private:
    \n+
    53 std::vector<LocalKey> li;
    \n+
    54 };
    \n+
    \n+
    55}
    \n+
    56#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    Lagrange local finite elements for a given set of interpolation points.
    Definition lagrange.hh:66
    \n-
    LagrangeLocalFiniteElement(const GeometryType &gt, unsigned int order)
    Definition lagrange.hh:75
    \n-
    Base::Traits Traits
    Definition lagrange.hh:71
    \n-
    Definition lagrange/interpolation.hh:89
    \n-
    Definition lagrangecoefficients.hh:23
    \n-
    A LocalFiniteElement implementation based on three TopologyFactories providing the LocalBasis,...
    Definition localfunctions/utility/localfiniteelement.hh:25
    \n-\n-\n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for Raviart-Thomas-1 elements on the reference triangle.
    Definition raviartthomas12dlocalcoefficients.hh:23
    \n+
    RT12DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas12dlocalcoefficients.hh:27
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas12dlocalcoefficients.hh:47
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas12dlocalcoefficients.hh:41
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,92 +1,80 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-lagrange.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\b2_\bd\n+raviartthomas12dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH\n-6#define DUNE_LOCALFUNCTIONS_LAGRANGE_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH\n 7\n-12// Headers for Lagrange elements with run-time order\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+8#include \n+9#include \n+10\n+11#include \"../../common/localkey.hh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n 15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-19\n-20// Headers for Lagrange elements with compile-time order\n-21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-22#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh>\n-23#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh>\n-24#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-25#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\b0_\b._\bh_\bh>\n-26#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bp_\bq_\b2_\b2_\bd_\b._\bh_\bh>\n-27\n-28namespace _\bD_\bu_\bn_\be\n-29{\n-59 template< template class LP,\n-60 unsigned int dimDomain, class D, class R,\n-61 class SF=R, class CF=SF >\n-_\b6_\b2 class _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-63 : public _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt< LagrangeBasisFactory< LP, dimDomain, SF,\n-CF >,\n-64 LagrangeCoefficientsFactory,\n-65 LagrangeInterpolationFactory< LP, dimDomain, SF > >\n-66 {\n-67 typedef _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,\n-_\bC_\bF_\b _\b>,\n-68 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bL_\bP_\b,_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b _\b>,\n-69 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b _\b> > _\bB_\ba_\bs_\be;\n-70 public:\n-_\b7_\b1 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT_\br_\ba_\bi_\bt_\bs;\n-72\n-_\b7_\b5 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( const GeometryType >, unsigned int order )\n-76 : _\bB_\ba_\bs_\be( gt, order )\n-77 {}\n-78 };\n-79}\n-80\n-81#endif // #ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n-_\bp_\bq_\b2_\b2_\bd_\b._\bh_\bh\n-_\bp_\b0_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n-_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\b2_\b2 class _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+23 {\n+24\n+25 public:\n+_\b2_\b7 _\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(8)\n+28 {\n+29 for (std::size_t i = 0; i < 3; i++)\n+30 {\n+31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+32 li[3 + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+33 }\n+34\n+35 // last two DOF are associated with the cell (codim = 0)\n+36 li[6] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0);\n+37 li[7] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,1);\n+38 }\n+39\n+_\b4_\b1 std::size_t _\bs_\bi_\bz_\be () const\n+42 {\n+43 return 8;\n+44 }\n+45\n+_\b4_\b7 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+48 {\n+49 return li[i];\n+50 }\n+51\n+52 private:\n+53 std::vector li;\n+54 };\n+55}\n+56#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Lagrange local finite elements for a given set of interpolation points.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-LagrangeLocalFiniteElement(const GeometryType >, unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-Base::Traits Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-A LocalFiniteElement implementation based on three TopologyFactories providing\n-the LocalBasis,...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:25\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT12DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas12dlocalcoefficients.hh:41\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: power.hh File Reference\n+dune-localfunctions: raviartthomas02dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    power.hh File Reference
    \n+
    raviartthomas02dlocalcoefficients.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n-#include <memory>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/meta/power/basis.hh>
    \n-#include <dune/localfunctions/meta/power/coefficients.hh>
    \n-#include <dune/localfunctions/meta/power/interpolation.hh>
    \n+#include <iostream>
    \n+#include <vector>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n+\n \n

    \n 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...
    class  Dune::RT02DLocalCoefficients
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,33 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\be_\bt_\ba\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-power.hh File Reference\n+raviartthomas02dlocalcoefficients.hh File Reference\n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>\n-\u00a0 Meta-finite element turning a scalar finite element into vector-valued\n- one. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-\u00a0 types of component objects _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>\n-\u00a0 Factory for meta-finite elements turning scalar finite elements into\n- vector-valued ones. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: power.hh Source File\n+dune-localfunctions: raviartthomas02dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,144 +70,78 @@\n
    \n \n \n \n \n \n \n
    \n-
    power.hh
    \n+
    raviartthomas02dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_META_POWER_HH
    \n-
    8
    \n-
    9#include <cstddef>
    \n-
    10#include <memory>
    \n+
    5#ifndef DUNE_RT0TRIANGLELOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_RT0TRIANGLELOCALCOEFFICIENTS_HH
    \n+
    7
    \n+
    8#include <cstddef>
    \n+
    9#include <iostream>
    \n+
    10#include <vector>
    \n
    11
    \n-
    12#include <dune/geometry/type.hh>
    \n+\n
    13
    \n-\n-\n-\n-
    17
    \n-
    18namespace Dune {
    \n-
    19
    \n-
    22
    \n-
    28 template<class Backend, std::size_t dimR>
    \n-
    \n-\n-
    30 public:
    \n-
    \n-
    32 struct Traits {
    \n-\n-\n-
    38 typedef PowerInterpolation<typename Backend::Traits::Interpolation,
    \n-
    39 typename Basis::Traits> Interpolation;
    \n-
    40 };
    \n-
    \n-
    41 private:
    \n-
    42 std::shared_ptr<const Backend> backend;
    \n-
    43 typename Traits::Basis basis_;
    \n-
    44 typename Traits::Coefficients coefficients_;
    \n-
    45 typename Traits::Interpolation interpolation_;
    \n-
    46
    \n-
    47 public:
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    \n+\n+
    25 {
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for (std::size_t i=0; i<3; i++)
    \n+
    31 li[i] = LocalKey(i,1,0);
    \n+
    32 }
    \n+
    \n+
    33
    \n+
    \n+
    35 std::size_t size () const
    \n+
    36 {
    \n+
    37 return 3;
    \n+
    38 }
    \n+
    \n+
    39
    \n+
    \n+
    41 const LocalKey& localKey (std::size_t i) const
    \n+
    42 {
    \n+
    43 return li[i];
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    46 private:
    \n+
    47 std::vector<LocalKey> li;
    \n+
    48 };
    \n+
    \n
    49
    \n-
    \n-
    53 PowerFiniteElement(const Backend &backend_) :
    \n-
    54 backend(new Backend(backend_)),
    \n-
    55 basis_(backend->basis()),
    \n-
    56 coefficients_(backend->coefficients(), dimR),
    \n-
    57 interpolation_(backend->interpolation())
    \n-
    58 { }
    \n-
    \n-
    59
    \n-
    61
    \n-
    \n-
    65 PowerFiniteElement(const std::shared_ptr<const Backend> &backendSPtr) :
    \n-
    66 backend(backendSPtr),
    \n-
    67 basis_(backend->basis()),
    \n-
    68 coefficients_(backend->coefficients(), dimR),
    \n-
    69 interpolation_(backend->interpolation())
    \n-
    70 { }
    \n-
    \n-
    71
    \n-
    73
    \n-
    77 const typename Traits::Basis& basis() const { return basis_; }
    \n-
    79
    \n-
    \n-
    83 const typename Traits::Coefficients& coefficients() const
    \n-
    84 { return coefficients_; }
    \n-
    \n-
    86
    \n-
    \n-
    90 const typename Traits::Interpolation& interpolation() const
    \n-
    91 { return interpolation_; }
    \n-
    \n-
    93 GeometryType type() const { return backend->type(); }
    \n-
    94 };
    \n-
    \n-
    95
    \n-
    98
    \n-
    105 template<class BackendFiniteElement, std::size_t dimR>
    \n-
    \n-\n-
    107 {
    \n-
    108 public:
    \n-\n-
    111
    \n-
    113
    \n-
    \n-
    117 const FiniteElement make(const BackendFiniteElement &backend) const
    \n-
    118 { return FiniteElement(backend); }
    \n-
    \n-
    120
    \n-
    124 const FiniteElement
    \n-
    \n-
    125 make(const std::shared_ptr<const BackendFiniteElement> &backendSPtr) const
    \n-
    126 { return FiniteElement(backendSPtr); }
    \n-
    \n-
    127
    \n-
    128 };
    \n-
    \n-
    129
    \n-
    130} // namespace Dune
    \n-
    131
    \n-
    132#endif // DUNE_LOCALFUNCTIONS_META_POWER_HH
    \n+
    50}
    \n+
    51
    \n+
    52#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Meta-finite element turning a scalar finite element into vector-valued one.
    Definition power.hh:29
    \n-
    const Traits::Basis & basis() const
    Extract basis of this finite element.
    Definition power.hh:77
    \n-
    GeometryType type() const
    Extract geometry type of this finite element.
    Definition power.hh:93
    \n-
    const Traits::Interpolation & interpolation() const
    Extract interpolation of this finite element.
    Definition power.hh:90
    \n-
    PowerFiniteElement(const Backend &backend_)
    Construct a finite element.
    Definition power.hh:53
    \n-
    PowerFiniteElement(const std::shared_ptr< const Backend > &backendSPtr)
    Construct a finite element.
    Definition power.hh:65
    \n-
    const Traits::Coefficients & coefficients() const
    Extract coefficients of this finite element.
    Definition power.hh:83
    \n-
    types of component objects
    Definition power.hh:32
    \n-
    PowerBasis< typename Backend::Traits::Basis, dimR > Basis
    type of the Basis
    Definition power.hh:34
    \n-
    PowerCoefficients Coefficients
    type of the Coefficients
    Definition power.hh:36
    \n-
    PowerInterpolation< typename Backend::Traits::Interpolation, typename Basis::Traits > Interpolation
    type of the Interpolation
    Definition power.hh:39
    \n-
    Factory for meta-finite elements turning scalar finite elements into vector-valued ones.
    Definition power.hh:107
    \n-
    const FiniteElement make(const std::shared_ptr< const BackendFiniteElement > &backendSPtr) const
    create a finite element
    Definition power.hh:125
    \n-
    const FiniteElement make(const BackendFiniteElement &backend) const
    create a finite element
    Definition power.hh:117
    \n-
    PowerFiniteElement< BackendFiniteElement, dimR > FiniteElement
    Type of the finite element.
    Definition power.hh:110
    \n-
    Meta-basis turning a scalar basis into vector-valued basis.
    Definition meta/power/basis.hh:26
    \n-
    Meta-coefficients turning a scalar coefficients into vector-valued coefficients.
    Definition meta/power/coefficients.hh:23
    \n-
    Meta-interpolation turning a scalar interpolation into vector-valued interpolation.
    Definition meta/power/interpolation.hh:26
    \n-\n-\n-\n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Definition raviartthomas02dlocalcoefficients.hh:25
    \n+
    RT02DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas02dlocalcoefficients.hh:28
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas02dlocalcoefficients.hh:41
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas02dlocalcoefficients.hh:35
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,171 +1,75 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\be_\bt_\ba\n-power.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n+raviartthomas02dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_HH\n-7#define DUNE_LOCALFUNCTIONS_META_POWER_HH\n-8\n-9#include \n-10#include \n+5#ifndef DUNE_RT0TRIANGLELOCALCOEFFICIENTS_HH\n+6#define DUNE_RT0TRIANGLELOCALCOEFFICIENTS_HH\n+7\n+8#include \n+9#include \n+10#include \n 11\n-12#include \n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n 13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bm_\be_\bt_\ba_\b/_\bp_\bo_\bw_\be_\br_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-17\n-18namespace _\bD_\bu_\bn_\be {\n-19\n-22\n-28 template\n-_\b2_\b9 class _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n-30 public:\n-_\b3_\b2 struct _\bT_\br_\ba_\bi_\bt_\bs {\n-_\b3_\b4 typedef _\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b<_\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bd_\bi_\bm_\bR_\b> _\bB_\ba_\bs_\bi_\bs;\n-_\b3_\b6 typedef _\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-38 typedef _\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-40 };\n-41 private:\n-42 std::shared_ptr backend;\n-43 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n-44 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n-45 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n-46\n-47 public:\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+_\b2_\b4 class _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+25 {\n+26 public:\n+_\b2_\b8 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(3)\n+29 {\n+30 for (std::size_t i=0; i<3; i++)\n+31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+32 }\n+33\n+_\b3_\b5 std::size_t _\bs_\bi_\bz_\be () const\n+36 {\n+37 return 3;\n+38 }\n+39\n+_\b4_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+42 {\n+43 return li[i];\n+44 }\n+45\n+46 private:\n+47 std::vector li;\n+48 };\n 49\n-_\b5_\b3 _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Backend &backend_) :\n-54 backend(new Backend(backend_)),\n-55 basis_(backend->_\bb_\ba_\bs_\bi_\bs()),\n-56 coefficients_(backend->_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(), dimR),\n-57 interpolation_(backend->_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n-58 { }\n-59\n-61\n-_\b6_\b5 _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const std::shared_ptr &backendSPtr) :\n-66 backend(backendSPtr),\n-67 basis_(backend->_\bb_\ba_\bs_\bi_\bs()),\n-68 coefficients_(backend->_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(), dimR),\n-69 interpolation_(backend->_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn())\n-70 { }\n-71\n-73\n-_\b7_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\n-79\n-_\b8_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n-84 { return coefficients_; }\n-86\n-_\b9_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n-91 { return interpolation_; }\n-_\b9_\b3 GeometryType _\bt_\by_\bp_\be() const { return backend->type(); }\n-94 };\n-95\n-98\n-105 template\n-_\b1_\b0_\b6 class _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-107 {\n-108 public:\n-_\b1_\b1_\b0 typedef _\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bB_\ba_\bc_\bk_\be_\bn_\bd_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b,_\b _\bd_\bi_\bm_\bR_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-111\n-113\n-_\b1_\b1_\b7 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const BackendFiniteElement &backend) const\n-118 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(backend); }\n-120\n-124 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-_\b1_\b2_\b5 _\bm_\ba_\bk_\be(const std::shared_ptr &backendSPtr) const\n-126 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(backendSPtr); }\n-127\n-128 };\n-129\n-130} // namespace Dune\n-131\n-132#endif // DUNE_LOCALFUNCTIONS_META_POWER_HH\n+50}\n+51\n+52#endif\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Meta-finite element turning a scalar finite element into vector-valued one.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n-const Traits::Basis & basis() const\n-Extract basis of this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-Extract geometry type of this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::Interpolation & interpolation() const\n-Extract interpolation of this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-PowerFiniteElement(const Backend &backend_)\n-Construct a finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-PowerFiniteElement(const std::shared_ptr< const Backend > &backendSPtr)\n-Construct a finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::Coefficients & coefficients() const\n-Extract coefficients of this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-types of component objects\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-PowerBasis< typename Backend::Traits::Basis, dimR > Basis\n-type of the Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-PowerCoefficients Coefficients\n-type of the Coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-PowerInterpolation< typename Backend::Traits::Interpolation, typename Basis::\n-Traits > Interpolation\n-type of the Interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for meta-finite elements turning scalar finite elements into vector-\n-valued ones.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const std::shared_ptr< const BackendFiniteElement >\n-&backendSPtr) const\n-create a finite element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const BackendFiniteElement &backend) const\n-create a finite element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:117\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-PowerFiniteElement< BackendFiniteElement, dimR > FiniteElement\n-Type of the finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn power.hh:110\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs\n-Meta-basis turning a scalar basis into vector-valued basis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Meta-coefficients turning a scalar coefficients into vector-valued\n-coefficients.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Meta-interpolation turning a scalar interpolation into vector-valued\n-interpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:26\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT02DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:35\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: crouzeixraviart.hh File Reference\n+dune-localfunctions: raviartthomas02dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    crouzeixraviart.hh File Reference
    \n+
    raviartthomas02dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <numeric>
    \n+
    #include <numeric>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n #include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::CrouzeixRaviartLocalFiniteElement< D, R, dim >
     Crouzeix-Raviart finite element. More...
    class  Dune::RT02DLocalBasis< D, R >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-crouzeixraviart.hh File Reference\n-#include \n+raviartthomas02dlocalbasis.hh File Reference\n #include \n #include \n-#include \n-#include \n-#include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Crouzeix-Raviart finite element. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: crouzeixraviart.hh Source File\n+dune-localfunctions: raviartthomas02dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,229 +70,137 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    crouzeixraviart.hh
    \n+
    raviartthomas02dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH
    \n+
    5#ifndef DUNE_RT0TRIANGLELOCALBASIS_HH
    \n+
    6#define DUNE_RT0TRIANGLELOCALBASIS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <numeric>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12#include <dune/common/fvector.hh>
    \n+
    8#include <numeric>
    \n+
    9
    \n+
    10#include <dune/common/fmatrix.hh>
    \n+
    11
    \n+\n
    13
    \n-
    14#include <dune/geometry/type.hh>
    \n-
    15#include <dune/geometry/referenceelements.hh>
    \n-
    16
    \n-\n-\n-\n-
    20
    \n-
    21namespace Dune { namespace Impl
    \n-
    22{
    \n-
    29 template<class D, class R, unsigned int dim>
    \n-
    30 class CrouzeixRaviartLocalBasis
    \n-
    31 {
    \n-
    32 public:
    \n-
    33 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n-
    34
    \n-
    37 static constexpr unsigned int size ()
    \n-
    38 {
    \n-
    39 return dim+1;
    \n-
    40 }
    \n-
    41
    \n-
    43 void evaluateFunction(const typename Traits::DomainType& x,
    \n-
    44 std::vector<typename Traits::RangeType>& out) const
    \n-
    45 {
    \n-
    46 out.resize(size());
    \n-
    47
    \n-
    48 std::fill(out.begin(), out.end()-1, 1.0);
    \n-
    49 out.back() = 1.0-dim;
    \n-
    50
    \n-
    51 for (unsigned int i=0; i<dim; i++)
    \n-
    52 {
    \n-
    53 out[i] -= dim * x[dim-i-1];
    \n-
    54 out.back() += dim*x[i];
    \n-
    55 }
    \n-
    56 }
    \n-
    57
    \n-
    63 void evaluateJacobian(const typename Traits::DomainType& x,
    \n-
    64 std::vector<typename Traits::JacobianType>& out) const
    \n-
    65 {
    \n-
    66 out.resize(size());
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28 public:
    \n+
    29 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    30 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    31
    \n+
    \n+
    33 RT02DLocalBasis (std::bitset<3> s = 0)
    \n+
    34 {
    \n+
    35 for (int i=0; i<3; i++)
    \n+
    36 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    37 }
    \n+
    \n+
    38
    \n+
    \n+
    40 unsigned int size () const
    \n+
    41 {
    \n+
    42 return 3;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+
    46 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    47 std::vector<typename Traits::RangeType>& out) const
    \n+
    48 {
    \n+
    49 out.resize(3);
    \n+
    50 out[0] = {sign_[0]*in[0], sign_[0]*(in[1]-D(1))};
    \n+
    51 out[1] = {sign_[1]*(in[0]-D(1)), sign_[1]*in[1]};
    \n+
    52 out[2] = {sign_[2]*in[0], sign_[2]*in[1]};
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    56 inline void
    \n+
    \n+
    57 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    58 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    59 {
    \n+
    60 out.resize(3);
    \n+
    61 for (int i=0; i<3; i++)
    \n+
    62 {
    \n+
    63 out[i][0] = {sign_[i], 0};
    \n+
    64 out[i][1] = { 0, sign_[i]};
    \n+
    65 }
    \n+
    66 }
    \n+
    \n
    67
    \n-
    68 for (unsigned i=0; i<dim; i++)
    \n-
    69 for (unsigned j=0; j<dim; j++)
    \n-
    70 out[i][0][j] = (i==(dim-1-j)) ? -(double)dim : 0;
    \n-
    71
    \n-
    72 std::fill(out.back()[0].begin(), out.back()[0].end(), dim);
    \n-
    73 }
    \n-
    74
    \n-
    81 void partial(const std::array<unsigned int,dim>& order,
    \n-
    82 const typename Traits::DomainType& in,
    \n-
    83 std::vector<typename Traits::RangeType>& out) const
    \n-
    84 {
    \n-
    85 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    86
    \n-
    87 out.resize(size());
    \n-
    88
    \n-
    89 if (totalOrder == 0) {
    \n-
    90 evaluateFunction(in, out);
    \n-
    91 return;
    \n-
    92 }
    \n+
    \n+
    69 void partial (const std::array<unsigned int, 2>& order,
    \n+
    70 const typename Traits::DomainType& in, // position
    \n+
    71 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    72 {
    \n+
    73 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    74 if (totalOrder == 0) {
    \n+
    75 evaluateFunction(in, out);
    \n+
    76 } else if (totalOrder == 1) {
    \n+
    77 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    78 out.resize(size());
    \n+
    79
    \n+
    80 for (int i=0; i<3; i++)
    \n+
    81 {
    \n+
    82 out[i][direction] = sign_[i];
    \n+
    83 out[i][1-direction] = 0;
    \n+
    84 }
    \n+
    85 } else {
    \n+
    86 out.resize(size());
    \n+
    87 for (std::size_t i = 0; i < size(); ++i)
    \n+
    88 for (std::size_t j = 0; j < 2; ++j)
    \n+
    89 out[i][j] = 0;
    \n+
    90 }
    \n+
    91
    \n+
    92 }
    \n+
    \n
    93
    \n-
    94 if (totalOrder==1)
    \n-
    95 {
    \n-
    96 auto direction = std::find(order.begin(), order.end(), 1)-order.begin();
    \n-
    97
    \n-
    98 for (unsigned int i=0; i<dim; i++)
    \n-
    99 out[i] = (i==(dim-1-direction)) ? -(double)dim : 0.0;
    \n-
    100
    \n-
    101 out.back()[0] = dim;
    \n-
    102 }
    \n-
    103 else // all higher order derivatives are zero
    \n-
    104 std::fill(out.begin(), out.end(), 0);
    \n-
    105 }
    \n-
    106
    \n-
    108 static constexpr unsigned int order ()
    \n-
    109 {
    \n-
    110 return 1;
    \n-
    111 }
    \n-
    112 };
    \n-
    113
    \n-
    118 template<unsigned int dim>
    \n-
    119 class CrouzeixRaviartLocalCoefficients
    \n-
    120 {
    \n-
    121 public:
    \n-
    123 CrouzeixRaviartLocalCoefficients ()
    \n-
    124 : localKeys_(size())
    \n-
    125 {
    \n-
    126 for (std::size_t i=0; i<size(); i++)
    \n-
    127 localKeys_[i] = LocalKey(i,1,0);
    \n-
    128 }
    \n-
    129
    \n-
    131 static constexpr std::size_t size ()
    \n-
    132 {
    \n-
    133 return dim+1;
    \n-
    134 }
    \n-
    135
    \n-
    137 const LocalKey& localKey (std::size_t i) const
    \n-
    138 {
    \n-
    139 return localKeys_[i];
    \n-
    140 }
    \n-
    141
    \n-
    142 private:
    \n-
    143 std::vector<LocalKey> localKeys_;
    \n-
    144 };
    \n-
    145
    \n-
    150 template<class LocalBasis>
    \n-
    151 class CrouzeixRaviartLocalInterpolation
    \n-
    152 {
    \n-
    153 public:
    \n-
    154
    \n-
    162 template<typename F, typename C>
    \n-
    163 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    164 {
    \n-
    165 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n-
    166
    \n-
    167 out.resize(LocalBasis::size());
    \n-
    168
    \n-
    169 // Evaluate at the facet midpoints
    \n-
    170 auto refSimplex = ReferenceElements<typename LocalBasis::Traits::DomainFieldType,dim>::simplex();
    \n-
    171 for (int i=0; i<refSimplex.size(1); i++)
    \n-
    172 out[i] = f(refSimplex.template geometry<1>(i).center());
    \n-
    173 }
    \n-
    174 };
    \n-
    175
    \n-
    176} } // namespace Dune::Impl
    \n-
    177
    \n-
    178namespace Dune
    \n-
    179{
    \n-
    186 template<class D, class R, int dim>
    \n-
    \n-\n-
    188 {
    \n-
    189 public:
    \n-\n-
    193 Impl::CrouzeixRaviartLocalCoefficients<dim>,
    \n-
    194 Impl::CrouzeixRaviartLocalInterpolation<Impl::CrouzeixRaviartLocalBasis<D,R,dim> > >;
    \n-
    195
    \n-
    \n-
    198 const typename Traits::LocalBasisType& localBasis() const
    \n-
    199 {
    \n-
    200 return basis_;
    \n-
    201 }
    \n-
    \n-
    202
    \n-
    \n-\n-
    206 {
    \n-
    207 return coefficients_;
    \n-
    208 }
    \n-
    \n-
    209
    \n-
    \n-\n-
    213 {
    \n-
    214 return interpolation_;
    \n-
    215 }
    \n-
    \n-
    216
    \n-
    \n-
    218 static constexpr std::size_t size()
    \n-
    219 {
    \n-
    220 return dim+1;
    \n-
    221 }
    \n-
    \n-
    222
    \n-
    \n-
    225 static constexpr GeometryType type()
    \n-
    226 {
    \n-
    227 return GeometryTypes::simplex(dim);
    \n-
    228 }
    \n-
    \n-
    229
    \n-
    230 private:
    \n-
    231 Impl::CrouzeixRaviartLocalBasis<D,R,dim> basis_;
    \n-
    232 Impl::CrouzeixRaviartLocalCoefficients<dim> coefficients_;
    \n-
    233 Impl::CrouzeixRaviartLocalInterpolation<Impl::CrouzeixRaviartLocalBasis<D,R,dim> > interpolation_;
    \n-
    234 };
    \n-
    \n-
    235
    \n-
    236} // namespace Dune
    \n-
    237
    \n-
    238#endif // DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH
    \n-\n-\n+
    \n+
    95 unsigned int order () const
    \n+
    96 {
    \n+
    97 return 1;
    \n+
    98 }
    \n+
    \n+
    99
    \n+
    100 private:
    \n+
    101
    \n+
    102 // Signs of the edge normals
    \n+
    103 std::array<R,3> sign_;
    \n+
    104 };
    \n+
    \n+
    105}
    \n+
    106#endif
    \n
    Definition bdfmcube.hh:18
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Crouzeix-Raviart finite element.
    Definition crouzeixraviart.hh:188
    \n-
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition crouzeixraviart.hh:225
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition crouzeixraviart.hh:205
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition crouzeixraviart.hh:212
    \n-
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition crouzeixraviart.hh:198
    \n-
    static constexpr std::size_t size()
    The number of shape functions.
    Definition crouzeixraviart.hh:218
    \n+
    Definition raviartthomas02dlocalbasis.hh:27
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas02dlocalbasis.hh:95
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas02dlocalbasis.hh:57
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas02dlocalbasis.hh:30
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas02dlocalbasis.hh:46
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas02dlocalbasis.hh:40
    \n+
    RT02DLocalBasis(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas02dlocalbasis.hh:33
    \n+
    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 raviartthomas02dlocalbasis.hh:69
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,243 +1,149 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-crouzeixraviart.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n+raviartthomas02dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH\n-6#define DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH\n+5#ifndef DUNE_RT0TRIANGLELOCALBASIS_HH\n+6#define DUNE_RT0TRIANGLELOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n+8#include \n+9\n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n 13\n-14#include \n-15#include \n-16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-20\n-21namespace _\bD_\bu_\bn_\be { namespace Impl\n-22{\n-29 template\n-30 class CrouzeixRaviartLocalBasis\n-31 {\n-32 public:\n-33 using Traits =\n-LocalBasisTraits,R,1,FieldVector,FieldMatrix\n->;\n-34\n-37 static constexpr unsigned int size ()\n-38 {\n-39 return dim+1;\n-40 }\n-41\n-43 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n-44 std::vector& out) const\n-45 {\n-46 out.resize(size());\n-47\n-48 std::fill(out.begin(), out.end()-1, 1.0);\n-49 out.back() = 1.0-dim;\n-50\n-51 for (unsigned int i=0; i& out) const\n-65 {\n-66 out.resize(size());\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+25 template\n+_\b2_\b6 class _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+27 {\n+28 public:\n+29 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n+FieldVector,\n+_\b3_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+31\n+_\b3_\b3 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<3> s = 0)\n+34 {\n+35 for (int i=0; i<3; i++)\n+36 sign_[i] = s[i] ? -1.0 : 1.0;\n+37 }\n+38\n+_\b4_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+41 {\n+42 return 3;\n+43 }\n+44\n+_\b4_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+47 std::vector& out) const\n+48 {\n+49 out.resize(3);\n+50 out[0] = {sign_[0]*in[0], sign_[0]*(in[1]-D(1))};\n+51 out[1] = {sign_[1]*(in[0]-D(1)), sign_[1]*in[1]};\n+52 out[2] = {sign_[2]*in[0], sign_[2]*in[1]};\n+53 }\n+54\n+56 inline void\n+_\b5_\b7 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+58 std::vector& out) const // return value\n+59 {\n+60 out.resize(3);\n+61 for (int i=0; i<3; i++)\n+62 {\n+63 out[i][0] = {sign_[i], 0};\n+64 out[i][1] = { 0, sign_[i]};\n+65 }\n+66 }\n 67\n-68 for (unsigned i=0; i& order,\n-82 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-83 std::vector& out) const\n-84 {\n-85 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-86\n-87 out.resize(size());\n-88\n-89 if (totalOrder == 0) {\n-90 evaluateFunction(in, out);\n-91 return;\n+_\b6_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+70 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+71 std::vector& out) const // return value\n+72 {\n+73 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+74 if (totalOrder == 0) {\n+75 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+76 } else if (totalOrder == 1) {\n+77 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n+_\bo_\br_\bd_\be_\br.end(), 1));\n+78 out.resize(_\bs_\bi_\bz_\be());\n+79\n+80 for (int i=0; i<3; i++)\n+81 {\n+82 out[i][direction] = sign_[i];\n+83 out[i][1-direction] = 0;\n+84 }\n+85 } else {\n+86 out.resize(_\bs_\bi_\bz_\be());\n+87 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+88 for (std::size_t j = 0; j < 2; ++j)\n+89 out[i][j] = 0;\n+90 }\n+91\n 92 }\n 93\n-94 if (totalOrder==1)\n-95 {\n-96 auto direction = std::find(order.begin(), order.end(), 1)-order.begin();\n-97\n-98 for (unsigned int i=0; i\n-119 class CrouzeixRaviartLocalCoefficients\n-120 {\n-121 public:\n-123 CrouzeixRaviartLocalCoefficients ()\n-124 : localKeys_(size())\n-125 {\n-126 for (std::size_t i=0; i localKeys_;\n-144 };\n-145\n-150 template\n-151 class CrouzeixRaviartLocalInterpolation\n-152 {\n-153 public:\n-154\n-162 template\n-163 void interpolate (const F& f, std::vector& out) const\n-164 {\n-165 constexpr auto dim = LocalBasis::Traits::dimDomain;\n-166\n-167 out.resize(LocalBasis::size());\n-168\n-169 // Evaluate at the facet midpoints\n-170 auto refSimplex = ReferenceElements::simplex();\n-171 for (int i=0; i(i).center());\n-173 }\n-174 };\n-175\n-176} } // namespace Dune::Impl\n-177\n-178namespace _\bD_\bu_\bn_\be\n-179{\n-186 template\n-_\b1_\b8_\b7 class _\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-188 {\n-189 public:\n-_\b1_\b9_\b2 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n-_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,\n-193 Impl::CrouzeixRaviartLocalCoefficients,\n-194 Impl::CrouzeixRaviartLocalInterpolation > >;\n-195\n-_\b1_\b9_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs() const\n-199 {\n-200 return basis_;\n-201 }\n-202\n-_\b2_\b0_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n-206 {\n-207 return coefficients_;\n-208 }\n-209\n-_\b2_\b1_\b2 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n-213 {\n-214 return interpolation_;\n-215 }\n-216\n-_\b2_\b1_\b8 static constexpr std::size_t _\bs_\bi_\bz_\be()\n-219 {\n-220 return dim+1;\n-221 }\n-222\n-_\b2_\b2_\b5 static constexpr GeometryType _\bt_\by_\bp_\be()\n-226 {\n-227 return GeometryTypes::simplex(dim);\n-228 }\n-229\n-230 private:\n-231 Impl::CrouzeixRaviartLocalBasis basis_;\n-232 Impl::CrouzeixRaviartLocalCoefficients coefficients_;\n-233 Impl::CrouzeixRaviartLocalInterpolation > interpolation_;\n-234 };\n-235\n-236} // namespace Dune\n-237\n-238#endif // DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+_\b9_\b5 unsigned int _\bo_\br_\bd_\be_\br () const\n+96 {\n+97 return 1;\n+98 }\n+99\n+100 private:\n+101\n+102 // Signs of the edge normals\n+103 std::array sign_;\n+104 };\n+105}\n+106#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Crouzeix-Raviart finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:188\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-The reference element that the local finite element is defined on.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-Returns the assignment of the degrees of freedom to the element subentities.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:205\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-Returns object that evaluates degrees of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:212\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-Returns the local basis, i.e., the set of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:198\n-_\bD_\bu_\bn_\be_\b:_\b:_\bC_\br_\bo_\bu_\bz_\be_\bi_\bx_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size()\n-The number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn crouzeixraviart.hh:218\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:95\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT02DLocalBasis(std::bitset< 3 > s=0)\n+Make set number s, where 0 <= s < 8.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:69\n _\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelecsimplexinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas02dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,50 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    nedelecsimplexinterpolation.hh File Reference
    \n+
    raviartthomas02dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <utility>
    \n-#include <numeric>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/utility/interpolationhelper.hh>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n-#include <dune/localfunctions/orthonormal/orthonormalbasis.hh>
    \n+
    #include <cmath>
    \n+#include <array>
    \n+#include <bitset>
    \n+#include <vector>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n \n

    \n Classes

    class  Dune::LocalCoefficientsContainer
     
    struct  Dune::NedelecCoefficientsFactory< dim >
     
    struct  Dune::NedelecL2InterpolationBuilder< dim, Field >
     
    class  Dune::NedelecL2Interpolation< dimension, F >
     An L2-based interpolation for Nedelec. More...
     
    struct  Dune::NedelecL2InterpolationFactory< dim, Field >
    class  Dune::RT02DLocalInterpolation< LB >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,39 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n- * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-nedelecsimplexinterpolation.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+raviartthomas02dlocalinterpolation.hh File Reference\n+#include \n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b>\n-\u00a0 An L2-based interpolation for Nedelec. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelecsimplexinterpolation.hh Source File\n+dune-localfunctions: raviartthomas02dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,817 +70,94 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    nedelecsimplexinterpolation.hh
    \n+
    raviartthomas02dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH
    \n+
    5#ifndef DUNE_RT02DLOCALINTERPOLATION_HH
    \n+
    6#define DUNE_RT02DLOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <utility>
    \n-
    10#include <numeric>
    \n-
    11
    \n-
    12#include <dune/common/exceptions.hh>
    \n-
    13
    \n-
    14#include <dune/geometry/quadraturerules.hh>
    \n-
    15#include <dune/geometry/referenceelements.hh>
    \n-
    16#include <dune/geometry/type.hh>
    \n-
    17
    \n-\n-\n-\n-\n+
    8#include <cmath>
    \n+
    9#include <array>
    \n+
    10#include <bitset>
    \n+
    11#include <vector>
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    18 template<class LB>
    \n+
    \n+\n+
    20 {
    \n+
    21 public:
    \n
    22
    \n-
    23namespace Dune
    \n-
    24{
    \n-
    25
    \n-
    26 // Internal Forward Declarations
    \n-
    27 // -----------------------------
    \n-
    28
    \n-
    32 template < unsigned int dim, class Field >
    \n-
    33 struct NedelecL2InterpolationFactory;
    \n-
    34
    \n-
    35
    \n-
    36
    \n-
    37 // LocalCoefficientsContainer
    \n-
    38 // --------------------------
    \n-
    39
    \n-
    \n-\n-
    41 {
    \n-\n-
    43
    \n-
    44 public:
    \n-
    45 template <class Setter>
    \n-
    \n-
    46 LocalCoefficientsContainer ( const Setter &setter )
    \n-
    47 {
    \n-
    48 setter.setLocalKeys(localKey_);
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    51 const LocalKey &localKey ( const unsigned int i ) const
    \n-
    52 {
    \n-
    53 assert( i < size() );
    \n-
    54 return localKey_[ i ];
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    \n-
    57 std::size_t size () const
    \n-
    58 {
    \n-
    59 return localKey_.size();
    \n-
    60 }
    \n-
    \n-
    61
    \n-
    62 private:
    \n-
    63 std::vector< LocalKey > localKey_;
    \n+
    \n+
    24 RT02DLocalInterpolation (std::bitset<3> s = 0)
    \n+
    25 {
    \n+
    26 using std::sqrt;
    \n+
    27 for (std::size_t i=0; i<sign_.size(); i++)
    \n+
    28 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    29
    \n+
    30 m_[0] = {0.5, 0.0};
    \n+
    31 m_[1] = {0.0, 0.5};
    \n+
    32 m_[2] = {0.5, 0.5};
    \n+
    33 n_[0] = {0.0, -1.0};
    \n+
    34 n_[1] = {-1.0, 0.0};
    \n+
    35 n_[2] = {1.0/sqrt(2.0), 1.0/sqrt(2.0)};
    \n+
    36 c_[0] = ( 0.5*n_[0][0] - 1.0*n_[0][1]);
    \n+
    37 c_[1] = (-1.0*n_[1][0] + 0.5*n_[1][1]);
    \n+
    38 c_[2] = ( 0.5*n_[2][0] + 0.5*n_[2][1]);
    \n+
    39 }
    \n+
    \n+
    40
    \n+
    41 template<typename F, typename C>
    \n+
    \n+
    42 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    43 {
    \n+
    44 // f gives v*outer normal at a point on the edge!
    \n+
    45
    \n+
    46 out.resize(3);
    \n+
    47
    \n+
    48 for (int i=0; i<3; i++)
    \n+
    49 {
    \n+
    50 auto y = f(m_[i]);
    \n+
    51 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1])*sign_[i]/c_[i];
    \n+
    52 }
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    55 private:
    \n+
    56 // Edge orientations
    \n+
    57 std::array<typename LB::Traits::RangeFieldType,3> sign_;
    \n+
    58 // Edge midpoints of the reference triangle
    \n+
    59 std::array<typename LB::Traits::DomainType,3> m_;
    \n+
    60 // Unit outer normals of the reference triangle
    \n+
    61 std::array<typename LB::Traits::DomainType,3> n_;
    \n+
    62 // Inverse triangle edge length
    \n+
    63 std::array<typename LB::Traits::RangeFieldType,3> c_;
    \n
    64 };
    \n
    \n-
    65
    \n+
    65}
    \n
    66
    \n-
    67
    \n-
    68 // NedelecCoefficientsFactory
    \n-
    69 // --------------------------------
    \n-
    70
    \n-
    71 template < unsigned int dim >
    \n-
    \n-\n-
    73 {
    \n-
    74 typedef std::size_t Key;
    \n-\n-
    76
    \n-
    77 template< GeometryType::Id geometryId >
    \n-
    \n-
    78 static Object *create( const Key &key )
    \n-
    79 {
    \n-
    80 typedef NedelecL2InterpolationFactory< dim, double > InterpolationFactory;
    \n-
    81 if( !supports< geometryId >( key ) )
    \n-
    82 return nullptr;
    \n-
    83 typename InterpolationFactory::Object *interpolation = InterpolationFactory::template create< geometryId >( key );
    \n-
    84 Object *localKeys = new Object( *interpolation );
    \n-
    85 InterpolationFactory::release( interpolation );
    \n-
    86 return localKeys;
    \n-
    87 }
    \n-
    \n-
    88
    \n-
    89 template< GeometryType::Id geometryId >
    \n-
    \n-
    90 static bool supports ( const Key &key )
    \n-
    91 {
    \n-
    92 GeometryType gt = geometryId;
    \n-
    93 return gt.isTriangle() || gt.isTetrahedron() ;
    \n-
    94 }
    \n-
    \n-
    95 static void release( Object *object ) { delete object; }
    \n-
    96 };
    \n-
    \n-
    97
    \n-
    98
    \n-
    99
    \n-
    100 // NedelecL2InterpolationBuilder
    \n-
    101 // ------------------------
    \n-
    102
    \n-
    103 // L2 Interpolation requires:
    \n-
    104 // - for element
    \n-
    105 // - test basis
    \n-
    106 // - for each face (dynamic)
    \n-
    107 // - test basis
    \n-
    108 // - tangents
    \n-
    109 // - for each edge (dynamic)
    \n-
    110 // - test basis
    \n-
    111 // - tangent
    \n-
    112 template< unsigned int dim, class Field >
    \n-
    \n-\n-
    114 {
    \n-
    115 static const unsigned int dimension = dim;
    \n-
    116
    \n-
    117 // for the dofs associated to the element
    \n-\n-\n-
    120
    \n-
    121 // for the dofs associated to the faces
    \n-\n-\n-
    124
    \n-
    125 // for the dofs associated to the edges
    \n-\n-\n-
    128
    \n-
    129 // the tangent of the edges
    \n-
    130 typedef FieldVector< Field, dimension > Tangent;
    \n-
    131
    \n-
    132 // the normal and the tangents of the faces
    \n-
    133 typedef FieldVector< Field, dimension > Normal;
    \n-
    134 typedef std::array<FieldVector< Field, dimension >,dim-1> FaceTangents;
    \n-
    135
    \n-\n-
    137
    \n-\n-\n-
    140
    \n-
    \n-\n-
    142 {
    \n-
    143 TestBasisFactory::release( testBasis_ );
    \n-
    144 for( FaceStructure &f : faceStructure_ )
    \n-\n-
    146 for( EdgeStructure& e : edgeStructure_ )
    \n-\n-
    148 }
    \n-
    \n-
    149
    \n-
    \n-
    150 unsigned int topologyId () const
    \n-
    151 {
    \n-
    152 return geometry_.id();
    \n-
    153 }
    \n-
    \n-
    154
    \n-
    \n-
    155 GeometryType type () const
    \n-
    156 {
    \n-
    157 return geometry_;
    \n-
    158 }
    \n-
    \n-
    159
    \n-
    \n-
    160 std::size_t order () const
    \n-
    161 {
    \n-
    162 return order_;
    \n-
    163 }
    \n-
    \n-
    164
    \n-
    165 // number of faces
    \n-
    \n-
    166 unsigned int faceSize () const
    \n-
    167 {
    \n-
    168 return numberOfFaces_;
    \n-
    169 }
    \n-
    \n-
    170
    \n-
    171 // number of edges
    \n-
    \n-
    172 unsigned int edgeSize () const
    \n-
    173 {
    \n-
    174 return numberOfEdges_;
    \n-
    175 }
    \n-
    \n-
    176
    \n-
    177 // basis associated to the element
    \n-
    \n-\n-
    179 {
    \n-
    180 return testBasis_;
    \n-
    181 }
    \n-
    \n-
    182
    \n-
    183 // basis associated to face f
    \n-
    \n-
    184 TestFaceBasis *testFaceBasis ( unsigned int f ) const
    \n-
    185 {
    \n-
    186 assert( f < faceSize() );
    \n-
    187 return faceStructure_[ f ].basis_;
    \n-
    188 }
    \n-
    \n-
    189
    \n-
    190 // basis associated to edge e
    \n-
    \n-
    191 TestEdgeBasis *testEdgeBasis ( unsigned int e ) const
    \n-
    192 {
    \n-
    193 assert( e < edgeSize() );
    \n-
    194 return edgeStructure_[ e ].basis_;
    \n-
    195 }
    \n-
    \n-
    196
    \n-
    \n-
    197 const Tangent& edgeTangent ( unsigned int e ) const
    \n-
    198 {
    \n-
    199 assert( e < edgeSize() );
    \n-
    200 return edgeStructure_[ e ].tangent_;
    \n-
    201 }
    \n-
    \n-
    202
    \n-
    \n-
    203 const FaceTangents& faceTangents ( unsigned int f ) const
    \n-
    204 {
    \n-
    205 assert( f < faceSize() );
    \n-
    206 return faceStructure_[ f ].faceTangents_;
    \n-
    207 }
    \n-
    \n-
    208
    \n-
    \n-
    209 const Normal &normal ( unsigned int f ) const
    \n-
    210 {
    \n-
    211 assert( f < faceSize() );
    \n-
    212 return faceStructure_[ f ].normal_;
    \n-
    213 }
    \n-
    \n-
    214
    \n-
    215 template< GeometryType::Id geometryId >
    \n-
    \n-
    216 void build ( std::size_t order )
    \n-
    217 {
    \n-
    218 constexpr GeometryType geometry = geometryId;
    \n-
    219 order_ = order;
    \n-
    220 geometry_ = geometry;
    \n-
    221
    \n-
    222 /*
    \n-
    223 * The Nedelec parameter begins at 1.
    \n-
    224 * This is the numbering used by J.C. Nedelec himself.
    \n-
    225 * See "Mixed Finite Elements in \\R^3" published in 1980.
    \n-
    226 *
    \n-
    227 * This construction is based on the construction of Raviart-Thomas elements.
    \n-
    228 * There the numbering starts at 0.
    \n-
    229 * Because of this we reduce the order internally by 1.
    \n-
    230 */
    \n-
    231 order--;
    \n-
    232
    \n-
    233 // if dimension == 2: order-1 on element
    \n-
    234 // if dimension == 3: order-2 on element
    \n-
    235 int requiredOrder = static_cast<int>(dimension==3);
    \n-
    236 testBasis_ = (order > requiredOrder ? TestBasisFactory::template create< geometry >( order-1-requiredOrder ) : nullptr);
    \n-
    237
    \n-
    238 const auto &refElement = ReferenceElements< Field, dimension >::general( type() );
    \n-
    239
    \n-
    240 numberOfFaces_ = refElement.size( 1 );
    \n-
    241 faceStructure_.reserve( numberOfFaces_ );
    \n-
    242
    \n-
    243 // compute the basis, tangents and normals of each face
    \n-
    244 for (std::size_t i=0; i<numberOfFaces_; i++)
    \n-
    245 {
    \n-
    246 FieldVector<Field,dimension> zero(0);
    \n-\n-
    248 faceTangents.fill(zero);
    \n-
    249
    \n-
    250 // use the first dim-1 vertices of a face to compute the tangents
    \n-
    251 auto vertices = refElement.subEntities(i,1,dim).begin();
    \n-
    252 auto vertex1 = *vertices;
    \n-
    253 for(int j=1; j<dim;j++)
    \n-
    254 {
    \n-
    255 auto vertex2 = vertices[j];
    \n-
    256
    \n-
    257 faceTangents[j-1] = refElement.position(vertex2,dim) - refElement.position(vertex1,dim);
    \n-
    258
    \n-
    259 // By default, edges point from the vertex with the smaller index
    \n-
    260 // to the vertex with the larger index.
    \n-
    261 if (vertex1>vertex2)
    \n-
    262 faceTangents[j-1] *=-1;
    \n-
    263
    \n-
    264 vertex1 = vertex2;
    \n-
    265 }
    \n-
    266
    \n-
    267 /* For simplices or cubes of arbitrary dimension you could just use
    \n-
    268 *
    \n-
    269 * ```
    \n-
    270 * GeometryType faceGeometry = Impl::getBase(geometry_);
    \n-
    271 * TestFaceBasis *faceBasis = ( dim == 3 && order > 0 ? TestFaceBasisFactory::template create< faceGeometry >( order-1 ) : nullptr);
    \n-
    272 * ```
    \n-
    273 *
    \n-
    274 * For i.e. Prisms and Pyramids in 3d this does not work because they contain squares and triangles as faces.
    \n-
    275 * And depending on the dynamic face index a different face geometry is needed.
    \n-
    276 *
    \n-
    277 */
    \n-
    278 TestFaceBasis *faceBasis = ( dim == 3 && order > 0 ? Impl::IfGeometryType< CreateFaceBasis, dimension-1 >::apply( refElement.type( i, 1 ), order-1 ) : nullptr);
    \n-
    279 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal(i), faceTangents );
    \n-
    280 }
    \n-
    281 assert( faceStructure_.size() == numberOfFaces_ );
    \n-
    282
    \n-
    283 numberOfEdges_ = refElement.size( dim-1 );
    \n-
    284 edgeStructure_.reserve( numberOfEdges_ );
    \n-
    285
    \n-
    286 // compute the basis and tangent of each edge
    \n-
    287 for (std::size_t i=0; i<numberOfEdges_; i++)
    \n-
    288 {
    \n-
    289 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n-
    290 auto v0 = *vertexIterator;
    \n-
    291 auto v1 = *(++vertexIterator);
    \n-
    292
    \n-
    293 // By default, edges point from the vertex with the smaller index
    \n-
    294 // to the vertex with the larger index.
    \n-
    295 if (v0>v1)
    \n-
    296 std::swap(v0,v1);
    \n-
    297 auto tangent = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n-
    298
    \n-
    299 TestEdgeBasis *edgeBasis = Impl::IfGeometryType< CreateEdgeBasis, 1 >::apply( refElement.type( i, dim-1 ), order );
    \n-
    300 edgeStructure_.emplace_back( edgeBasis, tangent );
    \n-
    301 }
    \n-
    302 assert( edgeStructure_.size() == numberOfEdges_ );
    \n-
    303 }
    \n-
    \n-
    304
    \n-
    305 private:
    \n-
    306
    \n-
    307 // helper struct for edges
    \n-
    308 struct EdgeStructure
    \n-
    309 {
    \n-
    310 EdgeStructure( TestEdgeBasis *teb, const Tangent &t )
    \n-
    311 : basis_( teb ), tangent_( t )
    \n-
    312 {}
    \n-
    313
    \n-
    314 TestEdgeBasis *basis_;
    \n-
    315 const Dune::FieldVector< Field, dimension > tangent_;
    \n-
    316 };
    \n-
    317
    \n-
    318 template< GeometryType::Id edgeGeometryId >
    \n-
    319 struct CreateEdgeBasis
    \n-
    320 {
    \n-
    321 static TestEdgeBasis *apply ( std::size_t order ) { return TestEdgeBasisFactory::template create< edgeGeometryId >( order ); }
    \n-
    322 };
    \n-
    323
    \n-
    324 // helper struct for faces
    \n-
    325 struct FaceStructure
    \n-
    326 {
    \n-
    327 FaceStructure( TestFaceBasis *tfb, const Normal& normal, const FaceTangents& faceTangents )
    \n-
    328 : basis_( tfb ), normal_(normal), faceTangents_( faceTangents )
    \n-
    329 {}
    \n-
    330
    \n-
    331 TestFaceBasis *basis_;
    \n-
    332 const Dune::FieldVector< Field, dimension > normal_;
    \n-
    333 const FaceTangents faceTangents_;
    \n-
    334 };
    \n-
    335
    \n-
    336 template< GeometryType::Id faceGeometryId >
    \n-
    337 struct CreateFaceBasis
    \n-
    338 {
    \n-
    339 static TestFaceBasis *apply ( std::size_t order ) { return TestFaceBasisFactory::template create< faceGeometryId >( order ); }
    \n-
    340 };
    \n-
    341
    \n-
    342 TestBasis *testBasis_ = nullptr;
    \n-
    343 std::vector< FaceStructure > faceStructure_;
    \n-
    344 unsigned int numberOfFaces_;
    \n-
    345 std::vector< EdgeStructure > edgeStructure_;
    \n-
    346 unsigned int numberOfEdges_;
    \n-
    347 GeometryType geometry_;
    \n-
    348 std::size_t order_;
    \n-
    349 };
    \n-
    \n-
    350
    \n-
    351
    \n-
    352
    \n-
    353 // NedelecL2Interpolation
    \n-
    354 // ----------------------------
    \n-
    355
    \n-
    361 template< unsigned int dimension, class F>
    \n-
    \n-\n-
    363 : public InterpolationHelper< F ,dimension >
    \n-
    364 {
    \n-\n-\n-
    367
    \n-
    368 public:
    \n-
    369 typedef F Field;
    \n-\n-\n-
    372
    \n-
    \n-\n-
    374 : order_(0),
    \n-
    375 size_(0)
    \n-
    376 {}
    \n-
    \n-
    377
    \n-
    378 template< class Function, class Vector,
    \n-
    379 decltype(std::declval<Vector>().size(),bool{}) = true,
    \n-
    380 decltype(std::declval<Vector>().resize(0u),bool{}) = true>
    \n-
    \n-
    381 void interpolate ( const Function &function, Vector &coefficients ) const
    \n-
    382 {
    \n-
    383 coefficients.resize(size());
    \n-
    384 typename Base::template Helper<Function,Vector,true> func( function,coefficients );
    \n-
    385 interpolate(func);
    \n-
    386 }
    \n-
    \n-
    387
    \n-
    388 template< class Basis, class Matrix,
    \n-
    389 decltype(std::declval<Matrix>().rows(),bool{}) = true,
    \n-
    390 decltype(std::declval<Matrix>().cols(),bool{}) = true,
    \n-
    391 decltype(std::declval<Matrix>().resize(0u,0u),bool{}) = true>
    \n-
    \n-
    392 void interpolate ( const Basis &basis, Matrix &matrix ) const
    \n-
    393 {
    \n-
    394 matrix.resize( size(), basis.size() );
    \n-
    395 typename Base::template Helper<Basis,Matrix,false> func( basis,matrix );
    \n-
    396 interpolate(func);
    \n-
    397 }
    \n-
    \n-
    398
    \n-
    \n-
    399 std::size_t order() const
    \n-
    400 {
    \n-
    401 return order_;
    \n-
    402 }
    \n-
    \n-
    \n-
    403 std::size_t size() const
    \n-
    404 {
    \n-
    405 return size_;
    \n-
    406 }
    \n-
    \n-
    407
    \n-
    408 template <GeometryType::Id geometryId>
    \n-
    \n-
    409 void build( std::size_t order )
    \n-
    410 {
    \n-
    411 size_ = 0;
    \n-
    412 order_ = order;
    \n-
    413 builder_.template build<geometryId>(order_);
    \n-
    414 if (builder_.testBasis())
    \n-
    415 size_ += dimension*builder_.testBasis()->size();
    \n-
    416
    \n-
    417 for ( unsigned int f=0; f<builder_.faceSize(); ++f )
    \n-
    418 if (builder_.testFaceBasis(f))
    \n-
    419 size_ += (dimension-1)*builder_.testFaceBasis(f)->size();
    \n-
    420
    \n-
    421 for ( unsigned int e=0; e<builder_.edgeSize(); ++e )
    \n-
    422 if (builder_.testEdgeBasis(e))
    \n-\n-
    424 }
    \n-
    \n-
    425
    \n-
    \n-
    426 void setLocalKeys(std::vector< LocalKey > &keys) const
    \n-
    427 {
    \n-
    428 keys.resize(size());
    \n-
    429 unsigned int row = 0;
    \n-
    430 for (unsigned int e=0; e<builder_.edgeSize(); ++e)
    \n-
    431 {
    \n-
    432 if (builder_.edgeSize())
    \n-
    433 for (unsigned int i=0; i<builder_.testEdgeBasis(e)->size(); ++i,++row)
    \n-
    434 keys[row] = LocalKey(e,dimension-1,i);
    \n-
    435 }
    \n-
    436 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n-
    437 {
    \n-
    438 if (builder_.faceSize())
    \n-
    439 for (unsigned int i=0; i<builder_.testFaceBasis(f)->size()*(dimension-1); ++i,++row)
    \n-
    440 keys[row] = LocalKey(f,1,i);
    \n-
    441 }
    \n-
    442
    \n-
    443 if (builder_.testBasis())
    \n-
    444 for (unsigned int i=0; i<builder_.testBasis()->size()*dimension; ++i,++row)
    \n-
    445 keys[row] = LocalKey(0,0,i);
    \n-
    446 assert( row == size() );
    \n-
    447 }
    \n-
    \n-
    448
    \n-
    449 protected:
    \n-
    450 template< class Func, class Container, bool type >
    \n-
    \n-
    451 void interpolate ( typename Base::template Helper<Func,Container,type> &func ) const
    \n-
    452 {
    \n-
    453 const Dune::GeometryType geoType( builder_.topologyId(), dimension );
    \n-
    454
    \n-
    455 std::vector<Field> testBasisVal;
    \n-
    456
    \n-
    457 for (unsigned int i=0; i<size(); ++i)
    \n-
    458 for (unsigned int j=0; j<func.size(); ++j)
    \n-
    459 func.set(i,j,0);
    \n-
    460
    \n-
    461 unsigned int row = 0;
    \n-
    462
    \n-
    463 // edge dofs:
    \n-
    464 typedef Dune::QuadratureRule<Field, 1> EdgeQuadrature;
    \n-
    465 typedef Dune::QuadratureRules<Field, 1> EdgeQuadratureRules;
    \n-
    466
    \n-
    467 const auto &refElement = Dune::ReferenceElements< Field, dimension >::general( geoType );
    \n-
    468
    \n-
    469 for (unsigned int e=0; e<builder_.edgeSize(); ++e)
    \n-
    470 {
    \n-
    471 if (!builder_.testEdgeBasis(e))
    \n-
    472 continue;
    \n-
    473 testBasisVal.resize(builder_.testEdgeBasis(e)->size());
    \n-
    474
    \n-
    475 const auto &geometry = refElement.template geometry< dimension-1 >( e );
    \n-
    476 const Dune::GeometryType subGeoType( geometry.type().id(), 1 );
    \n-
    477 const EdgeQuadrature &edgeQuad = EdgeQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n-
    478
    \n-
    479 const unsigned int quadratureSize = edgeQuad.size();
    \n-
    480 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    481 {
    \n-
    482 if (dimension>1)
    \n-
    483 builder_.testEdgeBasis(e)->template evaluate<0>(edgeQuad[qi].position(),testBasisVal);
    \n-
    484 else
    \n-
    485 testBasisVal[0] = 1.;
    \n-
    486 computeEdgeDofs(row,
    \n-
    487 testBasisVal,
    \n-
    488 func.evaluate( geometry.global( edgeQuad[qi].position() ) ),
    \n-\n-
    490 edgeQuad[qi].weight(),
    \n-
    491 func);
    \n-
    492 }
    \n-
    493
    \n-
    494 row += builder_.testEdgeBasis(e)->size();
    \n-
    495 }
    \n-
    496
    \n-
    497 // face dofs:
    \n-
    498 typedef Dune::QuadratureRule<Field, dimension-1> FaceQuadrature;
    \n-
    499 typedef Dune::QuadratureRules<Field, dimension-1> FaceQuadratureRules;
    \n-
    500
    \n-
    501 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n-
    502 {
    \n-
    503 if (builder_.testFaceBasis(f))
    \n-
    504 {
    \n-
    505 testBasisVal.resize(builder_.testFaceBasis(f)->size());
    \n-
    506
    \n-
    507 const auto &geometry = refElement.template geometry< 1 >( f );
    \n-
    508 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );
    \n-
    509 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n-
    510
    \n-
    511 const unsigned int quadratureSize = faceQuad.size();
    \n-
    512 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    513 {
    \n-
    514 if (dimension>1)
    \n-
    515 builder_.testFaceBasis(f)->template evaluate<0>(faceQuad[qi].position(),testBasisVal);
    \n-
    516 else
    \n-
    517 testBasisVal[0] = 1.;
    \n-
    518
    \n-
    519 computeFaceDofs( row,
    \n-
    520 testBasisVal,
    \n-
    521 func.evaluate( geometry.global( faceQuad[qi].position() ) ),
    \n-\n-
    523 builder_.normal(f),
    \n-
    524 faceQuad[qi].weight(),
    \n-
    525 func);
    \n-
    526 }
    \n-
    527
    \n-
    528 row += builder_.testFaceBasis(f)->size()*(dimension-1);
    \n-
    529 }
    \n-
    530 }
    \n-
    531
    \n-
    532 // element dofs
    \n-
    533 if (builder_.testBasis())
    \n-
    534 {
    \n-
    535 testBasisVal.resize(builder_.testBasis()->size());
    \n-
    536
    \n-
    537 typedef Dune::QuadratureRule<Field, dimension> Quadrature;
    \n-
    538 typedef Dune::QuadratureRules<Field, dimension> QuadratureRules;
    \n-
    539 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );
    \n-
    540
    \n-
    541 const unsigned int quadratureSize = elemQuad.size();
    \n-
    542 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    543 {
    \n-
    544 builder_.testBasis()->template evaluate<0>(elemQuad[qi].position(),testBasisVal);
    \n-
    545 computeInteriorDofs(row,
    \n-
    546 testBasisVal,
    \n-
    547 func.evaluate(elemQuad[qi].position()),
    \n-
    548 elemQuad[qi].weight(),
    \n-
    549 func );
    \n-
    550 }
    \n-
    551
    \n-
    552 row += builder_.testBasis()->size()*dimension;
    \n-
    553 }
    \n-
    554 assert(row==size());
    \n-
    555 }
    \n-
    \n-
    556
    \n-
    557 private:
    \n-
    567 template <class MVal, class NedVal,class Matrix>
    \n-
    568 void computeEdgeDofs (unsigned int startRow,
    \n-
    569 const MVal &mVal,
    \n-
    570 const NedVal &nedVal,
    \n-
    571 const FieldVector<Field,dimension> &tangent,
    \n-
    572 const Field &weight,
    \n-
    573 Matrix &matrix) const
    \n-
    574 {
    \n-
    575 const unsigned int endRow = startRow+mVal.size();
    \n-
    576 typename NedVal::const_iterator nedIter = nedVal.begin();
    \n-
    577 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)
    \n-
    578 {
    \n-
    579 Field cFactor = (*nedIter)*tangent;
    \n-
    580 typename MVal::const_iterator mIter = mVal.begin();
    \n-
    581 for (unsigned int row = startRow; row!=endRow; ++mIter, ++row )
    \n-
    582 matrix.add(row,col, (weight*cFactor)*(*mIter) );
    \n-
    583
    \n-
    584 assert( mIter == mVal.end() );
    \n-
    585 }
    \n-
    586 }
    \n-
    587
    \n-
    598 template <class MVal, class NedVal,class Matrix>
    \n-
    599 void computeFaceDofs (unsigned int startRow,
    \n-
    600 const MVal &mVal,
    \n-
    601 const NedVal &nedVal,
    \n-
    602 const FaceTangents& faceTangents,
    \n-
    603 const FieldVector<Field,dimension> &normal,
    \n-
    604 const Field &weight,
    \n-
    605 Matrix &matrix) const
    \n-
    606 {
    \n-
    607 const unsigned int endRow = startRow+mVal.size()*(dimension-1);
    \n-
    608 typename NedVal::const_iterator nedIter = nedVal.begin();
    \n-
    609 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)
    \n-
    610 {
    \n-
    611 auto const& u=*nedIter;
    \n-
    612 auto const& n=normal;
    \n-
    613 FieldVector<Field,dimension> nedTimesNormal = { u[1]*n[2]-u[2]*n[1],
    \n-
    614 u[2]*n[0]-u[0]*n[2],
    \n-
    615 u[0]*n[1]-u[1]*n[0]};
    \n-
    616 typename MVal::const_iterator mIter = mVal.begin();
    \n-
    617 for (unsigned int row = startRow; row!=endRow; ++mIter)
    \n-
    618 {
    \n-
    619 for(int i=0; i<dimension-1;i++)
    \n-
    620 {
    \n-
    621 auto test = *mIter*faceTangents[i];
    \n-
    622 matrix.add(row+i,col, weight*(nedTimesNormal*test) );
    \n-
    623 }
    \n-
    624 row += dimension-1;
    \n-
    625 }
    \n-
    626
    \n-
    627 assert( mIter == mVal.end() );
    \n-
    628 }
    \n-
    629 }
    \n-
    630
    \n-
    639 template <class MVal, class NedVal,class Matrix>
    \n-
    640 void computeInteriorDofs (unsigned int startRow,
    \n-
    641 const MVal &mVal,
    \n-
    642 const NedVal &nedVal,
    \n-
    643 Field weight,
    \n-
    644 Matrix &matrix) const
    \n-
    645 {
    \n-
    646 const unsigned int endRow = startRow+mVal.size()*dimension;
    \n-
    647 typename NedVal::const_iterator nedIter = nedVal.begin();
    \n-
    648 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)
    \n-
    649 {
    \n-
    650 typename MVal::const_iterator mIter = mVal.begin();
    \n-
    651 for (unsigned int row = startRow; row!=endRow; ++mIter,row+=dimension )
    \n-
    652 for (unsigned int i=0; i<dimension; ++i)
    \n-
    653 matrix.add(row+i,col, (weight*(*mIter))*(*nedIter)[i] );
    \n-
    654
    \n-
    655 assert( mIter == mVal.end() );
    \n-
    656 }
    \n-
    657 }
    \n-
    658
    \n-
    659 public:
    \n-\n-
    661 std::size_t order_;
    \n-
    662 std::size_t size_;
    \n-
    663 };
    \n-
    \n-
    664
    \n-
    665 template < unsigned int dim, class Field >
    \n-
    \n-\n-
    667 {
    \n-\n-\n-
    670 typedef std::size_t Key;
    \n-
    671 typedef typename std::remove_const<Object>::type NonConstObject;
    \n-
    672
    \n-
    673 template <GeometryType::Id geometryId>
    \n-
    \n-
    674 static Object *create( const Key &key )
    \n-
    675 {
    \n-
    676 if ( !supports<geometryId>(key) )
    \n-
    677 return 0;
    \n-
    678 NonConstObject *interpol = new NonConstObject();
    \n-
    679 interpol->template build<geometryId>(key);
    \n-
    680 return interpol;
    \n-
    681 }
    \n-
    \n-
    682
    \n-
    683 template <GeometryType::Id geometryId>
    \n-
    \n-
    684 static bool supports( const Key &key )
    \n-
    685 {
    \n-
    686 GeometryType gt = geometryId;
    \n-
    687 return gt.isTriangle() || gt.isTetrahedron() ;
    \n-
    688 }
    \n-
    \n-
    689 static void release( Object *object ) { delete object; }
    \n-
    690 };
    \n-
    \n-
    691
    \n-
    692} // namespace Dune
    \n-
    693
    \n-
    694#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH
    \n-\n-\n-\n-\n+
    67#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Definition nedelecsimplexinterpolation.hh:667
    \n-
    static Object * create(const Key &key)
    Definition nedelecsimplexinterpolation.hh:674
    \n-
    const NedelecL2Interpolation< dim, Field > Object
    Definition nedelecsimplexinterpolation.hh:669
    \n-
    NedelecL2InterpolationBuilder< dim, Field > Builder
    Definition nedelecsimplexinterpolation.hh:668
    \n-
    std::size_t Key
    Definition nedelecsimplexinterpolation.hh:670
    \n-
    static bool supports(const Key &key)
    Definition nedelecsimplexinterpolation.hh:684
    \n-
    std::remove_const< Object >::type NonConstObject
    Definition nedelecsimplexinterpolation.hh:671
    \n-
    static void release(Object *object)
    Definition nedelecsimplexinterpolation.hh:689
    \n-
    Definition nedelecsimplexinterpolation.hh:41
    \n-
    LocalCoefficientsContainer(const Setter &setter)
    Definition nedelecsimplexinterpolation.hh:46
    \n-
    const LocalKey & localKey(const unsigned int i) const
    Definition nedelecsimplexinterpolation.hh:51
    \n-
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:57
    \n-
    Definition nedelecsimplexinterpolation.hh:73
    \n-
    static Object * create(const Key &key)
    Definition nedelecsimplexinterpolation.hh:78
    \n-
    static bool supports(const Key &key)
    Definition nedelecsimplexinterpolation.hh:90
    \n-
    const LocalCoefficientsContainer Object
    Definition nedelecsimplexinterpolation.hh:75
    \n-
    std::size_t Key
    Definition nedelecsimplexinterpolation.hh:74
    \n-
    static void release(Object *object)
    Definition nedelecsimplexinterpolation.hh:95
    \n-
    Definition nedelecsimplexinterpolation.hh:114
    \n-
    TestEdgeBasis * testEdgeBasis(unsigned int e) const
    Definition nedelecsimplexinterpolation.hh:191
    \n-
    ~NedelecL2InterpolationBuilder()
    Definition nedelecsimplexinterpolation.hh:141
    \n-
    GeometryType type() const
    Definition nedelecsimplexinterpolation.hh:155
    \n-
    TestBasisFactory::Object TestBasis
    Definition nedelecsimplexinterpolation.hh:119
    \n-
    FieldVector< Field, dimension > Tangent
    Definition nedelecsimplexinterpolation.hh:130
    \n-
    TestFaceBasisFactory::Object TestFaceBasis
    Definition nedelecsimplexinterpolation.hh:123
    \n-
    TestFaceBasis * testFaceBasis(unsigned int f) const
    Definition nedelecsimplexinterpolation.hh:184
    \n-
    TestEdgeBasisFactory::Object TestEdgeBasis
    Definition nedelecsimplexinterpolation.hh:127
    \n-
    FieldVector< Field, dimension > Normal
    Definition nedelecsimplexinterpolation.hh:133
    \n-
    void build(std::size_t order)
    Definition nedelecsimplexinterpolation.hh:216
    \n-
    OrthonormalBasisFactory< dimension, Field > TestBasisFactory
    Definition nedelecsimplexinterpolation.hh:118
    \n-
    OrthonormalBasisFactory< dimension-1, Field > TestFaceBasisFactory
    Definition nedelecsimplexinterpolation.hh:122
    \n-
    const FaceTangents & faceTangents(unsigned int f) const
    Definition nedelecsimplexinterpolation.hh:203
    \n-
    unsigned int faceSize() const
    Definition nedelecsimplexinterpolation.hh:166
    \n-
    TestBasis * testBasis() const
    Definition nedelecsimplexinterpolation.hh:178
    \n-
    std::array< FieldVector< Field, dimension >, dim-1 > FaceTangents
    Definition nedelecsimplexinterpolation.hh:134
    \n-
    OrthonormalBasisFactory< 1, Field > TestEdgeBasisFactory
    Definition nedelecsimplexinterpolation.hh:126
    \n-
    const Tangent & edgeTangent(unsigned int e) const
    Definition nedelecsimplexinterpolation.hh:197
    \n-
    NedelecL2InterpolationBuilder(NedelecL2InterpolationBuilder &&)=delete
    \n-
    std::size_t order() const
    Definition nedelecsimplexinterpolation.hh:160
    \n-
    unsigned int edgeSize() const
    Definition nedelecsimplexinterpolation.hh:172
    \n-
    unsigned int topologyId() const
    Definition nedelecsimplexinterpolation.hh:150
    \n-
    NedelecL2InterpolationBuilder(const NedelecL2InterpolationBuilder &)=delete
    \n-
    static const unsigned int dimension
    Definition nedelecsimplexinterpolation.hh:115
    \n-\n-
    const Normal & normal(unsigned int f) const
    Definition nedelecsimplexinterpolation.hh:209
    \n-
    An L2-based interpolation for Nedelec.
    Definition nedelecsimplexinterpolation.hh:364
    \n-
    Builder::FaceTangents FaceTangents
    Definition nedelecsimplexinterpolation.hh:371
    \n-
    F Field
    Definition nedelecsimplexinterpolation.hh:369
    \n-
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:403
    \n-
    void interpolate(typename Base::template Helper< Func, Container, type > &func) const
    Definition nedelecsimplexinterpolation.hh:451
    \n-
    std::size_t order_
    Definition nedelecsimplexinterpolation.hh:661
    \n-
    NedelecL2InterpolationBuilder< dimension, Field > Builder
    Definition nedelecsimplexinterpolation.hh:370
    \n-
    std::size_t size_
    Definition nedelecsimplexinterpolation.hh:662
    \n-
    NedelecL2Interpolation()
    Definition nedelecsimplexinterpolation.hh:373
    \n-
    void interpolate(const Function &function, Vector &coefficients) const
    Definition nedelecsimplexinterpolation.hh:381
    \n-
    void build(std::size_t order)
    Definition nedelecsimplexinterpolation.hh:409
    \n-
    std::size_t order() const
    Definition nedelecsimplexinterpolation.hh:399
    \n-
    void setLocalKeys(std::vector< LocalKey > &keys) const
    Definition nedelecsimplexinterpolation.hh:426
    \n-
    Builder builder_
    Definition nedelecsimplexinterpolation.hh:660
    \n-
    Definition orthonormalbasis.hh:20
    \n-
    static void release(Object *object)
    Definition orthonormalbasis.hh:57
    \n-
    Definition interpolationhelper.hh:21
    \n-
    Definition interpolationhelper.hh:23
    \n-
    Definition polynomialbasis.hh:65
    \n-
    unsigned int size() const
    Definition polynomialbasis.hh:113
    \n+
    Definition raviartthomas02dlocalinterpolation.hh:20
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition raviartthomas02dlocalinterpolation.hh:42
    \n+
    RT02DLocalInterpolation(std::bitset< 3 > s=0)
    Constructor with given set of edge orientations.
    Definition raviartthomas02dlocalinterpolation.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,895 +1,87 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n- * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-nedelecsimplexinterpolation.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b2_\bd\n+raviartthomas02dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef\n-DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH\n+5#ifndef DUNE_RT02DLOCALINTERPOLATION_HH\n+6#define DUNE_RT02DLOCALINTERPOLATION_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12#include \n-13\n-14#include \n-15#include \n-16#include \n-17\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh>\n-20#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-21#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+8#include \n+9#include \n+10#include \n+11#include \n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+18 template\n+_\b1_\b9 class _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+20 {\n+21 public:\n 22\n-23namespace _\bD_\bu_\bn_\be\n-24{\n-25\n-26 // Internal Forward Declarations\n-27 // -----------------------------\n-28\n-32 template < unsigned int dim, class Field >\n-33 struct NedelecL2InterpolationFactory;\n-34\n-35\n-36\n-37 // LocalCoefficientsContainer\n-38 // --------------------------\n-39\n-_\b4_\b0 class _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-41 {\n-42 typedef _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bT_\bh_\bi_\bs;\n-43\n-44 public:\n-45 template \n-_\b4_\b6 _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br ( const Setter &setter )\n-47 {\n-48 setter.setLocalKeys(localKey_);\n-49 }\n-50\n-_\b5_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by ( const unsigned int i ) const\n-52 {\n-53 assert( i < _\bs_\bi_\bz_\be() );\n-54 return localKey_[ i ];\n-55 }\n-56\n-_\b5_\b7 std::size_t _\bs_\bi_\bz_\be () const\n-58 {\n-59 return localKey_.size();\n-60 }\n-61\n-62 private:\n-63 std::vector< LocalKey > localKey_;\n+_\b2_\b4 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<3> s = 0)\n+25 {\n+26 using std::sqrt;\n+27 for (std::size_t i=0; i\n+_\b4_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+43 {\n+44 // f gives v*outer normal at a point on the edge!\n+45\n+46 out.resize(3);\n+47\n+48 for (int i=0; i<3; i++)\n+49 {\n+50 auto y = f(m_[i]);\n+51 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1])*sign_[i]/c_[i];\n+52 }\n+53 }\n+54\n+55 private:\n+56 // Edge orientations\n+57 std::array sign_;\n+58 // Edge midpoints of the reference triangle\n+59 std::array m_;\n+60 // Unit outer normals of the reference triangle\n+61 std::array n_;\n+62 // Inverse triangle edge length\n+63 std::array c_;\n 64 };\n-65\n+65}\n 66\n-67\n-68 // NedelecCoefficientsFactory\n-69 // --------------------------------\n-70\n-71 template < unsigned int dim >\n-_\b7_\b2 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-73 {\n-_\b7_\b4 typedef std::size_t _\bK_\be_\by;\n-_\b7_\b5 typedef const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br _\bO_\bb_\bj_\be_\bc_\bt;\n-76\n-77 template< GeometryType::Id geometryId >\n-_\b7_\b8 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n-79 {\n-80 typedef _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b> InterpolationFactory;\n-81 if( !supports< geometryId >( key ) )\n-82 return nullptr;\n-83 typename InterpolationFactory::Object *interpolation =\n-InterpolationFactory::template create< geometryId >( key );\n-84 _\bO_\bb_\bj_\be_\bc_\bt *localKeys = new _\bO_\bb_\bj_\be_\bc_\bt( *interpolation );\n-85 InterpolationFactory::release( interpolation );\n-86 return localKeys;\n-87 }\n-88\n-89 template< GeometryType::Id geometryId >\n-_\b9_\b0 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n-91 {\n-92 GeometryType gt = geometryId;\n-93 return gt.isTriangle() || gt.isTetrahedron() ;\n-94 }\n-_\b9_\b5 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-96 };\n-97\n-98\n-99\n-100 // NedelecL2InterpolationBuilder\n-101 // ------------------------\n-102\n-103 // L2 Interpolation requires:\n-104 // - for element\n-105 // - test basis\n-106 // - for each face (dynamic)\n-107 // - test basis\n-108 // - tangents\n-109 // - for each edge (dynamic)\n-110 // - test basis\n-111 // - tangent\n-112 template< unsigned int dim, class Field >\n-_\b1_\b1_\b3 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-114 {\n-_\b1_\b1_\b5 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-116\n-117 // for the dofs associated to the element\n-_\b1_\b1_\b8 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b1_\b1_\b9 typedef typename _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs;\n-120\n-121 // for the dofs associated to the faces\n-_\b1_\b2_\b2 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-1, Field > _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b1_\b2_\b3 typedef typename _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs;\n-124\n-125 // for the dofs associated to the edges\n-_\b1_\b2_\b6 typedef _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\b1_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b> _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b1_\b2_\b7 typedef typename _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs;\n-128\n-129 // the tangent of the edges\n-_\b1_\b3_\b0 typedef FieldVector< Field, dimension > _\bT_\ba_\bn_\bg_\be_\bn_\bt;\n-131\n-132 // the normal and the tangents of the faces\n-_\b1_\b3_\b3 typedef FieldVector< Field, dimension > _\bN_\bo_\br_\bm_\ba_\bl;\n-_\b1_\b3_\b4 typedef std::array,dim-1> _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs;\n-135\n-_\b1_\b3_\b6 _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br () = default;\n-137\n-_\b1_\b3_\b8 _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ( const _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br & ) =\n-delete;\n-_\b1_\b3_\b9 _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ( _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br && ) =\n-delete;\n-140\n-_\b1_\b4_\b1 _\b~_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br ()\n-142 {\n-143 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( testBasis_ );\n-144 for( FaceStructure &f : faceStructure_ )\n-145 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( f.basis_ );\n-146 for( EdgeStructure& e : edgeStructure_ )\n-147 _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( e.basis_ );\n-148 }\n-149\n-_\b1_\b5_\b0 unsigned int _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd () const\n-151 {\n-152 return geometry_.id();\n-153 }\n-154\n-_\b1_\b5_\b5 GeometryType _\bt_\by_\bp_\be () const\n-156 {\n-157 return geometry_;\n-158 }\n-159\n-_\b1_\b6_\b0 std::size_t _\bo_\br_\bd_\be_\br () const\n-161 {\n-162 return order_;\n-163 }\n-164\n-165 // number of faces\n-_\b1_\b6_\b6 unsigned int _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be () const\n-167 {\n-168 return numberOfFaces_;\n-169 }\n-170\n-171 // number of edges\n-_\b1_\b7_\b2 unsigned int _\be_\bd_\bg_\be_\bS_\bi_\bz_\be () const\n-173 {\n-174 return numberOfEdges_;\n-175 }\n-176\n-177 // basis associated to the element\n-_\b1_\b7_\b8 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs () const\n-179 {\n-180 return testBasis_;\n-181 }\n-182\n-183 // basis associated to face f\n-_\b1_\b8_\b4 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs ( unsigned int f ) const\n-185 {\n-186 assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n-187 return faceStructure_[ f ].basis_;\n-188 }\n-189\n-190 // basis associated to edge e\n-_\b1_\b9_\b1 _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs ( unsigned int e ) const\n-192 {\n-193 assert( e < _\be_\bd_\bg_\be_\bS_\bi_\bz_\be() );\n-194 return edgeStructure_[ e ].basis_;\n-195 }\n-196\n-_\b1_\b9_\b7 const _\bT_\ba_\bn_\bg_\be_\bn_\bt& _\be_\bd_\bg_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt ( unsigned int e ) const\n-198 {\n-199 assert( e < _\be_\bd_\bg_\be_\bS_\bi_\bz_\be() );\n-200 return edgeStructure_[ e ].tangent_;\n-201 }\n-202\n-_\b2_\b0_\b3 const _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs& _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs ( unsigned int f ) const\n-204 {\n-205 assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n-206 return faceStructure_[ f ].faceTangents_;\n-207 }\n-208\n-_\b2_\b0_\b9 const _\bN_\bo_\br_\bm_\ba_\bl &_\bn_\bo_\br_\bm_\ba_\bl ( unsigned int f ) const\n-210 {\n-211 assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n-212 return faceStructure_[ f ].normal_;\n-213 }\n-214\n-215 template< GeometryType::Id geometryId >\n-_\b2_\b1_\b6 void _\bb_\bu_\bi_\bl_\bd ( std::size_t _\bo_\br_\bd_\be_\br )\n-217 {\n-218 constexpr GeometryType geometry = geometryId;\n-219 order_ = _\bo_\br_\bd_\be_\br;\n-220 geometry_ = geometry;\n-221\n-222 /*\n-223 * The Nedelec parameter begins at 1.\n-224 * This is the numbering used by J.C. Nedelec himself.\n-225 * See \"Mixed Finite Elements in \\R^3\" published in 1980.\n-226 *\n-227 * This construction is based on the construction of Raviart-Thomas\n-elements.\n-228 * There the numbering starts at 0.\n-229 * Because of this we reduce the order internally by 1.\n-230 */\n-231 _\bo_\br_\bd_\be_\br--;\n-232\n-233 // if dimension == 2: order-1 on element\n-234 // if dimension == 3: order-2 on element\n-235 int requiredOrder = static_cast(_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn==3);\n-236 testBasis_ = (_\bo_\br_\bd_\be_\br > requiredOrder ? TestBasisFactory::template create<\n-geometry >( _\bo_\br_\bd_\be_\br-1-requiredOrder ) : nullptr);\n-237\n-238 const auto &refElement = ReferenceElements< Field, dimension >::general\n-( _\bt_\by_\bp_\be() );\n-239\n-240 numberOfFaces_ = refElement.size( 1 );\n-241 faceStructure_.reserve( numberOfFaces_ );\n-242\n-243 // compute the basis, tangents and normals of each face\n-244 for (std::size_t i=0; i zero(0);\n-247 _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs;\n-248 _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs.fill(zero);\n-249\n-250 // use the first dim-1 vertices of a face to compute the tangents\n-251 auto vertices = refElement.subEntities(i,1,dim).begin();\n-252 auto vertex1 = *vertices;\n-253 for(int j=1; jvertex2)\n-262 _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs[j-1] *=-1;\n-263\n-264 vertex1 = vertex2;\n-265 }\n-266\n-267 /* For simplices or cubes of arbitrary dimension you could just use\n-268 *\n-269 * ```\n-270 * GeometryType faceGeometry = Impl::getBase(geometry_);\n-271 * TestFaceBasis *faceBasis = ( dim == 3 && order > 0 ?\n-TestFaceBasisFactory::template create< faceGeometry >( order-1 ) : nullptr);\n-272 * ```\n-273 *\n-274 * For i.e. Prisms and Pyramids in 3d this does not work because they\n-contain squares and triangles as faces.\n-275 * And depending on the dynamic face index a different face geometry is\n-needed.\n-276 *\n-277 */\n-278 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *faceBasis = ( dim == 3 && _\bo_\br_\bd_\be_\br > 0 ? Impl::IfGeometryType<\n-CreateFaceBasis, dimension-1 >::apply( refElement.type( i, 1 ), _\bo_\br_\bd_\be_\br-1 ) :\n-nullptr);\n-279 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal\n-(i), _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs );\n-280 }\n-281 assert( faceStructure_.size() == numberOfFaces_ );\n-282\n-283 numberOfEdges_ = refElement.size( dim-1 );\n-284 edgeStructure_.reserve( numberOfEdges_ );\n-285\n-286 // compute the basis and tangent of each edge\n-287 for (std::size_t i=0; iv1)\n-296 std::swap(v0,v1);\n-297 auto tangent = refElement.position(v1,dim) - refElement.position(v0,dim);\n-298\n-299 _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *edgeBasis = Impl::IfGeometryType< CreateEdgeBasis, 1 >::\n-apply( refElement.type( i, dim-1 ), _\bo_\br_\bd_\be_\br );\n-300 edgeStructure_.emplace_back( edgeBasis, tangent );\n-301 }\n-302 assert( edgeStructure_.size() == numberOfEdges_ );\n-303 }\n-304\n-305 private:\n-306\n-307 // helper struct for edges\n-308 struct EdgeStructure\n-309 {\n-310 EdgeStructure( _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *teb, const _\bT_\ba_\bn_\bg_\be_\bn_\bt &t )\n-311 : basis_( teb ), tangent_( t )\n-312 {}\n-313\n-314 _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *basis_;\n-315 const Dune::FieldVector< Field, dimension > tangent_;\n-316 };\n-317\n-318 template< GeometryType::Id edgeGeometryId >\n-319 struct CreateEdgeBasis\n-320 {\n-321 static _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *apply ( std::size_t _\bo_\br_\bd_\be_\br ) { return\n-TestEdgeBasisFactory::template create< edgeGeometryId >( _\bo_\br_\bd_\be_\br ); }\n-322 };\n-323\n-324 // helper struct for faces\n-325 struct FaceStructure\n-326 {\n-327 FaceStructure( _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *tfb, const _\bN_\bo_\br_\bm_\ba_\bl& _\bn_\bo_\br_\bm_\ba_\bl, const\n-_\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs& _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs )\n-328 : basis_( tfb ), normal_(_\bn_\bo_\br_\bm_\ba_\bl), faceTangents_( _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs )\n-329 {}\n-330\n-331 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *basis_;\n-332 const Dune::FieldVector< Field, dimension > normal_;\n-333 const _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs faceTangents_;\n-334 };\n-335\n-336 template< GeometryType::Id faceGeometryId >\n-337 struct CreateFaceBasis\n-338 {\n-339 static _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *apply ( std::size_t _\bo_\br_\bd_\be_\br ) { return\n-TestFaceBasisFactory::template create< faceGeometryId >( _\bo_\br_\bd_\be_\br ); }\n-340 };\n-341\n-342 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *testBasis_ = nullptr;\n-343 std::vector< FaceStructure > faceStructure_;\n-344 unsigned int numberOfFaces_;\n-345 std::vector< EdgeStructure > edgeStructure_;\n-346 unsigned int numberOfEdges_;\n-347 GeometryType geometry_;\n-348 std::size_t order_;\n-349 };\n-350\n-351\n-352\n-353 // NedelecL2Interpolation\n-354 // ----------------------------\n-355\n-361 template< unsigned int dimension, class F>\n-_\b3_\b6_\b2 class _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-363 : public _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br< F ,dimension >\n-364 {\n-365 typedef _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n-366 typedef _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\b,_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b> _\bB_\ba_\bs_\be;\n-367\n-368 public:\n-_\b3_\b6_\b9 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b3_\b7_\b0 typedef _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\bu_\bi_\bl_\bd_\be_\br;\n-_\b3_\b7_\b1 typedef typename _\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs;\n-372\n-_\b3_\b7_\b3 _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n-374 : _\bo_\br_\bd_\be_\br_\b_(0),\n-375 _\bs_\bi_\bz_\be_\b_(0)\n-376 {}\n-377\n-378 template< class Function, class Vector,\n-379 decltype(std::declval().size(),bool{}) = true,\n-380 decltype(std::declval().resize(0u),bool{}) = true>\n-_\b3_\b8_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, Vector &coefficients ) const\n-382 {\n-383 coefficients.resize(_\bs_\bi_\bz_\be());\n-384 typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b,_\bV_\be_\bc_\bt_\bo_\br_\b,_\bt_\br_\bu_\be_\b> func\n-( function,coefficients );\n-385 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n-386 }\n-387\n-388 template< class Basis, class Matrix,\n-389 decltype(std::declval().rows(),bool{}) = true,\n-390 decltype(std::declval().cols(),bool{}) = true,\n-391 decltype(std::declval().resize(0u,0u),bool{}) = true>\n-_\b3_\b9_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Basis &basis, Matrix &matrix ) const\n-393 {\n-394 matrix.resize( _\bs_\bi_\bz_\be(), basis.size() );\n-395 typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bB_\ba_\bs_\bi_\bs_\b,_\bM_\ba_\bt_\br_\bi_\bx_\b,_\bf_\ba_\bl_\bs_\be_\b> func( basis,matrix );\n-396 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n-397 }\n-398\n-_\b3_\b9_\b9 std::size_t _\bo_\br_\bd_\be_\br() const\n-400 {\n-401 return _\bo_\br_\bd_\be_\br_\b_;\n-402 }\n-_\b4_\b0_\b3 std::size_t _\bs_\bi_\bz_\be() const\n-404 {\n-405 return _\bs_\bi_\bz_\be_\b_;\n-406 }\n-407\n-408 template \n-_\b4_\b0_\b9 void _\bb_\bu_\bi_\bl_\bd( std::size_t _\bo_\br_\bd_\be_\br )\n-410 {\n-411 _\bs_\bi_\bz_\be_\b_ = 0;\n-412 _\bo_\br_\bd_\be_\br_\b_ = _\bo_\br_\bd_\be_\br;\n-413 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_.template build(_\bo_\br_\bd_\be_\br_\b_);\n-414 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-415 _\bs_\bi_\bz_\be_\b_ += dimension*_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be();\n-416\n-417 for ( unsigned int f=0; f<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be(); ++f )\n-418 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f))\n-419 _\bs_\bi_\bz_\be_\b_ += (dimension-1)*_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be();\n-420\n-421 for ( unsigned int e=0; e<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be(); ++e )\n-422 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e))\n-423 _\bs_\bi_\bz_\be_\b_ += _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->_\bs_\bi_\bz_\be();\n-424 }\n-425\n-_\b4_\b2_\b6 void _\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs(std::vector< LocalKey > &keys) const\n-427 {\n-428 keys.resize(_\bs_\bi_\bz_\be());\n-429 unsigned int row = 0;\n-430 for (unsigned int e=0; e<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be(); ++e)\n-431 {\n-432 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be())\n-433 for (unsigned int i=0; i<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->_\bs_\bi_\bz_\be(); ++i,++row)\n-434 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(e,dimension-1,i);\n-435 }\n-436 for (unsigned int f=0; f<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be(); ++f)\n-437 {\n-438 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be())\n-439 for (unsigned int i=0; i<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be()*(dimension-1);\n-++i,++row)\n-440 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(f,1,i);\n-441 }\n-442\n-443 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-444 for (unsigned int i=0; i<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be()*dimension; ++i,++row)\n-445 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n-446 assert( row == _\bs_\bi_\bz_\be() );\n-447 }\n-448\n-449 protected:\n-450 template< class Func, class Container, bool type >\n-_\b4_\b5_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( typename Base::template _\bH_\be_\bl_\bp_\be_\br_\b<_\bF_\bu_\bn_\bc_\b,_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b,_\bt_\by_\bp_\be_\b>\n-&func ) const\n-452 {\n-453 const Dune::GeometryType geoType( _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd(), dimension );\n-454\n-455 std::vector testBasisVal;\n-456\n-457 for (unsigned int i=0; i<_\bs_\bi_\bz_\be(); ++i)\n-458 for (unsigned int j=0; j EdgeQuadrature;\n-465 typedef Dune::QuadratureRules EdgeQuadratureRules;\n-466\n-467 const auto &refElement = Dune::ReferenceElements< Field, dimension >::\n-general( geoType );\n-468\n-469 for (unsigned int e=0; e<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be(); ++e)\n-470 {\n-471 if (!_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e))\n-472 continue;\n-473 testBasisVal.resize(_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->_\bs_\bi_\bz_\be());\n-474\n-475 const auto &geometry = refElement.template geometry< dimension-1 >( e );\n-476 const Dune::GeometryType subGeoType( geometry.type().id(), 1 );\n-477 const EdgeQuadrature &edgeQuad = EdgeQuadratureRules::rule( subGeoType,\n-2*_\bo_\br_\bd_\be_\br_\b_+2 );\n-478\n-479 const unsigned int quadratureSize = edgeQuad.size();\n-480 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-481 {\n-482 if (dimension>1)\n-483 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->template evaluate<0>(edgeQuad[qi].position\n-(),testBasisVal);\n-484 else\n-485 testBasisVal[0] = 1.;\n-486 computeEdgeDofs(row,\n-487 testBasisVal,\n-488 func.evaluate( geometry.global( edgeQuad[qi].position() ) ),\n-489 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt(e),\n-490 edgeQuad[qi].weight(),\n-491 func);\n-492 }\n-493\n-494 row += _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e)->_\bs_\bi_\bz_\be();\n-495 }\n-496\n-497 // face dofs:\n-498 typedef Dune::QuadratureRule<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadrature;\n-499 typedef Dune::QuadratureRules<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadratureRules;\n-500\n-501 for (unsigned int f=0; f<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be(); ++f)\n-502 {\n-503 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f))\n-504 {\n-505 testBasisVal.resize(_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be());\n-506\n-507 const auto &geometry = refElement.template geometry< 1 >( f );\n-508 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );\n-509 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType,\n-2*_\bo_\br_\bd_\be_\br_\b_+2 );\n-510\n-511 const unsigned int quadratureSize = faceQuad.size();\n-512 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-513 {\n-514 if (dimension>1)\n-515 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->template evaluate<0>(faceQuad[qi].position\n-(),testBasisVal);\n-516 else\n-517 testBasisVal[0] = 1.;\n-518\n-519 computeFaceDofs( row,\n-520 testBasisVal,\n-521 func.evaluate( geometry.global( faceQuad[qi].position() ) ),\n-522 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs(f),\n-523 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bn_\bo_\br_\bm_\ba_\bl(f),\n-524 faceQuad[qi].weight(),\n-525 func);\n-526 }\n-527\n-528 row += _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be()*(dimension-1);\n-529 }\n-530 }\n-531\n-532 // element dofs\n-533 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-534 {\n-535 testBasisVal.resize(_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be());\n-536\n-537 typedef Dune::QuadratureRule Quadrature;\n-538 typedef Dune::QuadratureRules QuadratureRules;\n-539 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*_\bo_\br_\bd_\be_\br_\b_+1 );\n-540\n-541 const unsigned int quadratureSize = elemQuad.size();\n-542 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-543 {\n-544 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->template evaluate<0>(elemQuad[qi].position\n-(),testBasisVal);\n-545 computeInteriorDofs(row,\n-546 testBasisVal,\n-547 func.evaluate(elemQuad[qi].position()),\n-548 elemQuad[qi].weight(),\n-549 func );\n-550 }\n-551\n-552 row += _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be()*dimension;\n-553 }\n-554 assert(row==_\bs_\bi_\bz_\be());\n-555 }\n-556\n-557 private:\n-567 template \n-568 void computeEdgeDofs (unsigned int startRow,\n-569 const MVal &mVal,\n-570 const NedVal &nedVal,\n-571 const FieldVector &tangent,\n-572 const _\bF_\bi_\be_\bl_\bd &weight,\n-573 Matrix &matrix) const\n-574 {\n-575 const unsigned int endRow = startRow+mVal.size();\n-576 typename NedVal::const_iterator nedIter = nedVal.begin();\n-577 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)\n-578 {\n-579 _\bF_\bi_\be_\bl_\bd cFactor = (*nedIter)*tangent;\n-580 typename MVal::const_iterator mIter = mVal.begin();\n-581 for (unsigned int row = startRow; row!=endRow; ++mIter, ++row )\n-582 matrix.add(row,col, (weight*cFactor)*(*mIter) );\n-583\n-584 assert( mIter == mVal.end() );\n-585 }\n-586 }\n-587\n-598 template \n-599 void computeFaceDofs (unsigned int startRow,\n-600 const MVal &mVal,\n-601 const NedVal &nedVal,\n-602 const _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs& faceTangents,\n-603 const FieldVector &normal,\n-604 const _\bF_\bi_\be_\bl_\bd &weight,\n-605 Matrix &matrix) const\n-606 {\n-607 const unsigned int endRow = startRow+mVal.size()*(dimension-1);\n-608 typename NedVal::const_iterator nedIter = nedVal.begin();\n-609 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)\n-610 {\n-611 auto const& u=*nedIter;\n-612 auto const& n=normal;\n-613 FieldVector nedTimesNormal = { u[1]*n[2]-u[2]*n[1],\n-614 u[2]*n[0]-u[0]*n[2],\n-615 u[0]*n[1]-u[1]*n[0]};\n-616 typename MVal::const_iterator mIter = mVal.begin();\n-617 for (unsigned int row = startRow; row!=endRow; ++mIter)\n-618 {\n-619 for(int i=0; i\n-640 void computeInteriorDofs (unsigned int startRow,\n-641 const MVal &mVal,\n-642 const NedVal &nedVal,\n-643 _\bF_\bi_\be_\bl_\bd weight,\n-644 Matrix &matrix) const\n-645 {\n-646 const unsigned int endRow = startRow+mVal.size()*dimension;\n-647 typename NedVal::const_iterator nedIter = nedVal.begin();\n-648 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)\n-649 {\n-650 typename MVal::const_iterator mIter = mVal.begin();\n-651 for (unsigned int row = startRow; row!=endRow; ++mIter,row+=dimension )\n-652 for (unsigned int i=0; i\n-_\b6_\b6_\b6 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-667 {\n-_\b6_\b6_\b8 typedef _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bB_\bu_\bi_\bl_\bd_\be_\br;\n-_\b6_\b6_\b9 typedef const _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bO_\bb_\bj_\be_\bc_\bt;\n-_\b6_\b7_\b0 typedef std::size_t _\bK_\be_\by;\n-_\b6_\b7_\b1 typedef typename std::remove_const::type _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt;\n-672\n-673 template \n-_\b6_\b7_\b4 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n-675 {\n-676 if ( !supports(key) )\n-677 return 0;\n-678 _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt *interpol = new _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt();\n-679 interpol->template build(key);\n-680 return interpol;\n-681 }\n-682\n-683 template \n-_\b6_\b8_\b4 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs( const _\bK_\be_\by &key )\n-685 {\n-686 GeometryType gt = geometryId;\n-687 return gt.isTriangle() || gt.isTetrahedron() ;\n-688 }\n-_\b6_\b8_\b9 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-690 };\n-691\n-692} // namespace Dune\n-693\n-694#endif // #ifndef\n-DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bh_\be_\bl_\bp_\be_\br_\b._\bh_\bh\n+67#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:667\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:674\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const NedelecL2Interpolation< dim, Field > Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:669\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\bu_\bi_\bl_\bd_\be_\br\n-NedelecL2InterpolationBuilder< dim, Field > Builder\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:668\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-std::size_t Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:670\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n-static bool supports(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:684\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt\n-std::remove_const< Object >::type NonConstObject\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:671\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:689\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br\n-LocalCoefficientsContainer(const Setter &setter)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(const unsigned int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bC_\bo_\bn_\bt_\ba_\bi_\bn_\be_\br_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n-static bool supports(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const LocalCoefficientsContainer Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-std::size_t Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:114\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs\n-TestEdgeBasis * testEdgeBasis(unsigned int e) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:191\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\b~_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-~NedelecL2InterpolationBuilder()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:141\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:155\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs\n-TestBasisFactory::Object TestBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:119\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\ba_\bn_\bg_\be_\bn_\bt\n-FieldVector< Field, dimension > Tangent\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs\n-TestFaceBasisFactory::Object TestFaceBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:123\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs\n-TestFaceBasis * testFaceBasis(unsigned int f) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:184\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs\n-TestEdgeBasisFactory::Object TestEdgeBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:127\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl\n-FieldVector< Field, dimension > Normal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n-void build(std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:216\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-OrthonormalBasisFactory< dimension, Field > TestBasisFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:118\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-OrthonormalBasisFactory< dimension-1, Field > TestFaceBasisFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:122\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs\n-const FaceTangents & faceTangents(unsigned int f) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:203\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bf_\ba_\bc_\be_\bS_\bi_\bz_\be\n-unsigned int faceSize() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:166\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs\n-TestBasis * testBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:178\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs\n-std::array< FieldVector< Field, dimension >, dim-1 > FaceTangents\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:134\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-OrthonormalBasisFactory< 1, Field > TestEdgeBasisFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:126\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\be_\bd_\bg_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt\n-const Tangent & edgeTangent(unsigned int e) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:197\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-NedelecL2InterpolationBuilder(NedelecL2InterpolationBuilder &&)=delete\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:160\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\be_\bd_\bg_\be_\bS_\bi_\bz_\be\n-unsigned int edgeSize() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:172\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd\n-unsigned int topologyId() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:150\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-NedelecL2InterpolationBuilder(const NedelecL2InterpolationBuilder &)=delete\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:115\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br\n-NedelecL2InterpolationBuilder()=default\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bB_\bu_\bi_\bl_\bd_\be_\br_\b:_\b:_\bn_\bo_\br_\bm_\ba_\bl\n-const Normal & normal(unsigned int f) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:209\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-An L2-based interpolation for Nedelec.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:364\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs\n-Builder::FaceTangents FaceTangents\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:371\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-F Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:369\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:403\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(typename Base::template Helper< Func, Container, type > &func)\n-const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:451\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\br_\bd_\be_\br_\b_\n-std::size_t order_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:661\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bu_\bi_\bl_\bd_\be_\br\n-NedelecL2InterpolationBuilder< dimension, Field > Builder\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:370\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\bi_\bz_\be_\b_\n-std::size_t size_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:662\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-NedelecL2Interpolation()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:373\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const Function &function, Vector &coefficients) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:381\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n-void build(std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:409\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:399\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs\n-void setLocalKeys(std::vector< LocalKey > &keys) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:426\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_\n-Builder builder_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:660\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalbasis.hh:57\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br_\b:_\b:_\bH_\be_\bl_\bp_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:113\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT02DLocalInterpolation(std::bitset< 3 > s=0)\n+Constructor with given set of edge orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelecsimplexbasis.hh File Reference\n+dune-localfunctions: raviartthomas0prismlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    nedelecsimplexbasis.hh File Reference
    \n+
    raviartthomas0prismlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/localfunctions/utility/defaultbasisfactory.hh>
    \n-#include "nedelecsimplexinterpolation.hh"
    \n-#include "nedelecsimplexprebasis.hh"
    \n+
    #include <numeric>
    \n+#include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    struct  Dune::NedelecBasisFactory< dim, SF, CF >
    class  Dune::RT0PrismLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference prism. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n- * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-nedelecsimplexbasis.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-#include \"_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-#include \"_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+raviartthomas0prismlocalbasis.hh File Reference\n+#include \n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference prism.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelecsimplexbasis.hh Source File\n+dune-localfunctions: raviartthomas0prismlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,55 +70,146 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    nedelecsimplexbasis.hh
    \n+
    raviartthomas0prismlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH
    \n-
    6
    \n-
    7#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH
    \n-
    8
    \n-
    9#include <fstream>
    \n-
    10#include <dune/common/exceptions.hh>
    \n-
    11
    \n-\n-\n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    38 template< unsigned int dim, class SF, class CF >
    \n-
    \n-\n-
    40 : public DefaultBasisFactory< NedelecPreBasisFactory<dim,CF>,
    \n-
    41 NedelecL2InterpolationFactory<dim,CF>,
    \n-
    42 dim,dim,SF,CF >
    \n-
    43 {};
    \n-
    \n-
    44}
    \n-
    45
    \n-
    46#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH
    \n-\n-\n-\n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH
    \n+
    7
    \n+
    8#include <numeric>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \n+
    13#include "../../common/localbasis.hh"
    \n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    26 template<class D, class R>
    \n+
    \n+\n+
    28 {
    \n+
    29
    \n+
    30 public:
    \n+
    31 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n+
    32 Dune::FieldMatrix<R,3,3> > Traits;
    \n+
    33
    \n+
    \n+
    39 RT0PrismLocalBasis (std::bitset<5> s = 0)
    \n+
    40 {
    \n+
    41 for (size_t i=0; i<size(); i++)
    \n+
    42 sign[i] = s[i] ? -1.0 : 1.0;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+
    46 unsigned int size () const
    \n+
    47 {
    \n+
    48 return 5;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    57 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    58 std::vector<typename Traits::RangeType>& out) const
    \n+
    59 {
    \n+
    60 out.resize(5);
    \n+
    61
    \n+
    62 out[0] = { in[0], -1.0 + in[1], 0.0};
    \n+
    63
    \n+
    64 out[1] = { -1.0 + in[0], in[1], 0.0};
    \n+
    65
    \n+
    66 out[2] = { in[0], in[1], 0.0};
    \n+
    67
    \n+
    68 out[3] = { 0.0, 0.0, -2.0 + 2.0*in[2]};
    \n+
    69
    \n+
    70 out[4] = { 0.0, 0.0, 2.0*in[2]};
    \n+
    71
    \n+
    72 for (std::size_t i=0; i<out.size(); i++)
    \n+
    73 out[i] *= sign[i];
    \n+
    74
    \n+
    75 }
    \n+
    \n+
    76
    \n+
    \n+
    83 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    84 std::vector<typename Traits::JacobianType>& out) const
    \n+
    85 {
    \n+
    86 out.resize(5);
    \n+
    87
    \n+
    88 for(int i=0; i<size(); i++)
    \n+
    89 for(int j=0; j<3; j++)
    \n+
    90 out[i][j] = {0.0, 0.0, 0.0};
    \n+
    91
    \n+
    92 out[0][0][0] = sign[0];
    \n+
    93 out[0][1][1] = sign[0];
    \n+
    94
    \n+
    95 out[1][0][0] = sign[1];
    \n+
    96 out[1][1][1] = sign[1];
    \n+
    97
    \n+
    98 out[2][0][0] = sign[2];
    \n+
    99 out[2][1][1] = sign[2];
    \n+
    100
    \n+
    101 out[3][2][2] = sign[3]*(2.0);
    \n+
    102
    \n+
    103 out[4][2][2] = sign[4]*(2.0);
    \n+
    104 }
    \n+
    \n+
    105
    \n+
    \n+
    107 void partial (const std::array<unsigned int, 3>& order,
    \n+
    108 const typename Traits::DomainType& in, // position
    \n+
    109 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    110 {
    \n+
    111 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    112 if (totalOrder == 0) {
    \n+
    113 evaluateFunction(in, out);
    \n+
    114 } else {
    \n+
    115 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    116 }
    \n+
    117 }
    \n+
    \n+
    118
    \n+
    \n+
    120 unsigned int order () const
    \n+
    121 {
    \n+
    122 return 1;
    \n+
    123 }
    \n+
    \n+
    124
    \n+
    125 private:
    \n+
    126 std::array<R,5> sign;
    \n+
    127 };
    \n+
    \n+
    128}
    \n+
    129#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition nedelecsimplexbasis.hh:43
    \n-
    Definition defaultbasisfactory.hh:38
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalbasis.hh:28
    \n+
    RT0PrismLocalBasis(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0prismlocalbasis.hh:39
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas0prismlocalbasis.hh:57
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas0prismlocalbasis.hh:46
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas0prismlocalbasis.hh:120
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas0prismlocalbasis.hh:83
    \n+
    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 raviartthomas0prismlocalbasis.hh:107
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas0prismlocalbasis.hh:32
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,49 +1,157 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n- * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-nedelecsimplexbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n+raviartthomas0prismlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH\n-6\n-7#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH\n-8\n-9#include \n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh>\n-13#include \"_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-14#include \"_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-38 template< unsigned int dim, class SF, class CF >\n-_\b3_\b9 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-40 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< NedelecPreBasisFactory,\n-41 NedelecL2InterpolationFactory,\n-42 dim,dim,SF,CF >\n-43 {};\n-44}\n-45\n-46#endif // #ifndef\n-DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH\n-_\bd_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\n-_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\br_\be_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH\n+7\n+8#include \n+9#include \n+10\n+11#include \n+12\n+13#include \"../../common/localbasis.hh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+26 template\n+_\b2_\b7 class _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+28 {\n+29\n+30 public:\n+31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n+FieldVector,\n+_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b9 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<5> s = 0)\n+40 {\n+41 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n+42 sign[i] = s[i] ? -1.0 : 1.0;\n+43 }\n+44\n+_\b4_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+47 {\n+48 return 5;\n+49 }\n+50\n+_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+58 std::vector& out) const\n+59 {\n+60 out.resize(5);\n+61\n+62 out[0] = { in[0], -1.0 + in[1], 0.0};\n+63\n+64 out[1] = { -1.0 + in[0], in[1], 0.0};\n+65\n+66 out[2] = { in[0], in[1], 0.0};\n+67\n+68 out[3] = { 0.0, 0.0, -2.0 + 2.0*in[2]};\n+69\n+70 out[4] = { 0.0, 0.0, 2.0*in[2]};\n+71\n+72 for (std::size_t i=0; i& out) const\n+85 {\n+86 out.resize(5);\n+87\n+88 for(int i=0; i<_\bs_\bi_\bz_\be(); i++)\n+89 for(int j=0; j<3; j++)\n+90 out[i][j] = {0.0, 0.0, 0.0};\n+91\n+92 out[0][0][0] = sign[0];\n+93 out[0][1][1] = sign[0];\n+94\n+95 out[1][0][0] = sign[1];\n+96 out[1][1][1] = sign[1];\n+97\n+98 out[2][0][0] = sign[2];\n+99 out[2][1][1] = sign[2];\n+100\n+101 out[3][2][2] = sign[3]*(2.0);\n+102\n+103 out[4][2][2] = sign[4]*(2.0);\n+104 }\n+105\n+_\b1_\b0_\b7 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+108 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+109 std::vector& out) const // return value\n+110 {\n+111 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+112 if (totalOrder == 0) {\n+113 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+114 } else {\n+115 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+116 }\n+117 }\n+118\n+_\b1_\b2_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n+121 {\n+122 return 1;\n+123 }\n+124\n+125 private:\n+126 std::array sign;\n+127 };\n+128}\n+129#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference prism.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT0PrismLocalBasis(std::bitset< 5 > s=0)\n+Make set number s, where 0 <= s < 32.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:120\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:83\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n+3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:32\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelecsimplexprebasis.hh File Reference\n+dune-localfunctions: raviartthomas0prismlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,38 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    nedelecsimplexprebasis.hh File Reference
    \n+
    raviartthomas0prismlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <utility>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::NedelecPreBasisFactory< dim, Field >
     
    struct  Dune::NedelecPreBasisFactory< dim, Field >::EvaluationBasisFactory< dd, FF >
     
    struct  Dune::NedelecVecMatrix< geometryId, Field >
    class  Dune::RT0PrismLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on prisms. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n- * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-nedelecsimplexprebasis.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+raviartthomas0prismlocalcoefficients.hh File Reference\n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<\n- _\bd_\bd_\b,_\b _\bF_\bF_\b _\b>\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Raviart-Thomas-1 elements on prisms. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelecsimplexprebasis.hh Source File\n+dune-localfunctions: raviartthomas0prismlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,353 +70,75 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    nedelecsimplexprebasis.hh
    \n+
    raviartthomas0prismlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <utility>
    \n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n
    10
    \n-
    11#include <dune/geometry/type.hh>
    \n+
    11#include "../../common/localkey.hh"
    \n
    12
    \n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17 template < GeometryType::Id geometryId, class Field >
    \n-
    18 struct NedelecVecMatrix;
    \n-
    19
    \n-
    23 template <unsigned int dim, class Field>
    \n-
    \n-\n-
    25 {
    \n-\n-
    27 typedef typename MBasisFactory::Object MBasis;
    \n-\n-\n-
    30
    \n-
    31 typedef const Basis Object;
    \n-
    32 typedef std::size_t Key;
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for(std::size_t i=0; i< size(); i++)
    \n+
    31 li[i] = LocalKey(i,1,0);
    \n+
    32 }
    \n+
    \n
    33
    \n-
    34 template <unsigned int dd, class FF>
    \n-
    \n-\n-
    36 {
    \n-\n-
    38 };
    \n+
    \n+
    35 std::size_t size () const
    \n+
    36 {
    \n+
    37 return 5;
    \n+
    38 }
    \n
    \n
    39
    \n-
    40 template< GeometryType::Id geometryId >
    \n
    \n-
    41 static Object *create ( Key order )
    \n-
    42 {
    \n-
    43 /*
    \n-
    44 * The nedelec parameter begins at 1.
    \n-
    45 * This is the numbering used by J.C. Nedelec himself.
    \n-
    46 * See "Mixed Finite Elements in \\R^3" published in 1980.
    \n-
    47 *
    \n-
    48 * This construction is based on the construction of Raviart-Thomas elements.
    \n-
    49 * There the numbering starts at 0.
    \n-
    50 * Because of this we reduce the order internally by 1.
    \n-
    51 */
    \n-
    52 order--;
    \n-\n-
    54 MBasis *mbasis = MBasisFactory::template create<geometryId>(order+1);
    \n-
    55 std::remove_const_t<Object>* tmBasis = new std::remove_const_t<Object>(*mbasis);
    \n-
    56 tmBasis->fill(vecMatrix);
    \n-
    57 return tmBasis;
    \n-
    58 }
    \n-
    \n-
    59 static void release( Object *object ) { delete object; }
    \n-
    60 };
    \n-
    \n-
    61
    \n-
    62 template <GeometryType::Id geometryId, class Field>
    \n-
    \n-\n-
    64 {
    \n-
    65 static constexpr GeometryType geometry = geometryId;
    \n-
    66 static const unsigned int dim = geometry.dim();
    \n-\n-\n-
    \n-
    69 NedelecVecMatrix(std::size_t order)
    \n-
    70 {
    \n-
    71 /*
    \n-
    72 * Construction of Nedelec elements see "Mixed Finite Elements in \\R^3" by Nedelec, 1980.
    \n-
    73 *
    \n-
    74 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree $\\leq k$.
    \n-
    75 * The space of Nedelec functions in $n$ dimensions with index $k$ is defined as
    \n-
    76 *
    \n-
    77 * \\begin{equation*}
    \n-
    78 * Ned_k := (\\P_{n,k-1})^n \\oplus \\{p \\in (\\P_{n,k})^n: <p,x>=0 \\}
    \n-
    79 * \\end{equation*}
    \n-
    80 * with $x=(x,y)$ in two dimensions and $x=(x,y,z)$ in three dimensions.
    \n-
    81 *
    \n-
    82 * For $Ned_k$ holds
    \n-
    83 * \\begin{equation*}
    \n-
    84 * (\\P_{n,k-1})^n \\subset Ned_k \\subset (\\P_{n,k})^n.
    \n-
    85 * \\end{equation*}
    \n-
    86 *
    \n-
    87 * We construct $(\\P_{n,k})^n$ and and only use the monomials contained in $Ned$.
    \n-
    88 *
    \n-
    89 */
    \n-
    90 if( (dim!=2 && dim!=3) || !geometry.isSimplex())
    \n-
    91 DUNE_THROW(Dune::NotImplemented,"High order nedelec elements are only supported by simplices in 2d and 3d");
    \n-
    92
    \n-
    93 MIBasis basis(order+1);
    \n-
    94 FieldVector< MI, dim > x;
    \n-
    95 /*
    \n-
    96 * Init MultiIndices
    \n-
    97 * x[0]=(1,0,0) x
    \n-
    98 * x[1]=(0,1,0) y
    \n-
    99 * x[2]=(0,0,1) z
    \n-
    100 */
    \n-
    101 for( unsigned int i = 0; i < dim; ++i )
    \n-
    102 x[i].set(i,1);
    \n-
    103 std::vector< MI > val( basis.size() );
    \n-
    104
    \n-
    105 // val now contains all monomials in $n$ dimensions with degree $\\leq order+1$
    \n-
    106 basis.evaluate( x, val );
    \n-
    107
    \n-
    108 col_ = basis.size();
    \n-
    109
    \n-
    110 // get $\\dim (\\P_{n,order-1})$
    \n-
    111 unsigned int notHomogen = 0;
    \n-
    112 if (order>0)
    \n-
    113 notHomogen = basis.sizes()[order-1];
    \n-
    114
    \n-
    115 // the number of basis functions for the set of homogeneous polynomials with degree $order$
    \n-
    116 unsigned int homogen = basis.sizes()[order]-notHomogen;
    \n-
    117
    \n-
    118 /*
    \n-
    119 * 2D:
    \n-
    120 * \\begin{equation*}
    \n-
    121 * Ned_{order} = (\\P_{order-1})^2 \\oplus (-y,x)^T \\widetilde \\P_{order-1}
    \n-
    122 * \\end{equation*}
    \n-
    123 *
    \n-
    124 * It gets more complicated in higher dimensions.
    \n-
    125 *
    \n-
    126 * 3D:
    \n-
    127 * \\begin{equation*}
    \n-
    128 * Ned_{order} = (\\P_{n,order-1})^3 \\oplus (z,0,-x)^T \\widetilde \\P_{n,order-1} \\oplus (-y,x,0)^T \\widetilde \\P_{n,order-1} \\oplus (0,-z,y)^T \\widetilde \\P_{n-1,order-1}
    \n-
    129 * \\end{equation*}
    \n-
    130 *
    \n-
    131 * Note the last term. The index $n-1$ is on purpose.
    \n-
    132 * Else i.e. k=2
    \n-
    133 *
    \n-
    134 * (0,z,-y)^T x = (z,0,-x)^T y - (y,-x,0)^T z.
    \n-
    135 *
    \n-
    136 */
    \n-
    137
    \n-
    138 /*
    \n-
    139 * compute the number of rows for the coefficient matrix
    \n-
    140 *
    \n-
    141 * row_ = dim* \\dim Ned_{order}
    \n-
    142 */
    \n-
    143 if (dim == 2)
    \n-
    144 row_ = (notHomogen*dim+homogen*(dim+1))*dim;
    \n-
    145 else if (dim==3)
    \n-
    146 {
    \n-
    147 // get dim \\P_{n-1,order-1}
    \n-
    148 int homogenTwoVariables = 0;
    \n-
    149 for( int w = notHomogen; w<notHomogen + homogen; w++)
    \n-
    150 if (val[w].z(0)==0)
    \n-
    151 homogenTwoVariables++;
    \n-
    152 row_ = (notHomogen*dim+homogen*(dim+2) + homogenTwoVariables)*dim;
    \n-
    153 }
    \n-
    154
    \n-
    155 mat_ = new Field*[row_];
    \n-
    156 int row = 0;
    \n-
    157
    \n-
    158 /* Assign the correct values for the nonhomogeneous polymonials $p\\in (\\P_{n,order-1})^dim$
    \n-
    159 * A basis function is represented by $dim$ rows.
    \n-
    160 */
    \n-
    161 for (unsigned int i=0; i<notHomogen+homogen; ++i)
    \n-
    162 {
    \n-
    163 for (unsigned int r=0; r<dim; ++r)
    \n-
    164 {
    \n-
    165 for (unsigned int rr=0; rr<dim; ++rr)
    \n-
    166 {
    \n-
    167 // init row to zero
    \n-
    168 mat_[row] = new Field[col_];
    \n-
    169 for (unsigned int j=0; j<col_; ++j)
    \n-
    170 mat_[row][j] = 0.;
    \n-
    171
    \n-
    172 if (r==rr)
    \n-
    173 mat_[row][i] = 1.;
    \n-
    174 ++row;
    \n-
    175 }
    \n-
    176 }
    \n-
    177 }
    \n-
    178
    \n-
    179 /* Assign the correct values for the homogeneous polymonials $p\\in Ned_{order} \\backslash (\\P_{n,order-1})^dim$
    \n-
    180 * A basis function is represented by $dim$ rows.
    \n-
    181 */
    \n-
    182 for (unsigned int i=0; i<homogen; ++i)
    \n-
    183 {
    \n-
    184 // get a monomial $ p \\in \\P_{n,order}\\backslash \\P_{n,order-1}$
    \n-
    185 MI xval = val[notHomogen+i];
    \n-
    186 if(dim==2)
    \n-
    187 {
    \n-
    188 for (unsigned int r=0; r<dim; ++r)
    \n-
    189 {
    \n-
    190 // init rows to zero
    \n-
    191 mat_[row+r] = new Field[col_];
    \n-
    192 for (unsigned int j=0; j<col_; ++j)
    \n-
    193 mat_[row+r][j] = 0.;
    \n-
    194 }
    \n-
    195
    \n-
    196 /* set $(-y,x)^T p$ with a homogeneous monomial $p$
    \n-
    197 *
    \n-
    198 * The loop over the monomials is needed to obtain the corresponding column index.
    \n-
    199 */
    \n-
    200 for (int w=homogen+notHomogen; w<val.size(); ++w)
    \n-
    201 {
    \n-
    202 if (val[w] == xval*x[0])
    \n-
    203 mat_[row+1][w] = 1.;
    \n-
    204 if (val[w] == xval*x[1])
    \n-
    205 mat_[row][w] = -1.;
    \n-
    206 }
    \n-
    207 row +=dim;
    \n-
    208 }
    \n-
    209 else if(dim==3)
    \n-
    210 {
    \n-
    211 int skipLastDim = xval.z(0)>0;
    \n-
    212 /*
    \n-
    213 * Init 9 rows to zero.
    \n-
    214 * If the homogeneous monomial has a positive x-exponent (0,-z,y) gets skipped ( see example for the Nedelec space in 3D )
    \n-
    215 * In this case only 6 rows get initialised.
    \n-
    216 */
    \n-
    217 for (unsigned int r=0; r<dim*(dim-skipLastDim); ++r)
    \n-
    218 {
    \n-
    219 // init rows to zero
    \n-
    220 mat_[row+r] = new Field[col_];
    \n-
    221 for (unsigned int j=0; j<col_; ++j)
    \n-
    222 mat_[row+r][j] = 0.;
    \n-
    223 }
    \n-
    224
    \n-
    225 /*
    \n-
    226 * first $dim$ rows are for (z,0,-x)
    \n-
    227 *
    \n-
    228 * second $dim$ rows are for (-y,x,0)
    \n-
    229 *
    \n-
    230 * third $dim$ rows are for (0,-z,y)
    \n-
    231 *
    \n-
    232 */
    \n-
    233 for (unsigned int r=0; r<dim - skipLastDim; ++r)
    \n-
    234 {
    \n-
    235 int index = (r+dim-1)%dim;
    \n-
    236 for (int w=homogen+notHomogen; w<val.size(); ++w)
    \n-
    237 {
    \n-
    238 if (val[w] == xval*x[index])
    \n-
    239 mat_[row+r][w] = 1.;
    \n-
    240 if (val[w] == xval*x[r])
    \n-
    241 mat_[row+index][w] = -1.;
    \n-
    242 }
    \n-
    243 row +=dim;
    \n-
    244 }
    \n-
    245
    \n-
    246 }
    \n-
    247 }
    \n-
    248 }
    \n-
    \n-
    249
    \n-
    \n-\n-
    251 {
    \n-
    252 for (unsigned int i=0; i<rows(); ++i) {
    \n-
    253 delete [] mat_[i];
    \n-
    254 }
    \n-
    255 delete [] mat_;
    \n-
    256 }
    \n-
    \n-
    257
    \n-
    \n-
    258 unsigned int cols() const {
    \n-
    259 return col_;
    \n-
    260 }
    \n-
    \n-
    261
    \n-
    \n-
    262 unsigned int rows() const {
    \n-
    263 return row_;
    \n-
    264 }
    \n-
    \n-
    265
    \n-
    266 template <class Vector>
    \n-
    \n-
    267 void row( const unsigned int row, Vector &vec ) const
    \n-
    268 {
    \n-
    269 const unsigned int N = cols();
    \n-
    270 assert( vec.size() == N );
    \n-
    271 for (unsigned int i=0; i<N; ++i)
    \n-
    272 field_cast(mat_[row][i],vec[i]);
    \n-
    273 }
    \n-
    \n-
    274
    \n-
    275 unsigned int row_,col_;
    \n-
    276 Field **mat_;
    \n-
    277 };
    \n-
    \n-
    278
    \n-
    279
    \n-
    280}
    \n-
    281#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH
    \n-\n+
    41 const LocalKey& localKey (std::size_t i) const
    \n+
    42 {
    \n+
    43 return li[i];
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    46 private:
    \n+
    47 std::vector<LocalKey> li;
    \n+
    48 };
    \n+
    \n+
    49}
    \n+
    50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    Definition nedelecsimplexprebasis.hh:64
    \n-
    NedelecVecMatrix(std::size_t order)
    Definition nedelecsimplexprebasis.hh:69
    \n-
    MultiIndex< dim, Field > MI
    Definition nedelecsimplexprebasis.hh:67
    \n-
    unsigned int row_
    Definition nedelecsimplexprebasis.hh:275
    \n-
    unsigned int cols() const
    Definition nedelecsimplexprebasis.hh:258
    \n-
    ~NedelecVecMatrix()
    Definition nedelecsimplexprebasis.hh:250
    \n-
    MonomialBasis< geometryId, MI > MIBasis
    Definition nedelecsimplexprebasis.hh:68
    \n-
    unsigned int col_
    Definition nedelecsimplexprebasis.hh:275
    \n-
    static const unsigned int dim
    Definition nedelecsimplexprebasis.hh:66
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition nedelecsimplexprebasis.hh:267
    \n-
    static constexpr GeometryType geometry
    Definition nedelecsimplexprebasis.hh:65
    \n-
    unsigned int rows() const
    Definition nedelecsimplexprebasis.hh:262
    \n-
    Field ** mat_
    Definition nedelecsimplexprebasis.hh:276
    \n-
    Definition nedelecsimplexprebasis.hh:25
    \n-
    static void release(Object *object)
    Definition nedelecsimplexprebasis.hh:59
    \n-
    MBasisFactory::Object MBasis
    Definition nedelecsimplexprebasis.hh:27
    \n-
    static Object * create(Key order)
    Definition nedelecsimplexprebasis.hh:41
    \n-
    PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis
    Definition nedelecsimplexprebasis.hh:29
    \n-
    const Basis Object
    Definition nedelecsimplexprebasis.hh:31
    \n-
    StandardEvaluator< MBasis > EvalMBasis
    Definition nedelecsimplexprebasis.hh:28
    \n-
    MonomialBasisProvider< dim, Field > MBasisFactory
    Definition nedelecsimplexprebasis.hh:26
    \n-
    std::size_t Key
    Definition nedelecsimplexprebasis.hh:32
    \n-
    Definition nedelecsimplexprebasis.hh:36
    \n-
    MonomialBasisProvider< dd, FF > Type
    Definition nedelecsimplexprebasis.hh:37
    \n-
    Definition basisevaluator.hh:131
    \n-
    Definition monomialbasis.hh:440
    \n-
    unsigned int size() const
    Definition monomialbasis.hh:476
    \n-
    void evaluate(const unsigned int deriv, const DomainVector &x, Field *const values) const
    Definition monomialbasis.hh:498
    \n-
    const unsigned int * sizes(unsigned int order) const
    Definition monomialbasis.hh:465
    \n-
    Definition monomialbasis.hh:780
    \n-
    Definition multiindex.hh:38
    \n-
    int z(int i) const
    Definition multiindex.hh:92
    \n-
    Definition polynomialbasis.hh:348
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for Raviart-Thomas-1 elements on prisms.
    Definition raviartthomas0prismlocalcoefficients.hh:24
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0prismlocalcoefficients.hh:41
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0prismlocalcoefficients.hh:35
    \n+
    RT0PrismLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0prismlocalcoefficients.hh:28
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,406 +1,73 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n- * _\bn_\be_\bd_\be_\bl_\be_\bc_\bs_\bi_\bm_\bp_\bl_\be_\bx\n-nedelecsimplexprebasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n+raviartthomas0prismlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9#include \n+8#include \n+9#include \n 10\n-11#include \n+11#include \"../../common/localkey.hh\"\n 12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17 template < GeometryType::Id geometryId, class Field >\n-18 struct NedelecVecMatrix;\n-19\n-23 template \n-_\b2_\b4 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-25 {\n-_\b2_\b6 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bM_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b2_\b7 typedef typename MBasisFactory::Object _\bM_\bB_\ba_\bs_\bi_\bs;\n-_\b2_\b8 typedef _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b<_\bM_\bB_\ba_\bs_\bi_\bs_\b> _\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs;\n-_\b2_\b9 typedef _\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs_\b,_\bS_\bp_\ba_\br_\bs_\be_\bC_\bo_\be_\bf_\bf_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b,_\bd_\bi_\bm_\b> >\n-_\bB_\ba_\bs_\bi_\bs;\n-30\n-_\b3_\b1 typedef const _\bB_\ba_\bs_\bi_\bs _\bO_\bb_\bj_\be_\bc_\bt;\n-_\b3_\b2 typedef std::size_t _\bK_\be_\by;\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+_\b2_\b3 class _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+24 {\n+25\n+26 public:\n+_\b2_\b8 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(_\bs_\bi_\bz_\be())\n+29 {\n+30 for(std::size_t i=0; i< _\bs_\bi_\bz_\be(); i++)\n+31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+32 }\n 33\n-34 template \n-_\b3_\b5 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+_\b3_\b5 std::size_t _\bs_\bi_\bz_\be () const\n 36 {\n-_\b3_\b7 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br_\b<_\bd_\bd_\b,_\bF_\bF_\b> _\bT_\by_\bp_\be;\n-38 };\n+37 return 5;\n+38 }\n 39\n-40 template< GeometryType::Id geometryId >\n-_\b4_\b1 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( _\bK_\be_\by order )\n+_\b4_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n 42 {\n-43 /*\n-44 * The nedelec parameter begins at 1.\n-45 * This is the numbering used by J.C. Nedelec himself.\n-46 * See \"Mixed Finite Elements in \\R^3\" published in 1980.\n-47 *\n-48 * This construction is based on the construction of Raviart-Thomas elements.\n-49 * There the numbering starts at 0.\n-50 * Because of this we reduce the order internally by 1.\n-51 */\n-52 order--;\n-53 _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bF_\bi_\be_\bl_\bd_\b> vecMatrix(order);\n-54 _\bM_\bB_\ba_\bs_\bi_\bs *mbasis = MBasisFactory::template create(order+1);\n-55 std::remove_const_t* tmBasis = new std::remove_const_t\n-(*mbasis);\n-56 tmBasis->fill(vecMatrix);\n-57 return tmBasis;\n-58 }\n-_\b5_\b9 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-60 };\n-61\n-62 template \n-_\b6_\b3 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n-64 {\n-_\b6_\b5 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n-_\b6_\b6 static const unsigned int _\bd_\bi_\bm = _\bg_\be_\bo_\bm_\be_\bt_\br_\by._\bd_\bi_\bm();\n-_\b6_\b7 typedef _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> _\bM_\bI;\n-_\b6_\b8 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bg_\be_\bo_\bm_\be_\bt_\br_\by_\bI_\bd_\b,_\bM_\bI_\b> _\bM_\bI_\bB_\ba_\bs_\bi_\bs;\n-_\b6_\b9 _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx(std::size_t order)\n-70 {\n-71 /*\n-72 * Construction of Nedelec elements see \"Mixed Finite Elements in \\R^3\" by\n-Nedelec, 1980.\n-73 *\n-74 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree\n-$\\leq k$.\n-75 * The space of Nedelec functions in $n$ dimensions with index $k$ is defined\n-as\n-76 *\n-77 * \\begin{equation*}\n-78 * Ned_k := (\\P_{n,k-1})^n \\oplus \\{p \\in (\\P_{n,k})^n: =0 \\}\n-79 * \\end{equation*}\n-80 * with $x=(x,y)$ in two dimensions and $x=(x,y,z)$ in three dimensions.\n-81 *\n-82 * For $Ned_k$ holds\n-83 * \\begin{equation*}\n-84 * (\\P_{n,k-1})^n \\subset Ned_k \\subset (\\P_{n,k})^n.\n-85 * \\end{equation*}\n-86 *\n-87 * We construct $(\\P_{n,k})^n$ and and only use the monomials contained in\n-$Ned$.\n-88 *\n-89 */\n-90 if( (_\bd_\bi_\bm!=2 && _\bd_\bi_\bm!=3) || !_\bg_\be_\bo_\bm_\be_\bt_\br_\by.isSimplex())\n-91 DUNE_THROW(Dune::NotImplemented,\"High order nedelec elements are only\n-supported by simplices in 2d and 3d\");\n-92\n-93 _\bM_\bI_\bB_\ba_\bs_\bi_\bs basis(order+1);\n-94 FieldVector< MI, dim > x;\n-95 /*\n-96 * Init MultiIndices\n-97 * x[0]=(1,0,0) x\n-98 * x[1]=(0,1,0) y\n-99 * x[2]=(0,0,1) z\n-100 */\n-101 for( unsigned int i = 0; i < _\bd_\bi_\bm; ++i )\n-102 x[i].set(i,1);\n-103 std::vector< MI > val( basis._\bs_\bi_\bz_\be() );\n-104\n-105 // val now contains all monomials in $n$ dimensions with degree $\\leq\n-order+1$\n-106 basis._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( x, val );\n-107\n-108 _\bc_\bo_\bl_\b_ = basis._\bs_\bi_\bz_\be();\n-109\n-110 // get $\\dim (\\P_{n,order-1})$\n-111 unsigned int notHomogen = 0;\n-112 if (order>0)\n-113 notHomogen = basis._\bs_\bi_\bz_\be_\bs()[order-1];\n-114\n-115 // the number of basis functions for the set of homogeneous polynomials\n-with degree $order$\n-116 unsigned int homogen = basis._\bs_\bi_\bz_\be_\bs()[order]-notHomogen;\n-117\n-118 /*\n-119 * 2D:\n-120 * \\begin{equation*}\n-121 * Ned_{order} = (\\P_{order-1})^2 \\oplus (-y,x)^T \\widetilde \\P_{order-1}\n-122 * \\end{equation*}\n-123 *\n-124 * It gets more complicated in higher dimensions.\n-125 *\n-126 * 3D:\n-127 * \\begin{equation*}\n-128 * Ned_{order} = (\\P_{n,order-1})^3 \\oplus (z,0,-x)^T \\widetilde \\P_\n-{n,order-1} \\oplus (-y,x,0)^T \\widetilde \\P_{n,order-1} \\oplus (0,-z,y)^T\n-\\widetilde \\P_{n-1,order-1}\n-129 * \\end{equation*}\n-130 *\n-131 * Note the last term. The index $n-1$ is on purpose.\n-132 * Else i.e. k=2\n-133 *\n-134 * (0,z,-y)^T x = (z,0,-x)^T y - (y,-x,0)^T z.\n-135 *\n-136 */\n-137\n-138 /*\n-139 * compute the number of rows for the coefficient matrix\n-140 *\n-141 * row_ = dim* \\dim Ned_{order}\n-142 */\n-143 if (_\bd_\bi_\bm == 2)\n-144 _\br_\bo_\bw_\b_ = (notHomogen*_\bd_\bi_\bm+homogen*(_\bd_\bi_\bm+1))*_\bd_\bi_\bm;\n-145 else if (_\bd_\bi_\bm==3)\n-146 {\n-147 // get dim \\P_{n-1,order-1}\n-148 int homogenTwoVariables = 0;\n-149 for( int w = notHomogen; w0;\n-212 /*\n-213 * Init 9 rows to zero.\n-214 * If the homogeneous monomial has a positive x-exponent (0,-z,y) gets\n-skipped ( see example for the Nedelec space in 3D )\n-215 * In this case only 6 rows get initialised.\n-216 */\n-217 for (unsigned int r=0; r<_\bd_\bi_\bm*(_\bd_\bi_\bm-skipLastDim); ++r)\n-218 {\n-219 // init rows to zero\n-220 _\bm_\ba_\bt_\b_[_\br_\bo_\bw+r] = new Field[_\bc_\bo_\bl_\b_];\n-221 for (unsigned int j=0; j<_\bc_\bo_\bl_\b_; ++j)\n-222 _\bm_\ba_\bt_\b_[_\br_\bo_\bw+r][j] = 0.;\n-223 }\n-224\n-225 /*\n-226 * first $dim$ rows are for (z,0,-x)\n-227 *\n-228 * second $dim$ rows are for (-y,x,0)\n-229 *\n-230 * third $dim$ rows are for (0,-z,y)\n-231 *\n-232 */\n-233 for (unsigned int r=0; r<_\bd_\bi_\bm - skipLastDim; ++r)\n-234 {\n-235 int index = (r+_\bd_\bi_\bm-1)%_\bd_\bi_\bm;\n-236 for (int w=homogen+notHomogen; w\n-_\b2_\b6_\b7 void _\br_\bo_\bw( const unsigned int _\br_\bo_\bw, Vector &vec ) const\n-268 {\n-269 const unsigned int N = _\bc_\bo_\bl_\bs();\n-270 assert( vec.size() == N );\n-271 for (unsigned int i=0; i li;\n+48 };\n+49}\n+50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:64\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n-NedelecVecMatrix(std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\bI\n-MultiIndex< dim, Field > MI\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\b_\n-unsigned int row_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:275\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\bs\n-unsigned int cols() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:258\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\b~_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n-~NedelecVecMatrix()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:250\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bM_\bI_\bB_\ba_\bs_\bi_\bs\n-MonomialBasis< geometryId, MI > MIBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bc_\bo_\bl_\b_\n-unsigned int col_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:275\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bd_\bi_\bm\n-static const unsigned int dim\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw\n-void row(const unsigned int row, Vector &vec) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:267\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bg_\be_\bo_\bm_\be_\bt_\br_\by\n-static constexpr GeometryType geometry\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs\n-unsigned int rows() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:262\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bm_\ba_\bt_\b_\n-Field ** mat_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:276\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bB_\ba_\bs_\bi_\bs\n-MBasisFactory::Object MBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(Key order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const Basis Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bM_\bB_\ba_\bs_\bi_\bs\n-StandardEvaluator< MBasis > EvalMBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-MonomialBasisProvider< dim, Field > MBasisFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-std::size_t Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\bP_\br_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\by_\bp_\be\n-MonomialBasisProvider< dd, FF > Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basisevaluator.hh:131\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:440\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:476\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void evaluate(const unsigned int deriv, const DomainVector &x, Field *const\n-values) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:498\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be_\bs\n-const unsigned int * sizes(unsigned int order) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:465\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bP_\br_\bo_\bv_\bi_\bd_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomialbasis.hh:780\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b:_\b:_\bz\n-int z(int i) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn multiindex.hh:92\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bW_\bi_\bt_\bh_\bM_\ba_\bt_\br_\bi_\bx\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn polynomialbasis.hh:348\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on prisms.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT0PrismLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:28\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelec1stkindsimplex.hh File Reference\n+dune-localfunctions: raviartthomas0prismlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,32 @@\n \n \n \n \n \n \n \n
    \n \n-
    nedelec1stkindsimplex.hh File Reference
    \n+
    raviartthomas0prismlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+
    #include <vector>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::Nedelec1stKindSimplexLocalFiniteElement< D, R, dim, k >
     N\u00e9d\u00e9lec elements of the first kind for simplex elements. More...
    class  Dune::RT0PrismLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference prism. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-utf-8\n+us-ascii\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-nedelec1stkindsimplex.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+raviartthomas0prismlocalinterpolation.hh File Reference\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n-\u00a0 N\u00c3\u00a9d\u00c3\u00a9lec elements of the first kind for simplex elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference prism.\n+ _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelec1stkindsimplex.hh Source File\n+dune-localfunctions: raviartthomas0prismlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,423 +70,97 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    nedelec1stkindsimplex.hh
    \n+
    raviartthomas0prismlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <numeric>
    \n+
    8#include <vector>
    \n
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n-
    11#include <dune/common/fvector.hh>
    \n-
    12
    \n-
    13#include <dune/geometry/referenceelements.hh>
    \n-
    14#include <dune/geometry/type.hh>
    \n-
    15
    \n-\n-\n-\n-
    19
    \n-
    20namespace Dune
    \n-
    21{
    \n-
    22namespace Impl
    \n-
    23{
    \n-
    36 template<class D, class R, int dim, int k>
    \n-
    37 class Nedelec1stKindSimplexLocalBasis
    \n-
    38 {
    \n-
    39 // Number of edges of the reference simplex
    \n-
    40 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
    \n-
    41
    \n-
    42 public:
    \n-
    43 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,
    \n-
    44 R,dim,FieldVector<R,dim>,
    \n-
    45 FieldMatrix<R,dim,dim> >;
    \n-
    46
    \n-
    53 Nedelec1stKindSimplexLocalBasis()
    \n-
    54 {
    \n-
    55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
    \n-
    56 }
    \n-
    57
    \n-
    60 Nedelec1stKindSimplexLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
    \n-
    61 : Nedelec1stKindSimplexLocalBasis()
    \n-
    62 {
    \n-
    63 for (std::size_t i=0; i<edgeOrientation_.size(); i++)
    \n-
    64 edgeOrientation_[i] *= edgeOrientation[i] ? -1.0 : 1.0;
    \n-
    65 }
    \n-
    66
    \n-
    68 static constexpr unsigned int size()
    \n-
    69 {
    \n-
    70 static_assert(dim==2 || dim==3, "Nedelec shape functions are implemented only for 2d and 3d simplices.");
    \n-
    71 if (dim==2)
    \n-
    72 return k * (k+2);
    \n-
    73 if (dim==3)
    \n-
    74 return k * (k+2) * (k+3) / 2;
    \n-
    75 }
    \n-
    76
    \n-
    82 void evaluateFunction(const typename Traits::DomainType& in,
    \n-
    83 std::vector<typename Traits::RangeType>& out) const
    \n-
    84 {
    \n-
    85 static_assert(k==1, "Evaluating N\u00e9d\u00e9lec shape functions is implemented only for first order.");
    \n-
    86 out.resize(size());
    \n-
    87
    \n-
    88 if (dim==2)
    \n-
    89 {
    \n-
    90 // First-order N\u00e9d\u00e9lec shape functions on a triangle are of the form
    \n-
    91 //
    \n-
    92 // (a1, a2) + b(-x2, x1)^T, a_1, a_2, b \\in R
    \n-
    93 out[0] = {D(1) - in[1], in[0]};
    \n-
    94 out[1] = {in[1], -in[0]+D(1)};
    \n-
    95 out[2] = {-in[1], in[0]};
    \n-
    96 }
    \n-
    97
    \n-
    98 if constexpr (dim==3)
    \n-
    99 {
    \n-
    100 // First-order N\u00e9d\u00e9lec shape functions on a tetrahedron are of the form
    \n-
    101 //
    \n-
    102 // a + b \\times x, a, b \\in R^3
    \n-
    103 //
    \n-
    104 // The following coefficients create the six basis vectors
    \n-
    105 // that are dual to the edge degrees of freedom:
    \n-
    106 //
    \n-
    107 // a[0] = { 1, 0, 0} b[0] = { 0, -1, 1}
    \n-
    108 // a[1] = { 0, 1, 0} b[1] = { 1, 0, -1}
    \n-
    109 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 1}
    \n-
    110 // a[3] = { 0, 0, 1} b[3] = {-1, 1, 0}
    \n-
    111 // a[4] = { 0, 0, 0} b[4] = { 0, -1, 0}
    \n-
    112 // a[5] = { 0, 0, 0} b[5] = { 1, 0, 0}
    \n-
    113 //
    \n-
    114 // The following implementation uses these values, and simply
    \n-
    115 // skips all the zeros.
    \n-
    116
    \n-
    117 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };
    \n-
    118 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};
    \n-
    119 out[2] = { - in[1] , in[0] , 0 };
    \n-
    120 out[3] = { in[2], in[2], 1 - in[0] - in[1]};
    \n-
    121 out[4] = { -in[2], 0 , in[0] };
    \n-
    122 out[5] = { 0 , -in[2], in[1]};
    \n-
    123 }
    \n-
    124
    \n-
    125 for (std::size_t i=0; i<out.size(); i++)
    \n-
    126 out[i] *= edgeOrientation_[i];
    \n-
    127 }
    \n-
    128
    \n-
    134 void evaluateJacobian(const typename Traits::DomainType& in,
    \n-
    135 std::vector<typename Traits::JacobianType>& out) const
    \n-
    136 {
    \n-
    137 out.resize(size());
    \n-
    138 if (dim==2)
    \n-
    139 {
    \n-
    140 out[0][0] = { 0, -1};
    \n-
    141 out[0][1] = { 1, 0};
    \n-
    142
    \n-
    143 out[1][0] = { 0, 1};
    \n-
    144 out[1][1] = {-1, 0};
    \n-
    145
    \n-
    146 out[2][0] = { 0, -1};
    \n-
    147 out[2][1] = { 1, 0};
    \n-
    148 }
    \n-
    149 if (dim==3)
    \n-
    150 {
    \n-
    151 out[0][0] = { 0,-1,-1};
    \n-
    152 out[0][1] = { 1, 0, 0};
    \n-
    153 out[0][2] = { 1, 0, 0};
    \n-
    154
    \n-
    155 out[1][0] = { 0, 1, 0};
    \n-
    156 out[1][1] = {-1, 0, -1};
    \n-
    157 out[1][2] = { 0, 1, 0};
    \n-
    158
    \n-
    159 out[2][0] = { 0, -1, 0};
    \n-
    160 out[2][1] = { 1, 0, 0};
    \n-
    161 out[2][2] = { 0, 0, 0};
    \n-
    162
    \n-
    163 out[3][0] = { 0, 0, 1};
    \n-
    164 out[3][1] = { 0, 0, 1};
    \n-
    165 out[3][2] = {-1, -1, 0};
    \n-
    166
    \n-
    167 out[4][0] = { 0, 0, -1};
    \n-
    168 out[4][1] = { 0, 0, 0};
    \n-
    169 out[4][2] = { 1, 0, 0};
    \n-
    170
    \n-
    171 out[5][0] = { 0, 0, 0};
    \n-
    172 out[5][1] = { 0, 0, -1};
    \n-
    173 out[5][2] = { 0, 1, 0};
    \n-
    174 }
    \n-
    175
    \n-
    176 for (std::size_t i=0; i<out.size(); i++)
    \n-
    177 out[i] *= edgeOrientation_[i];
    \n-
    178
    \n-
    179 }
    \n-
    180
    \n-
    187 void partial(const std::array<unsigned int, dim>& order,
    \n-
    188 const typename Traits::DomainType& in,
    \n-
    189 std::vector<typename Traits::RangeType>& out) const
    \n-
    190 {
    \n-
    191 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    192 if (totalOrder == 0) {
    \n-
    193 evaluateFunction(in, out);
    \n-
    194 } else if (totalOrder == 1) {
    \n-
    195 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    196 out.resize(size());
    \n-
    197
    \n-
    198 if (dim==2)
    \n-
    199 {
    \n-
    200 if (direction==0)
    \n-
    201 {
    \n-
    202 out[0] = {0, 1};
    \n-
    203 out[1] = {0, -1};
    \n-
    204 out[2] = {0, 1};
    \n-
    205 }
    \n-
    206 else
    \n-
    207 {
    \n-
    208 out[0] = {-1, 0};
    \n-
    209 out[1] = { 1, 0};
    \n-
    210 out[2] = {-1, 0};
    \n-
    211 }
    \n-
    212 }
    \n-
    213
    \n-
    214 if (dim==3)
    \n-
    215 {
    \n-
    216 switch (direction)
    \n-
    217 {
    \n-
    218 case 0:
    \n-
    219 out[0] = { 0, 1, 1};
    \n-
    220 out[1] = { 0,-1, 0};
    \n-
    221 out[2] = { 0, 1, 0};
    \n-
    222 out[3] = { 0, 0,-1};
    \n-
    223 out[4] = { 0, 0, 1};
    \n-
    224 out[5] = { 0, 0, 0};
    \n-
    225 break;
    \n-
    226
    \n-
    227 case 1:
    \n-
    228 out[0] = {-1, 0, 0};
    \n-
    229 out[1] = { 1, 0, 1};
    \n-
    230 out[2] = {-1, 0, 0};
    \n-
    231 out[3] = { 0, 0,-1};
    \n-
    232 out[4] = { 0, 0, 0};
    \n-
    233 out[5] = { 0, 0, 1};
    \n-
    234 break;
    \n-
    235
    \n-
    236 case 2:
    \n-
    237 out[0] = {-1, 0, 0};
    \n-
    238 out[1] = { 0,-1, 0};
    \n-
    239 out[2] = { 0, 0, 0};
    \n-
    240 out[3] = { 1, 1, 0};
    \n-
    241 out[4] = {-1, 0, 0};
    \n-
    242 out[5] = { 0,-1, 0};
    \n-
    243 break;
    \n-
    244 }
    \n-
    245 }
    \n-
    246
    \n-
    247 for (std::size_t i=0; i<out.size(); i++)
    \n-
    248 out[i] *= edgeOrientation_[i];
    \n-
    249
    \n-
    250 } else {
    \n-
    251 out.resize(size());
    \n-
    252 for (std::size_t i = 0; i < size(); ++i)
    \n-
    253 for (std::size_t j = 0; j < dim; ++j)
    \n-
    254 out[i][j] = 0;
    \n-
    255 }
    \n-
    256
    \n-
    257 }
    \n-
    258
    \n-
    260 unsigned int order() const
    \n-
    261 {
    \n-
    262 return k;
    \n-
    263 }
    \n-
    264
    \n-
    265 private:
    \n-
    266
    \n-
    267 // Orientations of the simplex edges
    \n-
    268 std::array<R,numberOfEdges> edgeOrientation_;
    \n-
    269 };
    \n-
    270
    \n-
    271
    \n-
    276 template <int dim, int k>
    \n-
    277 class Nedelec1stKindSimplexLocalCoefficients
    \n-
    278 {
    \n-
    279 public:
    \n-
    281 Nedelec1stKindSimplexLocalCoefficients ()
    \n-
    282 : localKey_(size())
    \n-
    283 {
    \n-
    284 static_assert(k==1, "Only first-order N\u00e9d\u00e9lec local coefficients are implemented.");
    \n-
    285 // Assign all degrees of freedom to edges
    \n-
    286 // TODO: This is correct only for first-order N\u00e9d\u00e9lec elements
    \n-
    287 for (std::size_t i=0; i<size(); i++)
    \n-
    288 localKey_[i] = LocalKey(i,dim-1,0);
    \n-
    289 }
    \n-
    290
    \n-
    292 std::size_t size() const
    \n-
    293 {
    \n-
    294 static_assert(dim==2 || dim==3, "N\u00e9d\u00e9lec shape functions are implemented only for 2d and 3d simplices.");
    \n-
    295 return (dim==2) ? k * (k+2)
    \n-
    296 : k * (k+2) * (k+3) / 2;
    \n-
    297 }
    \n-
    298
    \n-
    301 const LocalKey& localKey (std::size_t i) const
    \n-
    302 {
    \n-
    303 return localKey_[i];
    \n-
    304 }
    \n-
    305
    \n-
    306 private:
    \n-
    307 std::vector<LocalKey> localKey_;
    \n-
    308 };
    \n-
    309
    \n-
    314 template<class LB>
    \n-
    315 class Nedelec1stKindSimplexLocalInterpolation
    \n-
    316 {
    \n-
    317 static constexpr auto dim = LB::Traits::dimDomain;
    \n-
    318 static constexpr auto size = LB::size();
    \n-
    319
    \n-
    320 // Number of edges of the reference simplex
    \n-
    321 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
    \n-
    322
    \n-
    323 public:
    \n-
    324
    \n-
    326 Nedelec1stKindSimplexLocalInterpolation (std::bitset<numberOfEdges> s = 0)
    \n-
    327 {
    \n-
    328 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::simplex(dim));
    \n-
    329
    \n-
    330 for (std::size_t i=0; i<numberOfEdges; i++)
    \n-
    331 m_[i] = refElement.position(i,dim-1);
    \n-
    332
    \n-
    333 for (std::size_t i=0; i<numberOfEdges; i++)
    \n-
    334 {
    \n-
    335 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n-
    336 auto v0 = *vertexIterator;
    \n-
    337 auto v1 = *(++vertexIterator);
    \n-
    338 // By default, edges point from the vertex with the smaller index
    \n-
    339 // to the vertex with the larger index.
    \n-
    340 if (v0>v1)
    \n-
    341 std::swap(v0,v1);
    \n-
    342 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n-
    343 edge_[i] *= (s[i]) ? -1.0 : 1.0;
    \n-
    344 }
    \n-
    345 }
    \n-
    346
    \n-
    352 template<typename F, typename C>
    \n-
    353 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    354 {
    \n-
    355 out.resize(size);
    \n-
    356
    \n-
    357 for (std::size_t i=0; i<size; i++)
    \n-
    358 {
    \n-
    359 auto y = f(m_[i]);
    \n-
    360 out[i] = 0.0;
    \n-
    361 for (int j=0; j<dim; j++)
    \n-
    362 out[i] += y[j]*edge_[i][j];
    \n-
    363 }
    \n-
    364 }
    \n-
    365
    \n-
    366 private:
    \n-
    367 // Edge midpoints of the reference simplex
    \n-
    368 std::array<typename LB::Traits::DomainType, numberOfEdges> m_;
    \n-
    369 // Edges of the reference simplex
    \n-
    370 std::array<typename LB::Traits::DomainType, numberOfEdges> edge_;
    \n-
    371 };
    \n-
    372
    \n-
    373}
    \n-
    374
    \n-
    375
    \n-
    401 template<class D, class R, int dim, int k>
    \n-
    \n-\n-
    403 {
    \n-
    404 public:
    \n-\n-
    406 Impl::Nedelec1stKindSimplexLocalCoefficients<dim,k>,
    \n-
    407 Impl::Nedelec1stKindSimplexLocalInterpolation<Impl::Nedelec1stKindSimplexLocalBasis<D,R,dim,k> > >;
    \n-
    408
    \n-
    409 static_assert(dim==2 || dim==3, "Nedelec elements are only implemented for 2d and 3d elements.");
    \n-
    410 static_assert(k==1, "Nedelec elements of the first kind are currently only implemented for order k==1.");
    \n-
    411
    \n-\n-
    415
    \n-
    \n-
    421 Nedelec1stKindSimplexLocalFiniteElement (std::bitset<dim*(dim+1)/2> s) :
    \n-
    422 basis_(s),
    \n-
    423 interpolation_(s)
    \n-
    424 {}
    \n+
    10namespace Dune
    \n+
    11{
    \n+
    20 template<class LB>
    \n+
    \n+\n+
    22 {
    \n+
    23
    \n+
    24 public:
    \n+
    25
    \n+
    \n+
    31 RT0PrismLocalInterpolation (std::bitset<5> s = 0)
    \n+
    32 {
    \n+
    33 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    34
    \n+
    35 for (size_t i=0; i<5; i++)
    \n+
    36 sign[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    37
    \n+
    38 Scalar r = 1/std::sqrt(2);
    \n+
    39
    \n+
    40 n[0] = { 0.0, -1.0, 0.0};
    \n+
    41 n[1] = {-1.0, 0.0, 0.0};
    \n+
    42 n[2] = { r, r, 0.0};
    \n+
    43 n[3] = { 0.0, 0.0, -1.0};
    \n+
    44 n[4] = { 0.0, 0.0, 1.0};
    \n+
    45
    \n+
    46 c[0] = 1.0;
    \n+
    47 c[1] = 1.0;
    \n+
    48 c[2] = std::sqrt(2);
    \n+
    49 c[3] = 1/2.0;
    \n+
    50 c[4] = 1/2.0;
    \n+
    51
    \n+
    52 m[0] = { 0.5, 0.0, 0.5};
    \n+
    53 m[1] = { 0.0, 0.5, 0.5};
    \n+
    54 m[2] = { 0.5, 0.5, 0.5};
    \n+
    55 m[3] = { 1/3.0, 1/3.0, 0.0};
    \n+
    56 m[4] = { 1/3.0, 1/3.0, 1.0};
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    67 template<class F, class C>
    \n+
    \n+
    68 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    69 {
    \n+
    70 out.resize(5);
    \n+
    71 for(int i=0; i<5; i++)
    \n+
    72 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75 private:
    \n+
    76 // Facet orientations
    \n+
    77 std::array<typename LB::Traits::RangeFieldType, 5> sign;
    \n+
    78 // Facet area
    \n+
    79 std::array<typename LB::Traits::RangeFieldType, 5> c;
    \n+
    80
    \n+
    81 // Facet normals
    \n+
    82 std::array<typename LB::Traits::DomainType, 5> n;
    \n+
    83 // Facet midpoints
    \n+
    84 std::array<typename LB::Traits::DomainType, 5> m;
    \n+
    85 };
    \n
    \n-
    425
    \n-
    \n-
    426 const typename Traits::LocalBasisType& localBasis () const
    \n-
    427 {
    \n-
    428 return basis_;
    \n-
    429 }
    \n-
    \n-
    430
    \n-
    \n-\n-
    432 {
    \n-
    433 return coefficients_;
    \n-
    434 }
    \n-
    \n-
    435
    \n-
    \n-\n-
    437 {
    \n-
    438 return interpolation_;
    \n-
    439 }
    \n-
    \n-
    440
    \n-
    \n-
    441 static constexpr unsigned int size ()
    \n-
    442 {
    \n-
    443 return Traits::LocalBasisType::size();
    \n-
    444 }
    \n-
    \n-
    445
    \n-
    \n-
    446 static constexpr GeometryType type ()
    \n-
    447 {
    \n-
    448 return GeometryTypes::simplex(dim);
    \n-
    449 }
    \n-
    \n-
    450
    \n-
    451 private:
    \n-
    452 typename Traits::LocalBasisType basis_;
    \n-
    453 typename Traits::LocalCoefficientsType coefficients_;
    \n-
    454 typename Traits::LocalInterpolationType interpolation_;
    \n-
    455 };
    \n-
    \n-
    456
    \n-
    457}
    \n-
    458
    \n-
    459#endif
    \n-\n-\n+
    86}
    \n+
    87#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    N\u00e9d\u00e9lec elements of the first kind for simplex elements.
    Definition nedelec1stkindsimplex.hh:403
    \n-
    static constexpr unsigned int size()
    Definition nedelec1stkindsimplex.hh:441
    \n-
    Nedelec1stKindSimplexLocalFiniteElement()=default
    Default constructor.
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition nedelec1stkindsimplex.hh:436
    \n-
    Nedelec1stKindSimplexLocalFiniteElement(std::bitset< dim *(dim+1)/2 > s)
    Constructor with explicitly given edge orientations.
    Definition nedelec1stkindsimplex.hh:421
    \n-
    static constexpr GeometryType type()
    Definition nedelec1stkindsimplex.hh:446
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition nedelec1stkindsimplex.hh:426
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition nedelec1stkindsimplex.hh:431
    \n-\n+
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalinterpolation.hh:22
    \n+
    RT0PrismLocalInterpolation(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0prismlocalinterpolation.hh:31
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas0prismlocalinterpolation.hh:68
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,441 +1,92 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n-nedelec1stkindsimplex.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm\n+raviartthomas0prismlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH\n-6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDSIMPLEX_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11#include \n-12\n-13#include \n-14#include \n-15\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-19\n-20namespace _\bD_\bu_\bn_\be\n-21{\n-22namespace Impl\n-23{\n-36 template\n-37 class Nedelec1stKindSimplexLocalBasis\n-38 {\n-39 // Number of edges of the reference simplex\n-40 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;\n-41\n-42 public:\n-43 using Traits = LocalBasisTraits,\n-44 R,dim,FieldVector,\n-45 FieldMatrix >;\n-46\n-53 Nedelec1stKindSimplexLocalBasis()\n-54 {\n-55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);\n-56 }\n-57\n-60 Nedelec1stKindSimplexLocalBasis(std::bitset edgeOrientation)\n-61 : Nedelec1stKindSimplexLocalBasis()\n-62 {\n-63 for (std::size_t i=0; i\n+_\b2_\b1 class _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+22 {\n+23\n+24 public:\n+25\n+_\b3_\b1 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<5> s = 0)\n+32 {\n+33 typedef typename LB::Traits::RangeFieldType Scalar;\n+34\n+35 for (size_t i=0; i<5; i++)\n+36 sign[i] = (s[i]) ? -1.0 : 1.0;\n+37\n+38 Scalar r = 1/std::sqrt(2);\n+39\n+40 n[0] = { 0.0, -1.0, 0.0};\n+41 n[1] = {-1.0, 0.0, 0.0};\n+42 n[2] = { r, r, 0.0};\n+43 n[3] = { 0.0, 0.0, -1.0};\n+44 n[4] = { 0.0, 0.0, 1.0};\n+45\n+46 c[0] = 1.0;\n+47 c[1] = 1.0;\n+48 c[2] = std::sqrt(2);\n+49 c[3] = 1/2.0;\n+50 c[4] = 1/2.0;\n+51\n+52 m[0] = { 0.5, 0.0, 0.5};\n+53 m[1] = { 0.0, 0.5, 0.5};\n+54 m[2] = { 0.5, 0.5, 0.5};\n+55 m[3] = { 1/3.0, 1/3.0, 0.0};\n+56 m[4] = { 1/3.0, 1/3.0, 1.0};\n+57 }\n+58\n+67 template\n+_\b6_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n 69 {\n-70 static_assert(dim==2 || dim==3, \"Nedelec shape functions are implemented\n-only for 2d and 3d simplices.\");\n-71 if (dim==2)\n-72 return k * (k+2);\n-73 if (dim==3)\n-74 return k * (k+2) * (k+3) / 2;\n-75 }\n-76\n-82 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-83 std::vector& out) const\n-84 {\n-85 static_assert(k==1, \"Evaluating N\u00c3\u00a9d\u00c3\u00a9lec shape functions is implemented\n-only for first order.\");\n-86 out.resize(size());\n-87\n-88 if (dim==2)\n-89 {\n-90 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a triangle are of the form\n-91 //\n-92 // (a1, a2) + b(-x2, x1)^T, a_1, a_2, b \\in R\n-93 out[0] = {D(1) - in[1], in[0]};\n-94 out[1] = {in[1], -in[0]+D(1)};\n-95 out[2] = {-in[1], in[0]};\n-96 }\n-97\n-98 if constexpr (dim==3)\n-99 {\n-100 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a tetrahedron are of the form\n-101 //\n-102 // a + b \\times x, a, b \\in R^3\n-103 //\n-104 // The following coefficients create the six basis vectors\n-105 // that are dual to the edge degrees of freedom:\n-106 //\n-107 // a[0] = { 1, 0, 0} b[0] = { 0, -1, 1}\n-108 // a[1] = { 0, 1, 0} b[1] = { 1, 0, -1}\n-109 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 1}\n-110 // a[3] = { 0, 0, 1} b[3] = {-1, 1, 0}\n-111 // a[4] = { 0, 0, 0} b[4] = { 0, -1, 0}\n-112 // a[5] = { 0, 0, 0} b[5] = { 1, 0, 0}\n-113 //\n-114 // The following implementation uses these values, and simply\n-115 // skips all the zeros.\n-116\n-117 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };\n-118 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};\n-119 out[2] = { - in[1] , in[0] , 0 };\n-120 out[3] = { in[2], in[2], 1 - in[0] - in[1]};\n-121 out[4] = { -in[2], 0 , in[0] };\n-122 out[5] = { 0 , -in[2], in[1]};\n-123 }\n-124\n-125 for (std::size_t i=0; i& out) const\n-136 {\n-137 out.resize(size());\n-138 if (dim==2)\n-139 {\n-140 out[0][0] = { 0, -1};\n-141 out[0][1] = { 1, 0};\n-142\n-143 out[1][0] = { 0, 1};\n-144 out[1][1] = {-1, 0};\n-145\n-146 out[2][0] = { 0, -1};\n-147 out[2][1] = { 1, 0};\n-148 }\n-149 if (dim==3)\n-150 {\n-151 out[0][0] = { 0,-1,-1};\n-152 out[0][1] = { 1, 0, 0};\n-153 out[0][2] = { 1, 0, 0};\n-154\n-155 out[1][0] = { 0, 1, 0};\n-156 out[1][1] = {-1, 0, -1};\n-157 out[1][2] = { 0, 1, 0};\n-158\n-159 out[2][0] = { 0, -1, 0};\n-160 out[2][1] = { 1, 0, 0};\n-161 out[2][2] = { 0, 0, 0};\n-162\n-163 out[3][0] = { 0, 0, 1};\n-164 out[3][1] = { 0, 0, 1};\n-165 out[3][2] = {-1, -1, 0};\n-166\n-167 out[4][0] = { 0, 0, -1};\n-168 out[4][1] = { 0, 0, 0};\n-169 out[4][2] = { 1, 0, 0};\n-170\n-171 out[5][0] = { 0, 0, 0};\n-172 out[5][1] = { 0, 0, -1};\n-173 out[5][2] = { 0, 1, 0};\n-174 }\n-175\n-176 for (std::size_t i=0; i& order,\n-188 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-189 std::vector& out) const\n-190 {\n-191 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-192 if (totalOrder == 0) {\n-193 evaluateFunction(in, out);\n-194 } else if (totalOrder == 1) {\n-195 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-196 out.resize(size());\n-197\n-198 if (dim==2)\n-199 {\n-200 if (direction==0)\n-201 {\n-202 out[0] = {0, 1};\n-203 out[1] = {0, -1};\n-204 out[2] = {0, 1};\n-205 }\n-206 else\n-207 {\n-208 out[0] = {-1, 0};\n-209 out[1] = { 1, 0};\n-210 out[2] = {-1, 0};\n-211 }\n-212 }\n-213\n-214 if (dim==3)\n-215 {\n-216 switch (direction)\n-217 {\n-218 case 0:\n-219 out[0] = { 0, 1, 1};\n-220 out[1] = { 0,-1, 0};\n-221 out[2] = { 0, 1, 0};\n-222 out[3] = { 0, 0,-1};\n-223 out[4] = { 0, 0, 1};\n-224 out[5] = { 0, 0, 0};\n-225 break;\n-226\n-227 case 1:\n-228 out[0] = {-1, 0, 0};\n-229 out[1] = { 1, 0, 1};\n-230 out[2] = {-1, 0, 0};\n-231 out[3] = { 0, 0,-1};\n-232 out[4] = { 0, 0, 0};\n-233 out[5] = { 0, 0, 1};\n-234 break;\n-235\n-236 case 2:\n-237 out[0] = {-1, 0, 0};\n-238 out[1] = { 0,-1, 0};\n-239 out[2] = { 0, 0, 0};\n-240 out[3] = { 1, 1, 0};\n-241 out[4] = {-1, 0, 0};\n-242 out[5] = { 0,-1, 0};\n-243 break;\n-244 }\n-245 }\n-246\n-247 for (std::size_t i=0; i edgeOrientation_;\n-269 };\n-270\n-271\n-276 template \n-277 class Nedelec1stKindSimplexLocalCoefficients\n-278 {\n-279 public:\n-281 Nedelec1stKindSimplexLocalCoefficients ()\n-282 : localKey_(size())\n-283 {\n-284 static_assert(k==1, \"Only first-order N\u00c3\u00a9d\u00c3\u00a9lec local coefficients are\n-implemented.\");\n-285 // Assign all degrees of freedom to edges\n-286 // TODO: This is correct only for first-order N\u00c3\u00a9d\u00c3\u00a9lec elements\n-287 for (std::size_t i=0; i localKey_;\n-308 };\n-309\n-314 template\n-315 class Nedelec1stKindSimplexLocalInterpolation\n-316 {\n-317 static constexpr auto dim = LB::Traits::dimDomain;\n-318 static constexpr auto size = LB::size();\n-319\n-320 // Number of edges of the reference simplex\n-321 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;\n-322\n-323 public:\n-324\n-326 Nedelec1stKindSimplexLocalInterpolation (std::bitset s = 0)\n-327 {\n-328 auto refElement = Dune::referenceElement(GeometryTypes::simplex\n-(dim));\n-329\n-330 for (std::size_t i=0; iv1)\n-341 std::swap(v0,v1);\n-342 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);\n-343 edge_[i] *= (s[i]) ? -1.0 : 1.0;\n-344 }\n-345 }\n-346\n-352 template\n-353 void interpolate (const F& f, std::vector& out) const\n-354 {\n-355 out.resize(size);\n-356\n-357 for (std::size_t i=0; i m_;\n-369 // Edges of the reference simplex\n-370 std::array edge_;\n-371 };\n-372\n-373}\n-374\n-375\n-401 template\n-_\b4_\b0_\b2 class _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-403 {\n-404 public:\n-_\b4_\b0_\b5 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n-_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>,\n-406 Impl::Nedelec1stKindSimplexLocalCoefficients,\n-407 Impl::Nedelec1stKindSimplexLocalInterpolation > >;\n-408\n-409 static_assert(dim==2 || dim==3, \"Nedelec elements are only implemented for\n-2d and 3d elements.\");\n-410 static_assert(k==1, \"Nedelec elements of the first kind are currently only\n-implemented for order k==1.\");\n-411\n-_\b4_\b1_\b4 _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt() = default;\n-415\n-_\b4_\b2_\b1 _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset s) :\n-422 basis_(s),\n-423 interpolation_(s)\n-424 {}\n-425\n-_\b4_\b2_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-427 {\n-428 return basis_;\n-429 }\n-430\n-_\b4_\b3_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-432 {\n-433 return coefficients_;\n-434 }\n-435\n-_\b4_\b3_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-437 {\n-438 return interpolation_;\n-439 }\n-440\n-_\b4_\b4_\b1 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-442 {\n-443 return Traits::LocalBasisType::size();\n-444 }\n-445\n-_\b4_\b4_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-447 {\n-448 return GeometryTypes::simplex(dim);\n-449 }\n-450\n-451 private:\n-452 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be basis_;\n-453 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients_;\n-454 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be interpolation_;\n-455 };\n-456\n-457}\n-458\n-459#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+70 out.resize(5);\n+71 for(int i=0; i<5; i++)\n+72 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];\n+73 }\n+74\n+75 private:\n+76 // Facet orientations\n+77 std::array sign;\n+78 // Facet area\n+79 std::array c;\n+80\n+81 // Facet normals\n+82 std::array n;\n+83 // Facet midpoints\n+84 std::array m;\n+85 };\n+86}\n+87#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-N\u00c3\u00a9d\u00c3\u00a9lec elements of the first kind for simplex elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:403\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr unsigned int size()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:441\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n-_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Nedelec1stKindSimplexLocalFiniteElement()=default\n-Default constructor.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:436\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n-_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Nedelec1stKindSimplexLocalFiniteElement(std::bitset< dim *(dim+1)/2 > s)\n-Constructor with explicitly given edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:421\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:446\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:426\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindsimplex.hh:431\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference prism.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalinterpolation.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT0PrismLocalInterpolation(std::bitset< 5 > s=0)\n+Make set number s, where 0 <= s < 32.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalinterpolation.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalinterpolation.hh:68\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelec1stkindcube.hh File Reference\n+dune-localfunctions: raviartthomas1cube2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,35 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    nedelec1stkindcube.hh File Reference
    \n+
    raviartthomas1cube2dlocalbasis.hh File Reference
    \n
    \n
    \n
    #include <numeric>
    \n+#include <vector>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/math.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+#include "../../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::Nedelec1stKindCubeLocalFiniteElement< D, R, dim, k >
     N\u00e9d\u00e9lec elements of the first kind for cube elements. More...
    class  Dune::RT1Cube2DLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-utf-8\n+us-ascii\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-nedelec1stkindcube.hh File Reference\n+raviartthomas1cube2dlocalbasis.hh File Reference\n #include \n+#include \n #include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bk_\b _\b>\n-\u00a0 N\u00c3\u00a9d\u00c3\u00a9lec elements of the first kind for cube elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelec1stkindcube.hh Source File\n+dune-localfunctions: raviartthomas1cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,518 +70,200 @@\n
    \n \n \n \n \n \n \n
    \n-
    nedelec1stkindcube.hh
    \n+
    raviartthomas1cube2dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH
    \n
    7
    \n
    8#include <numeric>
    \n-
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n-
    11#include <dune/common/fvector.hh>
    \n-
    12#include <dune/common/math.hh>
    \n-
    13
    \n-
    14#include <dune/geometry/referenceelements.hh>
    \n-
    15#include <dune/geometry/type.hh>
    \n-
    16
    \n-\n-\n-\n-
    20
    \n-
    21namespace Dune
    \n-
    22{
    \n-
    23namespace Impl
    \n-
    24{
    \n-
    37 template<class D, class R, int dim, int k>
    \n-
    38 class Nedelec1stKindCubeLocalBasis
    \n-
    39 {
    \n-
    40 // Number of edges of the reference cube
    \n-
    41 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
    \n-
    42
    \n-
    43 public:
    \n-
    44 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,
    \n-
    45 R,dim,FieldVector<R,dim>,
    \n-
    46 FieldMatrix<R,dim,dim> >;
    \n-
    47
    \n-
    54 Nedelec1stKindCubeLocalBasis()
    \n-
    55 {
    \n-
    56 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
    \n-
    57 }
    \n-
    58
    \n-
    61 Nedelec1stKindCubeLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
    \n-
    62 : Nedelec1stKindCubeLocalBasis()
    \n-
    63 {
    \n-
    64 for (std::size_t i=0; i<edgeOrientation_.size(); i++)
    \n-
    65 edgeOrientation_[i] *= edgeOrientation[i] ? -1.0 : 1.0;
    \n-
    66 }
    \n-
    67
    \n-
    69 static constexpr unsigned int size()
    \n-
    70 {
    \n-
    71 static_assert(dim==2 || dim==3, "Nedelec shape functions are implemented only for 2d and 3d cubes.");
    \n-
    72 if (dim==2)
    \n-
    73 return 2*k * (k+1);
    \n-
    74 if (dim==3)
    \n-
    75 return 3*k * (k+1) * (k+1);
    \n-
    76 }
    \n-
    77
    \n-
    83 void evaluateFunction(const typename Traits::DomainType& in,
    \n-
    84 std::vector<typename Traits::RangeType>& out) const
    \n-
    85 {
    \n-
    86 static_assert(k==1, "Evaluating N\u00e9d\u00e9lec shape functions is implemented only for first order.");
    \n-
    87 out.resize(size());
    \n-
    88
    \n-
    89 if (dim==2)
    \n-
    90 {
    \n-
    91 // First-order N\u00e9d\u00e9lec shape functions on a square are of the form
    \n-
    92 //
    \n-
    93 // (a, b)^T + (c y, d x)^T, a, b, c, d \\in R
    \n-
    94 //
    \n-
    95 // The following coefficients create the four basis vectors
    \n-
    96 // that are dual to the edge degrees of freedom:
    \n-
    97 //
    \n-
    98 // a[0] = 0 b[0] = 1 c[0] = 0 d[0] = -1
    \n-
    99 // a[1] = 0 b[1] = 0 c[1] = 0 d[1] = 1
    \n-
    100 // a[2] = 1 b[2] = 0 c[2] = 0 d[2] = -1
    \n-
    101 // a[3] = 0 b[3] = 0 c[3] = 0 d[3] = 1
    \n-
    102
    \n-
    103 out[0] = { 0, D(1) - in[0]};
    \n-
    104 out[1] = { 0, in[0]};
    \n-
    105 out[2] = { D(1) - in[1], 0};
    \n-
    106 out[3] = { in[1], 0};
    \n-
    107 }
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \n+
    13#include "../../common/localbasis.hh"
    \n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    26 template<class D, class R>
    \n+
    \n+\n+
    28 {
    \n+
    29
    \n+
    30 public:
    \n+
    31 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    32 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    33
    \n+
    \n+
    39 RT1Cube2DLocalBasis (std::bitset<4> s = 0)
    \n+
    40 {
    \n+
    41 for (size_t i=0; i<4; i++)
    \n+
    42 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+
    46 unsigned int size () const
    \n+
    47 {
    \n+
    48 return 12;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    57 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    58 std::vector<typename Traits::RangeType>& out) const
    \n+
    59 {
    \n+
    60 out.resize(12);
    \n+
    61
    \n+
    62 out[0][0] = sign_[0]*(-1.0 + 4.0*in[0]-3*in[0]*in[0]);
    \n+
    63 out[0][1] = 0.0;
    \n+
    64 out[1][0] = 3.0 - 12.0*in[0] - 6.0*in[1] + 24.0*in[0]*in[1]+9*in[0]*in[0] - 18.0*in[0]*in[0]*in[1];
    \n+
    65 out[1][1] = 0.0;
    \n+
    66 out[2][0] = sign_[1]*(-2.0*in[0] + 3.0*in[0]*in[0]);
    \n+
    67 out[2][1] = 0.0;
    \n+
    68 out[3][0] = -6.0*in[0] + 12.0*in[0]*in[1] + 9.0*in[0]*in[0] - 18.0*in[0]*in[0]*in[1];
    \n+
    69 out[3][1] = 0.0;
    \n+
    70 out[4][0] = 0.0;
    \n+
    71 out[4][1] = sign_[2]*(-1.0 + 4.0*in[1] - 3.0*in[1]*in[1]);
    \n+
    72 out[5][0] = 0.0;
    \n+
    73 out[5][1] = -3.0 + 6.0*in[0] + 12.0*in[1] - 24.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in[1]*in[1];
    \n+
    74 out[6][0] = 0.0;
    \n+
    75 out[6][1] = sign_[3]*(-2.0*in[1] + 3.0*in[1]*in[1]);
    \n+
    76 out[7][0] = 0.0;
    \n+
    77 out[7][1] = 6.0*in[1] - 12.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in[1]*in[1];
    \n+
    78 out[8][0] = 24.0*in[0] - 36.0*in[0]*in[1] - 24.0*in[0]*in[0] + 36.0*in[0]*in[0]*in[1];
    \n+
    79 out[8][1] = 0.0;
    \n+
    80 out[9][0] = 0.0;
    \n+
    81 out[9][1] = 24.0*in[1] - 36.0*in[0]*in[1] - 24.0*in[1]*in[1] + 36.0*in[0]*in[1]*in[1];
    \n+
    82 out[10][0] = -36.0*in[0] + 72.0*in[0]*in[1] + 36.0*in[0]*in[0] - 72.0*in[0]*in[0]*in[1];
    \n+
    83 out[10][1] = 0.0;
    \n+
    84 out[11][0] = 0.0;
    \n+
    85 out[11][1] = -36.0*in[1] + 72.0*in[0]*in[1] + 36*in[1]*in[1] - 72.0*in[0]*in[1]*in[1];
    \n+
    86 }
    \n+
    \n+
    87
    \n+
    \n+
    94 inline void evaluateJacobian (const typename Traits::DomainType& in,
    \n+
    95 std::vector<typename Traits::JacobianType>& out) const
    \n+
    96 {
    \n+
    97 out.resize(12);
    \n+
    98
    \n+
    99 out[0][0][0] = sign_[0]*(4.0 - 6.0*in[0]);
    \n+
    100 out[0][0][1] = 0.0;
    \n+
    101 out[0][1][0] = 0.0;
    \n+
    102 out[0][1][1] = 0.0;
    \n+
    103
    \n+
    104 out[1][0][0] = -12.0 + 24.0*in[1] + 18.0*in[0] - 36.0*in[0]*in[1];
    \n+
    105 out[1][0][1] = -6 + 24.0*in[0] - 18.0*in[0]*in[0];
    \n+
    106 out[1][1][0] = 0.0;
    \n+
    107 out[1][1][1] = 0.0;
    \n
    108
    \n-
    109 if constexpr (dim==3)
    \n-
    110 {
    \n-
    111 // First-order N\u00e9d\u00e9lec shape functions on a cube are of the form
    \n-
    112 //
    \n-
    113 // (e1 yz)
    \n-
    114 // a + b x + c y + d z + (e2 xz) , a, b, c, d \\in R^3 and b[0]=c[1]=d[2]=0
    \n-
    115 // (e3 xy)
    \n-
    116 //
    \n-
    117 // The following coefficients create the twelve basis vectors
    \n-
    118 // that are dual to the edge degrees of freedom:
    \n-
    119 //
    \n-
    120 // a[0] = { 0, 0, 1} b[0] = { 0, 0, -1} c[0] = { 0, 0, -1} d[0] = { 0, 0, 0} e[0] = { 0, 0, 1}
    \n-
    121 // a[1] = { 0, 0, 0} b[1] = { 0, 0, 1} c[1] = { 0, 0, 0} d[1] = { 0, 0, 0} e[1] = { 0, 0, -1}
    \n-
    122 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 0} c[2] = { 0, 0, 1} d[2] = { 0, 0, 0} e[2] = { 0, 0, -1}
    \n-
    123 // a[3] = { 0, 0, 0} b[3] = { 0, 0, 0} c[3] = { 0, 0, 0} d[3] = { 0, 0, 0} e[3] = { 0, 0, 1}
    \n-
    124 //
    \n-
    125 // The following implementation uses these values, and simply
    \n-
    126 // skips all the zeros.
    \n-
    127
    \n-
    128 for (std::size_t i=0; i<out.size(); i++)
    \n-
    129 out[i] = {0,0,0};
    \n-
    130
    \n-
    131 out[0][2] = { 1 - in[0] - in[1] + in[0]*in[1]};
    \n-
    132 out[1][2] = { in[0] - in[0]*in[1]};
    \n-
    133 out[2][2] = { in[1] - in[0]*in[1]};
    \n-
    134 out[3][2] = { in[0]*in[1]};
    \n-
    135
    \n-
    136 out[4][1] = { 1 - in[0] - in[2] + in[0]*in[2]};
    \n-
    137 out[5][1] = { in[0] - in[0]*in[2]};
    \n-
    138 out[8][1] = { in[2] - in[0]*in[2]};
    \n-
    139 out[9][1] = { in[0]*in[2]};
    \n-
    140
    \n-
    141 out[6][0] = { 1 - in[1] - in[2] + in[1]*in[2]};
    \n-
    142 out[7][0] = { in[1] - in[1]*in[2]};
    \n-
    143 out[10][0] = { in[2] - in[1]*in[2]};
    \n-
    144 out[11][0] = { in[1]*in[2]};
    \n-
    145 }
    \n-
    146
    \n-
    147 for (std::size_t i=0; i<out.size(); i++)
    \n-
    148 out[i] *= edgeOrientation_[i];
    \n-
    149 }
    \n-
    150
    \n-
    156 void evaluateJacobian(const typename Traits::DomainType& in,
    \n-
    157 std::vector<typename Traits::JacobianType>& out) const
    \n-
    158 {
    \n-
    159 out.resize(size());
    \n-
    160 if (dim==2)
    \n-
    161 {
    \n-
    162 for (std::size_t i=0; i<out.size(); i++)
    \n-
    163 for (std::size_t j=0; j<dim; j++)
    \n-
    164 out[i][j] = { 0, 0};
    \n-
    165
    \n-
    166 out[0][1] = { -1, 0};
    \n-
    167 out[1][1] = { 1, 0};
    \n-
    168
    \n-
    169 out[2][0] = { 0, -1};
    \n-
    170 out[3][0] = { 0, 1};
    \n-
    171 }
    \n-
    172 if (dim==3)
    \n-
    173 {
    \n-
    174 for (std::size_t i=0; i<out.size(); i++)
    \n-
    175 for(std::size_t j=0;j<dim; j++)
    \n-
    176 out[i][j] = {0,0,0};
    \n-
    177
    \n+
    109 out[2][0][0] = sign_[1]*(-2.0 + 6.0*in[0]);
    \n+
    110 out[2][0][1] = 0.0;
    \n+
    111 out[2][1][0] = 0.0;
    \n+
    112 out[2][1][1] = 0.0;
    \n+
    113
    \n+
    114 out[3][0][0] = -6.0 + 12.0*in[1] + 18.0*in[0] - 36.0*in[0]*in[1];
    \n+
    115 out[3][0][1] = 12.0*in[0] - 18.0*in[0]*in[0];
    \n+
    116 out[3][1][0] = 0.0;
    \n+
    117 out[3][1][1] = 0.0;
    \n+
    118
    \n+
    119 out[4][0][0] = 0.0;
    \n+
    120 out[4][0][1] = 0.0;
    \n+
    121 out[4][1][0] = 0.0;
    \n+
    122 out[4][1][1] = sign_[2]*(4.0 - 6.0*in[1]);
    \n+
    123
    \n+
    124 out[5][0][0] = 0.0;
    \n+
    125 out[5][0][1] = 0.0;
    \n+
    126 out[5][1][0] = 6.0 - 24.0*in[1] + 18.0*in[1]*in[1];
    \n+
    127 out[5][1][1] = 12.0 - 24.0*in[0] - 18.0*in[1] + 36.0*in[0]*in[1];
    \n+
    128
    \n+
    129 out[6][0][0] = 0.0;
    \n+
    130 out[6][0][1] = 0.0;
    \n+
    131 out[6][1][0] = 0.0;
    \n+
    132 out[6][1][1] = sign_[3]*(-2.0 + 6.0*in[1]);
    \n+
    133
    \n+
    134 out[7][0][0] = 0.0;
    \n+
    135 out[7][0][1] = 0.0;
    \n+
    136 out[7][1][0] = -12.0*in[1] + 18.0*in[1]*in[1];
    \n+
    137 out[7][1][1] = 6.0 - 12.0*in[0] - 18.0*in[1] + 36.0*in[1]*in[0];
    \n+
    138
    \n+
    139 out[8][0][0] = 24.0 - 36.0*in[1] - 48.0*in[0] + 72.0*in[0]*in[1];
    \n+
    140 out[8][0][1] = -36.0*in[0] + 36.0*in[0]*in[0];
    \n+
    141 out[8][1][0] = 0.0;
    \n+
    142 out[8][1][1] = 0.0;
    \n+
    143
    \n+
    144 out[9][0][0] = 0.0;
    \n+
    145 out[9][0][1] = 0.0;
    \n+
    146 out[9][1][0] = -36.0*in[1] + 36.0*in[1]*in[1];
    \n+
    147 out[9][1][1] = 24.0 - 36.0*in[0] - 48.0*in[1] + 72.0*in[0]*in[1];
    \n+
    148
    \n+
    149 out[10][0][0] = -36.0 + 72.0*in[1] + 72.0*in[0] - 144.0*in[0]*in[1];
    \n+
    150 out[10][0][1] = 72.0*in[0] - 72.0*in[0]*in[0];
    \n+
    151 out[10][1][0] = 0.0;
    \n+
    152 out[10][1][1] = 0.0;
    \n+
    153
    \n+
    154 out[11][0][0] = 0.0;
    \n+
    155 out[11][0][1] = 0.0;
    \n+
    156 out[11][1][0] = 72.0*in[1] - 72.0*in[1]*in[1];
    \n+
    157 out[11][1][1] = -36.0 + 72.0*in[0] + 72.0*in[1] - 144.0*in[0]*in[1];
    \n+
    158 }
    \n+
    \n+
    159
    \n+
    \n+
    161 void partial (const std::array<unsigned int, 2>& order,
    \n+
    162 const typename Traits::DomainType& in, // position
    \n+
    163 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    164 {
    \n+
    165 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    166 if (totalOrder == 0) {
    \n+
    167 evaluateFunction(in, out);
    \n+
    168 } else {
    \n+
    169 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    170 }
    \n+
    171 }
    \n+
    \n+
    172
    \n+
    \n+
    174 unsigned int order () const
    \n+
    175 {
    \n+
    176 return 3;
    \n+
    177 }
    \n+
    \n
    178
    \n-
    179 out[0][2] = {-1 +in[1], -1 + in[0], 0};
    \n-
    180 out[1][2] = { 1 -in[1], - in[0], 0};
    \n-
    181 out[2][2] = { -in[1], 1 - in[0], 0};
    \n-
    182 out[3][2] = { in[1], in[0], 0};
    \n-
    183
    \n-
    184 out[4][1] = {-1 +in[2], 0, -1 + in[0]};
    \n-
    185 out[5][1] = { 1 -in[2], 0, - in[0]};
    \n-
    186 out[8][1] = { -in[2], 0, 1 - in[0]};
    \n-
    187 out[9][1] = { in[2], 0, in[0]};
    \n-
    188
    \n-
    189 out[6][0] = { 0, -1 + in[2], -1 + in[1]};
    \n-
    190 out[7][0] = { 0, 1 - in[2], - in[1]};
    \n-
    191 out[10][0] = { 0, - in[2], 1 - in[1]};
    \n-
    192 out[11][0] = { 0, in[2], in[1]};
    \n-
    193
    \n-
    194 }
    \n-
    195
    \n-
    196 for (std::size_t i=0; i<out.size(); i++)
    \n-
    197 out[i] *= edgeOrientation_[i];
    \n-
    198
    \n-
    199 }
    \n-
    200
    \n-
    207 void partial(const std::array<unsigned int, dim>& order,
    \n-
    208 const typename Traits::DomainType& in,
    \n-
    209 std::vector<typename Traits::RangeType>& out) const
    \n-
    210 {
    \n-
    211 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    212 if (totalOrder == 0) {
    \n-
    213 evaluateFunction(in, out);
    \n-
    214 } else if (totalOrder == 1) {
    \n-
    215 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    216 out.resize(size());
    \n-
    217
    \n-
    218 if (dim==2)
    \n-
    219 {
    \n-
    220 if (direction==0)
    \n-
    221 {
    \n-
    222 out[0] = { 0, -1};
    \n-
    223 out[1] = { 0, 1};
    \n-
    224 out[2] = { 0, 0};
    \n-
    225 out[3] = { 0, 0};
    \n-
    226 }
    \n-
    227 else
    \n-
    228 {
    \n-
    229 out[0] = { 0, 0};
    \n-
    230 out[1] = { 0, 0};
    \n-
    231 out[2] = { -1, 0};
    \n-
    232 out[3] = { 1, 0};
    \n-
    233 }
    \n-
    234 }
    \n-
    235
    \n-
    236 if (dim==3)
    \n-
    237 {
    \n-
    238 switch (direction)
    \n-
    239 {
    \n-
    240 case 0:
    \n-
    241 out[0] = { 0, 0, -1 +in[1]};
    \n-
    242 out[1] = { 0, 0, 1 -in[1]};
    \n-
    243 out[2] = { 0, 0, -in[1]};
    \n-
    244 out[3] = { 0, 0, in[1]};
    \n-
    245
    \n-
    246 out[4] = { 0, -1 +in[2], 0};
    \n-
    247 out[5] = { 0, 1 -in[2], 0};
    \n-
    248 out[8] = { 0, -in[2], 0};
    \n-
    249 out[9] = { 0, in[2], 0};
    \n-
    250
    \n-
    251 out[6] = {0,0,0};
    \n-
    252 out[7] = {0,0,0};
    \n-
    253 out[10] = {0,0,0};
    \n-
    254 out[11] = {0,0,0};
    \n-
    255 break;
    \n-
    256
    \n-
    257 case 1:
    \n-
    258 out[0] = { 0, 0, -1 + in[0]};
    \n-
    259 out[1] = { 0, 0, - in[0]};
    \n-
    260 out[2] = { 0, 0, 1 - in[0]};
    \n-
    261 out[3] = { 0, 0, in[0]};
    \n-
    262
    \n-
    263 out[4] = {0,0,0};
    \n-
    264 out[5] = {0,0,0};
    \n-
    265 out[8] = {0,0,0};
    \n-
    266 out[9] = {0,0,0};
    \n-
    267
    \n-
    268 out[6] = { -1 + in[2], 0, 0};
    \n-
    269 out[7] = { 1 - in[2], 0, 0};
    \n-
    270 out[10] = { - in[2], 0, 0};
    \n-
    271 out[11] = { in[2], 0, 0};
    \n-
    272 break;
    \n-
    273
    \n-
    274 case 2:
    \n-
    275 out[0] = {0,0,0};
    \n-
    276 out[1] = {0,0,0};
    \n-
    277 out[2] = {0,0,0};
    \n-
    278 out[3] = {0,0,0};
    \n-
    279
    \n-
    280 out[4] = { 0, -1 + in[0], 0};
    \n-
    281 out[5] = { 0, - in[0], 0};
    \n-
    282 out[8] = { 0, 1 - in[0], 0};
    \n-
    283 out[9] = { 0, in[0], 0};
    \n-
    284
    \n-
    285 out[6] = { -1 + in[1], 0, 0};
    \n-
    286 out[7] = { - in[1], 0, 0};
    \n-
    287 out[10] = { 1 - in[1], 0, 0};
    \n-
    288 out[11] = { in[1], 0, 0};
    \n-
    289 break;
    \n-
    290 }
    \n-
    291 }
    \n-
    292
    \n-
    293 for (std::size_t i=0; i<out.size(); i++)
    \n-
    294 out[i] *= edgeOrientation_[i];
    \n-
    295
    \n-
    296 } else if (totalOrder == 2) {
    \n-
    297 out.resize(size());
    \n-
    298
    \n-
    299 if (dim==2)
    \n-
    300 for (std::size_t i = 0; i < size(); ++i)
    \n-
    301 for (std::size_t j = 0; j < dim; ++j)
    \n-
    302 out[i][j] = 0;
    \n-
    303
    \n-
    304 if (dim==3)
    \n-
    305 {
    \n-
    306 for(size_t i=0; i<out.size(); i++)
    \n-
    307 out[i] = { 0, 0, 0};
    \n-
    308
    \n-
    309 //case (1,1,0):
    \n-
    310 if( order[0] == 1 and order[1]==1)
    \n-
    311 {
    \n-
    312 out[0] = { 0, 0, 1};
    \n-
    313 out[1] = { 0, 0, -1};
    \n-
    314 out[2] = { 0, 0, -1};
    \n-
    315 out[3] = { 0, 0, 1};
    \n-
    316 }
    \n-
    317
    \n-
    318 //case (1,0,1):
    \n-
    319 if( order[0] == 1 and order[2]==1)
    \n-
    320 {
    \n-
    321 out[4] = { 0, 1, 0};
    \n-
    322 out[5] = { 0, -1, 0};
    \n-
    323 out[8] = { 0, -1, 0};
    \n-
    324 out[9] = { 0, 1, 0};
    \n-
    325 }
    \n-
    326
    \n-
    327 //case (0,1,1):
    \n-
    328 if( order[1] == 1 and order[2]==1)
    \n-
    329 {
    \n-
    330 out[6] = { 1, 0, 0};
    \n-
    331 out[7] = { -1, 0, 0};
    \n-
    332 out[10] = { -1, 0, 0};
    \n-
    333 out[11] = { 1, 0, 0};
    \n-
    334 }
    \n-
    335
    \n-
    336 for (std::size_t i=0; i<out.size(); i++)
    \n-
    337 out[i] *= edgeOrientation_[i];
    \n-
    338 }
    \n-
    339
    \n-
    340
    \n-
    341 }else {
    \n-
    342 out.resize(size());
    \n-
    343 for (std::size_t i = 0; i < size(); ++i)
    \n-
    344 for (std::size_t j = 0; j < dim; ++j)
    \n-
    345 out[i][j] = 0;
    \n-
    346 }
    \n-
    347
    \n-
    348 }
    \n-
    349
    \n-
    351 unsigned int order() const
    \n-
    352 {
    \n-
    353 if (dim==2)
    \n-
    354 return 2*k-1;
    \n-
    355 if (dim==3)
    \n-
    356 return 3*k-1;
    \n-
    357 }
    \n-
    358
    \n-
    359 private:
    \n-
    360
    \n-
    361 // Orientations of the cube edges
    \n-
    362 std::array<R,numberOfEdges> edgeOrientation_;
    \n-
    363 };
    \n-
    364
    \n-
    365
    \n-
    370 template <int dim, int k>
    \n-
    371 class Nedelec1stKindCubeLocalCoefficients
    \n-
    372 {
    \n-
    373 public:
    \n-
    375 Nedelec1stKindCubeLocalCoefficients ()
    \n-
    376 : localKey_(size())
    \n-
    377 {
    \n-
    378 static_assert(k==1, "Only first-order N\u00e9d\u00e9lec local coefficients are implemented.");
    \n-
    379 // Assign all degrees of freedom to edges
    \n-
    380 // TODO: This is correct only for first-order N\u00e9d\u00e9lec elements
    \n-
    381 for (std::size_t i=0; i<size(); i++)
    \n-
    382 localKey_[i] = LocalKey(i,dim-1,0);
    \n-
    383 }
    \n-
    384
    \n-
    386 std::size_t size() const
    \n-
    387 {
    \n-
    388 static_assert(dim==2 || dim==3, "N\u00e9d\u00e9lec shape functions are implemented only for 2d and 3d cubes.");
    \n-
    389 return (dim==2) ? 2*k * (k+1)
    \n-
    390 : 3*k * (k+1) * (k+1);
    \n-
    391 }
    \n-
    392
    \n-
    395 const LocalKey& localKey (std::size_t i) const
    \n-
    396 {
    \n-
    397 return localKey_[i];
    \n-
    398 }
    \n-
    399
    \n-
    400 private:
    \n-
    401 std::vector<LocalKey> localKey_;
    \n-
    402 };
    \n-
    403
    \n-
    408 template<class LB>
    \n-
    409 class Nedelec1stKindCubeLocalInterpolation
    \n-
    410 {
    \n-
    411 static constexpr auto dim = LB::Traits::dimDomain;
    \n-
    412 static constexpr auto size = LB::size();
    \n-
    413
    \n-
    414 // Number of edges of the reference cube
    \n-
    415 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
    \n-
    416
    \n-
    417 public:
    \n-
    418
    \n-
    420 Nedelec1stKindCubeLocalInterpolation (std::bitset<numberOfEdges> s = 0)
    \n-
    421 {
    \n-
    422 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::cube(dim));
    \n-
    423
    \n-
    424 for (std::size_t i=0; i<numberOfEdges; i++)
    \n-
    425 m_[i] = refElement.position(i,dim-1);
    \n-
    426
    \n-
    427 for (std::size_t i=0; i<numberOfEdges; i++)
    \n-
    428 {
    \n-
    429 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n-
    430 auto v0 = *vertexIterator;
    \n-
    431 auto v1 = *(++vertexIterator);
    \n-
    432
    \n-
    433 // By default, edges point from the vertex with the smaller index
    \n-
    434 // to the vertex with the larger index.
    \n-
    435 if (v0>v1)
    \n-
    436 std::swap(v0,v1);
    \n-
    437 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n-
    438 edge_[i] *= (s[i]) ? -1.0 : 1.0;
    \n-
    439 }
    \n-
    440 }
    \n-
    441
    \n-
    447 template<typename F, typename C>
    \n-
    448 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    449 {
    \n-
    450 out.resize(size);
    \n-
    451
    \n-
    452 for (std::size_t i=0; i<size; i++)
    \n-
    453 {
    \n-
    454 auto y = f(m_[i]);
    \n-
    455 out[i] = 0.0;
    \n-
    456 for (int j=0; j<dim; j++)
    \n-
    457 out[i] += y[j]*edge_[i][j];
    \n-
    458 }
    \n-
    459 }
    \n-
    460
    \n-
    461 private:
    \n-
    462 // Edge midpoints of the reference cube
    \n-
    463 std::array<typename LB::Traits::DomainType, numberOfEdges> m_;
    \n-
    464 // Edges of the reference cube
    \n-
    465 std::array<typename LB::Traits::DomainType, numberOfEdges> edge_;
    \n-
    466 };
    \n-
    467
    \n-
    468}
    \n-
    469
    \n-
    470
    \n-
    494 template<class D, class R, int dim, int k>
    \n-
    \n-\n-
    496 {
    \n-
    497 public:
    \n-\n-
    499 Impl::Nedelec1stKindCubeLocalCoefficients<dim,k>,
    \n-
    500 Impl::Nedelec1stKindCubeLocalInterpolation<Impl::Nedelec1stKindCubeLocalBasis<D,R,dim,k> > >;
    \n-
    501
    \n-
    502 static_assert(dim==2 || dim==3, "Nedelec elements are only implemented for 2d and 3d elements.");
    \n-
    503 static_assert(k==1, "Nedelec elements of the first kind are currently only implemented for order k==1.");
    \n-
    504
    \n-\n-
    508
    \n-
    \n-
    514 Nedelec1stKindCubeLocalFiniteElement (std::bitset<power(2,dim-1)*dim> s) :
    \n-
    515 basis_(s),
    \n-
    516 interpolation_(s)
    \n-
    517 {}
    \n-
    \n-
    518
    \n-
    \n-
    519 const typename Traits::LocalBasisType& localBasis () const
    \n-
    520 {
    \n-
    521 return basis_;
    \n-
    522 }
    \n-
    \n-
    523
    \n-
    \n-\n-
    525 {
    \n-
    526 return coefficients_;
    \n-
    527 }
    \n-
    \n-
    528
    \n-
    \n-\n-
    530 {
    \n-
    531 return interpolation_;
    \n-
    532 }
    \n-
    \n-
    533
    \n-
    \n-
    534 static constexpr unsigned int size ()
    \n-
    535 {
    \n-
    536 return Traits::LocalBasisType::size();
    \n-
    537 }
    \n-
    \n-
    538
    \n-
    \n-
    539 static constexpr GeometryType type ()
    \n-
    540 {
    \n-
    541 return GeometryTypes::cube(dim);
    \n-
    542 }
    \n-
    \n-
    543
    \n-
    544 private:
    \n-
    545 typename Traits::LocalBasisType basis_;
    \n-
    546 typename Traits::LocalCoefficientsType coefficients_;
    \n-
    547 typename Traits::LocalInterpolationType interpolation_;
    \n-
    548 };
    \n-
    \n-
    549
    \n-
    550}
    \n-
    551
    \n-
    552#endif
    \n-\n-\n+
    179 private:
    \n+
    180 std::array<R,4> sign_;
    \n+
    181 };
    \n+
    \n+
    182}
    \n+
    183#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    N\u00e9d\u00e9lec elements of the first kind for cube elements.
    Definition nedelec1stkindcube.hh:496
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition nedelec1stkindcube.hh:529
    \n-
    static constexpr unsigned int size()
    Definition nedelec1stkindcube.hh:534
    \n-
    Nedelec1stKindCubeLocalFiniteElement()=default
    Default constructor.
    \n-
    static constexpr GeometryType type()
    Definition nedelec1stkindcube.hh:539
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition nedelec1stkindcube.hh:524
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition nedelec1stkindcube.hh:519
    \n-
    Nedelec1stKindCubeLocalFiniteElement(std::bitset< power(2, dim-1) *dim > s)
    Constructor with explicitly given edge orientations.
    Definition nedelec1stkindcube.hh:514
    \n-\n+
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalbasis.hh:28
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas1cube2dlocalbasis.hh:94
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas1cube2dlocalbasis.hh:32
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas1cube2dlocalbasis.hh:174
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas1cube2dlocalbasis.hh:57
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas1cube2dlocalbasis.hh:46
    \n+
    RT1Cube2DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas1cube2dlocalbasis.hh:39
    \n+
    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 raviartthomas1cube2dlocalbasis.hh:161
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,540 +1,219 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bn_\be_\bd_\be_\bl_\be_\bc\n-nedelec1stkindcube.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas1cube2dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH\n-6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH\n 7\n 8#include \n-9\n-10#include \n-11#include \n-12#include \n-13\n-14#include \n-15#include \n-16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-19#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-20\n-21namespace _\bD_\bu_\bn_\be\n-22{\n-23namespace Impl\n-24{\n-37 template\n-38 class Nedelec1stKindCubeLocalBasis\n-39 {\n-40 // Number of edges of the reference cube\n-41 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;\n-42\n-43 public:\n-44 using Traits = LocalBasisTraits,\n-45 R,dim,FieldVector,\n-46 FieldMatrix >;\n-47\n-54 Nedelec1stKindCubeLocalBasis()\n-55 {\n-56 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);\n-57 }\n-58\n-61 Nedelec1stKindCubeLocalBasis(std::bitset edgeOrientation)\n-62 : Nedelec1stKindCubeLocalBasis()\n-63 {\n-64 for (std::size_t i=0; i& out) const\n-85 {\n-86 static_assert(k==1, \"Evaluating N\u00c3\u00a9d\u00c3\u00a9lec shape functions is implemented\n-only for first order.\");\n-87 out.resize(size());\n-88\n-89 if (dim==2)\n-90 {\n-91 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a square are of the form\n-92 //\n-93 // (a, b)^T + (c y, d x)^T, a, b, c, d \\in R\n-94 //\n-95 // The following coefficients create the four basis vectors\n-96 // that are dual to the edge degrees of freedom:\n-97 //\n-98 // a[0] = 0 b[0] = 1 c[0] = 0 d[0] = -1\n-99 // a[1] = 0 b[1] = 0 c[1] = 0 d[1] = 1\n-100 // a[2] = 1 b[2] = 0 c[2] = 0 d[2] = -1\n-101 // a[3] = 0 b[3] = 0 c[3] = 0 d[3] = 1\n-102\n-103 out[0] = { 0, D(1) - in[0]};\n-104 out[1] = { 0, in[0]};\n-105 out[2] = { D(1) - in[1], 0};\n-106 out[3] = { in[1], 0};\n-107 }\n+9#include \n+10\n+11#include \n+12\n+13#include \"../../common/localbasis.hh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+26 template\n+_\b2_\b7 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+28 {\n+29\n+30 public:\n+31 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b2_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b2_\b>,R,2,Dune::\n+FieldVector,\n+_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b9 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n+40 {\n+41 for (size_t i=0; i<4; i++)\n+42 sign_[i] = (s[i]) ? -1.0 : 1.0;\n+43 }\n+44\n+_\b4_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+47 {\n+48 return 12;\n+49 }\n+50\n+_\b5_\b7 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+58 std::vector& out) const\n+59 {\n+60 out.resize(12);\n+61\n+62 out[0][0] = sign_[0]*(-1.0 + 4.0*in[0]-3*in[0]*in[0]);\n+63 out[0][1] = 0.0;\n+64 out[1][0] = 3.0 - 12.0*in[0] - 6.0*in[1] + 24.0*in[0]*in[1]+9*in[0]*in[0] -\n+18.0*in[0]*in[0]*in[1];\n+65 out[1][1] = 0.0;\n+66 out[2][0] = sign_[1]*(-2.0*in[0] + 3.0*in[0]*in[0]);\n+67 out[2][1] = 0.0;\n+68 out[3][0] = -6.0*in[0] + 12.0*in[0]*in[1] + 9.0*in[0]*in[0] - 18.0*in[0]*in\n+[0]*in[1];\n+69 out[3][1] = 0.0;\n+70 out[4][0] = 0.0;\n+71 out[4][1] = sign_[2]*(-1.0 + 4.0*in[1] - 3.0*in[1]*in[1]);\n+72 out[5][0] = 0.0;\n+73 out[5][1] = -3.0 + 6.0*in[0] + 12.0*in[1] - 24.0*in[0]*in[1] - 9.0*in[1]*in\n+[1] + 18.0*in[0]*in[1]*in[1];\n+74 out[6][0] = 0.0;\n+75 out[6][1] = sign_[3]*(-2.0*in[1] + 3.0*in[1]*in[1]);\n+76 out[7][0] = 0.0;\n+77 out[7][1] = 6.0*in[1] - 12.0*in[0]*in[1] - 9.0*in[1]*in[1] + 18.0*in[0]*in\n+[1]*in[1];\n+78 out[8][0] = 24.0*in[0] - 36.0*in[0]*in[1] - 24.0*in[0]*in[0] + 36.0*in[0]*in\n+[0]*in[1];\n+79 out[8][1] = 0.0;\n+80 out[9][0] = 0.0;\n+81 out[9][1] = 24.0*in[1] - 36.0*in[0]*in[1] - 24.0*in[1]*in[1] + 36.0*in[0]*in\n+[1]*in[1];\n+82 out[10][0] = -36.0*in[0] + 72.0*in[0]*in[1] + 36.0*in[0]*in[0] - 72.0*in\n+[0]*in[0]*in[1];\n+83 out[10][1] = 0.0;\n+84 out[11][0] = 0.0;\n+85 out[11][1] = -36.0*in[1] + 72.0*in[0]*in[1] + 36*in[1]*in[1] - 72.0*in[0]*in\n+[1]*in[1];\n+86 }\n+87\n+_\b9_\b4 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+95 std::vector& out) const\n+96 {\n+97 out.resize(12);\n+98\n+99 out[0][0][0] = sign_[0]*(4.0 - 6.0*in[0]);\n+100 out[0][0][1] = 0.0;\n+101 out[0][1][0] = 0.0;\n+102 out[0][1][1] = 0.0;\n+103\n+104 out[1][0][0] = -12.0 + 24.0*in[1] + 18.0*in[0] - 36.0*in[0]*in[1];\n+105 out[1][0][1] = -6 + 24.0*in[0] - 18.0*in[0]*in[0];\n+106 out[1][1][0] = 0.0;\n+107 out[1][1][1] = 0.0;\n 108\n-109 if constexpr (dim==3)\n-110 {\n-111 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a cube are of the form\n-112 //\n-113 // (e1 yz)\n-114 // a + b x + c y + d z + (e2 xz) , a, b, c, d \\in R^3 and b[0]=c[1]=d[2]=0\n-115 // (e3 xy)\n-116 //\n-117 // The following coefficients create the twelve basis vectors\n-118 // that are dual to the edge degrees of freedom:\n-119 //\n-120 // a[0] = { 0, 0, 1} b[0] = { 0, 0, -1} c[0] = { 0, 0, -1} d[0] = { 0, 0,\n-0} e[0] = { 0, 0, 1}\n-121 // a[1] = { 0, 0, 0} b[1] = { 0, 0, 1} c[1] = { 0, 0, 0} d[1] = { 0, 0, 0}\n-e[1] = { 0, 0, -1}\n-122 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 0} c[2] = { 0, 0, 1} d[2] = { 0, 0, 0}\n-e[2] = { 0, 0, -1}\n-123 // a[3] = { 0, 0, 0} b[3] = { 0, 0, 0} c[3] = { 0, 0, 0} d[3] = { 0, 0, 0}\n-e[3] = { 0, 0, 1}\n-124 //\n-125 // The following implementation uses these values, and simply\n-126 // skips all the zeros.\n-127\n-128 for (std::size_t i=0; i& out) const\n-158 {\n-159 out.resize(size());\n-160 if (dim==2)\n-161 {\n-162 for (std::size_t i=0; i& _\bo_\br_\bd_\be_\br,\n+162 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+163 std::vector& out) const // return value\n+164 {\n+165 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+166 if (totalOrder == 0) {\n+167 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+168 } else {\n+169 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+170 }\n 171 }\n-172 if (dim==3)\n-173 {\n-174 for (std::size_t i=0; i& order,\n-208 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-209 std::vector& out) const\n-210 {\n-211 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-212 if (totalOrder == 0) {\n-213 evaluateFunction(in, out);\n-214 } else if (totalOrder == 1) {\n-215 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-216 out.resize(size());\n-217\n-218 if (dim==2)\n-219 {\n-220 if (direction==0)\n-221 {\n-222 out[0] = { 0, -1};\n-223 out[1] = { 0, 1};\n-224 out[2] = { 0, 0};\n-225 out[3] = { 0, 0};\n-226 }\n-227 else\n-228 {\n-229 out[0] = { 0, 0};\n-230 out[1] = { 0, 0};\n-231 out[2] = { -1, 0};\n-232 out[3] = { 1, 0};\n-233 }\n-234 }\n-235\n-236 if (dim==3)\n-237 {\n-238 switch (direction)\n-239 {\n-240 case 0:\n-241 out[0] = { 0, 0, -1 +in[1]};\n-242 out[1] = { 0, 0, 1 -in[1]};\n-243 out[2] = { 0, 0, -in[1]};\n-244 out[3] = { 0, 0, in[1]};\n-245\n-246 out[4] = { 0, -1 +in[2], 0};\n-247 out[5] = { 0, 1 -in[2], 0};\n-248 out[8] = { 0, -in[2], 0};\n-249 out[9] = { 0, in[2], 0};\n-250\n-251 out[6] = {0,0,0};\n-252 out[7] = {0,0,0};\n-253 out[10] = {0,0,0};\n-254 out[11] = {0,0,0};\n-255 break;\n-256\n-257 case 1:\n-258 out[0] = { 0, 0, -1 + in[0]};\n-259 out[1] = { 0, 0, - in[0]};\n-260 out[2] = { 0, 0, 1 - in[0]};\n-261 out[3] = { 0, 0, in[0]};\n-262\n-263 out[4] = {0,0,0};\n-264 out[5] = {0,0,0};\n-265 out[8] = {0,0,0};\n-266 out[9] = {0,0,0};\n-267\n-268 out[6] = { -1 + in[2], 0, 0};\n-269 out[7] = { 1 - in[2], 0, 0};\n-270 out[10] = { - in[2], 0, 0};\n-271 out[11] = { in[2], 0, 0};\n-272 break;\n-273\n-274 case 2:\n-275 out[0] = {0,0,0};\n-276 out[1] = {0,0,0};\n-277 out[2] = {0,0,0};\n-278 out[3] = {0,0,0};\n-279\n-280 out[4] = { 0, -1 + in[0], 0};\n-281 out[5] = { 0, - in[0], 0};\n-282 out[8] = { 0, 1 - in[0], 0};\n-283 out[9] = { 0, in[0], 0};\n-284\n-285 out[6] = { -1 + in[1], 0, 0};\n-286 out[7] = { - in[1], 0, 0};\n-287 out[10] = { 1 - in[1], 0, 0};\n-288 out[11] = { in[1], 0, 0};\n-289 break;\n-290 }\n-291 }\n-292\n-293 for (std::size_t i=0; i edgeOrientation_;\n-363 };\n-364\n-365\n-370 template \n-371 class Nedelec1stKindCubeLocalCoefficients\n-372 {\n-373 public:\n-375 Nedelec1stKindCubeLocalCoefficients ()\n-376 : localKey_(size())\n-377 {\n-378 static_assert(k==1, \"Only first-order N\u00c3\u00a9d\u00c3\u00a9lec local coefficients are\n-implemented.\");\n-379 // Assign all degrees of freedom to edges\n-380 // TODO: This is correct only for first-order N\u00c3\u00a9d\u00c3\u00a9lec elements\n-381 for (std::size_t i=0; i localKey_;\n-402 };\n-403\n-408 template\n-409 class Nedelec1stKindCubeLocalInterpolation\n-410 {\n-411 static constexpr auto dim = LB::Traits::dimDomain;\n-412 static constexpr auto size = LB::size();\n-413\n-414 // Number of edges of the reference cube\n-415 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;\n-416\n-417 public:\n-418\n-420 Nedelec1stKindCubeLocalInterpolation (std::bitset s = 0)\n-421 {\n-422 auto refElement = Dune::referenceElement(GeometryTypes::cube\n-(dim));\n-423\n-424 for (std::size_t i=0; iv1)\n-436 std::swap(v0,v1);\n-437 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);\n-438 edge_[i] *= (s[i]) ? -1.0 : 1.0;\n-439 }\n-440 }\n-441\n-447 template\n-448 void interpolate (const F& f, std::vector& out) const\n-449 {\n-450 out.resize(size);\n-451\n-452 for (std::size_t i=0; i m_;\n-464 // Edges of the reference cube\n-465 std::array edge_;\n-466 };\n-467\n-468}\n-469\n-470\n-494 template\n-_\b4_\b9_\b5 class _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-496 {\n-497 public:\n-_\b4_\b9_\b8 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bI_\bm_\bp_\bl_\b:_\b:\n-_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bk_\b>,\n-499 Impl::Nedelec1stKindCubeLocalCoefficients,\n-500 Impl::Nedelec1stKindCubeLocalInterpolation > >;\n-501\n-502 static_assert(dim==2 || dim==3, \"Nedelec elements are only implemented for\n-2d and 3d elements.\");\n-503 static_assert(k==1, \"Nedelec elements of the first kind are currently only\n-implemented for order k==1.\");\n-504\n-_\b5_\b0_\b7 _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt() = default;\n-508\n-_\b5_\b1_\b4 _\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset s) :\n-515 basis_(s),\n-516 interpolation_(s)\n-517 {}\n-518\n-_\b5_\b1_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-520 {\n-521 return basis_;\n-522 }\n-523\n-_\b5_\b2_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-525 {\n-526 return coefficients_;\n-527 }\n-528\n-_\b5_\b2_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-530 {\n-531 return interpolation_;\n-532 }\n-533\n-_\b5_\b3_\b4 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-535 {\n-536 return Traits::LocalBasisType::size();\n-537 }\n-538\n-_\b5_\b3_\b9 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-540 {\n-541 return GeometryTypes::cube(dim);\n-542 }\n-543\n-544 private:\n-545 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be basis_;\n-546 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be coefficients_;\n-547 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be interpolation_;\n-548 };\n-549\n-550}\n-551\n-552#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n+179 private:\n+180 std::array sign_;\n+181 };\n+182}\n+183#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-N\u00c3\u00a9d\u00c3\u00a9lec elements of the first kind for cube elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:496\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:529\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr unsigned int size()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:534\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n-_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Nedelec1stKindCubeLocalFiniteElement()=default\n-Default constructor.\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:539\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:524\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:519\n-_\bD_\bu_\bn_\be_\b:_\b:_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n-_\bN_\be_\bd_\be_\bl_\be_\bc_\b1_\bs_\bt_\bK_\bi_\bn_\bd_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Nedelec1stKindCubeLocalFiniteElement(std::bitset< power(2, dim-1) *dim > s)\n-Constructor with explicitly given edge orientations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelec1stkindcube.hh:514\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R,\n+2 >, Dune::FieldMatrix< R, 2, 2 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:174\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:57\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT1Cube2DLocalBasis(std::bitset< 4 > s=0)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:39\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 2 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalbasis.hh:161\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualp1localcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas1cube2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    dualp1localcoefficients.hh File Reference
    \n+
    raviartthomas1cube2dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::DualP1LocalCoefficients< dim >
     Local coefficients for dual simplex P1 elements. More...
    class  Dune::RT1Cube2DLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bp_\b1\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dualp1localcoefficients.hh File Reference\n-#include \n+raviartthomas1cube2dlocalinterpolation.hh File Reference\n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Local coefficients for dual simplex P1 elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualp1localcoefficients.hh Source File\n+dune-localfunctions: raviartthomas1cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualp1localcoefficients.hh
    \n+
    raviartthomas1cube2dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-\n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    11
    \n
    12
    \n
    13namespace Dune
    \n
    14{
    \n
    15
    \n-
    22 template <int dim>
    \n-
    \n-\n-
    24 {
    \n-
    25 public:
    \n-
    \n-\n-
    28 {
    \n-
    29 for (std::size_t i=0; i<size(); i++)
    \n-
    30 li[i] = LocalKey(i,dim,0);
    \n-
    31 }
    \n-
    \n-
    32
    \n+
    24 template<class LB>
    \n+
    \n+\n+
    26 {
    \n+
    27
    \n+
    28 public:
    \n
    \n-
    34 std::size_t size () const
    \n-
    35 {
    \n-
    36 return dim+1;
    \n-
    37 }
    \n-
    \n+
    34 RT1Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    35 {
    \n+
    36 for (size_t i=0; i<4; i++)
    \n+
    37 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n
    38
    \n-
    \n-
    40 const LocalKey& localKey (std::size_t i) const
    \n-
    41 {
    \n-
    42 return li[i];
    \n+
    39 n_[0] = {-1.0, 0.0};
    \n+
    40 n_[1] = { 1.0, 0.0};
    \n+
    41 n_[2] = { 0.0, -1.0};
    \n+
    42 n_[3] = { 0.0, 1.0};
    \n
    43 }
    \n
    \n
    44
    \n-
    45 private:
    \n-
    46 std::vector<LocalKey> li;
    \n-
    47 };
    \n-
    \n-
    48
    \n-
    49}
    \n-
    50
    \n-
    51#endif
    \n-\n+
    53 template<class F, class C>
    \n+
    \n+
    54 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    55 {
    \n+
    56 // f gives v*outer normal at a point on the edge!
    \n+
    57 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    58 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    59
    \n+
    60 out.resize(12);
    \n+
    61 fill(out.begin(), out.end(), 0.0);
    \n+
    62
    \n+
    63 const int qOrder = 3;
    \n+
    64 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    65
    \n+
    66 for (auto&& qp : rule1)
    \n+
    67 {
    \n+
    68 Scalar qPos = qp.position();
    \n+
    69 typename LB::Traits::DomainType localPos = {0.0, qPos};
    \n+
    70
    \n+
    71 auto y = f(localPos);
    \n+
    72 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n+
    73 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    74
    \n+
    75 localPos = {1.0, qPos};
    \n+
    76 y = f(localPos);
    \n+
    77 out[2] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n+
    78 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    79
    \n+
    80 localPos = {qPos, 0.0};
    \n+
    81 y = f(localPos);
    \n+
    82 out[4] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n+
    83 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    84
    \n+
    85 localPos = {qPos, 1.0};
    \n+
    86 y = f(localPos);
    \n+
    87 out[6] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n+
    88 out[7] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    89 }
    \n+
    90
    \n+
    91 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    92
    \n+
    93 for (auto&& qp : rule2)
    \n+
    94 {
    \n+
    95 auto qPos = qp.position();
    \n+
    96
    \n+
    97 auto y = f(qPos);
    \n+
    98 out[8] += y[0]*qp.weight();
    \n+
    99 out[9] += y[1]*qp.weight();
    \n+
    100 out[10] += y[0]*qPos[1]*qp.weight();
    \n+
    101 out[11] += y[1]*qPos[0]*qp.weight();
    \n+
    102 }
    \n+
    103 }
    \n+
    \n+
    104
    \n+
    105 private:
    \n+
    106 // Edge orientations
    \n+
    107 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n+
    108
    \n+
    109 // Edge normals
    \n+
    110 std::array<typename LB::Traits::DomainType, 4> n_;
    \n+
    111 };
    \n+
    \n+
    112}
    \n+
    113#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Local coefficients for dual simplex P1 elements.
    Definition dualp1localcoefficients.hh:24
    \n-
    DualP1LocalCoefficients()
    Standard constructor.
    Definition dualp1localcoefficients.hh:27
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition dualp1localcoefficients.hh:40
    \n-
    std::size_t size() const
    number of coefficients
    Definition dualp1localcoefficients.hh:34
    \n+
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalinterpolation.hh:26
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas1cube2dlocalinterpolation.hh:54
    \n+
    RT1Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas1cube2dlocalinterpolation.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,76 +1,120 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bp_\b1\n-dualp1localcoefficients.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas1cube2dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH\n-6#define DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH\n 7\n-8#include \n-9#include \n-10\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+8#include \n+9\n+10#include \n+11\n 12\n 13namespace _\bD_\bu_\bn_\be\n 14{\n 15\n-22 template \n-_\b2_\b3 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n-25 public:\n-_\b2_\b7 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(_\bs_\bi_\bz_\be())\n-28 {\n-29 for (std::size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n-30 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim,0);\n-31 }\n-32\n-_\b3_\b4 std::size_t _\bs_\bi_\bz_\be () const\n+24 template\n+_\b2_\b5 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+26 {\n+27\n+28 public:\n+_\b3_\b4 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<4> s = 0)\n 35 {\n-36 return dim+1;\n-37 }\n+36 for (size_t i=0; i<4; i++)\n+37 sign_[i] = (s[i]) ? -1.0 : 1.0;\n 38\n-_\b4_\b0 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-41 {\n-42 return li[i];\n+39 n_[0] = {-1.0, 0.0};\n+40 n_[1] = { 1.0, 0.0};\n+41 n_[2] = { 0.0, -1.0};\n+42 n_[3] = { 0.0, 1.0};\n 43 }\n 44\n-45 private:\n-46 std::vector li;\n-47 };\n-48\n-49}\n-50\n-51#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+53 template\n+_\b5_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+55 {\n+56 // f gives v*outer normal at a point on the edge!\n+57 typedef typename LB::Traits::RangeFieldType Scalar;\n+58 typedef typename LB::Traits::DomainFieldType Vector;\n+59\n+60 out.resize(12);\n+61 fill(out.begin(), out.end(), 0.0);\n+62\n+63 const int qOrder = 3;\n+64 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n+qOrder);\n+65\n+66 for (auto&& qp : rule1)\n+67 {\n+68 Scalar qPos = qp.position();\n+69 typename LB::Traits::DomainType localPos = {0.0, qPos};\n+70\n+71 auto y = f(localPos);\n+72 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n+73 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n+74\n+75 localPos = {1.0, qPos};\n+76 y = f(localPos);\n+77 out[2] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n+78 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n+79\n+80 localPos = {qPos, 0.0};\n+81 y = f(localPos);\n+82 out[4] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n+83 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n+84\n+85 localPos = {qPos, 1.0};\n+86 y = f(localPos);\n+87 out[6] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n+88 out[7] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n+89 }\n+90\n+91 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n+qOrder);\n+92\n+93 for (auto&& qp : rule2)\n+94 {\n+95 auto qPos = qp.position();\n+96\n+97 auto y = f(qPos);\n+98 out[8] += y[0]*qp.weight();\n+99 out[9] += y[1]*qp.weight();\n+100 out[10] += y[0]*qPos[1]*qp.weight();\n+101 out[11] += y[1]*qPos[0]*qp.weight();\n+102 }\n+103 }\n+104\n+105 private:\n+106 // Edge orientations\n+107 std::array sign_;\n+108\n+109 // Edge normals\n+110 std::array n_;\n+111 };\n+112}\n+113#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Local coefficients for dual simplex P1 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-DualP1LocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalinterpolation.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalinterpolation.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT1Cube2DLocalInterpolation(std::bitset< 4 > s=0)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalinterpolation.hh:34\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualp1localbasis.hh File Reference\n+dune-localfunctions: raviartthomas1cube2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    dualp1localbasis.hh File Reference
    \n+
    raviartthomas1cube2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::DualP1LocalBasis< D, R, dim, faceDualT >
     Dual Lagrange shape functions on the simplex. More...
    class  Dune::RT1Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bp_\b1\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dualp1localbasis.hh File Reference\n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+raviartthomas1cube2dlocalcoefficients.hh File Reference\n+#include \n+#include \n+#include \"_\b._\b._\b/_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\bT_\b _\b>\n-\u00a0 Dual Lagrange shape functions on the simplex. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for Raviart-Thomas-1 elements on quadrilaterals. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualp1localbasis.hh Source File\n+dune-localfunctions: raviartthomas1cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,147 +70,83 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualp1localbasis.hh
    \n+
    raviartthomas1cube2dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_DUAL_P1_LOCALBASIS_HH
    \n-
    6#define DUNE_DUAL_P1_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    33 template<class D, class R, int dim, bool faceDualT=false>
    \n-
    \n-\n-
    35 {
    \n-
    36 public:
    \n-
    38 static const bool faceDual = faceDualT;
    \n-
    40 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>,
    \n-
    41 Dune::FieldMatrix<R,1,dim> > Traits;
    \n-
    42
    \n-
    \n-
    44 unsigned int size () const
    \n-
    45 {
    \n-
    46 return dim+1;
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    \n-
    50 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    51 std::vector<typename Traits::RangeType>& out) const
    \n-
    52 {
    \n-
    53 // evaluate P1 basis functions
    \n-
    54 std::vector<typename Traits::RangeType> p1Values(size());
    \n-
    55
    \n-
    56 p1Values[0] = 1.0;
    \n-
    57
    \n-
    58 for (int i=0; i<dim; i++) {
    \n-
    59 p1Values[0] -= in[i];
    \n-
    60 p1Values[i+1] = in[i];
    \n-
    61 }
    \n-
    62
    \n-
    63 // compute dual basis function values as a linear combination of the Lagrange values
    \n-
    64 out.resize(size());
    \n-
    65
    \n-
    66 for (int i=0; i<=dim; i++) {
    \n-
    67 out[i] = (dim+!faceDual)*p1Values[i];
    \n-
    68 for (int j=0; j<i; j++)
    \n-
    69 out[i] -= p1Values[j];
    \n-
    70
    \n-
    71 for (int j=i+1; j<=dim; j++)
    \n-
    72 out[i] -= p1Values[j];
    \n-
    73 }
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    77 inline void
    \n-
    \n-\n-
    79 std::vector<typename Traits::JacobianType>& out) const
    \n-
    80 {
    \n-
    81 // evaluate P1 jacobians
    \n-
    82 std::vector<typename Traits::JacobianType> p1Jacs(size());
    \n-
    83
    \n-
    84 for (int i=0; i<dim; i++)
    \n-
    85 p1Jacs[0][0][i] = -1;
    \n-
    86
    \n-
    87 for (int i=0; i<dim; i++)
    \n-
    88 for (int j=0; j<dim; j++)
    \n-
    89 p1Jacs[i+1][0][j] = (i==j);
    \n-
    90
    \n-
    91 // compute dual basis jacobians as linear combination of the Lagrange jacobians
    \n-
    92 out.resize(size());
    \n-
    93
    \n-
    94 for (size_t i=0; i<=dim; i++) {
    \n-
    95 out[i][0] = 0;
    \n-
    96 out[i][0].axpy(dim+!faceDual,p1Jacs[i][0]);
    \n-
    97
    \n-
    98 for (size_t j=0; j<i; j++)
    \n-
    99 out[i][0] -= p1Jacs[j][0];
    \n-
    100
    \n-
    101 for (int j=i+1; j<=dim; j++)
    \n-
    102 out[i][0] -= p1Jacs[j][0];
    \n-
    103 }
    \n-
    104 }
    \n-
    \n-
    105
    \n-
    \n-
    107 void partial (const std::array<unsigned int, dim>& order,
    \n-
    108 const typename Traits::DomainType& in, // position
    \n-
    109 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    110 {
    \n-
    111 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    112 if (totalOrder == 0) {
    \n-
    113 evaluateFunction(in, out);
    \n-
    114 } else {
    \n-
    115 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    116 }
    \n-
    117 }
    \n-
    \n-
    118
    \n-
    \n-
    120 unsigned int order () const
    \n-
    121 {
    \n-
    122 return 1;
    \n-
    123 }
    \n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include "../../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for (std::size_t i=0; i < 4; i++)
    \n+
    31 {
    \n+
    32 li[2*i] = LocalKey(i,1,0);
    \n+
    33 li[2*i + 1] = LocalKey(i,1,1);
    \n+
    34 }
    \n+
    35
    \n+
    36 li[8] = LocalKey(0,0,0);
    \n+
    37 li[9] = LocalKey(0,0,1);
    \n+
    38 li[10] = LocalKey(0,0,2);
    \n+
    39 li[11] = LocalKey(0,0,3);
    \n+
    40 }
    \n+
    \n+
    41
    \n+
    \n+
    43 std::size_t size () const
    \n+
    44 {
    \n+
    45 return 12;
    \n+
    46 }
    \n+
    \n+
    47
    \n+
    \n+
    49 const LocalKey& localKey (std::size_t i) const
    \n+
    50 {
    \n+
    51 return li[i];
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    54 private:
    \n+
    55 std::vector<LocalKey> li;
    \n+
    56 };
    \n
    \n-
    124 };
    \n-
    \n-
    125}
    \n-
    126#endif
    \n+
    57}
    \n+
    58#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Dual Lagrange shape functions on the simplex.
    Definition dualp1localbasis.hh:35
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition dualp1localbasis.hh:120
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition dualp1localbasis.hh:50
    \n-
    static const bool faceDual
    Determines if the basis is only biorthogonal on adjacent faces.
    Definition dualp1localbasis.hh:38
    \n-
    void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition dualp1localbasis.hh:107
    \n-
    unsigned int size() const
    number of shape functions
    Definition dualp1localbasis.hh:44
    \n-
    LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    export type traits for function signature
    Definition dualp1localbasis.hh:41
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition dualp1localbasis.hh:78
    \n-\n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Layout map for Raviart-Thomas-1 elements on quadrilaterals.
    Definition raviartthomas1cube2dlocalcoefficients.hh:24
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas1cube2dlocalcoefficients.hh:49
    \n+
    RT1Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas1cube2dlocalcoefficients.hh:28
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas1cube2dlocalcoefficients.hh:43
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,163 +1,81 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bp_\b1\n-dualp1localbasis.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd\n+raviartthomas1cube2dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_DUAL_P1_LOCALBASIS_HH\n-6#define DUNE_DUAL_P1_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9\n-10#include \n-11#include \n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-33 template\n-_\b3_\b4 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-35 {\n-36 public:\n-_\b3_\b8 static const bool _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl = faceDualT;\n-40 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\bi_\bm_\b>,R,1,Dune::\n-FieldVector,\n-_\b4_\b1 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-42\n-_\b4_\b4 unsigned int _\bs_\bi_\bz_\be () const\n-45 {\n-46 return dim+1;\n-47 }\n-48\n-_\b5_\b0 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-51 std::vector& out) const\n-52 {\n-53 // evaluate P1 basis functions\n-54 std::vector p1Values(_\bs_\bi_\bz_\be());\n-55\n-56 p1Values[0] = 1.0;\n-57\n-58 for (int i=0; i& out) const\n-80 {\n-81 // evaluate P1 jacobians\n-82 std::vector p1Jacs(_\bs_\bi_\bz_\be());\n-83\n-84 for (int i=0; i& _\bo_\br_\bd_\be_\br,\n-108 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-109 std::vector& out) const // return value\n-110 {\n-111 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-112 if (totalOrder == 0) {\n-113 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-114 } else {\n-115 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-116 }\n-117 }\n-118\n-_\b1_\b2_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n-121 {\n-122 return 1;\n-123 }\n-124 };\n-125}\n-126#endif\n+8#include \n+9#include \n+10\n+11#include \"../../common/localkey.hh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+_\b2_\b3 class _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+24 {\n+25\n+26 public:\n+_\b2_\b8 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(12)\n+29 {\n+30 for (std::size_t i=0; i < 4; i++)\n+31 {\n+32 li[2*i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+33 li[2*i + 1] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,1);\n+34 }\n+35\n+36 li[8] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0);\n+37 li[9] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,1);\n+38 li[10] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,2);\n+39 li[11] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,3);\n+40 }\n+41\n+_\b4_\b3 std::size_t _\bs_\bi_\bz_\be () const\n+44 {\n+45 return 12;\n+46 }\n+47\n+_\b4_\b9 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+50 {\n+51 return li[i];\n+52 }\n+53\n+54 private:\n+55 std::vector li;\n+56 };\n+57}\n+58#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-D DomainType\n-domain type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Dual Lagrange shape functions on the simplex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:120\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl\n-static const bool faceDual\n-Determines if the basis is only biorthogonal on adjacent faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, dim > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector<\n-R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:78\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT1Cube2DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2dlocalcoefficients.hh:43\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualp1localinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas0prism.hh File Reference\n \n \n \n \n \n \n \n@@ -65,31 +65,36 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    dualp1localinterpolation.hh File Reference
    \n+
    raviartthomas0prism.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    class  Dune::DualP1LocalInterpolation< dim, LB >
    class  Dune::RT0PrismLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on prisms. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,20 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bp_\b1\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dualp1localinterpolation.hh File Reference\n-#include \n+raviartthomas0prism.hh File Reference\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\b,_\b _\bL_\bB_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 First order Raviart-Thomas shape functions on prisms. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualp1localinterpolation.hh Source File\n+dune-localfunctions: raviartthomas0prism.hh Source File\n \n \n \n \n \n \n \n@@ -70,85 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualp1localinterpolation.hh
    \n+
    raviartthomas0prism.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_DUAL_P1_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_DUAL_P1_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10namespace Dune
    \n-
    11{
    \n-
    15 template<int dim, class LB>
    \n-
    \n-\n-
    17 {
    \n-
    18 public:
    \n-
    20 template<typename F, typename C>
    \n-
    \n-
    21 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    22 {
    \n-
    23 typename LB::Traits::DomainType x;
    \n-
    24 // If the dual functions are dual on the faces,
    \n-
    25 // then adjust the interpolation weights
    \n-
    26 const int faceDual(LB::faceDual);
    \n-
    27
    \n-
    28 // compute P1 interpolation coefficients
    \n-
    29 std::vector<C> p1Interpolation(dim+1);
    \n-
    30
    \n-
    31 // vertex 0
    \n-
    32 for (int i=0; i<dim; i++)
    \n-
    33 x[i] = 0;
    \n-
    34 p1Interpolation[0] = f(x);
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28
    \n+
    29 public:
    \n+\n+\n+\n+\n+
    34
    \n
    35
    \n-
    36 // remaining vertices
    \n-
    37 for (int i=0; i<dim; i++) {
    \n-
    38 for (int j=0; j<dim; j++)
    \n-
    39 x[j] = (i==j);
    \n-
    40
    \n-
    41 p1Interpolation[i+1] = f(x);
    \n-
    42
    \n-
    43 }
    \n-
    44
    \n-
    45 // compute dual coefficients from the Lagrange ones
    \n-
    46 out.resize(dim+1);
    \n-
    47 for (int i=0; i<dim+1; i++) {
    \n-
    48 out[i] = 2*p1Interpolation[i]/(dim+2-faceDual);
    \n+\n+
    39
    \n+
    \n+\n+
    46 basis(s),
    \n+
    47 interpolation(s)
    \n+
    48 {}
    \n+
    \n
    49
    \n-
    50 for (int j=0; j<i; j++)
    \n-
    51 out[i] += p1Interpolation[j]/(dim+2-faceDual);
    \n-
    52
    \n-
    53 for (int j=i+1; j<=dim; j++)
    \n-
    54 out[i] += p1Interpolation[j]/(dim+2-faceDual);
    \n-
    55 }
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    58 };
    \n-
    \n-
    59}
    \n-
    60
    \n-
    61#endif
    \n+
    \n+
    50 const typename Traits::LocalBasisType& localBasis () const
    \n+
    51 {
    \n+
    52 return basis;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+\n+
    56 {
    \n+
    57 return coefficients;
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+\n+
    61 {
    \n+
    62 return interpolation;
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    \n+
    66 unsigned int size () const
    \n+
    67 {
    \n+
    68 return basis.size();
    \n+
    69 }
    \n+
    \n+
    70
    \n+
    \n+
    71 static constexpr GeometryType type ()
    \n+
    72 {
    \n+
    73 return GeometryTypes::prism;
    \n+
    74 }
    \n+
    \n+
    75
    \n+
    76 private:
    \n+\n+
    78 RT0PrismLocalCoefficients coefficients;
    \n+\n+
    80 };
    \n+
    \n+
    81}
    \n+
    82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition dualp1localinterpolation.hh:17
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Local interpolation of a function.
    Definition dualp1localinterpolation.hh:21
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    First order Raviart-Thomas shape functions on prisms.
    Definition raviartthomas0prism.hh:27
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas0prism.hh:66
    \n+
    LocalFiniteElementTraits< RT0PrismLocalBasis< D, R >, RT0PrismLocalCoefficients, RT0PrismLocalInterpolation< RT0PrismLocalBasis< D, R > > > Traits
    Definition raviartthomas0prism.hh:33
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas0prism.hh:60
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas0prism.hh:50
    \n+
    RT0PrismLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas0prism.hh:37
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas0prism.hh:55
    \n+
    RT0PrismLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0prism.hh:45
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas0prism.hh:71
    \n+
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalbasis.hh:28
    \n+
    Layout map for Raviart-Thomas-1 elements on prisms.
    Definition raviartthomas0prismlocalcoefficients.hh:24
    \n+
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalinterpolation.hh:22
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,78 +1,137 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bp_\b1\n-dualp1localinterpolation.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas0prism.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_DUAL_P1_LOCALINTERPOLATION_HH\n-6#define DUNE_DUAL_P1_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH\n 7\n-8#include \n+8#include \n 9\n-10namespace _\bD_\bu_\bn_\be\n-11{\n-15 template\n-_\b1_\b6 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-17 {\n-18 public:\n-20 template\n-_\b2_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n-22 {\n-23 typename LB::Traits::DomainType x;\n-24 // If the dual functions are dual on the faces,\n-25 // then adjust the interpolation weights\n-26 const int faceDual(LB::faceDual);\n-27\n-28 // compute P1 interpolation coefficients\n-29 std::vector p1Interpolation(dim+1);\n-30\n-31 // vertex 0\n-32 for (int i=0; i\n+_\b2_\b6 class _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 {\n+28\n+29 public:\n+30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+31 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+32 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n 35\n-36 // remaining vertices\n-37 for (int i=0; i basis;\n+78 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+79 _\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+80 };\n+81}\n+82#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bp_\br_\bi_\bs_\bm_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localinterpolation.hh:17\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Local interpolation of a function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localinterpolation.hh:21\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Raviart-Thomas shape functions on prisms.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT0PrismLocalBasis< D, R >,\n+RT0PrismLocalCoefficients, RT0PrismLocalInterpolation< RT0PrismLocalBasis< D, R\n+> > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:60\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT0PrismLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:55\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT0PrismLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 32.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prism.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+First order Raviart-Thomas shape functions on the reference prism.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-1 elements on prisms.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bP_\br_\bi_\bs_\bm_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+First order Raviart-Thomas shape functions on the reference prism.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0prismlocalinterpolation.hh:22\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualpq1factory.hh File Reference\n+dune-localfunctions: raviartthomassimplex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,45 @@\n \n \n \n \n \n \n \n
    \n \n-
    dualpq1factory.hh File Reference
    \n+
    raviartthomassimplex.hh File Reference
    \n
    \n
    \n-
    #include <map>
    \n-#include <dune/localfunctions/common/virtualinterface.hh>
    \n-#include <dune/localfunctions/common/virtualwrappers.hh>
    \n-#include <dune/localfunctions/dualmortarbasis.hh>
    \n+\n+

    Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension. \n+More...

    \n+\n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    class  Dune::DualPQ1LocalFiniteElementCache< D, R, dim, faceDual >
    class  Dune::RaviartThomasSimplexLocalFiniteElement< dimDomain, D, R, SF, CF >
     Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

    Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension.

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,27 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dualpq1factory.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+raviartthomassimplex.hh File Reference\n+Raviart-Thomas local finite elements of arbitrary order for simplices of\n+arbitrary dimension. _\bM_\bo_\br_\be_\b._\b._\b.\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bD_\b,_\b _\bR_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n+\u00a0 Raviart-Thomas local finite elements of arbitrary order for simplices\n+ of arbitrary dimension. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+*\b**\b**\b**\b**\b* D\bDe\bet\bta\bai\bil\ble\bed\bd D\bDe\bes\bsc\bcr\bri\bip\bpt\bti\bio\bon\bn *\b**\b**\b**\b**\b*\n+Raviart-Thomas local finite elements of arbitrary order for simplices of\n+arbitrary dimension.\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualpq1factory.hh Source File\n+dune-localfunctions: raviartthomassimplex.hh Source File\n \n \n \n \n \n \n \n@@ -70,118 +70,66 @@\n \n \n \n \n \n \n \n
    \n-
    dualpq1factory.hh
    \n+
    raviartthomassimplex.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH
    \n
    7
    \n-
    8#include <map>
    \n-
    9
    \n-\n-\n-
    12
    \n-\n-
    14
    \n-
    15namespace Dune {
    \n-
    16
    \n-
    17template<class D, class R, int dim, bool faceDual=false>
    \n-
    \n-\n-
    19{
    \n-
    20protected:
    \n-\n-\n-\n-\n-
    25 typedef std::map<Dune::GeometryType,FE*> FEMap;
    \n-
    26
    \n-
    27public:
    \n-\n-
    30
    \n-
    \n-\n-
    32 {
    \n-
    33 typename FEMap::iterator it = cache_.begin();
    \n-
    34 typename FEMap::iterator end = cache_.end();
    \n-
    35 for(; it!=end; ++it)
    \n-
    36 delete it->second;
    \n-
    37 }
    \n-
    \n-
    38
    \n-
    \n-
    40 static FE* create(const Dune::GeometryType& gt)
    \n+\n+\n+
    10
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    35 template<unsigned int dimDomain, class D, class R,
    \n+
    36 class SF=R, class CF=SF>
    \n+
    \n+\n+
    38 : public GenericLocalFiniteElement<RaviartThomasBasisFactory<dimDomain, SF, CF>,
    \n+
    39 RaviartThomasCoefficientsFactory<dimDomain>,
    \n+
    40 RaviartThomasL2InterpolationFactory<dimDomain, SF> >
    \n
    41 {
    \n-
    42 if (gt.isSimplex())
    \n-\n-
    44 if (gt.isCube())
    \n-\n-
    46 return 0;
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    \n-
    50 const FiniteElementType& get(const Dune::GeometryType& gt) const
    \n-
    51 {
    \n-
    52 typename FEMap::const_iterator it = cache_.find(gt);
    \n-
    53 if (it==cache_.end())
    \n-
    54 {
    \n-
    55 FiniteElementType* fe = create(gt);
    \n-
    56
    \n-
    57 if (fe==0)
    \n-
    58 DUNE_THROW(Dune::NotImplemented,"No Dual P/Q1 like local finite element available for geometry type " << gt);
    \n-
    59
    \n-
    60 cache_[gt] = fe;
    \n-
    61 return *fe;
    \n-
    62 }
    \n-
    63 return *(it->second);
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    66protected:
    \n-
    67 mutable FEMap cache_;
    \n-
    68};
    \n-
    \n-
    69
    \n-
    70} // namespace Dune
    \n-
    71
    \n-
    72#endif // DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
    \n-\n-\n-\n+\n+\n+\n+
    45 public:
    \n+
    46 using typename Base::Traits;
    \n+
    47
    \n+
    \n+
    49 RaviartThomasSimplexLocalFiniteElement(const GeometryType &gt, unsigned int order)
    \n+
    50 : Base(gt, order)
    \n+
    51 {}
    \n+
    \n+
    52 };
    \n+
    \n+
    53} // namespace Dune
    \n+
    54
    \n+
    55#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:225
    \n-
    class for wrapping a finite element using the virtual interface
    Definition virtualwrappers.hh:240
    \n-
    The local dual p1 finite element on simplices.
    Definition dualp1.hh:35
    \n-
    Definition dualpq1factory.hh:19
    \n-
    Dune::DualP1LocalFiniteElement< D, R, dim, faceDual > DualP1
    Definition dualpq1factory.hh:21
    \n-
    ~DualPQ1LocalFiniteElementCache()
    Definition dualpq1factory.hh:31
    \n-
    FEMap cache_
    Definition dualpq1factory.hh:67
    \n-
    DualP1::Traits::LocalBasisType::Traits T
    Definition dualpq1factory.hh:23
    \n-
    static FE * create(const Dune::GeometryType &gt)
    create finite element for given GeometryType
    Definition dualpq1factory.hh:40
    \n-
    FE FiniteElementType
    Type of the finite elements stored in this cache.
    Definition dualpq1factory.hh:29
    \n-
    const FiniteElementType & get(const Dune::GeometryType &gt) const
    Get local finite element for given GeometryType.
    Definition dualpq1factory.hh:50
    \n-
    Dune::LocalFiniteElementVirtualInterface< T > FE
    Definition dualpq1factory.hh:24
    \n-
    std::map< Dune::GeometryType, FE * > FEMap
    Definition dualpq1factory.hh:25
    \n-
    Dune::DualQ1LocalFiniteElement< D, R, dim, faceDual > DualQ1
    Definition dualpq1factory.hh:22
    \n-
    The local dual Q1 finite element on cubes.
    Definition dualq1.hh:42
    \n+
    Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension.
    Definition raviartthomassimplex.hh:41
    \n+
    RaviartThomasSimplexLocalFiniteElement(const GeometryType &gt, unsigned int order)
    Definition raviartthomassimplex.hh:49
    \n+
    Definition raviartthomassimplexinterpolation.hh:423
    \n+
    Definition raviartthomassimplexinterpolation.hh:70
    \n+
    A LocalFiniteElement implementation based on three TopologyFactories providing the LocalBasis,...
    Definition localfunctions/utility/localfiniteelement.hh:25
    \n+
    LocalFiniteElementTraits< typename BasisF::Object, typename CoeffF::Object, typename InterpolF::Object > Traits
    Definition localfunctions/utility/localfiniteelement.hh:29
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,137 +1,72 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n-dualpq1factory.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomassimplex.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH\n-6#define DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh>\n-12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be {\n-16\n-17template\n-_\b1_\b8class _\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-19{\n-20protected:\n-_\b2_\b1 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> _\bD_\bu_\ba_\bl_\bP_\b1;\n-_\b2_\b2 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> _\bD_\bu_\ba_\bl_\bQ_\b1;\n-_\b2_\b3 typedef typename _\bD_\bu_\ba_\bl_\bP_\b1_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs _\bT;\n-_\b2_\b4 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bT_\b> _\bF_\bE;\n-_\b2_\b5 typedef std::map _\bF_\bE_\bM_\ba_\bp;\n-26\n-27public:\n-_\b2_\b9 typedef _\bF_\bE _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n-30\n-_\b3_\b1 _\b~_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be()\n-32 {\n-33 typename FEMap::iterator it = _\bc_\ba_\bc_\bh_\be_\b_.begin();\n-34 typename FEMap::iterator end = _\bc_\ba_\bc_\bh_\be_\b_.end();\n-35 for(; it!=end; ++it)\n-36 delete it->second;\n-37 }\n-38\n-_\b4_\b0 static _\bF_\bE* _\bc_\br_\be_\ba_\bt_\be(const Dune::GeometryType& gt)\n+8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n+9#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+10\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+35 template\n+_\b3_\b7 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+38 : public _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt,\n+39 RaviartThomasCoefficientsFactory,\n+40 RaviartThomasL2InterpolationFactory >\n 41 {\n-42 if (gt.isSimplex())\n-43 return new _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bD_\bu_\ba_\bl_\bP_\b1_\b>(_\bD_\bu_\ba_\bl_\bP_\b1());\n-44 if (gt.isCube())\n-45 return new _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp_\b<_\bD_\bu_\ba_\bl_\bQ_\b1_\b>(_\bD_\bu_\ba_\bl_\bQ_\b1());\n-46 return 0;\n-47 }\n-48\n-_\b5_\b0 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be& _\bg_\be_\bt(const Dune::GeometryType& gt) const\n-51 {\n-52 typename FEMap::const_iterator it = _\bc_\ba_\bc_\bh_\be_\b_.find(gt);\n-53 if (it==_\bc_\ba_\bc_\bh_\be_\b_.end())\n-54 {\n-55 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be* fe = _\bc_\br_\be_\ba_\bt_\be(gt);\n-56\n-57 if (fe==0)\n-58 DUNE_THROW(Dune::NotImplemented,\"No Dual P/Q1 like local finite element\n-available for geometry type \" << gt);\n-59\n-60 _\bc_\ba_\bc_\bh_\be_\b_[gt] = fe;\n-61 return *fe;\n-62 }\n-63 return *(it->second);\n-64 }\n-65\n-66protected:\n-_\b6_\b7 mutable _\bF_\bE_\bM_\ba_\bp _\bc_\ba_\bc_\bh_\be_\b_;\n-68};\n-69\n-70} // namespace Dune\n-71\n-72#endif // DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH\n-_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n-_\bv_\bi_\br_\bt_\bu_\ba_\bl_\bw_\br_\ba_\bp_\bp_\be_\br_\bs_\b._\bh_\bh\n-_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+42 typedef _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,\n+_\bC_\bF_\b>,\n+43 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b>,\n+44 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b> > _\bB_\ba_\bs_\be;\n+45 public:\n+46 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs;\n+47\n+_\b4_\b9 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const GeometryType >, unsigned int\n+order)\n+50 : _\bB_\ba_\bs_\be(gt, order)\n+51 {}\n+52 };\n+53} // namespace Dune\n+54\n+55#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\bs_\bi_\bm_\bp_\bl_\be_\bx_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual base class for local finite elements with functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:225\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bI_\bm_\bp\n-class for wrapping a finite element using the virtual interface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualwrappers.hh:240\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-The local dual p1 finite element on simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:19\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1\n-Dune::DualP1LocalFiniteElement< D, R, dim, faceDual > DualP1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:21\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\b~_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be\n-~DualPQ1LocalFiniteElementCache()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bc_\ba_\bc_\bh_\be_\b_\n-FEMap cache_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bT\n-DualP1::Traits::LocalBasisType::Traits T\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static FE * create(const Dune::GeometryType >)\n-create finite element for given GeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be\n-FE FiniteElementType\n-Type of the finite elements stored in this cache.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bg_\be_\bt\n-const FiniteElementType & get(const Dune::GeometryType >) const\n-Get local finite element for given GeometryType.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bE\n-Dune::LocalFiniteElementVirtualInterface< T > FE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bF_\bE_\bM_\ba_\bp\n-std::map< Dune::GeometryType, FE * > FEMap\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1\n-Dune::DualQ1LocalFiniteElement< D, R, dim, faceDual > DualQ1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualpq1factory.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-The local dual Q1 finite element on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Raviart-Thomas local finite elements of arbitrary order for simplices of\n+arbitrary dimension.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplex.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasSimplexLocalFiniteElement(const GeometryType >, unsigned int\n+order)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplex.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:423\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+A LocalFiniteElement implementation based on three TopologyFactories providing\n+the LocalBasis,...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< typename BasisF::Object, typename CoeffF::Object,\n+typename InterpolF::Object > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:29\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualq1.hh File Reference\n+dune-localfunctions: raviartthomas03dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    dualq1.hh File Reference
    \n+
    raviartthomas03dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangecube.hh>
    \n-#include "dualq1/dualq1localbasis.hh"
    \n-#include "dualq1/dualq1localcoefficients.hh"
    \n-#include "dualq1/dualq1localinterpolation.hh"
    \n+
    #include <cmath>
    \n+#include <array>
    \n+#include <bitset>
    \n+#include <vector>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::DualQ1LocalFiniteElement< D, R, dim, faceDual >
     The local dual Q1 finite element on cubes. More...
    class  Dune::RT03DLocalInterpolation< LB >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dualq1.hh File Reference\n+raviartthomas03dlocalinterpolation.hh File Reference\n+#include \n #include \n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b _\b>\n-\u00a0 The local dual Q1 finite element on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualq1.hh Source File\n+dune-localfunctions: raviartthomas03dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,264 +70,97 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualq1.hh
    \n+
    raviartthomas03dlocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_DUAL_Q1_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_DUAL_Q1_LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11#include <dune/common/fmatrix.hh>
    \n+
    8#include <cmath>
    \n+
    9#include <array>
    \n+
    10#include <bitset>
    \n+
    11#include <vector>
    \n
    12
    \n-
    13#include <dune/geometry/type.hh>
    \n-
    14#include <dune/geometry/referenceelements.hh>
    \n-
    15#include <dune/geometry/quadraturerules.hh>
    \n-
    16
    \n-\n-\n-\n-\n-\n-
    22
    \n-
    23namespace Dune
    \n-
    24{
    \n-
    40 template<class D, class R, int dim, bool faceDual=false>
    \n-
    \n-\n-
    42 {
    \n-
    43 public:
    \n-\n-\n-
    48
    \n-
    \n-\n-
    52 {
    \n-
    53 if (faceDual)
    \n-
    54 setupFaceDualCoefficients();
    \n-
    55 else
    \n-
    56 setupDualCoefficients();
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15 template<class LB>
    \n+
    \n+\n+
    17 {
    \n+
    18 public:
    \n+
    19
    \n+
    \n+
    25 RT03DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    26 {
    \n+
    27 using std::sqrt;
    \n+
    28 for (std::size_t i=0; i<sign_.size(); i++)
    \n+
    29 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    30
    \n+
    31 m_[0] = {1/3.0, 1/3.0, 0.0};
    \n+
    32 m_[1] = {1/3.0, 0.0, 1/3.0};
    \n+
    33 m_[2] = { 0.0, 1/3.0, 1/3.0};
    \n+
    34 m_[3] = {1/3.0, 1/3.0, 1/3.0};
    \n+
    35 n_[0] = { 0.0, 0.0, -1.0};
    \n+
    36 n_[1] = { 0.0, -1.0, 0.0};
    \n+
    37 n_[2] = { -1.0, 0.0, 0.0};
    \n+
    38 n_[3] = {1.0/sqrt(3.0), 1.0/sqrt(3.0), 1.0/sqrt(3.0)};
    \n+
    39 c_[0] = sqrt(2.0);
    \n+
    40 c_[1] = sqrt(2.0);
    \n+
    41 c_[2] = sqrt(2.0);
    \n+
    42 c_[3] = sqrt(2.0)/sqrt(3.0);
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    45 template<typename F, typename C>
    \n+
    \n+
    46 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    47 {
    \n+
    48 // f gives v*outer normal at a point on the face!
    \n+
    49
    \n+
    50 out.resize(4);
    \n+
    51
    \n+
    52 for (int i=0; i<4; i++)
    \n+
    53 {
    \n+
    54 auto y = f(m_[i]);
    \n+
    55 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1]+y[2]*n_[i][2])*sign_[i]/c_[i];
    \n+
    56 }
    \n
    57 }
    \n
    \n
    58
    \n-
    \n-
    61 const typename Traits::LocalBasisType& localBasis () const
    \n-
    62 {
    \n-
    63 return basis;
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    \n-\n-
    69 {
    \n-
    70 return coefficients;
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-\n-
    76 {
    \n-
    77 return interpolation;
    \n-
    78 }
    \n-
    \n-
    79
    \n-
    \n-
    81 unsigned int size () const
    \n-
    82 {
    \n-
    83 return basis.size();
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    \n-
    88 static constexpr GeometryType type ()
    \n-
    89 {
    \n-
    90 return GeometryTypes::cube(dim);
    \n-
    91 }
    \n-
    \n-
    92
    \n-
    93 private:
    \n-
    95 void setupFaceDualCoefficients();
    \n-
    96
    \n-
    98 void setupDualCoefficients();
    \n-
    99
    \n-\n-
    101 DualQ1LocalCoefficients<dim> coefficients;
    \n-\n-
    103 };
    \n-
    \n-
    104
    \n-
    105 template<class D, class R, int dim, bool faceDual>
    \n-
    106 void DualQ1LocalFiniteElement<D,R,dim,faceDual>::setupDualCoefficients()
    \n-
    107 {
    \n-
    108
    \n-
    109 const int size = 1 <<dim;
    \n-
    110 std::array<Dune::FieldVector<R, size>, size> coeffs;
    \n-
    111
    \n-
    112 // dual basis functions are linear combinations of Lagrange elements
    \n-
    113 // compute these coefficients here because the basis and the local interpolation needs them
    \n-
    114 const auto& quad = Dune::QuadratureRules<D,dim>::rule(type(), 2*dim);
    \n-
    115
    \n-
    116 // assemble mass matrix on the reference element
    \n-
    117 Dune::FieldMatrix<R, size, size> massMat;
    \n-
    118 massMat = 0;
    \n-
    119
    \n-
    120 // and the integrals of the lagrange shape functions
    \n-
    121 std::vector<Dune::FieldVector<R,1> > integral(size);
    \n-
    122 for (int i=0; i<size; i++)
    \n-
    123 integral[i] = 0;
    \n-
    124
    \n-
    125 Dune::Impl::LagrangeCubeLocalBasis<D,R,dim,1> q1Basis;
    \n-
    126 for(size_t pt=0; pt<quad.size(); pt++) {
    \n-
    127
    \n-
    128 const Dune::FieldVector<D ,dim>& pos = quad[pt].position();
    \n-
    129 std::vector<Dune::FieldVector<R,1> > q1Values(size);
    \n-
    130 q1Basis.evaluateFunction(pos,q1Values);
    \n-
    131
    \n-
    132 D weight = quad[pt].weight();
    \n-
    133
    \n-
    134 for (int k=0; k<size; k++) {
    \n-
    135 integral[k] += q1Values[k]*weight;
    \n-
    136
    \n-
    137 for (int l=0; l<=k; l++)
    \n-
    138 massMat[k][l] += weight*(q1Values[k]*q1Values[l]);
    \n-
    139 }
    \n-
    140 }
    \n-
    141
    \n-
    142 // make matrix symmetric
    \n-
    143 for (int i=0; i<size-1; i++)
    \n-
    144 for (int j=i+1; j<size; j++)
    \n-
    145 massMat[i][j] = massMat[j][i];
    \n-
    146
    \n-
    147 //solve for the coefficients
    \n-
    148
    \n-
    149 for (int i=0; i<size; i++) {
    \n-
    150
    \n-
    151 Dune::FieldVector<R, size> rhs(0);
    \n-
    152 rhs[i] = integral[i];
    \n-
    153
    \n-
    154 coeffs[i] = 0;
    \n-
    155 massMat.solve(coeffs[i] ,rhs);
    \n-
    156
    \n-
    157 }
    \n-
    158
    \n-
    159 basis.setCoefficients(coeffs);
    \n-
    160 interpolation.setCoefficients(coeffs);
    \n-
    161 }
    \n-
    162
    \n-
    163 template<class D, class R, int dim, bool faceDual>
    \n-
    164 void DualQ1LocalFiniteElement<D,R,dim,faceDual>::setupFaceDualCoefficients()
    \n-
    165 {
    \n-
    166
    \n-
    167 const int size = 1 <<dim;
    \n-
    168 std::array<Dune::FieldVector<R, size>, size> coeffs;
    \n-
    169
    \n-
    170 // dual basis functions are linear combinations of Lagrange elements
    \n-
    171 Dune::Impl::LagrangeCubeLocalBasis<D,R,dim,1> q1Basis;
    \n-
    172
    \n-
    173 const auto& refElement = Dune::ReferenceElements<D,dim>::general(type());
    \n-
    174
    \n-
    175 // loop over faces
    \n-
    176 for (int i=0; i<refElement.size(1);i++) {
    \n-
    177
    \n-
    178 const auto& quad = Dune::QuadratureRules<D,dim-1>::rule(refElement.type(i,1),2*dim);
    \n-
    179
    \n-
    180 // for each face assemble the mass matrix over the face of all
    \n-
    181 // non-vanishing basis functions,
    \n-
    182 // for cubes refElement.size(i,1,dim)=size/2
    \n-
    183 Dune::FieldMatrix<R, size/2, size/2> massMat;
    \n-
    184 massMat = 0;
    \n-
    185
    \n-
    186 // get geometry
    \n-
    187 const auto& geometry = refElement.template geometry<1>(i);
    \n-
    188
    \n-
    189 // and the integrals of the lagrange shape functions
    \n-
    190 std::vector<Dune::FieldVector<R,1> > integral(size/2);
    \n-
    191 for (int k=0; k<size/2; k++)
    \n-
    192 integral[k] = 0;
    \n-
    193
    \n-
    194 for(size_t pt=0; pt<quad.size(); pt++) {
    \n-
    195
    \n-
    196 const auto& pos = quad[pt].position();
    \n-
    197 const auto& elementPos = geometry.global(pos);
    \n-
    198
    \n-
    199 std::vector<Dune::FieldVector<R,1> > q1Values(size);
    \n-
    200 q1Basis.evaluateFunction(elementPos,q1Values);
    \n-
    201
    \n-
    202 D weight = quad[pt].weight();
    \n-
    203
    \n-
    204 for (int k=0; k<refElement.size(i,1,dim); k++) {
    \n-
    205 int row = refElement.subEntity(i,1,k,dim);
    \n-
    206 integral[k] += q1Values[row]*weight;
    \n-
    207
    \n-
    208 for (int l=0; l<refElement.size(i,1,dim); l++) {
    \n-
    209 int col = refElement.subEntity(i,1,l,dim);
    \n-
    210 massMat[k][l] += weight*(q1Values[row]*q1Values[col]);
    \n-
    211 }
    \n-
    212 }
    \n-
    213 }
    \n-
    214
    \n-
    215 // solve for the coefficients
    \n-
    216 // note that we possibly overwrite coefficients for neighbouring faces
    \n-
    217 // this is okay since the coefficients are symmetric
    \n-
    218 for (int l=0; l<refElement.size(i,1,dim); l++) {
    \n-
    219
    \n-
    220 int row = refElement.subEntity(i,1,l,dim);
    \n-
    221 Dune::FieldVector<R, size/2> rhs(0);
    \n-
    222 rhs[l] = integral[l];
    \n-
    223
    \n-
    224 Dune::FieldVector<R, size/2> x(0);
    \n-
    225 massMat.solve(x ,rhs);
    \n-
    226
    \n-
    227 for (int k=0; k<refElement.size(i,1,dim); k++) {
    \n-
    228 int col = refElement.subEntity(i,1,k,dim);
    \n-
    229 coeffs[row][col]=x[k];
    \n-
    230 }
    \n-
    231 }
    \n-
    232 }
    \n-
    233
    \n-
    234 basis.setCoefficients(coeffs);
    \n-
    235 interpolation.setCoefficients(coeffs);
    \n-
    236 }
    \n-
    237}
    \n-
    238#endif
    \n-\n-\n-\n-\n-\n+
    59 private:
    \n+
    60 // Face orientations
    \n+
    61 std::array<typename LB::Traits::RangeFieldType,4> sign_;
    \n+
    62 // Face midpoints of the reference tetrahedron
    \n+
    63 std::array<typename LB::Traits::DomainType,4> m_;
    \n+
    64 // Unit outer normals of the reference tetrahedron
    \n+
    65 std::array<typename LB::Traits::DomainType,4> n_;
    \n+
    66 // Inverse triangle face area
    \n+
    67 std::array<typename LB::Traits::RangeFieldType,4> c_;
    \n+
    68 };
    \n+
    \n+
    69}
    \n+
    70
    \n+
    71#endif
    \n+
    RT03DLocalInterpolation(std::bitset< 4 > s=0)
    Constructor with given set of face orientations.
    Definition raviartthomas03dlocalinterpolation.hh:25
    \n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    The local dual Q1 finite element on cubes.
    Definition dualq1.hh:42
    \n-
    LocalFiniteElementTraits< DualQ1LocalBasis< D, R, dim >, DualQ1LocalCoefficients< dim >, DualQ1LocalInterpolation< dim, DualQ1LocalBasis< D, R, dim > > > Traits
    Definition dualq1.hh:47
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition dualq1.hh:81
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition dualq1.hh:75
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition dualq1.hh:61
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition dualq1.hh:68
    \n-
    DualQ1LocalFiniteElement()
    Definition dualq1.hh:51
    \n-
    static constexpr GeometryType type()
    Definition dualq1.hh:88
    \n-
    Dual Lagrange shape functions of order 1 on the reference cube.
    Definition dualq1localbasis.hh:30
    \n-
    Layout map for dual Q1 elements.
    Definition dualq1localcoefficients.hh:26
    \n-
    Definition dualq1localinterpolation.hh:22
    \n+
    Definition raviartthomas03dlocalinterpolation.hh:17
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition raviartthomas03dlocalinterpolation.hh:46
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,278 +1,92 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n-dualq1.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n+raviartthomas03dlocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_DUAL_Q1_LOCALFINITEELEMENT_HH\n-6#define DUNE_DUAL_Q1_LOCALFINITEELEMENT_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH\n 7\n-8#include \n-9\n-10#include \n-11#include \n+8#include \n+9#include \n+10#include \n+11#include \n 12\n-13#include \n-14#include \n-15#include \n-16\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-18#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh>\n-19#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-20#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-21#include \"_\bd_\bu_\ba_\bl_\bq_\b1_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-22\n-23namespace _\bD_\bu_\bn_\be\n-24{\n-40 template\n-_\b4_\b1 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-42 {\n-43 public:\n-46 typedef\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b>,\n-_\b4_\b7 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-48\n-_\b5_\b1 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-52 {\n-53 if (faceDual)\n-54 setupFaceDualCoefficients();\n-55 else\n-56 setupDualCoefficients();\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15 template\n+_\b1_\b6 class _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+17 {\n+18 public:\n+19\n+_\b2_\b5 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset<4> s = 0)\n+26 {\n+27 using std::sqrt;\n+28 for (std::size_t i=0; i\n+_\b4_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+47 {\n+48 // f gives v*outer normal at a point on the face!\n+49\n+50 out.resize(4);\n+51\n+52 for (int i=0; i<4; i++)\n+53 {\n+54 auto y = f(m_[i]);\n+55 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1]+y[2]*n_[i][2])*sign_[i]/c_[i];\n+56 }\n 57 }\n 58\n-_\b6_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-62 {\n-63 return basis;\n-64 }\n-65\n-_\b6_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-69 {\n-70 return coefficients;\n-71 }\n-72\n-_\b7_\b5 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-76 {\n-77 return interpolation;\n-78 }\n-79\n-_\b8_\b1 unsigned int _\bs_\bi_\bz_\be () const\n-82 {\n-83 return basis.size();\n-84 }\n-85\n-_\b8_\b8 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-89 {\n-90 return GeometryTypes::cube(dim);\n-91 }\n-92\n-93 private:\n-95 void setupFaceDualCoefficients();\n-96\n-98 void setupDualCoefficients();\n-99\n-100 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> basis;\n-101 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b> coefficients;\n-102 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> > interpolation;\n-103 };\n-104\n-105 template\n-106 void DualQ1LocalFiniteElement::setupDualCoefficients()\n-107 {\n-108\n-109 const int size = 1 <, size> coeffs;\n-111\n-112 // dual basis functions are linear combinations of Lagrange elements\n-113 // compute these coefficients here because the basis and the local\n-interpolation needs them\n-114 const auto& quad = Dune::QuadratureRules::rule(type(), 2*dim);\n-115\n-116 // assemble mass matrix on the reference element\n-117 Dune::FieldMatrix massMat;\n-118 massMat = 0;\n-119\n-120 // and the integrals of the lagrange shape functions\n-121 std::vector > integral(size);\n-122 for (int i=0; i q1Basis;\n-126 for(size_t pt=0; pt& pos = quad[pt].position();\n-129 std::vector > q1Values(size);\n-130 q1Basis.evaluateFunction(pos,q1Values);\n-131\n-132 D weight = quad[pt].weight();\n-133\n-134 for (int k=0; k rhs(0);\n-152 rhs[i] = integral[i];\n-153\n-154 coeffs[i] = 0;\n-155 massMat.solve(coeffs[i] ,rhs);\n-156\n-157 }\n-158\n-159 basis.setCoefficients(coeffs);\n-160 interpolation.setCoefficients(coeffs);\n-161 }\n-162\n-163 template\n-164 void DualQ1LocalFiniteElement::setupFaceDualCoefficients\n-()\n-165 {\n-166\n-167 const int size = 1 <, size> coeffs;\n-169\n-170 // dual basis functions are linear combinations of Lagrange elements\n-171 Dune::Impl::LagrangeCubeLocalBasis q1Basis;\n-172\n-173 const auto& refElement = Dune::ReferenceElements::general(type());\n-174\n-175 // loop over faces\n-176 for (int i=0; i::rule(refElement.type\n-(i,1),2*dim);\n-179\n-180 // for each face assemble the mass matrix over the face of all\n-181 // non-vanishing basis functions,\n-182 // for cubes refElement.size(i,1,dim)=size/2\n-183 Dune::FieldMatrix massMat;\n-184 massMat = 0;\n-185\n-186 // get geometry\n-187 const auto& geometry = refElement.template geometry<1>(i);\n-188\n-189 // and the integrals of the lagrange shape functions\n-190 std::vector > integral(size/2);\n-191 for (int k=0; k > q1Values(size);\n-200 q1Basis.evaluateFunction(elementPos,q1Values);\n-201\n-202 D weight = quad[pt].weight();\n-203\n-204 for (int k=0; k rhs(0);\n-222 rhs[l] = integral[l];\n-223\n-224 Dune::FieldVector x(0);\n-225 massMat.solve(x ,rhs);\n-226\n-227 for (int k=0; k sign_;\n+62 // Face midpoints of the reference tetrahedron\n+63 std::array m_;\n+64 // Unit outer normals of the reference tetrahedron\n+65 std::array n_;\n+66 // Inverse triangle face area\n+67 std::array c_;\n+68 };\n+69}\n+70\n+71#endif\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+RT03DLocalInterpolation(std::bitset< 4 > s=0)\n+Constructor with given set of face orientations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalinterpolation.hh:25\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-The local dual Q1 finite element on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< DualQ1LocalBasis< D, R, dim >,\n-DualQ1LocalCoefficients< dim >, DualQ1LocalInterpolation< dim,\n-DualQ1LocalBasis< D, R, dim > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-DualQ1LocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1.hh:88\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Dual Lagrange shape functions of order 1 on the reference cube.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for dual Q1 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.hh:22\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalinterpolation.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalinterpolation.hh:46\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualq1localinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas03dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,33 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    dualq1localinterpolation.hh File Reference
    \n+
    raviartthomas03dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <vector>
    \n-#include <dune/common/fvector.hh>
    \n+
    #include <numeric>
    \n #include <dune/common/fmatrix.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n \n

    \n Classes

    class  Dune::DualQ1LocalInterpolation< dim, LB >
    class  Dune::RT03DLocalBasis< D, R >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bq_\b1\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dualq1localinterpolation.hh File Reference\n-#include \n-#include \n-#include \n+raviartthomas03dlocalbasis.hh File Reference\n+#include \n #include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bd_\bi_\bm_\b,_\b _\bL_\bB_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualq1localinterpolation.hh Source File\n+dune-localfunctions: raviartthomas03dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,106 +70,143 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualq1localinterpolation.hh
    \n+
    raviartthomas03dlocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_DUAL_Q1_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_DUAL_Q1_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include <dune/common/fvector.hh>
    \n-
    12#include <dune/common/fmatrix.hh>
    \n+
    8#include <numeric>
    \n+
    9
    \n+
    10#include <dune/common/fmatrix.hh>
    \n+
    11
    \n+\n
    13
    \n
    14namespace Dune
    \n
    15{
    \n-
    16
    \n-
    20 template<int dim, class LB>
    \n-
    \n-\n-
    22 {
    \n-
    23 public:
    \n-
    24
    \n-
    \n-
    25 void setCoefficients(const std::array<Dune::FieldVector<typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)>& coefficients)
    \n-
    26 {
    \n-
    27 coefficients_ = coefficients;
    \n-
    28 }
    \n-
    \n-
    29
    \n-
    30
    \n-
    32 template<typename F, typename C>
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28 public:
    \n+
    29 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n+
    30 Dune::FieldMatrix<R,3,3> > Traits;
    \n+
    31
    \n
    \n-
    33 void interpolate (const F& f, std::vector<C>& out) const
    \n-
    34 {
    \n-
    35 typename LB::Traits::DomainType x;
    \n-
    36
    \n-
    37 const int size = 1<<dim;
    \n+
    33 RT03DLocalBasis (std::bitset<4> s = 0)
    \n+
    34 {
    \n+
    35 for (int i=0; i<4; i++)
    \n+
    36 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    37 }
    \n+
    \n
    38
    \n-
    39 // compute Q1 interpolation coefficients
    \n-
    40 Dune::FieldVector<C,size> q1Coefficients;
    \n-
    41
    \n-
    42 for (int i=0; i< (1<<dim); i++) {
    \n-
    43
    \n-
    44 // Generate coordinate of the i-th corner of the reference cube
    \n-
    45 // We could use the ReferenceElement for this as well, but it is
    \n-
    46 // still not clear how dune-localfunctions should have access to them.
    \n-
    47 for (int j=0; j<dim; j++)
    \n-
    48 x[j] = (i & (1<<j)) ? 1.0 : 0.0;
    \n-
    49
    \n-
    50 q1Coefficients[i] = f(x);
    \n-
    51
    \n-
    52 }
    \n-
    53
    \n-
    54 out.resize(size);
    \n-
    55
    \n-
    56 // solve a linear system to compute the dual coefficients
    \n-
    57 Dune::FieldMatrix<C,size,size> mat;
    \n-
    58
    \n-
    59 for (int i=0; i<size; i++)
    \n-
    60 for (int j=0; j<size; j++)
    \n-
    61 mat[i][j] = coefficients_[j][i];
    \n-
    62
    \n-
    63 // now solve for the weights
    \n-
    64 Dune::FieldVector<C,size> sol(0);
    \n-
    65
    \n-
    66 mat.solve(sol,q1Coefficients);
    \n-
    67
    \n-
    68 // write result in out vector
    \n-
    69 for (int i=0; i<size; i++)
    \n-
    70 out[i] = sol[i];
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    73 private:
    \n-
    74 std::array<Dune::FieldVector<typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)> coefficients_;
    \n-
    75 };
    \n-
    \n-
    76
    \n-
    77}
    \n-
    78
    \n-
    79#endif
    \n+
    \n+
    40 unsigned int size () const
    \n+
    41 {
    \n+
    42 return 4;
    \n+
    43 }
    \n+
    \n+
    44
    \n+
    \n+
    46 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    47 std::vector<typename Traits::RangeType>& out) const
    \n+
    48 {
    \n+
    49 out.resize(4);
    \n+
    50 auto c = std::sqrt(2.0);
    \n+
    51 out[0] = {sign_[0]*c* in[0], sign_[0]*c* in[1], sign_[0]*c*(in[2]-D(1))};
    \n+
    52 out[1] = {sign_[1]*c* in[0], sign_[1]*c*(in[1]-D(1)), sign_[1]*c* in[2] };
    \n+
    53 out[2] = {sign_[2]*c*(in[0]-D(1)), sign_[2]*c* in[1], sign_[2]*c* in[2] };
    \n+
    54 out[3] = {sign_[3]*c* in[0], sign_[3]*c* in[1], sign_[3]*c* in[2] };
    \n+
    55 }
    \n+
    \n+
    56
    \n+
    58 inline void
    \n+
    \n+
    59 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    60 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    61 {
    \n+
    62 out.resize(4);
    \n+
    63 for (int i=0; i<4; i++)
    \n+
    64 {
    \n+
    65 auto c = std::sqrt(2.0);
    \n+
    66 out[i][0] = {c*sign_[i], 0, 0};
    \n+
    67 out[i][1] = { 0,c*sign_[i], 0};
    \n+
    68 out[i][2] = { 0, 0,c*sign_[i]};
    \n+
    69 }
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    \n+
    73 void partial (const std::array<unsigned int, 3>& order,
    \n+
    74 const typename Traits::DomainType& in, // position
    \n+
    75 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    76 {
    \n+
    77 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    78 if (totalOrder == 0) {
    \n+
    79 evaluateFunction(in, out);
    \n+
    80 } else if (totalOrder == 1) {
    \n+
    81 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    82 out.resize(size());
    \n+
    83
    \n+
    84 for (int i=0; i<size(); i++)
    \n+
    85 {
    \n+
    86 out[i][direction] = sign_[i]* std::sqrt(2.0) ;
    \n+
    87 out[i][(direction+1)%3] = 0;
    \n+
    88 out[i][(direction+2)%3] = 0;
    \n+
    89 }
    \n+
    90 } else {
    \n+
    91 out.resize(size());
    \n+
    92 for (std::size_t i = 0; i < size(); ++i)
    \n+
    93 for (std::size_t j = 0; j < 3; ++j)
    \n+
    94 out[i][j] = 0;
    \n+
    95 }
    \n+
    96
    \n+
    97 }
    \n+
    \n+
    98
    \n+
    \n+
    100 unsigned int order () const
    \n+
    101 {
    \n+
    102 return 1;
    \n+
    103 }
    \n+
    \n+
    104
    \n+
    105 private:
    \n+
    106
    \n+
    107 // Signs of the face normals
    \n+
    108 std::array<R,4> sign_;
    \n+
    109 };
    \n+
    \n+
    110}
    \n+
    111#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition dualq1localinterpolation.hh:22
    \n-
    void setCoefficients(const std::array< Dune::FieldVector< typename LB::Traits::RangeFieldType,(1<< dim)>,(1<< dim)> &coefficients)
    Definition dualq1localinterpolation.hh:25
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Local interpolation of a function.
    Definition dualq1localinterpolation.hh:33
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Definition raviartthomas03dlocalbasis.hh:27
    \n+
    RT03DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas03dlocalbasis.hh:33
    \n+
    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 raviartthomas03dlocalbasis.hh:73
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas03dlocalbasis.hh:100
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas03dlocalbasis.hh:40
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas03dlocalbasis.hh:59
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas03dlocalbasis.hh:46
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas03dlocalbasis.hh:30
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,102 +1,156 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bq_\b1\n-dualq1localinterpolation.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n+raviartthomas03dlocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_DUAL_Q1_LOCALINTERPOLATION_HH\n-6#define DUNE_DUAL_Q1_LOCALINTERPOLATION_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \n+8#include \n+9\n+10#include \n+11\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n 13\n 14namespace _\bD_\bu_\bn_\be\n 15{\n-16\n-20 template\n-_\b2_\b1 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-22 {\n-23 public:\n-24\n-_\b2_\b5 void _\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const std::array ,(1<& coefficients)\n-26 {\n-27 coefficients_ = coefficients;\n-28 }\n-29\n-30\n-32 template\n-_\b3_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+25 template\n+_\b2_\b6 class _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+27 {\n+28 public:\n+29 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\b3_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\b3_\b>,R,3,Dune::\n+FieldVector,\n+_\b3_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+31\n+_\b3_\b3 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n 34 {\n-35 typename LB::Traits::DomainType x;\n-36\n-37 const int size = 1< q1Coefficients;\n-41\n-42 for (int i=0; i< (1< mat;\n-58\n-59 for (int i=0; i sol(0);\n-65\n-66 mat.solve(sol,q1Coefficients);\n-67\n-68 // write result in out vector\n-69 for (int i=0; i\n-,(1< coefficients_;\n-75 };\n-76\n-77}\n-78\n-79#endif\n+_\b4_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+41 {\n+42 return 4;\n+43 }\n+44\n+_\b4_\b6 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+47 std::vector& out) const\n+48 {\n+49 out.resize(4);\n+50 auto c = std::sqrt(2.0);\n+51 out[0] = {sign_[0]*c* in[0], sign_[0]*c* in[1], sign_[0]*c*(in[2]-D(1))};\n+52 out[1] = {sign_[1]*c* in[0], sign_[1]*c*(in[1]-D(1)), sign_[1]*c* in[2] };\n+53 out[2] = {sign_[2]*c*(in[0]-D(1)), sign_[2]*c* in[1], sign_[2]*c* in[2] };\n+54 out[3] = {sign_[3]*c* in[0], sign_[3]*c* in[1], sign_[3]*c* in[2] };\n+55 }\n+56\n+58 inline void\n+_\b5_\b9 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+60 std::vector& out) const // return value\n+61 {\n+62 out.resize(4);\n+63 for (int i=0; i<4; i++)\n+64 {\n+65 auto c = std::sqrt(2.0);\n+66 out[i][0] = {c*sign_[i], 0, 0};\n+67 out[i][1] = { 0,c*sign_[i], 0};\n+68 out[i][2] = { 0, 0,c*sign_[i]};\n+69 }\n+70 }\n+71\n+_\b7_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+74 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+75 std::vector& out) const // return value\n+76 {\n+77 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+78 if (totalOrder == 0) {\n+79 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+80 } else if (totalOrder == 1) {\n+81 auto const direction = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n+_\bo_\br_\bd_\be_\br.end(), 1));\n+82 out.resize(_\bs_\bi_\bz_\be());\n+83\n+84 for (int i=0; i<_\bs_\bi_\bz_\be(); i++)\n+85 {\n+86 out[i][direction] = sign_[i]* std::sqrt(2.0) ;\n+87 out[i][(direction+1)%3] = 0;\n+88 out[i][(direction+2)%3] = 0;\n+89 }\n+90 } else {\n+91 out.resize(_\bs_\bi_\bz_\be());\n+92 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+93 for (std::size_t j = 0; j < 3; ++j)\n+94 out[i][j] = 0;\n+95 }\n+96\n+97 }\n+98\n+_\b1_\b0_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n+101 {\n+102 return 1;\n+103 }\n+104\n+105 private:\n+106\n+107 // Signs of the face normals\n+108 std::array sign_;\n+109 };\n+110}\n+111#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.hh:22\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-void setCoefficients(const std::array< Dune::FieldVector< typename LB::Traits::\n-RangeFieldType,(1<< dim)>,(1<< dim)> &coefficients)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Local interpolation of a function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+RT03DLocalBasis(std::bitset< 4 > s=0)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, 3 > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:100\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R,\n+3 >, Dune::FieldMatrix< R, 3, 3 > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:30\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualq1localcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas03dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    dualq1localcoefficients.hh File Reference
    \n+
    raviartthomas03dlocalcoefficients.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n #include <iostream>
    \n #include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::DualQ1LocalCoefficients< dim >
     Layout map for dual Q1 elements. More...
    class  Dune::RT03DLocalCoefficients
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bq_\b1\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dualq1localcoefficients.hh File Reference\n+raviartthomas03dlocalcoefficients.hh File Reference\n #include \n #include \n #include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Layout map for dual Q1 elements. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualq1localcoefficients.hh Source File\n+dune-localfunctions: raviartthomas03dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,79 +70,78 @@\n
    \n \n \n \n \n \n \n
    \n-
    dualq1localcoefficients.hh
    \n+
    raviartthomas03dlocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH
    \n
    7
    \n
    8#include <cstddef>
    \n
    9#include <iostream>
    \n
    10#include <vector>
    \n
    11
    \n-\n+\n
    13
    \n
    14namespace Dune
    \n
    15{
    \n
    16
    \n-
    24 template <int dim>
    \n-
    \n-\n-
    26 {
    \n-
    27 public:
    \n-
    \n-\n-
    30 {
    \n-
    31 for (std::size_t i=0; i<(1<<dim); i++)
    \n-
    32 li[i] = LocalKey(i,dim,0);
    \n-
    33 }
    \n-
    \n-
    34
    \n-
    \n-
    36 std::size_t size () const
    \n-
    37 {
    \n-
    38 return 1<<dim;
    \n-
    39 }
    \n-
    \n-
    40
    \n-
    \n-
    42 const LocalKey& localKey (std::size_t i) const
    \n-
    43 {
    \n-
    44 return li[i];
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    47 private:
    \n-
    48 std::vector<LocalKey> li;
    \n-
    49 };
    \n-
    \n-
    50
    \n-
    51}
    \n-
    52
    \n-
    53#endif
    \n-\n+
    \n+\n+
    25 {
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for (std::size_t i=0; i<4; i++)
    \n+
    31 li[i] = LocalKey(i,1,0);
    \n+
    32 }
    \n+
    \n+
    33
    \n+
    \n+
    35 std::size_t size () const
    \n+
    36 {
    \n+
    37 return 4;
    \n+
    38 }
    \n+
    \n+
    39
    \n+
    \n+
    41 const LocalKey& localKey (std::size_t i) const
    \n+
    42 {
    \n+
    43 return li[i];
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    46 private:
    \n+
    47 std::vector<LocalKey> li;
    \n+
    48 };
    \n+
    \n+
    49
    \n+
    50}
    \n+
    51
    \n+
    52#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Layout map for dual Q1 elements.
    Definition dualq1localcoefficients.hh:26
    \n-
    std::size_t size() const
    number of coefficients
    Definition dualq1localcoefficients.hh:36
    \n-
    DualQ1LocalCoefficients()
    Standard constructor.
    Definition dualq1localcoefficients.hh:29
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition dualq1localcoefficients.hh:42
    \n+
    Definition raviartthomas03dlocalcoefficients.hh:25
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas03dlocalcoefficients.hh:41
    \n+
    RT03DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas03dlocalcoefficients.hh:28
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas03dlocalcoefficients.hh:35
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,77 +1,77 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bq_\b1\n-dualq1localcoefficients.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\b3_\bd\n+raviartthomas03dlocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH\n-6#define DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH\n+5#ifndef\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH\n 7\n 8#include \n 9#include \n 10#include \n 11\n 12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n 13\n 14namespace _\bD_\bu_\bn_\be\n 15{\n 16\n-24 template \n-_\b2_\b5 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-26 {\n-27 public:\n-_\b2_\b9 _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(1< li;\n-49 };\n-50\n-51}\n-52\n-53#endif\n+_\b2_\b4 class _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+25 {\n+26 public:\n+_\b2_\b8 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(4)\n+29 {\n+30 for (std::size_t i=0; i<4; i++)\n+31 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+32 }\n+33\n+_\b3_\b5 std::size_t _\bs_\bi_\bz_\be () const\n+36 {\n+37 return 4;\n+38 }\n+39\n+_\b4_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+42 {\n+43 return li[i];\n+44 }\n+45\n+46 private:\n+47 std::vector li;\n+48 };\n+49\n+50}\n+51\n+52#endif\n _\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n Describe position of one degree of freedom.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for dual Q1 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-DualQ1LocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n const LocalKey & localKey(std::size_t i) const\n get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.hh:42\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+RT03DLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:35\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualq1localbasis.hh File Reference\n+dune-localfunctions: monomiallocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,54 @@\n \n \n \n \n \n \n \n
    \n \n-
    dualq1localbasis.hh File Reference
    \n+
    monomiallocalbasis.hh File Reference
    \n
    \n
    \n
    #include <array>
    \n+#include <cassert>
    \n #include <numeric>
    \n-#include <dune/common/fvector.hh>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/common/math.hh>
    \n+#include "../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::DualQ1LocalBasis< D, R, dim >
     Dual Lagrange shape functions of order 1 on the reference cube. 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 >
     
    \n \n \n \n+\n+\n

    \n Namespaces

    namespace  Dune
     
    namespace  Dune::MonomImp
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,36 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bq_\b1\n+ * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dualq1localbasis.hh File Reference\n+monomiallocalbasis.hh File Reference\n #include \n+#include \n #include \n-#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Dual Lagrange shape functions of order 1 on the reference cube. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b _\b>\n+\u00a0 Access output vector of evaluateFunction() and evaluate() _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b _\b>\n+\u00a0 Access output vector of evaluateJacobian() _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bc_\b _\b>\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\b1_\b _\b>\n+\u00a0\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b,_\b _\bp_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n+namespace \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualq1localbasis.hh Source File\n+dune-localfunctions: monomiallocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,171 +70,304 @@\n \n \n \n \n \n \n \n
    \n-
    dualq1localbasis.hh
    \n+
    monomiallocalbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_DUAL_Q1_LOCALBASIS_HH
    \n-
    6#define DUNE_DUAL_Q1_LOCALBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
    \n
    7
    \n
    8#include <array>
    \n-
    9#include <numeric>
    \n-
    10
    \n-
    11#include <dune/common/fvector.hh>
    \n+
    9#include <cassert>
    \n+
    10#include <numeric>
    \n+
    11
    \n
    12#include <dune/common/fmatrix.hh>
    \n-
    13
    \n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    28 template<class D, class R, int dim>
    \n-
    \n-\n-
    30 {
    \n-
    31 public:
    \n-
    32 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>,
    \n-
    33 Dune::FieldMatrix<R,1,dim> > Traits;
    \n-
    34
    \n-
    \n-
    35 void setCoefficients(const std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)>& coefficients)
    \n-
    36 {
    \n-
    37 coefficients_ = coefficients;
    \n-
    38 }
    \n+
    13#include <dune/common/math.hh>
    \n+
    14
    \n+
    15#include "../common/localbasis.hh"
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    \n+
    19 namespace MonomImp
    \n+
    20 {
    \n+
    22 template <typename Traits>
    \n+
    \n+
    23 class EvalAccess {
    \n+
    24 std::vector<typename Traits::RangeType> &out;
    \n+
    25#ifndef NDEBUG
    \n+
    26 unsigned int first_unused_index;
    \n+
    27#endif
    \n+
    28
    \n+
    29 public:
    \n+
    \n+
    30 EvalAccess(std::vector<typename Traits::RangeType> &out_)
    \n+
    31 : out(out_)
    \n+
    32#ifndef NDEBUG
    \n+
    33 , first_unused_index(0)
    \n+
    34#endif
    \n+
    35 { }
    \n+
    \n+
    36#ifndef NDEBUG
    \n+
    \n+\n+
    38 assert(first_unused_index == out.size());
    \n+
    39 }
    \n
    \n-
    39
    \n+
    40#endif
    \n
    \n-
    41 unsigned int size () const
    \n-
    42 {
    \n-
    43 return 1<<dim;
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    \n-
    47 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    48 std::vector<typename Traits::RangeType>& out) const
    \n-
    49 {
    \n-
    50 // compute q1 values
    \n-
    51 std::vector<typename Traits::RangeType> q1Values(size());
    \n-
    52
    \n-
    53 for (size_t i=0; i<size(); i++) {
    \n-
    54
    \n-
    55 q1Values[i] = 1;
    \n-
    56
    \n-
    57 for (int j=0; j<dim; j++)
    \n-
    58 // if j-th bit of i is set multiply with in[j], else with 1-in[j]
    \n-
    59 q1Values[i] *= (i & (1<<j)) ? in[j] : 1-in[j];
    \n+
    41 typename Traits::RangeFieldType &operator[](unsigned int index)
    \n+
    42 {
    \n+
    43 assert(index < out.size());
    \n+
    44#ifndef NDEBUG
    \n+
    45 if(first_unused_index <= index)
    \n+
    46 first_unused_index = index+1;
    \n+
    47#endif
    \n+
    48 return out[index][0];
    \n+
    49 }
    \n+
    \n+
    50 };
    \n+
    \n+
    51
    \n+
    53 template <typename Traits>
    \n+
    \n+\n+
    55 std::vector<typename Traits::JacobianType> &out;
    \n+
    56 unsigned int row;
    \n+
    57#ifndef NDEBUG
    \n+
    58 unsigned int first_unused_index;
    \n+
    59#endif
    \n
    60
    \n-
    61 }
    \n-
    62
    \n-
    63 // compute the dual values by using that they are linear combinations of q1 functions
    \n-
    64 out.resize(size());
    \n-
    65 for (size_t i=0; i<size(); i++)
    \n-
    66 out[i] = 0;
    \n-
    67
    \n-
    68 for (size_t i=0; i<size(); i++)
    \n-
    69 for (size_t j=0; j<size(); j++)
    \n-
    70 out[i] += coefficients_[i][j]*q1Values[j];
    \n-
    71
    \n-
    72
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    76 inline void
    \n-
    \n-
    77 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    78 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    79 {
    \n-
    80 // compute q1 jacobians
    \n-
    81 std::vector<typename Traits::JacobianType> q1Jacs(size());
    \n-
    82
    \n-
    83 // Loop over all shape functions
    \n-
    84 for (size_t i=0; i<size(); i++) {
    \n-
    85
    \n-
    86 // Loop over all coordinate directions
    \n-
    87 for (int j=0; j<dim; j++) {
    \n-
    88
    \n-
    89 // Initialize: the overall expression is a product
    \n-
    90 // if j-th bit of i is set to -1, else 1
    \n-
    91 q1Jacs[i][0][j] = (i & (1<<j)) ? 1 : -1;
    \n-
    92
    \n-
    93 for (int k=0; k<dim; k++) {
    \n-
    94
    \n-
    95 if (j!=k)
    \n-
    96 // if k-th bit of i is set multiply with in[j], else with 1-in[j]
    \n-
    97 q1Jacs[i][0][j] *= (i & (1<<k)) ? in[k] : 1-in[k];
    \n-
    98
    \n-
    99 }
    \n-
    100
    \n-
    101 }
    \n+
    61 public:
    \n+
    \n+
    62 JacobianAccess(std::vector<typename Traits::JacobianType> &out_,
    \n+
    63 unsigned int row_)
    \n+
    64 : out(out_), row(row_)
    \n+
    65#ifndef NDEBUG
    \n+
    66 , first_unused_index(0)
    \n+
    67#endif
    \n+
    68 { }
    \n+
    \n+
    69#ifndef NDEBUG
    \n+
    \n+\n+
    71 assert(first_unused_index == out.size());
    \n+
    72 }
    \n+
    \n+
    73#endif
    \n+
    \n+
    74 typename Traits::RangeFieldType &operator[](unsigned int index)
    \n+
    75 {
    \n+
    76 assert(index < out.size());
    \n+
    77#ifndef NDEBUG
    \n+
    78 if(first_unused_index <= index)
    \n+
    79 first_unused_index = index+1;
    \n+
    80#endif
    \n+
    81 return out[index][0][row];
    \n+
    82 }
    \n+
    \n+
    83 };
    \n+
    \n+
    84
    \n+
    97 template <typename Traits, int c>
    \n+
    \n+
    98 struct Evaluate
    \n+
    99 {
    \n+
    101 constexpr static int d = Traits::dimDomain - c;
    \n
    102
    \n-
    103 }
    \n-
    104
    \n-
    105 // compute the dual jacobians by using that they are linear combinations of q1 functions
    \n-
    106 out.resize(size());
    \n-
    107 for (size_t i=0; i<size(); i++)
    \n-
    108 out[i] = 0;
    \n-
    109
    \n-
    110 for (size_t i=0; i<size(); i++)
    \n-
    111 for (size_t j=0; j<size(); j++)
    \n-
    112 out[i].axpy(coefficients_[i][j],q1Jacs[j]);
    \n-
    113
    \n-
    114 }
    \n-
    \n-
    115
    \n-
    \n-
    117 void partial (const std::array<unsigned int, dim>& order,
    \n-
    118 const typename Traits::DomainType& in, // position
    \n-
    119 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    120 {
    \n-
    121 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    122 if (totalOrder == 0) {
    \n-
    123 evaluateFunction(in, out);
    \n-
    124 } else {
    \n-
    125 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    126 }
    \n-
    127 }
    \n-
    \n-
    128
    \n-
    \n-
    130 unsigned int order () const
    \n-
    131 {
    \n-
    132 return 1;
    \n-
    133 }
    \n-
    \n-
    134
    \n-
    135 private:
    \n-
    136 std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)> coefficients_;
    \n-
    137 };
    \n-
    \n-
    138}
    \n-
    139#endif
    \n+
    109 template <typename Access>
    \n+
    \n+
    110 static void eval (
    \n+
    111 const typename Traits::DomainType &in,
    \n+
    114 const std::array<unsigned int, Traits::dimDomain> &derivatives,
    \n+
    117 typename Traits::RangeFieldType prod,
    \n+
    119 int bound,
    \n+
    121 int& index,
    \n+
    123 Access &access)
    \n+
    124 {
    \n+
    125 // start with the highest exponent for this dimension, then work down
    \n+
    126 for (int e = bound; e >= 0; --e)
    \n+
    127 {
    \n+
    128 // the rest of the available exponents, to be used by the other
    \n+
    129 // dimensions
    \n+
    130 int newbound = bound - e;
    \n+
    131 if(e < (int)derivatives[d])
    \n+\n+
    133 eval(in, derivatives, 0, newbound, index, access);
    \n+
    134 else {
    \n+
    135 int coeff = 1;
    \n+
    136 for(int i = e - derivatives[d] + 1; i <= e; ++i)
    \n+
    137 coeff *= i;
    \n+
    138 // call the evaluator for the next dimension
    \n+\n+
    140 eval( // pass the coordinate and the derivatives unchanged
    \n+
    141 in, derivatives,
    \n+
    142 // also pass the product accumulated so far, but also
    \n+
    143 // include the current dimension
    \n+
    144 prod * power(in[d], e-derivatives[d]) * coeff,
    \n+
    145 // pass the number of remaining exponents to the next
    \n+
    146 // dimension
    \n+
    147 newbound,
    \n+
    148 // pass the next index to fill and the output access
    \n+
    149 // wrapper
    \n+
    150 index, access);
    \n+
    151 }
    \n+
    152 }
    \n+
    153 }
    \n+
    \n+
    154 };
    \n+
    \n+
    155
    \n+
    160 template <typename Traits>
    \n+
    \n+
    161 struct Evaluate<Traits, 1>
    \n+
    162 {
    \n+
    163 constexpr static int d = Traits::dimDomain-1;
    \n+
    165 template <typename Access>
    \n+
    \n+
    166 static void eval (const typename Traits::DomainType &in,
    \n+
    167 const std::array<unsigned int, Traits::dimDomain> &derivatives,
    \n+
    168 typename Traits::RangeFieldType prod,
    \n+
    169 int bound, int& index, Access &access)
    \n+
    170 {
    \n+
    171 if(bound < (int)derivatives[d])
    \n+
    172 prod = 0;
    \n+
    173 else {
    \n+
    174 int coeff = 1;
    \n+
    175 for(int i = bound - derivatives[d] + 1; i <= bound; ++i)
    \n+
    176 coeff *= i;
    \n+
    177 prod *= power(in[d], bound-derivatives[d]) * coeff;
    \n+
    178 }
    \n+
    179 access[index] = prod;
    \n+
    180 ++index;
    \n+
    181 }
    \n+
    \n+
    182 };
    \n+
    \n+
    183
    \n+
    184 } //namespace MonomImp
    \n+
    \n+
    185
    \n+
    200 template<class D, class R, unsigned int d, unsigned int p>
    \n+
    \n+\n+
    202 {
    \n+
    203 // Helper: Number of shape functions for a k-th order element in dimension dd
    \n+
    204 static constexpr unsigned int size (int dd, int k)
    \n+
    205 {
    \n+
    206 if (dd==0 || k==0)
    \n+
    207 return 1;
    \n+
    208 return size(dd,k-1) + size(dd-1,k);
    \n+
    209 }
    \n+
    210
    \n+
    211 public:
    \n+
    213 typedef LocalBasisTraits<D,d,Dune::FieldVector<D,d>,R,1,Dune::FieldVector<R,1>,
    \n+
    214 Dune::FieldMatrix<R,1,d> > Traits;
    \n+
    215
    \n+
    \n+
    217 static constexpr unsigned int size ()
    \n+
    218 {
    \n+
    219 return size(d,p);
    \n+
    220 }
    \n+
    \n+
    221
    \n+
    \n+
    223 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    224 std::vector<typename Traits::RangeType>& out) const
    \n+
    225 {
    \n+
    226 out.resize(size());
    \n+
    227 int index = 0;
    \n+
    228 std::array<unsigned int, d> derivatives;
    \n+
    229 std::fill(derivatives.begin(), derivatives.end(), 0);
    \n+\n+
    231 for (unsigned int lp = 0; lp <= p; ++lp)
    \n+
    232 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
    \n+
    233 }
    \n+
    \n+
    234
    \n+
    \n+
    240 inline void partial(const std::array<unsigned int,d>& order,
    \n+
    241 const typename Traits::DomainType& in,
    \n+
    242 std::vector<typename Traits::RangeType>& out) const
    \n+
    243 {
    \n+
    244 out.resize(size());
    \n+
    245 int index = 0;
    \n+\n+
    247 for (unsigned int lp = 0; lp <= p; ++lp)
    \n+
    248 MonomImp::Evaluate<Traits, d>::eval(in, order, 1, lp, index, access);
    \n+
    249 }
    \n+
    \n+
    250
    \n+
    252 inline void
    \n+
    \n+
    253 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    254 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    255 {
    \n+
    256 out.resize(size());
    \n+
    257 std::array<unsigned int, d> derivatives;
    \n+
    258 for(unsigned int i = 0; i < d; ++i)
    \n+
    259 derivatives[i] = 0;
    \n+
    260 for(unsigned int i = 0; i < d; ++i)
    \n+
    261 {
    \n+
    262 derivatives[i] = 1;
    \n+
    263 int index = 0;
    \n+\n+
    265 for(unsigned int lp = 0; lp <= p; ++lp)
    \n+
    266 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
    \n+
    267 derivatives[i] = 0;
    \n+
    268 }
    \n+
    269 }
    \n+
    \n+
    270
    \n+
    \n+
    272 unsigned int order () const
    \n+
    273 {
    \n+
    274 return p;
    \n+
    275 }
    \n+
    \n+
    276 };
    \n+
    \n+
    277
    \n+
    278}
    \n+
    279
    \n+
    280#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Dual Lagrange shape functions of order 1 on the reference cube.
    Definition dualq1localbasis.hh:30
    \n-
    unsigned int size() const
    number of shape functions
    Definition dualq1localbasis.hh:41
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition dualq1localbasis.hh:130
    \n-
    void setCoefficients(const std::array< Dune::FieldVector< R,(1<< dim)>,(1<< dim)> &coefficients)
    Definition dualq1localbasis.hh:35
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition dualq1localbasis.hh:47
    \n-
    LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    Definition dualq1localbasis.hh:33
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition dualq1localbasis.hh:77
    \n-
    void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition dualq1localbasis.hh:117
    \n-\n+
    Access output vector of evaluateFunction() and evaluate()
    Definition monomiallocalbasis.hh:23
    \n+
    Traits::RangeFieldType & operator[](unsigned int index)
    Definition monomiallocalbasis.hh:41
    \n+
    ~EvalAccess()
    Definition monomiallocalbasis.hh:37
    \n+
    EvalAccess(std::vector< typename Traits::RangeType > &out_)
    Definition monomiallocalbasis.hh:30
    \n+
    Access output vector of evaluateJacobian()
    Definition monomiallocalbasis.hh:54
    \n+
    ~JacobianAccess()
    Definition monomiallocalbasis.hh:70
    \n+
    Traits::RangeFieldType & operator[](unsigned int index)
    Definition monomiallocalbasis.hh:74
    \n+
    JacobianAccess(std::vector< typename Traits::JacobianType > &out_, unsigned int row_)
    Definition monomiallocalbasis.hh:62
    \n+
    Definition monomiallocalbasis.hh:99
    \n+
    static constexpr int d
    The next dimension to try for factors.
    Definition monomiallocalbasis.hh:101
    \n+
    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
    \n+
    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
    \n+
    Definition monomiallocalbasis.hh:202
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition monomiallocalbasis.hh:272
    \n+
    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
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition monomiallocalbasis.hh:253
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition monomiallocalbasis.hh:223
    \n+
    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
    \n+
    static constexpr unsigned int size()
    Number of shape functions.
    Definition monomiallocalbasis.hh:217
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,185 +1,317 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n- * _\bd_\bu_\ba_\bl_\bq_\b1\n-dualq1localbasis.hh\n+ * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n+monomiallocalbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_DUAL_Q1_LOCALBASIS_HH\n-6#define DUNE_DUAL_Q1_LOCALBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH\n 7\n 8#include \n-9#include \n-10\n-11#include \n+9#include \n+10#include \n+11\n 12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-28 template\n-_\b2_\b9 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-30 {\n-31 public:\n-32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\bi_\bm_\b>,R,1,Dune::\n-FieldVector,\n-_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-34\n-_\b3_\b5 void _\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const std::array ,\n-(1<& coefficients)\n-36 {\n-37 coefficients_ = coefficients;\n-38 }\n-39\n-_\b4_\b1 unsigned int _\bs_\bi_\bz_\be () const\n+13#include \n+14\n+15#include \"../common/localbasis.hh\"\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+_\b1_\b9 namespace MonomImp\n+20 {\n+22 template \n+_\b2_\b3 class _\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs {\n+24 std::vector &out;\n+25#ifndef NDEBUG\n+26 unsigned int first_unused_index;\n+27#endif\n+28\n+29 public:\n+_\b3_\b0 _\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs(std::vector &out_)\n+31 : out(out_)\n+32#ifndef NDEBUG\n+33 , first_unused_index(0)\n+34#endif\n+35 { }\n+36#ifndef NDEBUG\n+_\b3_\b7 _\b~_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs() {\n+38 assert(first_unused_index == out.size());\n+39 }\n+40#endif\n+_\b4_\b1 typename Traits::RangeFieldType &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](unsigned int index)\n 42 {\n-43 return 1<& out) const\n-49 {\n-50 // compute q1 values\n-51 std::vector q1Values(_\bs_\bi_\bz_\be());\n-52\n-53 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++) {\n-54\n-55 q1Values[i] = 1;\n-56\n-57 for (int j=0; j\n+_\b5_\b4 class _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs {\n+55 std::vector &out;\n+56 unsigned int row;\n+57#ifndef NDEBUG\n+58 unsigned int first_unused_index;\n+59#endif\n 60\n-61 }\n-62\n-63 // compute the dual values by using that they are linear combinations of q1\n-functions\n-64 out.resize(_\bs_\bi_\bz_\be());\n-65 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n-66 out[i] = 0;\n-67\n-68 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n-69 for (size_t j=0; j<_\bs_\bi_\bz_\be(); j++)\n-70 out[i] += coefficients_[i][j]*q1Values[j];\n-71\n-72\n-73 }\n-74\n-76 inline void\n-_\b7_\b7 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-78 std::vector& out) const // return value\n-79 {\n-80 // compute q1 jacobians\n-81 std::vector q1Jacs(_\bs_\bi_\bz_\be());\n-82\n-83 // Loop over all shape functions\n-84 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++) {\n-85\n-86 // Loop over all coordinate directions\n-87 for (int j=0; j &out_,\n+63 unsigned int row_)\n+64 : out(out_), row(row_)\n+65#ifndef NDEBUG\n+66 , first_unused_index(0)\n+67#endif\n+68 { }\n+69#ifndef NDEBUG\n+_\b7_\b0 _\b~_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs() {\n+71 assert(first_unused_index == out.size());\n+72 }\n+73#endif\n+_\b7_\b4 typename Traits::RangeFieldType &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](unsigned int index)\n+75 {\n+76 assert(index < out.size());\n+77#ifndef NDEBUG\n+78 if(first_unused_index <= index)\n+79 first_unused_index = index+1;\n+80#endif\n+81 return out[index][0][row];\n+82 }\n+83 };\n+84\n+97 template \n+_\b9_\b8 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+99 {\n+_\b1_\b0_\b1 constexpr static int _\bd = Traits::dimDomain - c;\n 102\n-103 }\n-104\n-105 // compute the dual jacobians by using that they are linear combinations of\n-q1 functions\n-106 out.resize(_\bs_\bi_\bz_\be());\n-107 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n-108 out[i] = 0;\n-109\n-110 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n-111 for (size_t j=0; j<_\bs_\bi_\bz_\be(); j++)\n-112 out[i].axpy(coefficients_[i][j],q1Jacs[j]);\n-113\n-114 }\n-115\n-_\b1_\b1_\b7 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-118 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-119 std::vector& out) const // return value\n-120 {\n-121 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-122 if (totalOrder == 0) {\n-123 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-124 } else {\n-125 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-126 }\n-127 }\n-128\n-_\b1_\b3_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n-131 {\n-132 return 1;\n-133 }\n-134\n-135 private:\n-136 std::array ,(1< coefficients_;\n-137 };\n-138}\n-139#endif\n+109 template \n+_\b1_\b1_\b0 static void _\be_\bv_\ba_\bl (\n+111 const typename Traits::DomainType &in,\n+114 const std::array &derivatives,\n+117 typename Traits::RangeFieldType prod,\n+119 int bound,\n+121 int& index,\n+123 Access &access)\n+124 {\n+125 // start with the highest exponent for this dimension, then work down\n+126 for (int e = bound; e >= 0; --e)\n+127 {\n+128 // the rest of the available exponents, to be used by the other\n+129 // dimensions\n+130 int newbound = bound - e;\n+131 if(e < (int)derivatives[_\bd])\n+132 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\bc_\b-_\b1_\b>_\b:_\b:\n+133_\b _\be_\bv_\ba_\bl(in, derivatives, 0, newbound, index, access);\n+134 else {\n+135 int coeff = 1;\n+136 for(int i = e - derivatives[_\bd] + 1; i <= e; ++i)\n+137 coeff *= i;\n+138 // call the evaluator for the next dimension\n+139 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\bc_\b-_\b1_\b>_\b:_\b:\n+140_\b _\be_\bv_\ba_\bl( // pass the coordinate and the derivatives unchanged\n+141 in, derivatives,\n+142 // also pass the product accumulated so far, but also\n+143 // include the current dimension\n+144 prod * power(in[_\bd], e-derivatives[_\bd]) * coeff,\n+145 // pass the number of remaining exponents to the next\n+146 // dimension\n+147 newbound,\n+148 // pass the next index to fill and the output access\n+149 // wrapper\n+150 index, access);\n+151 }\n+152 }\n+153 }\n+154 };\n+155\n+160 template \n+_\b1_\b6_\b1 struct _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+162 {\n+_\b1_\b6_\b3 constexpr static int _\bd = Traits::dimDomain-1;\n+165 template \n+_\b1_\b6_\b6 static void _\be_\bv_\ba_\bl (const typename Traits::DomainType &in,\n+167 const std::array &derivatives,\n+168 typename Traits::RangeFieldType prod,\n+169 int bound, int& index, Access &access)\n+170 {\n+171 if(bound < (int)derivatives[_\bd])\n+172 prod = 0;\n+173 else {\n+174 int coeff = 1;\n+175 for(int i = bound - derivatives[_\bd] + 1; i <= bound; ++i)\n+176 coeff *= i;\n+177 prod *= power(in[_\bd], bound-derivatives[_\bd]) * coeff;\n+178 }\n+179 access[index] = prod;\n+180 ++index;\n+181 }\n+182 };\n+183\n+184 } //namespace MonomImp\n+185\n+200 template\n+_\b2_\b0_\b1 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+202 {\n+203 // Helper: Number of shape functions for a k-th order element in dimension\n+dd\n+204 static constexpr unsigned int _\bs_\bi_\bz_\be (int dd, int k)\n+205 {\n+206 if (dd==0 || k==0)\n+207 return 1;\n+208 return _\bs_\bi_\bz_\be(dd,k-1) + _\bs_\bi_\bz_\be(dd-1,k);\n+209 }\n+210\n+211 public:\n+213 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\b>,R,1,Dune::\n+FieldVector,\n+_\b2_\b1_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+215\n+_\b2_\b1_\b7 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n+218 {\n+219 return _\bs_\bi_\bz_\be(d,p);\n+220 }\n+221\n+_\b2_\b2_\b3 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+224 std::vector& out) const\n+225 {\n+226 out.resize(_\bs_\bi_\bz_\be());\n+227 int index = 0;\n+228 std::array derivatives;\n+229 std::fill(derivatives.begin(), derivatives.end(), 0);\n+230 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b> access(out);\n+231 for (unsigned int lp = 0; lp <= p; ++lp)\n+232 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bd_\b>_\b:_\b:_\be_\bv_\ba_\bl(in, derivatives, 1, lp, index, access);\n+233 }\n+234\n+_\b2_\b4_\b0 inline void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array& _\bo_\br_\bd_\be_\br,\n+241 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+242 std::vector& out) const\n+243 {\n+244 out.resize(_\bs_\bi_\bz_\be());\n+245 int index = 0;\n+246 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b> access(out);\n+247 for (unsigned int lp = 0; lp <= p; ++lp)\n+248 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bd_\b>_\b:_\b:_\be_\bv_\ba_\bl(in, _\bo_\br_\bd_\be_\br, 1, lp, index, access);\n+249 }\n+250\n+252 inline void\n+_\b2_\b5_\b3 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+254 std::vector& out) const // return value\n+255 {\n+256 out.resize(_\bs_\bi_\bz_\be());\n+257 std::array derivatives;\n+258 for(unsigned int i = 0; i < d; ++i)\n+259 derivatives[i] = 0;\n+260 for(unsigned int i = 0; i < d; ++i)\n+261 {\n+262 derivatives[i] = 1;\n+263 int index = 0;\n+264 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b> access(out, i);\n+265 for(unsigned int lp = 0; lp <= p; ++lp)\n+266 _\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\bd_\b>_\b:_\b:_\be_\bv_\ba_\bl(in, derivatives, 1, lp, index, access);\n+267 derivatives[i] = 0;\n+268 }\n+269 }\n+270\n+_\b2_\b7_\b2 unsigned int _\bo_\br_\bd_\be_\br () const\n+273 {\n+274 return p;\n+275 }\n+276 };\n+277\n+278}\n+279\n+280#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n Type traits for LocalBasisVirtualInterface.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Dual Lagrange shape functions of order 1 on the reference cube.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs\n+Access output vector of evaluateFunction() and evaluate()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+Traits::RangeFieldType & operator[](unsigned int index)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\b~_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs\n+~EvalAccess()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bE_\bv_\ba_\bl_\bA_\bc_\bc_\be_\bs_\bs\n+EvalAccess(std::vector< typename Traits::RangeType > &out_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs\n+Access output vector of evaluateJacobian()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\b~_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs\n+~JacobianAccess()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+Traits::RangeFieldType & operator[](unsigned int index)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn_\bA_\bc_\bc_\be_\bs_\bs\n+JacobianAccess(std::vector< typename Traits::JacobianType > &out_, unsigned int\n+row_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:99\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b:_\b:_\bd\n+static constexpr int d\n+The next dimension to try for factors.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b:_\b:_\be_\bv_\ba_\bl\n+static void eval(const typename Traits::DomainType &in, const std::array<\n+unsigned int, Traits::dimDomain > &derivatives, typename Traits::RangeFieldType\n+prod, int bound, int &index, Access &access)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:110\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bI_\bm_\bp_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\b<_\b _\bT_\br_\ba_\bi_\bt_\bs_\b,_\b _\b1_\b _\b>_\b:_\b:_\be_\bv_\ba_\bl\n+static void eval(const typename Traits::DomainType &in, const std::array<\n+unsigned int, Traits::dimDomain > &derivatives, typename Traits::RangeFieldType\n+prod, int bound, int &index, Access &access)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:166\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:202\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n unsigned int order() const\n Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-void setCoefficients(const std::array< Dune::FieldVector< R,(1<< dim)>,(1<<\n-dim)> &coefficients)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector<\n-R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:272\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, d > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of any order of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:240\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n typename Traits::JacobianType > &out) const\n Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:77\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, dim > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:117\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:253\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:223\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, d, Dune::FieldVector< D, d >, R, 1, Dune::FieldVector< R,\n+1 >, Dune::FieldMatrix< R, 1, d > > Traits\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:214\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr unsigned int size()\n+Number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:217\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualp1.hh File Reference\n+dune-localfunctions: monomiallocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    dualp1.hh File Reference
    \n+
    monomiallocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include "dualp1/dualp1localbasis.hh"
    \n-#include "dualp1/dualp1localcoefficients.hh"
    \n-#include "dualp1/dualp1localinterpolation.hh"
    \n+
    #include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::DualP1LocalFiniteElement< D, R, dim, faceDual >
     The local dual p1 finite element on simplices. More...
    class  Dune::MonomialLocalInterpolation< LB, size >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-dualp1.hh File Reference\n+monomiallocalinterpolation.hh File Reference\n+#include \n+#include \n+#include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b _\b>\n-\u00a0 The local dual p1 finite element on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b,_\b _\bs_\bi_\bz_\be_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualp1.hh Source File\n+dune-localfunctions: monomiallocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,118 +70,114 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualp1.hh
    \n+
    monomiallocalinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <vector>
    \n
    9
    \n-\n-\n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17
    \n-
    33 template<class D, class R, int dim, bool faceDual=false>
    \n-
    \n-\n-
    35 {
    \n-
    36 public:
    \n-\n-\n-
    41
    \n-
    \n-\n-
    45 {}
    \n-
    \n-
    46
    \n-
    \n-
    49 const typename Traits::LocalBasisType& localBasis () const
    \n-
    50 {
    \n-
    51 return basis;
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    \n-\n-
    57 {
    \n-
    58 return coefficients;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-\n-
    64 {
    \n-
    65 return interpolation;
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    69 unsigned int size () const
    \n-
    70 {
    \n-
    71 return basis.size();
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    \n-
    76 static constexpr GeometryType type ()
    \n-
    77 {
    \n-
    78 return GeometryTypes::simplex(dim);
    \n-
    79 }
    \n-
    \n-
    80
    \n-
    81 private:
    \n-\n-\n-\n-
    85 };
    \n-
    \n-
    86
    \n-
    87
    \n-
    88
    \n-
    89}
    \n+
    10#include <dune/common/fvector.hh>
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \n+
    13#include <dune/geometry/type.hh>
    \n+
    14#include <dune/geometry/quadraturerules.hh>
    \n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    22 template<class LB, unsigned int size>
    \n+
    \n+\n+
    24 {
    \n+
    25 typedef typename LB::Traits::DomainType D;
    \n+
    26 typedef typename LB::Traits::DomainFieldType DF;
    \n+
    27 static const int dimD=LB::Traits::dimDomain;
    \n+
    28 typedef typename LB::Traits::RangeType R;
    \n+
    29 typedef typename LB::Traits::RangeFieldType RF;
    \n+
    30
    \n+
    31 typedef QuadratureRule<DF,dimD> QR;
    \n+
    32 typedef typename QR::iterator QRiterator;
    \n+
    33
    \n+
    34 public:
    \n+
    \n+
    35 MonomialLocalInterpolation (const GeometryType &gt_,
    \n+
    36 const LB &lb_)
    \n+
    37 : gt(gt_), lb(lb_), Minv(0)
    \n+
    38 , qr(QuadratureRules<DF,dimD>::rule(gt, 2*lb.order()))
    \n+
    39 {
    \n+
    40 // Compute inverse of the mass matrix of the local basis, and store it in Minv
    \n+
    41 if(size != lb.size())
    \n+
    42 DUNE_THROW(Exception, "size template parameter does not match size of "
    \n+
    43 "local basis");
    \n+
    44
    \n+
    45 const QRiterator qrend = qr.end();
    \n+
    46 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
    \n+
    47 std::vector<R> base;
    \n+
    48 lb.evaluateFunction(qrit->position(),base);
    \n+
    49
    \n+
    50 for(unsigned int i = 0; i < size; ++i)
    \n+
    51 for(unsigned int j = 0; j < size; ++j)
    \n+
    52 Minv[i][j] += qrit->weight() * base[i] * base[j];
    \n+
    53 }
    \n+
    54 Minv.invert();
    \n+
    55 }
    \n+
    \n+
    56
    \n+
    64 template<typename F, typename C>
    \n+
    \n+
    65 void interpolate (const F& f, std::vector<C>& out) const
    \n+
    66 {
    \n+
    67 out.clear();
    \n+
    68 out.resize(size, 0);
    \n+
    69
    \n+
    70 const QRiterator qrend = qr.end();
    \n+
    71 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
    \n+
    72 //TODO: mass matrix
    \n+
    73 R y = f(qrit->position());
    \n+
    74
    \n+
    75 std::vector<R> base;
    \n+
    76 lb.evaluateFunction(qrit->position(),base);
    \n+
    77
    \n+
    78 for(unsigned int i = 0; i < size; ++i)
    \n+
    79 for(unsigned int j = 0; j < size; ++j)
    \n+
    80 out[i] += Minv[i][j] * qrit->weight() * y * base[j];
    \n+
    81 }
    \n+
    82 }
    \n+
    \n+
    83
    \n+
    84 private:
    \n+
    85 GeometryType gt;
    \n+
    86 const LB &lb;
    \n+
    87 FieldMatrix<RF, size, size> Minv;
    \n+
    88 const QR &qr;
    \n+
    89 };
    \n+
    \n
    90
    \n-
    91#endif
    \n-\n-\n-\n-\n+
    91}
    \n+
    92
    \n+
    93#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    The local dual p1 finite element on simplices.
    Definition dualp1.hh:35
    \n-
    DualP1LocalFiniteElement()
    Definition dualp1.hh:44
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition dualp1.hh:69
    \n-
    LocalFiniteElementTraits< DualP1LocalBasis< D, R, dim, faceDual >, DualP1LocalCoefficients< dim >, DualP1LocalInterpolation< dim, DualP1LocalBasis< D, R, dim, faceDual > > > Traits
    Definition dualp1.hh:40
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition dualp1.hh:63
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition dualp1.hh:49
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition dualp1.hh:56
    \n-
    static constexpr GeometryType type()
    Definition dualp1.hh:76
    \n-
    Dual Lagrange shape functions on the simplex.
    Definition dualp1localbasis.hh:35
    \n-
    Local coefficients for dual simplex P1 elements.
    Definition dualp1localcoefficients.hh:24
    \n-
    Definition dualp1localinterpolation.hh:17
    \n+
    Definition monomiallocalinterpolation.hh:24
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    Definition monomiallocalinterpolation.hh:65
    \n+
    MonomialLocalInterpolation(const GeometryType &gt_, const LB &lb_)
    Definition monomiallocalinterpolation.hh:35
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,130 +1,107 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n-dualp1.hh\n+ * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n+monomiallocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH\n-6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_DUALP1_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH\n 7\n-8#include \n+8#include \n 9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-12#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-13#include \"_\bd_\bu_\ba_\bl_\bp_\b1_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17\n-33 template\n-_\b3_\b4 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-35 {\n-36 public:\n-39 typedef\n-_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b>,_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b>,\n-_\b4_\b0 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n-41\n-_\b4_\b4 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n-45 {}\n-46\n-_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-50 {\n-51 return basis;\n-52 }\n-53\n-_\b5_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-57 {\n-58 return coefficients;\n-59 }\n-60\n-_\b6_\b3 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-64 {\n-65 return interpolation;\n-66 }\n-67\n-_\b6_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-70 {\n-71 return basis.size();\n-72 }\n-73\n-_\b7_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-77 {\n-78 return GeometryTypes::simplex(dim);\n-79 }\n-80\n-81 private:\n-82 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> basis;\n-83 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bd_\bi_\bm_\b> coefficients;\n-84 _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b,_\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl_\b> >\n-interpolation;\n-85 };\n-86\n-87\n-88\n-89}\n+10#include \n+11#include \n+12\n+13#include \n+14#include \n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+22 template\n+_\b2_\b3 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+24 {\n+25 typedef typename LB::Traits::DomainType D;\n+26 typedef typename LB::Traits::DomainFieldType DF;\n+27 static const int dimD=LB::Traits::dimDomain;\n+28 typedef typename LB::Traits::RangeType R;\n+29 typedef typename LB::Traits::RangeFieldType RF;\n+30\n+31 typedef QuadratureRule QR;\n+32 typedef typename QR::iterator QRiterator;\n+33\n+34 public:\n+_\b3_\b5 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (const GeometryType >_,\n+36 const LB &lb_)\n+37 : gt(gt_), lb(lb_), Minv(0)\n+38 , qr(QuadratureRules::rule(gt, 2*lb.order()))\n+39 {\n+40 // Compute inverse of the mass matrix of the local basis, and store it in\n+Minv\n+41 if(size != lb.size())\n+42 DUNE_THROW(Exception, \"size template parameter does not match size of \"\n+43 \"local basis\");\n+44\n+45 const QRiterator qrend = qr.end();\n+46 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {\n+47 std::vector base;\n+48 lb.evaluateFunction(qrit->position(),base);\n+49\n+50 for(unsigned int i = 0; i < size; ++i)\n+51 for(unsigned int j = 0; j < size; ++j)\n+52 Minv[i][j] += qrit->weight() * base[i] * base[j];\n+53 }\n+54 Minv.invert();\n+55 }\n+56\n+64 template\n+_\b6_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out) const\n+66 {\n+67 out.clear();\n+68 out.resize(size, 0);\n+69\n+70 const QRiterator qrend = qr.end();\n+71 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {\n+72 //TODO: mass matrix\n+73 R y = f(qrit->position());\n+74\n+75 std::vector base;\n+76 lb.evaluateFunction(qrit->position(),base);\n+77\n+78 for(unsigned int i = 0; i < size; ++i)\n+79 for(unsigned int j = 0; j < size; ++j)\n+80 out[i] += Minv[i][j] * qrit->weight() * y * base[j];\n+81 }\n+82 }\n+83\n+84 private:\n+85 GeometryType gt;\n+86 const LB &lb;\n+87 FieldMatrix Minv;\n+88 const QR &qr;\n+89 };\n 90\n-91#endif\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bd_\bu_\ba_\bl_\bp_\b1_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+91}\n+92\n+93#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-The local dual p1 finite element on simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-DualP1LocalFiniteElement()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:69\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< DualP1LocalBasis< D, R, dim, faceDual >,\n-DualP1LocalCoefficients< dim >, DualP1LocalInterpolation< dim,\n-DualP1LocalBasis< D, R, dim, faceDual > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr GeometryType type()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1.hh:76\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Dual Lagrange shape functions on the simplex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localbasis.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Local coefficients for dual simplex P1 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualp1localinterpolation.hh:17\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Determine coefficients interpolating a given function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+MonomialLocalInterpolation(const GeometryType >_, const LB &lb_)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.hh:35\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualmortarbasis.hh File Reference\n+dune-localfunctions: monomiallocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,25 +65,40 @@\n \n \n \n \n \n \n \n
    \n-
    dualmortarbasis.hh File Reference
    \n+ \n+
    monomiallocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/dualmortarbasis/dualp1.hh>
    \n-#include <dune/localfunctions/dualmortarbasis/dualq1.hh>
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include "../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::MonomialLocalCoefficients< static_size >
     
    \n+\n+\n+\n+

    \n+Namespaces

    namespace  Dune
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,21 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-dualmortarbasis.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\b._\bh_\bh>\n+ * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+monomiallocalcoefficients.hh File Reference\n+#include \n+#include \n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bs_\bt_\ba_\bt_\bi_\bc_\b__\bs_\bi_\bz_\be_\b _\b>\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bD_\bu_\bn_\be\n+\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: dualmortarbasis.hh Source File\n+dune-localfunctions: monomiallocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,34 +70,77 @@\n
    \n \n \n \n \n \n \n
    \n-
    dualmortarbasis.hh
    \n+
    monomiallocalcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH
    \n
    7
    \n-\n-\n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n
    10
    \n-
    11#endif // #ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH
    \n-\n-\n+
    11#include "../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    23 template<int static_size>
    \n+
    \n+\n+
    25 {
    \n+
    26 public:
    \n+
    \n+\n+
    29 : index(static_size, LocalKey(0,0,0))
    \n+
    30 {
    \n+
    31 for(int i = 0; i < static_size; ++i)
    \n+
    32 index[i].index(i);
    \n+
    33 }
    \n+
    \n+
    34
    \n+
    \n+
    36 std::size_t size () const
    \n+
    37 {
    \n+
    38 return static_size;
    \n+
    39 }
    \n+
    \n+
    40
    \n+
    \n+
    42 const LocalKey& localKey (std::size_t i) const
    \n+
    43 {
    \n+
    44 return index[i];
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    47 private:
    \n+
    48 std::vector<LocalKey> index;
    \n+
    49 };
    \n+
    \n+
    50
    \n+
    51}
    \n+
    52#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH
    \n+
    Definition bdfmcube.hh:18
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Definition monomiallocalcoefficients.hh:25
    \n+
    std::size_t size() const
    number of coefficients
    Definition monomiallocalcoefficients.hh:36
    \n+
    MonomialLocalCoefficients()
    Standard constructor.
    Definition monomiallocalcoefficients.hh:28
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition monomiallocalcoefficients.hh:42
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,73 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-dualmortarbasis.hh\n+ * _\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl\n+monomiallocalcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH\n-6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\b._\bh_\bh>\n+8#include \n+9#include \n 10\n-11#endif // #ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH\n-_\bd_\bu_\ba_\bl_\bq_\b1_\b._\bh_\bh\n-_\bd_\bu_\ba_\bl_\bp_\b1_\b._\bh_\bh\n+11#include \"../common/localkey.hh\"\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+23 template\n+_\b2_\b4 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+25 {\n+26 public:\n+_\b2_\b8 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs ()\n+29 : index(static_size, _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0))\n+30 {\n+31 for(int i = 0; i < static_size; ++i)\n+32 index[i].index(i);\n+33 }\n+34\n+_\b3_\b6 std::size_t _\bs_\bi_\bz_\be () const\n+37 {\n+38 return static_size;\n+39 }\n+40\n+_\b4_\b2 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+43 {\n+44 return index[i];\n+45 }\n+46\n+47 private:\n+48 std::vector index;\n+49 };\n+50\n+51}\n+52#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALCOEFFICIENTS_HH\n+_\bD_\bu_\bn_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+MonomialLocalCoefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:42\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: orthonormal.hh File Reference\n+dune-localfunctions: mimetic.hh File Reference\n \n \n \n \n \n \n \n@@ -72,28 +72,26 @@\n
  • dune
  • localfunctions
  • \n \n \n
    \n \n-
    orthonormal.hh File Reference
    \n+
    mimetic.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/utility/localfiniteelement.hh>
    \n-#include <dune/localfunctions/utility/dglocalcoefficients.hh>
    \n-#include <dune/localfunctions/utility/l2interpolation.hh>
    \n-#include <dune/localfunctions/orthonormal/orthonormalbasis.hh>
    \n+
    #include <dune/geometry/type.hh>
    \n+#include "common/localfiniteelementtraits.hh"
    \n+#include "mimetic/mimeticall.hh"
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n

    \n Classes

    class  Dune::OrthonormalLocalFiniteElement< dimDomain, D, R, SF, CF >
     A class providing orthonormal basis functions. More...
    class  Dune::MimeticLocalFiniteElement< D, R, dim >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,20 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-orthonormal.hh File Reference\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\b2_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+mimetic.hh File Reference\n+#include \n+#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\bm_\bi_\bm_\be_\bt_\bi_\bc_\b/_\bm_\bi_\bm_\be_\bt_\bi_\bc_\ba_\bl_\bl_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bD_\b,_\b _\bR_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b>\n-\u00a0 A class providing orthonormal basis functions. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: orthonormal.hh Source File\n+dune-localfunctions: mimetic.hh Source File\n \n \n \n \n \n \n \n@@ -74,67 +74,108 @@\n \n \n
    \n
    \n-
    orthonormal.hh
    \n+
    mimetic.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_ORTHONORMALFINITEELEMENT_HH
    \n-
    6#define DUNE_ORTHONORMALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_MIMETICLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_MIMETICLOCALFINITEELEMENT_HH
    \n
    7
    \n-\n-\n-\n-\n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n+
    11#include "mimetic/mimeticall.hh"
    \n
    12
    \n
    13namespace Dune
    \n
    14{
    \n-
    32 template< unsigned int dimDomain, class D, class R,
    \n-
    33 class SF=R, class CF=SF >
    \n-
    \n-\n-
    35 : public GenericLocalFiniteElement< OrthonormalBasisFactory< dimDomain, SF, CF >,
    \n-
    36 DGLocalCoefficientsFactory< OrthonormalBasisFactory< dimDomain, SF, CF > >,
    \n-
    37 LocalL2InterpolationFactory< OrthonormalBasisFactory< dimDomain, SF, CF >,true > >
    \n-
    38 {
    \n-\n-\n-\n-
    42 public:
    \n-
    43 using typename Base::Traits;
    \n-
    44
    \n-
    \n-
    47 OrthonormalLocalFiniteElement ( const GeometryType &gt, unsigned int order )
    \n-
    48 : Base(gt, order)
    \n-
    49 {}
    \n-
    \n-
    50 };
    \n-
    \n-
    51
    \n-
    52}
    \n-
    53
    \n-
    54#endif
    \n-\n-\n-\n+
    22 template<class D, class R, int dim>
    \n+
    \n+\n+
    24 {
    \n+
    25 Dune::GeometryType gt;
    \n+\n+
    27 MimeticLocalCoefficients coefficients;
    \n+\n+
    29
    \n+
    30 public:
    \n+\n+\n+\n+
    34
    \n+
    \n+\n+
    36 {}
    \n+
    \n+
    37
    \n+
    \n+
    38 MimeticLocalFiniteElement (Dune::GeometryType::BasicType basicType)
    \n+
    39 : gt(basicType,dim)
    \n+
    40 {}
    \n+
    \n+
    41
    \n+
    \n+
    42 MimeticLocalFiniteElement (Dune::GeometryType::BasicType basicType, unsigned int variant)
    \n+
    43 : gt(basicType,dim), basis(variant), coefficients(variant)
    \n+
    44 {}
    \n+
    \n+
    45
    \n+
    \n+
    46 const typename Traits::LocalBasisType& localBasis () const
    \n+
    47 {
    \n+
    48 return basis;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+\n+
    52 {
    \n+
    53 return coefficients;
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    \n+\n+
    57 {
    \n+
    58 return interpolation;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    61 Dune::GeometryType type () const { return gt; }
    \n+
    62 };
    \n+
    \n+
    63}
    \n+
    64
    \n+
    65#endif
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    A class providing orthonormal basis functions.
    Definition orthonormal.hh:38
    \n-
    OrthonormalLocalFiniteElement(const GeometryType &gt, unsigned int order)
    Definition orthonormal.hh:47
    \n-
    A factory class for the dg local coefficients.
    Definition dglocalcoefficients.hh:59
    \n-
    A factory class for the local l2 interpolations taking a basis factory.
    Definition l2interpolation.hh:163
    \n-
    A LocalFiniteElement implementation based on three TopologyFactories providing the LocalBasis,...
    Definition localfunctions/utility/localfiniteelement.hh:25
    \n-
    LocalFiniteElementTraits< typename BasisF::Object, typename CoeffF::Object, typename InterpolF::Object > Traits
    Definition localfunctions/utility/localfiniteelement.hh:29
    \n-\n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Definition mimetic.hh:24
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition mimetic.hh:56
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition mimetic.hh:46
    \n+
    MimeticLocalFiniteElement(Dune::GeometryType::BasicType basicType, unsigned int variant)
    Definition mimetic.hh:42
    \n+
    MimeticLocalFiniteElement()
    Definition mimetic.hh:35
    \n+
    MimeticLocalFiniteElement(Dune::GeometryType::BasicType basicType)
    Definition mimetic.hh:38
    \n+
    Dune::GeometryType type() const
    Definition mimetic.hh:61
    \n+
    Dune::LocalFiniteElementTraits< MimeticLocalBasis< D, R, dim >, MimeticLocalCoefficients, MimeticLocalInterpolation< MimeticLocalBasis< D, R, dim > > > Traits
    Definition mimetic.hh:33
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition mimetic.hh:51
    \n+
    Definition mimeticall.hh:23
    \n+
    Definition mimeticall.hh:74
    \n+
    !
    Definition mimeticall.hh:88
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,76 +1,122 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-orthonormal.hh\n+mimetic.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_ORTHONORMALFINITEELEMENT_HH\n-6#define DUNE_ORTHONORMALFINITEELEMENT_HH\n+5#ifndef DUNE_MIMETICLOCALFINITEELEMENT_HH\n+6#define DUNE_MIMETICLOCALFINITEELEMENT_HH\n 7\n-8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh>\n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\b2_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-11#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\b/_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+8#include \n+9\n+10#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+11#include \"_\bm_\bi_\bm_\be_\bt_\bi_\bc_\b/_\bm_\bi_\bm_\be_\bt_\bi_\bc_\ba_\bl_\bl_\b._\bh_\bh\"\n 12\n 13namespace _\bD_\bu_\bn_\be\n 14{\n-32 template< unsigned int dimDomain, class D, class R,\n-33 class SF=R, class CF=SF >\n-_\b3_\b4 class _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-35 : public _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt< OrthonormalBasisFactory< dimDomain, SF,\n-CF >,\n-36 DGLocalCoefficientsFactory< OrthonormalBasisFactory< dimDomain, SF, CF > >,\n-37 LocalL2InterpolationFactory< OrthonormalBasisFactory< dimDomain, SF, CF\n->,true > >\n-38 {\n-39 typedef _\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,\n-_\bC_\bF_\b _\b>,\n-40 _\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF_\b _\b> >,\n-41 _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\b,_\b _\bS_\bF_\b,_\b _\bC_\bF\n-_\b>,true > > _\bB_\ba_\bs_\be;\n-42 public:\n-43 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs;\n-44\n-_\b4_\b7 _\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ( const GeometryType >, unsigned int order )\n-48 : _\bB_\ba_\bs_\be(gt, order)\n-49 {}\n-50 };\n-51\n-52}\n-53\n-54#endif\n-_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bl_\b2_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+22 template\n+_\b2_\b3 class _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+24 {\n+25 Dune::GeometryType gt;\n+26 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> basis;\n+27 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+28 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> > interpolation;\n+29\n+30 public:\n+31 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b>,\n+32 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\bi_\bm_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b5 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+36 {}\n+37\n+_\b3_\b8 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (Dune::GeometryType::BasicType basicType)\n+39 : gt(basicType,dim)\n+40 {}\n+41\n+_\b4_\b2 _\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (Dune::GeometryType::BasicType basicType, unsigned\n+int variant)\n+43 : gt(basicType,dim), basis(variant), coefficients(variant)\n+44 {}\n+45\n+_\b4_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+47 {\n+48 return basis;\n+49 }\n+50\n+_\b5_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+52 {\n+53 return coefficients;\n+54 }\n+55\n+_\b5_\b6 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+57 {\n+58 return interpolation;\n+59 }\n+60\n+_\b6_\b1 Dune::GeometryType _\bt_\by_\bp_\be () const { return gt; }\n+62 };\n+63}\n+64\n+65#endif\n+_\bm_\bi_\bm_\be_\bt_\bi_\bc_\ba_\bl_\bl_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-A class providing orthonormal basis functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormal.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bO_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-OrthonormalLocalFiniteElement(const GeometryType >, unsigned int order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormal.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bG_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-A factory class for the dg local coefficients.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dglocalcoefficients.hh:59\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-A factory class for the local l2 interpolations taking a basis factory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:163\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-A LocalFiniteElement implementation based on three TopologyFactories providing\n-the LocalBasis,...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bG_\be_\bn_\be_\br_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< typename BasisF::Object, typename CoeffF::Object,\n-typename InterpolF::Object > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfunctions/utility/localfiniteelement.hh:29\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\b._\bh_\bh\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+MimeticLocalFiniteElement(Dune::GeometryType::BasicType basicType, unsigned int\n+variant)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+MimeticLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+MimeticLocalFiniteElement(Dune::GeometryType::BasicType basicType)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+Dune::GeometryType type() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+Dune::LocalFiniteElementTraits< MimeticLocalBasis< D, R, dim >,\n+MimeticLocalCoefficients, MimeticLocalInterpolation< MimeticLocalBasis< D, R,\n+dim > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimetic.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:74\n+_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bi_\bm_\be_\bt_\bi_\bc_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+!\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn mimeticall.hh:88\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: bdfmcube.hh File Reference\n+dune-localfunctions: dualmortarbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,25 @@\n
    \n \n \n \n \n \n \n
    \n- \n-
    bdfmcube.hh File Reference
    \n+
    dualmortarbasis.hh File Reference
    \n
    \n
    \n-\n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,12 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-bdfmcube.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/\n-_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/\n-_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+dualmortarbasis.hh File Reference\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b _\b>\n-\u00a0 Brezzi-Douglas-Fortin-Marini finite elements for cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bD_\bu_\bn_\be\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: bdfmcube.hh Source File\n+dune-localfunctions: dualmortarbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,95 +70,34 @@\n
    \n \n \n \n \n \n \n
    \n-
    bdfmcube.hh
    \n+
    dualmortarbasis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-
    11
    \n-\n-\n-\n-
    15
    \n-
    16
    \n-
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    43 template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    \n-\n-
    45 {
    \n-\n-\n-\n-
    49
    \n-
    50 public:
    \n-\n-
    52
    \n-\n-
    55
    \n-
    \n-
    61 BDFMCubeLocalFiniteElement (std::bitset<2*dim> s)
    \n-
    62 : basis( s ), interpolation( s )
    \n-
    63 {}
    \n-
    \n-
    64
    \n-
    65 auto localBasis () const -> const LocalBasis& { return basis; }
    \n-
    66 auto localCoefficients () const -> const LocalCoefficients& { return coefficients; }
    \n-
    67 auto localInterpolation () const -> const LocalInterpolation& { return interpolation; }
    \n-
    68
    \n-
    70 unsigned int size () const { return basis.size(); }
    \n-
    71 static constexpr auto type () -> GeometryType { return GeometryTypes::cube(dim); }
    \n-
    72
    \n-
    73 private:
    \n-
    74 LocalBasis basis;
    \n-
    75 LocalCoefficients coefficients;
    \n-
    76 LocalInterpolation interpolation;
    \n-
    77 };
    \n-
    \n-
    78
    \n-
    79} // namespace Dune
    \n-
    \n-
    80
    \n-
    81#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
    \n-\n-
    Definition bdfmcube.hh:18
    \n-
    Brezzi-Douglas-Fortin-Marini finite elements for cubes.
    Definition bdfmcube.hh:45
    \n-
    auto localCoefficients() const -> const LocalCoefficients &
    Definition bdfmcube.hh:66
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition bdfmcube.hh:70
    \n-
    BDFMCubeLocalFiniteElement()
    Standard constructor.
    Definition bdfmcube.hh:54
    \n-
    auto localBasis() const -> const LocalBasis &
    Definition bdfmcube.hh:65
    \n-
    static constexpr auto type() -> GeometryType
    Definition bdfmcube.hh:71
    \n-
    auto localInterpolation() const -> const LocalInterpolation &
    Definition bdfmcube.hh:67
    \n-
    BDFMCubeLocalFiniteElement(std::bitset< 2 *dim > s)
    Make set number s, where 0 <= s < 2^(2*dim)
    Definition bdfmcube.hh:61
    \n-
    Brezzi-Douglas-Fortin-Marini shape functions on a reference cube.
    Definition brezzidouglasfortinmarini/cube/localbasis.hh:37
    \n-
    Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:33
    \n-
    Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:36
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-\n-\n-\n+\n+\n+
    10
    \n+
    11#endif // #ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,114 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n-bdfmcube.hh\n+dualmortarbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH\n-6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/\n-_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi_\b/_\bc_\bu_\bb_\be_\b/\n-_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-15\n-16\n-_\b1_\b7namespace _\bD_\bu_\bn_\be\n-18{\n-19\n-43 template\n-_\b4_\b4 class _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-45 {\n-46 using _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs = _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b>;\n-47 using _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs = _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b>;\n-48 using _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn = _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b>;\n-49\n-50 public:\n-_\b5_\b1 using _\bT_\br_\ba_\bi_\bt_\bs = _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b,\n-_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b _\b>;\n-52\n-_\b5_\b4 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt () {}\n-55\n-_\b6_\b1 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (std::bitset<2*dim> s)\n-62 : basis( s ), interpolation( s )\n-63 {}\n-64\n-_\b6_\b5 auto _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const -> const _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs& { return basis; }\n-_\b6_\b6 auto _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const -> const _\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& { return\n-coefficients; }\n-_\b6_\b7 auto _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const -> const _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& { return\n-interpolation; }\n-68\n-_\b7_\b0 unsigned int _\bs_\bi_\bz_\be () const { return basis.size(); }\n-_\b7_\b1 static constexpr auto _\bt_\by_\bp_\be () -> GeometryType { return GeometryTypes::cube\n-(dim); }\n-72\n-73 private:\n-74 LocalBasis basis;\n-75 LocalCoefficients coefficients;\n-76 LocalInterpolation interpolation;\n-77 };\n-78\n-79} // namespace Dune\n-80\n-81#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bD_\bu_\bn_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Brezzi-Douglas-Fortin-Marini finite elements for cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-auto localCoefficients() const -> const LocalCoefficients &\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDFMCubeLocalFiniteElement()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-auto localBasis() const -> const LocalBasis &\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-static constexpr auto type() -> GeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:71\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-auto localInterpolation() const -> const LocalInterpolation &\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-BDFMCubeLocalFiniteElement(std::bitset< 2 *dim > s)\n-Make set number s, where 0 <= s < 2^(2*dim)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Brezzi-Douglas-Fortin-Marini shape functions on a reference cube.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localbasis.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+8#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b/_\bd_\bu_\ba_\bl_\bp_\b1_\b._\bh_\bh>\n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\b/_\bd_\bu_\ba_\bl_\bq_\b1_\b._\bh_\bh>\n+10\n+11#endif // #ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH\n+_\bd_\bu_\ba_\bl_\bp_\b1_\b._\bh_\bh\n+_\bd_\bu_\ba_\bl_\bq_\b1_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01398.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01398.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BDFMCubeLocalFiniteElement< D, R, dim, order > Class Template Reference
    \n \n
    \n \n

    Brezzi-Douglas-Fortin-Marini finite elements for cubes. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasfortinmarini/bdfmcube.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasfortinmarini/bdfmcube.hh>

    \n \n \n \n \n

    \n Public Types

    using Traits = LocalFiniteElementTraits< LocalBasis, LocalCoefficients, LocalInterpolation >
     
    \n \n

    \n@@ -350,15 +350,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01418.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01418.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDFMCubeLocalCoefficients< D, R, dim, order > Class Template Reference
    \n \n
    \n \n

    Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasfortinmarini/cube/localcoefficients.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasfortinmarini/cube/localcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::BDFMCubeLocalCoefficients< D, R, dim, order >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -243,15 +243,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01422.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01422.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::BDFMCubeLocalInterpolation< D, R, dim, order > Class Template Reference
    \n \n
    \n \n

    Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasfortinmarini/cube/localinterpolation.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasfortinmarini/cube/localinterpolation.hh>

    \n \n \n \n \n \n \n@@ -357,15 +357,15 @@\n

    \n Public Member Functions

     BDFMCubeLocalInterpolation ()
     Standard constructor.
     
     BDFMCubeLocalInterpolation (std::bitset< numFaces > s)
    \n \n \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01426.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01426.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BDM1Cube2DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d.hh>

    \n
    \n Inheritance diagram for Dune::BDM1Cube2DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -353,15 +353,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01430.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01430.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -404,15 +404,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01434.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01434.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::BDM1Cube2DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01438.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01438.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::BDM1Cube2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::BDM1Cube2DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -237,15 +237,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01442.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01442.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BDM1Cube3DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on hexahedron. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d.hh>

    \n
    \n Inheritance diagram for Dune::BDM1Cube3DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -353,15 +353,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01446.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01446.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
     
    \n \n

    \n@@ -404,15 +404,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01450.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01450.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Brezzi-Douglas-Marini-1 elements on hexahedra. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::BDM1Cube3DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01454.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01454.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::BDM1Cube3DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on the reference hexahedron. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::BDM1Cube3DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -237,15 +237,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01458.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01458.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BDM1Simplex2DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on triangles. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d.hh>

    \n
    \n Inheritance diagram for Dune::BDM1Simplex2DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -353,15 +353,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01462.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01462.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM1Simplex2DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on the reference triangle. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -404,15 +404,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01466.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01466.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Brezzi-Douglas-Marini-1 elements on triangles. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::BDM1Simplex2DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01470.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01470.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::BDM1Simplex2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on the reference triangle. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::BDM1Simplex2DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -237,15 +237,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01474.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01474.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BDM2Cube2DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    Second order Brezzi-Douglas-Marini shape functions on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d.hh>

    \n
    \n Inheritance diagram for Dune::BDM2Cube2DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -353,15 +353,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01478.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01478.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -404,15 +404,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01482.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01482.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::BDM2Cube2DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01486.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01486.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::BDM2Cube2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::BDM2Cube2DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -237,15 +237,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01490.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01490.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BDM2Simplex2DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    Second order Brezzi-Douglas-Marini shape functions on triangles. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d.hh>

    \n
    \n Inheritance diagram for Dune::BDM2Simplex2DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -353,15 +353,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01494.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01494.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM2Simplex2DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -404,15 +404,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01498.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01498.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Brezzi-Douglas-Marini-2 elements on triangles. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::BDM2Simplex2DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01502.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01502.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::BDM2Simplex2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Brezzi-Douglas-Marini shape functions on triangles. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::BDM2Simplex2DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -237,15 +237,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01506.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01506.html", "unified_diff": "@@ -88,15 +88,15 @@\n RNumber type to represent shape function values \n dimDimension of the reference elements, must be 2 or 3 \n orderPolynomial order of the element \n \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01510.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01510.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 1 > Class Template Reference
    \n \n
    \n \n

    Brezzi-Douglas-Marini local finite elements for cubes with dimension 2 and order 1. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh>

    \n
    \n Inheritance diagram for Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 1 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -354,15 +354,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01514.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01514.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 2 > Class Template Reference
    \n \n
    \n \n

    Brezzi-Douglas-Marini local finite elements for cubes with dimension 2 and order 2. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh>

    \n
    \n Inheritance diagram for Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 2 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -354,15 +354,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01518.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01518.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 3, 1 > Class Template Reference
    \n \n
    \n \n

    Brezzi-Douglas-Marini local finite elements for cubes with dimension 3 and order 1. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh>

    \n
    \n Inheritance diagram for Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 3, 1 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -354,15 +354,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01522.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01522.html", "unified_diff": "@@ -88,15 +88,15 @@\n RNumber type to represent shape function values \n dimDimension of the reference elements, currently only 2 is supported \n orderPolynomial order of the element \n \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01526.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01526.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 1 > Class Template Reference
    \n \n
    \n \n

    Brezzi-Douglas-Marini local finite elements for simplices with dimension 2 and order 1. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinisimplex.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinisimplex.hh>

    \n
    \n Inheritance diagram for Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 1 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -354,15 +354,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01530.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01530.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 2 > Class Template Reference
    \n \n
    \n \n

    Brezzi-Douglas-Marini local finite elements for simplices with dimension 2 and order 2. \n More...

    \n \n-

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinisimplex.hh>

    \n+

    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinisimplex.hh>

    \n
    \n Inheritance diagram for Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 2 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -354,15 +354,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01534.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01534.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::FiniteElementInterface Class Reference
    \n \n
    \n \n

    Interface for global-valued finite elements. \n More...

    \n \n-

    #include <dune/localfunctions/common/interface.hh>

    \n+

    #include <dune/localfunctions/common/interface.hh>

    \n
    \n Inheritance diagram for Dune::FiniteElementInterface:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -248,15 +248,15 @@\n
    \n \n

    Extract geometry type of this finite element.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01538.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01538.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::FiniteElementInterface::Traits Struct Reference
    \n \n
    \n \n

    types of component objects \n More...

    \n \n-

    #include <dune/localfunctions/common/interface.hh>

    \n+

    #include <dune/localfunctions/common/interface.hh>

    \n
    \n Inheritance diagram for Dune::FiniteElementInterface::Traits:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -168,15 +168,15 @@\n

    type of the Interpolation

    \n

    Should be an implementation of InterpolationInterface

    \n
    Note
    May be an inline class instead of a typedef.
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01542.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01542.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::FiniteElementFactoryInterface< Geometry, VertexOrder > Class Template Reference
    \n \n
    \n \n

    Factory interface for global-valued finite elements. \n More...

    \n \n-

    #include <dune/localfunctions/common/interface.hh>

    \n+

    #include <dune/localfunctions/common/interface.hh>

    \n
    \n Inheritance diagram for Dune::FiniteElementFactoryInterface< Geometry, VertexOrder >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -351,15 +351,15 @@\n
    \n \n

    create a finite element from a vertex ordering

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01546.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01546.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BasisInterface Class Reference
    \n \n
    \n \n

    Interface for global-valued shape functions. \n More...

    \n \n-

    #include <dune/localfunctions/common/interface.hh>

    \n+

    #include <dune/localfunctions/common/interface.hh>

    \n
    \n Inheritance diagram for Dune::BasisInterface:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -265,15 +265,15 @@\n
    \n \n

    Number of shape functions.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01550.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01550.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::BasisInterface::Traits Struct Reference
    \n \n
    \n \n

    types of domain and range \n More...

    \n \n-

    #include <dune/localfunctions/common/interface.hh>

    \n+

    #include <dune/localfunctions/common/interface.hh>

    \n
    \n Inheritance diagram for Dune::BasisInterface::Traits:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -254,15 +254,15 @@\n
    \n \n

    dimension of the range

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01554.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01554.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::InterpolationInterface Struct Reference
    \n \n
    \n \n

    Interface for global-valued interpolation. \n More...

    \n \n-

    #include <dune/localfunctions/common/interface.hh>

    \n+

    #include <dune/localfunctions/common/interface.hh>

    \n
    \n Inheritance diagram for Dune::InterpolationInterface:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -172,15 +172,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01558.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01558.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::CoefficientsInterface Struct Reference
    \n \n
    \n \n

    Interface for global-valued coefficients. \n More...

    \n \n-

    #include <dune/localfunctions/common/interface.hh>

    \n+

    #include <dune/localfunctions/common/interface.hh>

    \n
    \n Inheritance diagram for Dune::CoefficientsInterface:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -146,15 +146,15 @@\n
    \n \n

    number of coefficients

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01562.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01562.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::FiniteElementInterfaceSwitch< FiniteElement, Dummy > Struct Template Reference
    \n \n
    \n \n

    Switch for uniform treatment of finite element with either the local or the global interface. \n More...

    \n \n-

    #include <dune/localfunctions/common/interfaceswitch.hh>

    \n+

    #include <dune/localfunctions/common/interfaceswitch.hh>

    \n \n \n \n \n \n \n@@ -419,15 +419,15 @@\n
    \n \n

    Store a finite element in the store.

    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01566.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01566.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::BasisInterfaceSwitch< Basis, Dummy > Struct Template Reference
    \n \n
    \n \n

    Switch for uniform treatment of local and global basis classes. \n More...

    \n \n-

    #include <dune/localfunctions/common/interfaceswitch.hh>

    \n+

    #include <dune/localfunctions/common/interfaceswitch.hh>

    \n

    \n Public Types

    typedef FiniteElement::Traits::Basis Basis
     export the type of the basis
     
    typedef FiniteElement::Traits::Interpolation Interpolation
    \n \n \n \n \n \n@@ -318,15 +318,15 @@\n
    \n \n

    export dimension of the values

    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01574.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01574.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::LocalFiniteElementTraits< LB, LC, LI > Struct Template Reference
    \n \n

    \n Public Types

    typedef Basis::Traits::DomainField DomainField
     export field types of the coordinates
     
    typedef Basis::Traits::DomainLocal DomainLocal
    \n \n \n \n \n \n@@ -146,15 +146,15 @@\n

    \n Public Types

    typedef LB LocalBasisType
     
    typedef LC LocalCoefficientsType
     
    \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01594.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01594.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LocalFiniteElementVariant< Implementations > Class Template Reference
    \n \n
    \n \n

    Type erasure class for wrapping LocalFiniteElement classes. \n More...

    \n \n-

    #include <dune/localfunctions/common/localfiniteelementvariant.hh>

    \n+

    #include <dune/localfunctions/common/localfiniteelementvariant.hh>

    \n
    \n Inheritance diagram for Dune::LocalFiniteElementVariant< Implementations >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -632,15 +632,15 @@\n \n

    Provide access to underlying std::variant.

    \n

    This allows to use std::visit on a higher level which allows to avoid the indirection of the std::variant - polymorphism inside the visitor code. Notice that the provided std::variant contains std::monostate in its type list. Hence any visitor used to access the variant has to be std::monostate-aware.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01602.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01602.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::LocalFiniteElementVariantCache< Base > Class Template Reference
    \n \n
    \n \n

    A cache storing a compile time selection of local finite element implementations. \n More...

    \n \n-

    #include <dune/localfunctions/common/localfiniteelementvariantcache.hh>

    \n+

    #include <dune/localfunctions/common/localfiniteelementvariantcache.hh>

    \n
    \n Inheritance diagram for Dune::LocalFiniteElementVariantCache< Base >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -351,15 +351,15 @@\n
    \n \n

    Move assignment.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01622.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01622.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Describe position of one degree of freedom. \n More...

    \n \n-

    #include <dune/localfunctions/common/localkey.hh>

    \n+

    #include <dune/localfunctions/common/localkey.hh>

    \n \n \n \n \n \n@@ -361,15 +361,15 @@\n
    \n \n

    Return number of associated subentity.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01626.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01626.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LocalToGlobalBasisAdaptorTraits< LocalBasisTraits, dimDomainGlobal_ > Struct Template Reference
    \n \n
    \n \n

    Traits class for local-to-global basis adaptors. \n More...

    \n \n-

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n+

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n
    \n Inheritance diagram for Dune::LocalToGlobalBasisAdaptorTraits< LocalBasisTraits, dimDomainGlobal_ >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -435,15 +435,15 @@\n \n

    \n Public Types

    enum  { intersectionCodim =666\n }
     Enumerate 'special values' for the codimension method. More...
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01630.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01630.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Class Template Reference
    \n \n
    \n \n

    Convert a simple scalar local basis into a global basis. \n More...

    \n \n-

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n+

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n
    \n Inheritance diagram for Dune::ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -472,15 +472,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01634.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01634.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LocalToGlobalInterpolationAdaptor< LocalInterpolation, Traits_ > Class Template Reference
    \n \n
    \n \n

    Convert a local interpolation into a global interpolation. \n More...

    \n \n-

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n+

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n
    \n Inheritance diagram for Dune::LocalToGlobalInterpolationAdaptor< LocalInterpolation, Traits_ >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -268,15 +268,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01638.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01638.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry > Struct Template Reference
    \n \n
    \n \n

    Convert a simple scalar local finite element into a global finite element. \n More...

    \n \n-

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n+

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n
    \n Inheritance diagram for Dune::ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -281,15 +281,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01642.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01642.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry >::Traits Struct Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n+

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n
    \n Inheritance diagram for Dune::ScalarLocalToGlobalFiniteElementAdaptor< LocalFiniteElement, Geometry >::Traits:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -147,15 +147,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01646.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01646.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::ScalarLocalToGlobalFiniteElementAdaptorFactory< LocalFiniteElement, Geometry > Class Template Reference
    \n \n
    \n \n

    Factory for ScalarLocalToGlobalFiniteElementAdaptor objects. \n More...

    \n \n-

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n+

    #include <dune/localfunctions/common/localtoglobaladaptors.hh>

    \n
    \n Inheritance diagram for Dune::ScalarLocalToGlobalFiniteElementAdaptorFactory< LocalFiniteElement, Geometry >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -436,15 +436,15 @@\n
    \n \n

    create a finite element from a vertex ordering

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01650.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01650.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LocalInterpolationVirtualInterface< DomainType, RangeType > Class Template Referenceabstract
    \n \n
    \n \n

    virtual base class for a local interpolation \n More...

    \n \n-

    #include <dune/localfunctions/common/virtualinterface.hh>

    \n+

    #include <dune/localfunctions/common/virtualinterface.hh>

    \n
    \n Inheritance diagram for Dune::LocalInterpolationVirtualInterface< DomainType, RangeType >:
    \n \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01654.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01654.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LocalBasisVirtualInterface< T > Class Template Referenceabstract
    \n \n
    \n \n

    virtual base class for a local basis \n More...

    \n \n-

    #include <dune/localfunctions/common/virtualinterface.hh>

    \n+

    #include <dune/localfunctions/common/virtualinterface.hh>

    \n
    \n Inheritance diagram for Dune::LocalBasisVirtualInterface< T >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -384,15 +384,15 @@\n

    Number of shape functions.

    \n \n

    Implemented in Dune::LocalBasisVirtualImp< T, Imp >, and Dune::LocalBasisVirtualImp< LocalBasisTraits, typename Imp::Traits::LocalBasisType >.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01658.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01658.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LocalInterpolationVirtualInterfaceBase< DomainType, RangeType > Class Template Referenceabstract
    \n \n
    \n \n

    virtual base class for a local interpolation \n More...

    \n \n-

    #include <dune/localfunctions/common/virtualinterface.hh>

    \n+

    #include <dune/localfunctions/common/virtualinterface.hh>

    \n
    \n Inheritance diagram for Dune::LocalInterpolationVirtualInterfaceBase< DomainType, RangeType >:
    \n \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01662.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01662.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::LocalCoefficientsVirtualInterface Class Referenceabstract
    \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01666.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01666.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LocalFiniteElementVirtualInterface< T > Class Template Referenceabstract
    \n \n
    \n \n

    virtual base class for local finite elements with functions \n More...

    \n \n-

    #include <dune/localfunctions/common/virtualinterface.hh>

    \n+

    #include <dune/localfunctions/common/virtualinterface.hh>

    \n
    \n Inheritance diagram for Dune::LocalFiniteElementVirtualInterface< T >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -339,15 +339,15 @@\n
    \n \n

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01670.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01670.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::LocalFiniteElementVirtualImp< Imp > Class Template Reference
    \n \n
    \n \n

    class for wrapping a finite element using the virtual interface \n More...

    \n \n-

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n+

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n
    \n Inheritance diagram for Dune::LocalFiniteElementVirtualImp< Imp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -558,15 +558,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01674.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01674.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::LocalFiniteElementCloneFactoryHelper< Imp, IsInterface > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n+

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static Imp * clone (const Imp &imp)
     
    \n

    Member Function Documentation

    \n@@ -113,15 +113,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01682.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01682.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::LocalFiniteElementCloneFactory< Imp > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n+

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::Traits > Interface
     
    \n \n

    \n@@ -165,15 +165,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01686.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01686.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::LocalBasisVirtualImp< T, Imp > Class Template Reference
    \n \n
    \n \n

    class for wrapping a basis using the virtual interface \n More...

    \n \n-

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n+

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n
    \n Inheritance diagram for Dune::LocalBasisVirtualImp< T, Imp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -426,15 +426,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01690.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01690.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::LocalInterpolationVirtualImp< DomainType, RangeType, Imp > Class Template Reference
    \n \n
    \n \n

    class for wrapping a local interpolation using the virtual interface \n More...

    \n \n-

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n+

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n
    \n Inheritance diagram for Dune::LocalInterpolationVirtualImp< DomainType, RangeType, Imp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -380,15 +380,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01694.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01694.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::LocalCoefficientsVirtualImp< Imp > Class Template Reference
    \n \n
    \n \n

    class for wrapping local coefficients using the virtual interface \n More...

    \n \n-

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n+

    #include <dune/localfunctions/common/virtualwrappers.hh>

    \n
    \n Inheritance diagram for Dune::LocalCoefficientsVirtualImp< Imp >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -304,15 +304,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01710.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01710.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::CrouzeixRaviartLocalFiniteElement< D, R, dim > Class Template Reference
    \n \n
    \n \n

    Crouzeix-Raviart finite element. \n More...

    \n \n-

    #include <dune/localfunctions/crouzeixraviart.hh>

    \n+

    #include <dune/localfunctions/crouzeixraviart.hh>

    \n \n \n \n \n \n

    \n Public Types

    using Traits = LocalFiniteElementTraits< Impl::CrouzeixRaviartLocalBasis< D, R, dim >, Impl::CrouzeixRaviartLocalCoefficients< dim >, Impl::CrouzeixRaviartLocalInterpolation< Impl::CrouzeixRaviartLocalBasis< D, R, dim > > >
     Export number types, dimensions, etc.
     
    \n@@ -287,15 +287,15 @@\n
    \n \n

    The reference element that the local finite element is defined on.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01714.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01714.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::DualP1LocalFiniteElement< D, R, dim, faceDual > Class Template Reference
    \n \n
    \n \n

    The local dual p1 finite element on simplices. \n More...

    \n \n-

    #include <dune/localfunctions/dualmortarbasis/dualp1.hh>

    \n+

    #include <dune/localfunctions/dualmortarbasis/dualp1.hh>

    \n
    \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< DualP1LocalBasis< D, R, dim, faceDual >, DualP1LocalCoefficients< dim >, DualP1LocalInterpolation< dim, DualP1LocalBasis< D, R, dim, faceDual > > > Traits
     
    \n

    \n@@ -310,15 +310,15 @@\n

    \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01718.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01718.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::DualP1LocalBasis< D, R, dim, faceDualT > Class Template Reference
    \n \n
    \n \n

    Dual Lagrange shape functions on the simplex. \n More...

    \n \n-

    #include <dune/localfunctions/dualmortarbasis/dualp1/dualp1localbasis.hh>

    \n+

    #include <dune/localfunctions/dualmortarbasis/dualp1/dualp1localbasis.hh>

    \n
    \n Inheritance diagram for Dune::DualP1LocalBasis< D, R, dim, faceDualT >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -368,15 +368,15 @@\n
    \n \n

    Determines if the basis is only biorthogonal on adjacent faces.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01722.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01722.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::DualP1LocalCoefficients< dim > Class Template Reference
    \n \n
    \n \n

    Local coefficients for dual simplex P1 elements. \n More...

    \n \n-

    #include <dune/localfunctions/dualmortarbasis/dualp1/dualp1localcoefficients.hh>

    \n+

    #include <dune/localfunctions/dualmortarbasis/dualp1/dualp1localcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::DualP1LocalCoefficients< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -234,15 +234,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01726.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01726.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DualP1LocalInterpolation< dim, LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/dualmortarbasis/dualp1/dualp1localinterpolation.hh>

    \n+

    #include <dune/localfunctions/dualmortarbasis/dualp1/dualp1localinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::DualP1LocalInterpolation< dim, LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -139,15 +139,15 @@\n
    \n \n

    Local interpolation of a function.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01730.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01730.html", "unified_diff": "@@ -80,15 +80,15 @@\n Protected Types |\n Protected Attributes |\n List of all members \n
    Dune::DualPQ1LocalFiniteElementCache< D, R, dim, faceDual > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/dualmortarbasis/dualpq1factory.hh>

    \n+

    #include <dune/localfunctions/dualmortarbasis/dualpq1factory.hh>

    \n \n \n \n \n \n

    \n Public Types

    typedef FE FiniteElementType
     Type of the finite elements stored in this cache.
     
    \n@@ -374,15 +374,15 @@\n \n
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01734.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01734.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::DualQ1LocalFiniteElement< D, R, dim, faceDual > Class Template Reference
    \n \n
    \n \n

    The local dual Q1 finite element on cubes. \n More...

    \n \n-

    #include <dune/localfunctions/dualmortarbasis/dualq1.hh>

    \n+

    #include <dune/localfunctions/dualmortarbasis/dualq1.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< DualQ1LocalBasis< D, R, dim >, DualQ1LocalCoefficients< dim >, DualQ1LocalInterpolation< dim, DualQ1LocalBasis< D, R, dim > > > Traits
     
    \n

    \n@@ -310,15 +310,15 @@\n

    \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01738.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01738.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::DualQ1LocalBasis< D, R, dim > Class Template Reference
    \n \n
    \n \n

    Dual Lagrange shape functions of order 1 on the reference cube. \n More...

    \n \n-

    #include <dune/localfunctions/dualmortarbasis/dualq1/dualq1localbasis.hh>

    \n+

    #include <dune/localfunctions/dualmortarbasis/dualq1/dualq1localbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
     
    \n \n

    \n@@ -350,15 +350,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01742.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01742.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::DualQ1LocalCoefficients< dim > Class Template Reference
    \n \n
    \n \n

    Layout map for dual Q1 elements. \n More...

    \n \n-

    #include <dune/localfunctions/dualmortarbasis/dualq1/dualq1localcoefficients.hh>

    \n+

    #include <dune/localfunctions/dualmortarbasis/dualq1/dualq1localcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::DualQ1LocalCoefficients< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -234,15 +234,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01746.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01746.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DualQ1LocalInterpolation< dim, LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/dualmortarbasis/dualq1/dualq1localinterpolation.hh>

    \n+

    #include <dune/localfunctions/dualmortarbasis/dualq1/dualq1localinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::DualQ1LocalInterpolation< dim, LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -172,15 +172,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01750.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01750.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::SimplexP1BubbleLocalFiniteElement< D, R, dim > Class Template Reference
    \n \n
    \n \n

    Linear Lagrange functions enriched with an element bubble function. \n More...

    \n \n-

    #include <dune/localfunctions/enriched/simplexp1bubble.hh>

    \n+

    #include <dune/localfunctions/enriched/simplexp1bubble.hh>

    \n \n \n \n \n \n \n@@ -355,15 +355,15 @@\n
    \n \n

    Returns the type of the geometry the finite-element is attached to.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01758.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01758.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::SimplexP1BubbleLocalCoefficients< dim > Class Template Reference
    \n \n
    \n \n

    The Local keys associated to the dim-d local basis functions. \n More...

    \n \n-

    #include <dune/localfunctions/enriched/simplexp1bubble/localcoefficients.hh>

    \n+

    #include <dune/localfunctions/enriched/simplexp1bubble/localcoefficients.hh>

    \n

    \n Public Types

    using LocalBasisType = SimplexP1BubbleLocalBasis< D, R, dim >
     Type of the local basis.
     
    using LocalCoefficientsType = SimplexP1BubbleLocalCoefficients< dim >
    \n \n \n \n \n \n@@ -192,15 +192,15 @@\n
    \n \n

    Returns number of coefficients.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01762.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01762.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::SimplexP1BubbleLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    Interpolation into the SimplexP1BubbleLocalBasis. \n More...

    \n \n-

    #include <dune/localfunctions/enriched/simplexp1bubble/localinterpolation.hh>

    \n+

    #include <dune/localfunctions/enriched/simplexp1bubble/localinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::SimplexP1BubbleLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -160,15 +160,15 @@\n

    \n Public Member Functions

     SimplexP1BubbleLocalCoefficients () noexcept
     Default constructor, initialized the local keys.
     
    const LocalKeylocalKey (std::size_t i) const noexcept
    \n \n \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01766.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01766.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Member Functions |\n List of all members \n
    Dune::HierarchicalP2LocalFiniteElement< D, R, dim > Class Template Reference
    \n \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01770.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01770.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::HierarchicalSimplexP2LocalBasis< D, R, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalp2/hierarchicalsimplexp2localbasis.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalp2/hierarchicalsimplexp2localbasis.hh>

    \n \n \n \n \n

    \n Public Member Functions

     HierarchicalSimplexP2LocalBasis ()
     
    \n

    Constructor & Destructor Documentation

    \n@@ -112,15 +112,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01774.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01774.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::HierarchicalSimplexP2LocalBasis< D, R, 1 > Class Template Reference
    \n \n
    \n \n

    Hierarchical P2 basis in 1d. \n More...

    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalp2/hierarchicalsimplexp2localbasis.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalp2/hierarchicalsimplexp2localbasis.hh>

    \n \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 1 > > Traits
     export type traits for function signature
     
    \n@@ -327,15 +327,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01778.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01778.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::HierarchicalSimplexP2LocalBasis< D, R, 2 > Class Template Reference
    \n \n
    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 2 > > Traits
     export type traits for function signature
     
    \n@@ -331,15 +331,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01782.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01782.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::HierarchicalSimplexP2LocalBasis< D, R, 3 > Class Template Reference
    \n \n
    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
     export type traits for function signature
     
    \n@@ -335,15 +335,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01786.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01786.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::HierarchicalSimplexP2LocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalp2/hierarchicalsimplexp2localinterpolation.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalp2/hierarchicalsimplexp2localinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::HierarchicalSimplexP2LocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -144,15 +144,15 @@\n \n
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01790.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01790.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::HierarchicalP2WithElementBubbleLocalFiniteElement< D, R, dim > Class Template Reference
    \n \n
    \n \n

    Linear Lagrange functions enriched with quadratic edge bubble functions and an element bubble function. \n More...

    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble.hh>

    \n \n \n \n \n \n \n@@ -352,15 +352,15 @@\n
    \n \n

    Returns the type of the geometry the finite-element is attached to.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01794.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01794.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > Class Template Reference
    \n \n
    \n \n

    P1 basis in dim-d enriched by quadratic edge bubble functions and an element bubble function of order dim+1. \n More...

    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.hh>

    \n

    \n Public Types

    using LocalBasisType = HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim >
     Type of the local basis.
     
    using LocalCoefficientsType = HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >
    \n \n \n \n \n

    \n Public Types

    using Traits = LocalBasisTraits< D, dim, DomainType, R, 1, RangeType, JacobianType >
     Type traits for function signature.
     
    \n@@ -323,15 +323,15 @@\n
    \n \n

    Returns number of shape functions.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01798.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01798.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim > Class Template Reference
    \n \n
    \n \n \n \n \n \n@@ -196,15 +196,15 @@\n
    \n \n

    Returns number of coefficients.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01802.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01802.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LB, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.hh>

    \n
    \n Inheritance diagram for Dune::HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LB, dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -146,15 +146,15 @@\n

    \n Public Member Functions

     HierarchicalSimplexP2WithElementBubbleLocalCoefficients () noexcept
     Default constructor, initializes the local keys.
     
    const LocalKeylocalKey (std::size_t i) const noexcept
    \n \n \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01806.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01806.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Member Functions |\n List of all members \n
    Dune::HierarchicalPrismP2LocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalprismp2.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalprismp2.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< HierarchicalPrismP2LocalBasis< D, R >, Impl::LagrangePrismLocalCoefficients< 2 >, HierarchicalPrismP2LocalInterpolation< HierarchicalPrismP2LocalBasis< D, R > > > Traits
     
    \n

    \n@@ -297,15 +297,15 @@\n

    \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01810.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01810.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::HierarchicalPrismP2LocalBasis< D, R > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalprismp2/hierarchicalprismp2localbasis.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalprismp2/hierarchicalprismp2localbasis.hh>

    \n \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
     export type traits for function signature
     
    \n@@ -308,15 +308,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01814.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01814.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::HierarchicalPrismP2LocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalprismp2/hierarchicalprismp2localinterpolation.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalprismp2/hierarchicalprismp2localinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::HierarchicalPrismP2LocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -144,15 +144,15 @@\n \n
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01818.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01818.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::LagrangeLocalFiniteElement< LP, dimDomain, D, R, SF, CF > Class Template Reference
    \n \n
    \n \n

    Lagrange local finite elements for a given set of interpolation points. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange.hh>

    \n+

    #include <dune/localfunctions/lagrange.hh>

    \n
    \n Inheritance diagram for Dune::LagrangeLocalFiniteElement< LP, dimDomain, D, R, SF, CF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -493,15 +493,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01822.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01822.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::DynamicLagrangeLocalFiniteElementCache< Domain, Range, dim > Class Template Reference
    \n \n
    \n \n

    A cache that stores Lagrange finite elements for the given dimension and order. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/cache.hh>

    \n+

    #include <dune/localfunctions/lagrange/cache.hh>

    \n \n \n \n \n

    \n Public Types

    using FiniteElementType = LagrangeLocalFiniteElement< EquidistantPointSet, dim, Domain, Range >
     
    \n \n

    \n@@ -190,15 +190,15 @@\n \n

    Obtain the cached local finite-element.

    \n

    This function might first construct the local finite-element to the polynomial order specified in the constructor of the cache, if it is not yet cached.

    \n \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01826.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01826.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::StaticLagrangeLocalFiniteElementCache< id, Domain, Range, dim, order > Class Template Reference
    \n \n
    \n \n

    A cache that stores all available Pk/Qk like local finite elements for the given dimension and order for the case that the GeometryType is fixed and has the given Id. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/cache.hh>

    \n+

    #include <dune/localfunctions/lagrange/cache.hh>

    \n \n \n \n \n

    \n Public Types

    using FiniteElementType = std::conditional_t< isSimplex, LagrangeSimplexLocalFiniteElement< Domain, Range, dim, order >, std::conditional_t< isCube, LagrangeCubeLocalFiniteElement< Domain, Range, dim, order >, std::conditional_t< isPrism, LagrangePrismLocalFiniteElement< Domain, Range, order >, std::conditional_t< isPyramid, LagrangePyramidLocalFiniteElement< Domain, Range, order >, UnknownToplogy > > > >
     
    \n

    \n@@ -191,15 +191,15 @@\n
    \n \n

    Obtain the cached local finite-element.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01834.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01834.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::StaticLagrangeLocalFiniteElementCache< GeometryType::Id(~0u), Domain, Range, dim, order > Class Template Reference
    \n \n
    \n \n

    A cache that stores all available Pk/Qk like local finite elements for the given dimension and order. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/cache.hh>

    \n+

    #include <dune/localfunctions/lagrange/cache.hh>

    \n
    \n Inheritance diagram for Dune::StaticLagrangeLocalFiniteElementCache< GeometryType::Id(~0u), Domain, Range, dim, order >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -189,15 +189,15 @@\n

    \n \n \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01838.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01838.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::LagrangePoint< F, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/emptypoints.hh>

    \n+

    #include <dune/localfunctions/lagrange/emptypoints.hh>

    \n \n \n \n \n \n \n@@ -300,15 +300,15 @@\n \n

    \n Public Types

    typedef F Field
     
    typedef FieldVector< Field, dimensionVector
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01842.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01842.html", "unified_diff": "@@ -80,15 +80,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::EmptyPointSet< F, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/emptypoints.hh>

    \n+

    #include <dune/localfunctions/lagrange/emptypoints.hh>

    \n
    \n Inheritance diagram for Dune::EmptyPointSet< F, dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -450,15 +450,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01846.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01846.html", "unified_diff": "@@ -80,15 +80,15 @@\n Static Public Attributes |\n Protected Attributes |\n List of all members \n
    Dune::EquidistantPointSet< F, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/equidistantpoints.hh>

    \n+

    #include <dune/localfunctions/lagrange/equidistantpoints.hh>

    \n
    \n Inheritance diagram for Dune::EquidistantPointSet< F, dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -612,15 +612,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01850.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01850.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::LagrangeInterpolationFactory< LP, dim, F > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/interpolation.hh>

    \n+

    #include <dune/localfunctions/lagrange/interpolation.hh>

    \n \n \n \n \n \n \n@@ -256,15 +256,15 @@\n \n

    \n Public Types

    typedef LagrangeCoefficientsFactory< LP, dim, F > LagrangePointSetFactory
     
    typedef LagrangePointSetFactory::Object LagrangePointSet
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01854.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01854.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::LocalLagrangeInterpolation< LP, dim, F > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/interpolation.hh>

    \n+

    #include <dune/localfunctions/lagrange/interpolation.hh>

    \n \n \n \n \n \n \n@@ -270,15 +270,15 @@\n \n

    \n Public Types

    typedef LP< F, dim > LagrangePointSet
     
    typedef LagrangePointSet::Field Field
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01858.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01858.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::LagrangeBasisFactory< LP, dim, SF, CF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/lagrangebasis.hh>

    \n+

    #include <dune/localfunctions/lagrange/lagrangebasis.hh>

    \n
    \n Inheritance diagram for Dune::LagrangeBasisFactory< LP, dim, SF, CF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -500,15 +500,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01862.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01862.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::LagrangeCoefficientsFactory< LP, dim, F > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/lagrangecoefficients.hh>

    \n+

    #include <dune/localfunctions/lagrange/lagrangecoefficients.hh>

    \n \n \n \n \n

    \n Public Types

    typedef std::size_t Key
     
    \n \n

    \n@@ -222,15 +222,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01878.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01878.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::LagrangeCubeLocalFiniteElement< D, R, dim, k > Class Template Reference
    \n \n
    \n \n

    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/lagrangecube.hh>

    \n+

    #include <dune/localfunctions/lagrange/lagrangecube.hh>

    \n
    \n Inheritance diagram for Dune::LagrangeCubeLocalFiniteElement< D, R, dim, k >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -298,15 +298,15 @@\n
    \n \n

    The reference element that the local finite element is defined on.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01914.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01914.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::LagrangePrismLocalFiniteElement< D, R, k > Class Template Reference
    \n \n
    \n \n

    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/lagrangeprism.hh>

    \n+

    #include <dune/localfunctions/lagrange/lagrangeprism.hh>

    \n \n \n \n \n \n

    \n Public Types

    using Traits = LocalFiniteElementTraits< Impl::LagrangePrismLocalBasis< D, R, k >, Impl::LagrangePrismLocalCoefficients< k >, Impl::LagrangePrismLocalInterpolation< Impl::LagrangePrismLocalBasis< D, R, k > > >
     Export number types, dimensions, etc.
     
    \n@@ -287,15 +287,15 @@\n
    \n \n

    The reference element that the local finite element is defined on.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01930.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01930.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::LagrangePyramidLocalFiniteElement< D, R, k > Class Template Reference
    \n \n
    \n \n

    Lagrange finite element for 3d pyramids with compile-time polynomial order. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/lagrangepyramid.hh>

    \n+

    #include <dune/localfunctions/lagrange/lagrangepyramid.hh>

    \n
    \n \n \n \n \n

    \n Public Types

    using Traits = LocalFiniteElementTraits< Impl::LagrangePyramidLocalBasis< D, R, k >, Impl::LagrangePyramidLocalCoefficients< k >, Impl::LagrangePyramidLocalInterpolation< Impl::LagrangePyramidLocalBasis< D, R, k > > >
     Export number types, dimensions, etc.
     
    \n@@ -301,15 +301,15 @@\n
    \n \n

    The reference element that the local finite element is defined on.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01946.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01946.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::LagrangeSimplexLocalFiniteElement< D, R, d, k > Class Template Reference
    \n \n
    \n \n

    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/lagrangesimplex.hh>

    \n+

    #include <dune/localfunctions/lagrange/lagrangesimplex.hh>

    \n
    \n \n \n \n \n

    \n Public Types

    using Traits = LocalFiniteElementTraits< Impl::LagrangeSimplexLocalBasis< D, R, d, k >, Impl::LagrangeSimplexLocalCoefficients< d, k >, Impl::LagrangeSimplexLocalInterpolation< Impl::LagrangeSimplexLocalBasis< D, R, d, k > > >
     Export number types, dimensions, etc.
     
    \n@@ -354,15 +354,15 @@\n
    \n \n

    The reference element that the local finite element is defined on.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01950.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01950.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::P0LocalFiniteElement< D, R, d > Class Template Reference
    \n \n
    \n \n

    The local p0 finite element on all types of reference elements. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/p0.hh>

    \n+

    #include <dune/localfunctions/lagrange/p0.hh>

    \n
    \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< P0LocalBasis< D, R, d >, P0LocalCoefficients, P0LocalInterpolation< P0LocalBasis< D, R, d > > > Traits
     
    \n

    \n@@ -305,15 +305,15 @@\n

    \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01954.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01954.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::P0LocalBasis< D, R, d > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/p0/p0localbasis.hh>

    \n+

    #include <dune/localfunctions/lagrange/p0/p0localbasis.hh>

    \n \n \n \n \n \n

    \n Public Types

    typedef 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
     
    \n@@ -326,15 +326,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01958.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01958.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Protected Attributes |\n List of all members\n \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/p0/p0localcoefficients.hh>

    \n+

    #include <dune/localfunctions/lagrange/p0/p0localcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::P0LocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -226,15 +226,15 @@\n \n
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01962.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01962.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::P0LocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/p0/p0localinterpolation.hh>

    \n+

    #include <dune/localfunctions/lagrange/p0/p0localinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::P0LocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -170,15 +170,15 @@\n
    \n \n

    determine coefficients interpolating a given function

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01966.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01966.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Pk1DFiniteElement< Geometry, RF, k > Class Template Reference
    \n \n
    \n \n

    Langrange finite element of arbitrary order on triangles. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/pk1d.hh>

    \n+

    #include <dune/localfunctions/lagrange/pk1d.hh>

    \n
    \n Inheritance diagram for Dune::Pk1DFiniteElement< Geometry, RF, k >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -284,15 +284,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01970.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01970.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Pk1DFiniteElement< Geometry, RF, k >::Traits Struct Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/pk1d.hh>

    \n+

    #include <dune/localfunctions/lagrange/pk1d.hh>

    \n
    \n Inheritance diagram for Dune::Pk1DFiniteElement< Geometry, RF, k >::Traits:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -147,15 +147,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01974.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01974.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Pk1DFiniteElementFactory< Geometry, RF, k > Struct Template Reference
    \n \n
    \n \n

    Factory for Pk1DFiniteElement objects. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/pk1d.hh>

    \n+

    #include <dune/localfunctions/lagrange/pk1d.hh>

    \n
    \n Inheritance diagram for Dune::Pk1DFiniteElementFactory< Geometry, RF, k >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -402,15 +402,15 @@\n
    \n \n

    create a finite element from a vertex ordering

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01978.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01978.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Pk2DFiniteElement< Geometry, RF, k > Class Template Reference
    \n \n
    \n \n

    Langrange finite element of arbitrary order on triangles. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/pk2d.hh>

    \n+

    #include <dune/localfunctions/lagrange/pk2d.hh>

    \n
    \n Inheritance diagram for Dune::Pk2DFiniteElement< Geometry, RF, k >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -284,15 +284,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01982.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01982.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Pk2DFiniteElement< Geometry, RF, k >::Traits Struct Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/pk2d.hh>

    \n+

    #include <dune/localfunctions/lagrange/pk2d.hh>

    \n
    \n Inheritance diagram for Dune::Pk2DFiniteElement< Geometry, RF, k >::Traits:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -147,15 +147,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01986.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01986.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Pk2DFiniteElementFactory< Geometry, RF, k > Struct Template Reference
    \n \n
    \n \n

    Factory for Pk2DFiniteElement objects. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/pk2d.hh>

    \n+

    #include <dune/localfunctions/lagrange/pk2d.hh>

    \n
    \n Inheritance diagram for Dune::Pk2DFiniteElementFactory< Geometry, RF, k >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -402,15 +402,15 @@\n
    \n \n

    create a finite element from a vertex ordering

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01990.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01990.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::PQ22DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/lagrange/pq22d.hh>

    \n+

    #include <dune/localfunctions/lagrange/pq22d.hh>

    \n \n \n \n \n

    \n Public Types

    using Traits = typename LFEVariant::Traits
     
    \n \n

    \n@@ -325,15 +325,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01994.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01994.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, d, k > Struct Template Reference
    \n \n
    \n \n

    Factory that only creates dimension specific local finite elements. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/pqkfactory.hh>

    \n+

    #include <dune/localfunctions/lagrange/pqkfactory.hh>

    \n \n \n \n \n

    \n Public Types

    typedef P0LocalFiniteElement< D, R, d >::Traits::LocalBasisType::Traits T
     
    \n \n

    \n@@ -146,15 +146,15 @@\n
    \n \n

    create finite element for given GeometryType

    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01998.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01998.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, 3, k > Struct Template Reference
    \n \n
    \n \n

    Factory that only creates dimension specific local finite elements. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/pqkfactory.hh>

    \n+

    #include <dune/localfunctions/lagrange/pqkfactory.hh>

    \n \n \n \n \n \n \n@@ -218,15 +218,15 @@\n
    \n \n

    create finite element for given GeometryType

    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02002.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02002.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::PQkLocalFiniteElementFactory< D, R, dim, k > Struct Template Reference
    \n \n
    \n \n

    Factory to create any kind of Pk/Qk like element wrapped for the virtual interface. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/pqkfactory.hh>

    \n+

    #include <dune/localfunctions/lagrange/pqkfactory.hh>

    \n

    \n Public Types

    typedef P0LocalFiniteElement< D, R, 3 >::Traits::LocalBasisType::Traits T
     
    using PrismP1 = LagrangePrismLocalFiniteElement< D, R, 1 >
     
    \n \n \n \n \n \n@@ -217,15 +217,15 @@\n
    \n \n

    create finite element for given GeometryType

    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02006.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02006.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::PQkLocalFiniteElementCache< D, R, dim, k > Class Template Reference
    \n \n
    \n \n

    A cache that stores all available Pk/Qk like local finite elements for the given dimension and order. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/pqkfactory.hh>

    \n+

    #include <dune/localfunctions/lagrange/pqkfactory.hh>

    \n

    \n Public Types

    typedef P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T
     
    typedef LocalFiniteElementVirtualInterface< TFiniteElementType
     
    \n \n \n \n \n

    \n Public Types

    typedef FE FiniteElementType
     Type of the finite elements stored in this cache.
     
    \n@@ -366,15 +366,15 @@\n \n
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02010.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02010.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Q1FiniteElementFactory< Geometry, RF > Class Template Reference
    \n \n
    \n \n

    Factory for global-valued Q1 elements. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/q1.hh>

    \n+

    #include <dune/localfunctions/lagrange/q1.hh>

    \n
    \n Inheritance diagram for Dune::Q1FiniteElementFactory< Geometry, RF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -428,15 +428,15 @@\n
    \n \n

    create a finite element from a vertex ordering

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02014.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02014.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Q2FiniteElementFactory< Geometry, RF > Class Template Reference
    \n \n
    \n \n

    Factory for global-valued Q23D elements. \n More...

    \n \n-

    #include <dune/localfunctions/lagrange/q2.hh>

    \n+

    #include <dune/localfunctions/lagrange/q2.hh>

    \n
    \n Inheritance diagram for Dune::Q2FiniteElementFactory< Geometry, RF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -428,15 +428,15 @@\n
    \n \n

    create a finite element from a vertex ordering

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02018.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02018.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::PowerFiniteElement< Backend, dimR > Class Template Reference
    \n \n
    \n \n

    Meta-finite element turning a scalar finite element into vector-valued one. \n More...

    \n \n-

    #include <dune/localfunctions/meta/power.hh>

    \n+

    #include <dune/localfunctions/meta/power.hh>

    \n \n \n \n \n \n

    \n Classes

    struct  Traits
     types of component objects More...
     
    \n@@ -303,15 +303,15 @@\n
    \n \n

    Extract geometry type of this finite element.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02022.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02022.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::PowerFiniteElement< Backend, dimR >::Traits Struct Reference
    \n \n
    \n \n

    types of component objects \n More...

    \n \n-

    #include <dune/localfunctions/meta/power.hh>

    \n+

    #include <dune/localfunctions/meta/power.hh>

    \n
    \n \n \n \n \n \n@@ -152,15 +152,15 @@\n
    \n \n

    type of the Interpolation

    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02026.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02026.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::PowerFiniteElementFactory< BackendFiniteElement, dimR > Class Template Reference
    \n \n
    \n \n

    Factory for meta-finite elements turning scalar finite elements into vector-valued ones. \n More...

    \n \n-

    #include <dune/localfunctions/meta/power.hh>

    \n+

    #include <dune/localfunctions/meta/power.hh>

    \n
    \n Inheritance diagram for Dune::PowerFiniteElementFactory< BackendFiniteElement, dimR >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -200,15 +200,15 @@\n \n

    create a finite element

    \n
    Note
    With this overload of make() ownership of the backend finite element is determined by the shared_ptr.
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02030.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02030.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::PowerBasis< Backend, dimR > Class Template Reference
    \n \n
    \n \n

    Meta-basis turning a scalar basis into vector-valued basis. \n More...

    \n \n-

    #include <dune/localfunctions/meta/power/basis.hh>

    \n+

    #include <dune/localfunctions/meta/power/basis.hh>

    \n
    \n Inheritance diagram for Dune::PowerBasis< Backend, dimR >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -352,15 +352,15 @@\n
    \n \n

    Number of shape functions.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02034.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02034.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::PowerBasis< Backend, dimR >::Traits Struct Reference
    \n \n
    \n \n

    types of domain and range \n More...

    \n \n-

    #include <dune/localfunctions/meta/power/basis.hh>

    \n+

    #include <dune/localfunctions/meta/power/basis.hh>

    \n
    \n Inheritance diagram for Dune::PowerBasis< Backend, dimR >::Traits:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -176,15 +176,15 @@\n
    \n \n

    Dimension of the range values.

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02038.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02038.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::PowerCoefficients Class Reference
    \n \n
    \n \n

    Meta-coefficients turning a scalar coefficients into vector-valued coefficients. \n More...

    \n \n-

    #include <dune/localfunctions/meta/power/coefficients.hh>

    \n+

    #include <dune/localfunctions/meta/power/coefficients.hh>

    \n
    \n Inheritance diagram for Dune::PowerCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -212,15 +212,15 @@\n
    \n \n

    number of coefficients

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02042.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02042.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::PowerInterpolation< Backend, BasisTraits > Class Template Reference
    \n \n
    \n \n

    Meta-interpolation turning a scalar interpolation into vector-valued interpolation. \n More...

    \n \n-

    #include <dune/localfunctions/meta/power/interpolation.hh>

    \n+

    #include <dune/localfunctions/meta/power/interpolation.hh>

    \n
    \n Inheritance diagram for Dune::PowerInterpolation< Backend, BasisTraits >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -226,15 +226,15 @@\n

    \n Public Types

    typedef PowerBasis< typename Backend::Traits::Basis, dimR > Basis
     type of the Basis
     
    typedef PowerCoefficients Coefficients
    \n \n \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02050.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02050.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::MimeticLocalFiniteElement< D, R, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/mimetic.hh>

    \n+

    #include <dune/localfunctions/mimetic.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Dune::LocalFiniteElementTraits< MimeticLocalBasis< D, R, dim >, MimeticLocalCoefficients, MimeticLocalInterpolation< MimeticLocalBasis< D, R, dim > > > Traits
     
    \n \n

    \n@@ -332,15 +332,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02054.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02054.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::MimeticLocalBasis< D, R, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/mimetic/mimeticall.hh>

    \n+

    #include <dune/localfunctions/mimetic/mimeticall.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Dune::LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
     
    \n \n

    \n@@ -362,15 +362,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02058.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02058.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::MimeticLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/mimetic/mimeticall.hh>

    \n+

    #include <dune/localfunctions/mimetic/mimeticall.hh>

    \n
    \n Inheritance diagram for Dune::MimeticLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -139,15 +139,15 @@\n
    \n \n

    Local interpolation of a function.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02062.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02062.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::MimeticLocalCoefficients Class Reference
    \n \n
    \n \n

    ! \n More...

    \n \n-

    #include <dune/localfunctions/mimetic/mimeticall.hh>

    \n+

    #include <dune/localfunctions/mimetic/mimeticall.hh>

    \n
    \n Inheritance diagram for Dune::MimeticLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -252,15 +252,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02066.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02066.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::MonomialLocalFiniteElement< D, R, d, p > Class Template Reference
    \n \n
    \n \n

    Monomial basis for discontinuous Galerkin methods. \n More...

    \n \n-

    #include <dune/localfunctions/monomial.hh>

    \n+

    #include <dune/localfunctions/monomial.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< MonomialLocalBasis< D, R, d, p >, MonomialLocalCoefficients< static_size >, MonomialLocalInterpolation< MonomialLocalBasis< D, R, d, p >, static_size > > Traits
     
    \n

    \n@@ -309,15 +309,15 @@\n

    \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02070.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02070.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::MonomialFiniteElementFactory< Geometry, RF, p > Class Template Reference
    \n \n
    \n \n

    Factory for global-valued MonomFiniteElement objects. \n More...

    \n \n-

    #include <dune/localfunctions/monomial.hh>

    \n+

    #include <dune/localfunctions/monomial.hh>

    \n
    \n Inheritance diagram for Dune::MonomialFiniteElementFactory< Geometry, RF, p >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -515,15 +515,15 @@\n
    \n \n

    create a finite element from a vertex ordering

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02074.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02074.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::MonomImp::EvalAccess< Traits > Class Template Reference
    \n \n
    \n \n

    Access output vector of evaluateFunction() and evaluate() \n More...

    \n \n-

    #include <dune/localfunctions/monomial/monomiallocalbasis.hh>

    \n+

    #include <dune/localfunctions/monomial/monomiallocalbasis.hh>

    \n \n \n \n \n \n \n@@ -179,15 +179,15 @@\n \n

    \n Public Member Functions

     EvalAccess (std::vector< typename Traits::RangeType > &out_)
     
     ~EvalAccess ()
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02078.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02078.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::MonomImp::JacobianAccess< Traits > Class Template Reference
    \n \n
    \n \n

    Access output vector of evaluateJacobian() \n More...

    \n \n-

    #include <dune/localfunctions/monomial/monomiallocalbasis.hh>

    \n+

    #include <dune/localfunctions/monomial/monomiallocalbasis.hh>

    \n \n \n \n \n \n \n@@ -189,15 +189,15 @@\n \n

    \n Public Member Functions

     JacobianAccess (std::vector< typename Traits::JacobianType > &out_, unsigned int row_)
     
     ~JacobianAccess ()
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02082.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02082.html", "unified_diff": "@@ -77,15 +77,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::MonomImp::Evaluate< Traits, c > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/monomial/monomiallocalbasis.hh>

    \n+

    #include <dune/localfunctions/monomial/monomiallocalbasis.hh>

    \n \n \n \n \n \n

    \n Static Public Member Functions

    template<typename Access >
    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)
     
    \n@@ -205,15 +205,15 @@\n
    \n \n

    The next dimension to try for factors.

    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02086.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02086.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::MonomImp::Evaluate< Traits, 1 > Struct Template Reference
    \n \n
    \n \n \n \n \n

    \n Static Public Member Functions

    template<typename Access >
    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)
     
    \n@@ -208,15 +208,15 @@\n \n
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02090.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02090.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Member Functions |\n List of all members \n
    Dune::MonomialLocalBasis< D, R, d, p > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/monomial/monomiallocalbasis.hh>

    \n+

    #include <dune/localfunctions/monomial/monomiallocalbasis.hh>

    \n \n \n \n \n \n

    \n Public Types

    typedef 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
     
    \n@@ -336,15 +336,15 @@\n
    \n \n

    Number of shape functions.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02094.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02094.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Protected Attributes |\n List of all members\n
    Dune::MonomialLocalCoefficients< static_size > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/monomial/monomiallocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/monomial/monomiallocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::MonomialLocalCoefficients< static_size >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -233,15 +233,15 @@\n \n
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02098.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02098.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::MonomialLocalInterpolation< LB, size > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/monomial/monomiallocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/monomial/monomiallocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::MonomialLocalInterpolation< LB, size >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -181,15 +181,15 @@\n \n

    Determine coefficients interpolating a given function.

    \n

    The method computes the coefficients for the L^2 projection with respect to the given GeometryType. Be careful: the implementation is unstable for higher polynomial degrees.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02114.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02114.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::Nedelec1stKindCubeLocalFiniteElement< D, R, dim, k > Class Template Reference
    \n \n
    \n \n

    N\u00e9d\u00e9lec elements of the first kind for cube elements. \n More...

    \n \n-

    #include <dune/localfunctions/nedelec/nedelec1stkindcube.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelec1stkindcube.hh>

    \n \n \n \n \n

    \n Public Types

    using Traits = LocalFiniteElementTraits< Impl::Nedelec1stKindCubeLocalBasis< D, R, dim, k >, Impl::Nedelec1stKindCubeLocalCoefficients< dim, k >, Impl::Nedelec1stKindCubeLocalInterpolation< Impl::Nedelec1stKindCubeLocalBasis< D, R, dim, k > > >
     
    \n \n

    \n@@ -346,15 +346,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02130.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02130.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::Nedelec1stKindSimplexLocalFiniteElement< D, R, dim, k > Class Template Reference
    \n \n
    \n \n

    N\u00e9d\u00e9lec elements of the first kind for simplex elements. \n More...

    \n \n-

    #include <dune/localfunctions/nedelec/nedelec1stkindsimplex.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelec1stkindsimplex.hh>

    \n \n \n \n \n

    \n Public Types

    using Traits = LocalFiniteElementTraits< Impl::Nedelec1stKindSimplexLocalBasis< D, R, dim, k >, Impl::Nedelec1stKindSimplexLocalCoefficients< dim, k >, Impl::Nedelec1stKindSimplexLocalInterpolation< Impl::Nedelec1stKindSimplexLocalBasis< D, R, dim, k > > >
     
    \n \n

    \n@@ -346,15 +346,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02134.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02134.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::NedelecBasisFactory< dim, SF, CF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexbasis.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexbasis.hh>

    \n
    \n Inheritance diagram for Dune::NedelecBasisFactory< dim, SF, CF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -511,15 +511,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02138.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02138.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::NedelecL2InterpolationFactory< dim, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n \n \n \n \n \n \n@@ -256,15 +256,15 @@\n \n

    \n Public Types

    typedef NedelecL2InterpolationBuilder< dim, Field > Builder
     
    typedef const NedelecL2Interpolation< dim, Field > Object
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02142.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02142.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::LocalCoefficientsContainer Class Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n \n \n \n \n \n \n@@ -256,16 +256,16 @@\n \n

    \n Public Member Functions

    template<class Setter >
     LocalCoefficientsContainer (const Setter &setter)
     
    const LocalKeylocalKey (const unsigned int i) const
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following files:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02146.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02146.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::NedelecCoefficientsFactory< dim > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n \n \n \n \n \n \n@@ -220,15 +220,15 @@\n \n

    \n Public Types

    typedef std::size_t Key
     
    typedef const LocalCoefficientsContainer Object
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02150.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02150.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::NedelecL2InterpolationBuilder< dim, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::NedelecL2InterpolationBuilder< dim, Field >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -768,15 +768,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02170.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02170.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::NedelecL2Interpolation< dimension, F > Class Template Reference
    \n \n
    \n \n

    An L2-based interpolation for Nedelec. \n More...

    \n \n-

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::NedelecL2Interpolation< dimension, F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -491,15 +491,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02174.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02174.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::NedelecVecMatrix< geometryId, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexprebasis.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexprebasis.hh>

    \n \n \n \n \n \n \n@@ -400,15 +400,15 @@\n \n

    \n Public Types

    typedef MultiIndex< dim, Field > MI
     
    typedef MonomialBasis< geometryId, MIMIBasis
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02178.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02178.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::NedelecPreBasisFactory< dim, Field > Struct Template Reference
    \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02182.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02182.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::NedelecPreBasisFactory< dim, Field >::EvaluationBasisFactory< dd, FF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexprebasis.hh>

    \n+

    #include <dune/localfunctions/nedelec/nedelecsimplex/nedelecsimplexprebasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef MonomialBasisProvider< dd, FF > Type
     
    \n

    Member Typedef Documentation

    \n@@ -103,15 +103,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02186.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02186.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::OrthonormalLocalFiniteElement< dimDomain, D, R, SF, CF > Class Template Reference
    \n \n
    \n \n

    A class providing orthonormal basis functions. \n More...

    \n \n-

    #include <dune/localfunctions/orthonormal.hh>

    \n+

    #include <dune/localfunctions/orthonormal.hh>

    \n
    \n Inheritance diagram for Dune::OrthonormalLocalFiniteElement< dimDomain, D, R, SF, CF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -488,15 +488,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02190.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02190.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::OrthonormalBasisFactory< dim, SF, CF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/orthonormal/orthonormalbasis.hh>

    \n+

    #include <dune/localfunctions/orthonormal/orthonormalbasis.hh>

    \n \n \n \n \n

    \n Classes

    struct  EvaluationBasisFactory
     
    \n \n

    \n@@ -376,15 +376,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02194.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02194.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::OrthonormalBasisFactory< dim, SF, CF >::EvaluationBasisFactory< dd, FF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/orthonormal/orthonormalbasis.hh>

    \n+

    #include <dune/localfunctions/orthonormal/orthonormalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef MonomialBasisProvider< dd, FF > Type
     
    \n

    Member Typedef Documentation

    \n@@ -103,15 +103,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02198.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02198.html", "unified_diff": "@@ -77,15 +77,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    ONBCompute::Integral< geometryId > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/orthonormal/orthonormalcompute.hh>

    \n+

    #include <dune/localfunctions/orthonormal/orthonormalcompute.hh>

    \n \n \n \n \n \n \n@@ -299,15 +299,15 @@\n \n

    \n Static Public Member Functions

    template<int dim, class scalar_t >
    static int compute (const Dune::MultiIndex< dim, scalar_t > &alpha, scalar_t &p, scalar_t &q)
     
    template<int dim, class scalar_t , int ... ints>
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02202.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02202.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    ONBCompute::ONBMatrix< geometryId, scalar_t > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/orthonormal/orthonormalcompute.hh>

    \n+

    #include <dune/localfunctions/orthonormal/orthonormalcompute.hh>

    \n
    \n Inheritance diagram for ONBCompute::ONBMatrix< geometryId, scalar_t >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -208,15 +208,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02206.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02206.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RannacherTurekLocalFiniteElement< D, R, d > Struct Template Reference
    \n \n
    \n \n

    Rannacher-Turek shape functions. \n More...

    \n \n-

    #include <dune/localfunctions/rannacherturek/rannacherturek.hh>

    \n+

    #include <dune/localfunctions/rannacherturek/rannacherturek.hh>

    \n \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RannacherTurekLocalBasis< D, R, d >, RannacherTurekLocalCoefficients< d >, RannacherTurekLocalInterpolation< D, R, d > > Traits
     export traits class
     
    \n@@ -283,15 +283,15 @@\n
    \n \n

    return geometry type

    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02210.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02210.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members\n
    Dune::RannacherTurek2DLocalBasis< D, R > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/rannacherturek/rannacherturek2d/rannacherturek2dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/rannacherturek/rannacherturek2d/rannacherturek2dlocalbasis.hh>

    \n
    \n Inheritance diagram for Dune::RannacherTurek2DLocalBasis< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -315,15 +315,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02214.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02214.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members\n
    Dune::RannacherTurek3DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/rannacherturek/rannacherturek3d/rannacherturek3dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/rannacherturek/rannacherturek3d/rannacherturek3dlocalbasis.hh>

    \n
    \n Inheritance diagram for Dune::RannacherTurek3DLocalBasis< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -315,15 +315,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02218.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02218.html", "unified_diff": "@@ -87,15 +87,15 @@\n \n \n \n
    Dtype to represent the field in the domain.
    Rtype to represent the field in the range.
    ddomain dimension
    \n \n \n

    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02222.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02222.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::RannacherTurekLocalBasis< D, R, 2 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/rannacherturek/rannachertureklocalbasis.hh>

    \n+

    #include <dune/localfunctions/rannacherturek/rannachertureklocalbasis.hh>

    \n
    \n Inheritance diagram for Dune::RannacherTurekLocalBasis< D, R, 2 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -323,15 +323,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02226.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02226.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::RannacherTurekLocalBasis< D, R, 3 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/rannacherturek/rannachertureklocalbasis.hh>

    \n+

    #include <dune/localfunctions/rannacherturek/rannachertureklocalbasis.hh>

    \n
    \n Inheritance diagram for Dune::RannacherTurekLocalBasis< D, R, 3 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -323,15 +323,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02230.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02230.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RannacherTurekLocalCoefficients< d > Struct Template Reference
    \n \n
    \n \n

    layout for Rannacher-Turek elements \n More...

    \n \n-

    #include <dune/localfunctions/rannacherturek/rannachertureklocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/rannacherturek/rannachertureklocalcoefficients.hh>

    \n \n \n \n \n \n \n@@ -250,15 +250,15 @@\n
    \n \n

    number of coefficients

    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02234.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02234.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RannacherTurekLocalInterpolation< D, R, d > Class Template Reference
    \n \n

    \n Public Member Functions

     RannacherTurekLocalCoefficients ()
     
     RannacherTurekLocalCoefficients (const RannacherTurekLocalCoefficients &other)
     
    \n \n \n \n \n

    \n Public Member Functions

    template<class F , class C >
    void interpolate (const F &f, std::vector< C > &out) const
     
    \n@@ -140,15 +140,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02238.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02238.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT02DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    Zero order Raviart-Thomas shape functions on triangles. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas02d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas02d.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RT02DLocalBasis< D, R >, RT02DLocalCoefficients, RT02DLocalInterpolation< RT02DLocalBasis< D, R > > > Traits
     
    \n \n

    \n@@ -340,15 +340,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02242.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02242.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas02d/raviartthomas02dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas02d/raviartthomas02dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -345,15 +345,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02246.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02246.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Protected Attributes |\n List of all members \n \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas02d/raviartthomas02dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas02d/raviartthomas02dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RT02DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -226,15 +226,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02250.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02250.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RT02DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas02d/raviartthomas02dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas02d/raviartthomas02dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT02DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -170,15 +170,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02254.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02254.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT03DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    Zero order Raviart-Thomas shape functions on tetrahedra. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas03d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas03d.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RT03DLocalBasis< D, R >, RT03DLocalCoefficients, RT03DLocalInterpolation< RT03DLocalBasis< D, R > > > Traits
     
    \n \n

    \n@@ -340,15 +340,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02258.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02258.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas03d/raviartthomas03dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas03d/raviartthomas03dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
     
    \n \n

    \n@@ -345,15 +345,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02262.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02262.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Protected Attributes |\n List of all members \n \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas03d/raviartthomas03dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas03d/raviartthomas03dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RT03DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -226,15 +226,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02266.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02266.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RT03DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas03d/raviartthomas03dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas03d/raviartthomas03dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT03DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -139,15 +139,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02270.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02270.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT0Cube2DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    Zero order Raviart-Thomas shape functions on rectangles. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube2d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube2d.hh>

    \n
    \n Inheritance diagram for Dune::RT0Cube2DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -341,15 +341,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02274.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02274.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::RT0Cube2DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube2d/raviartthomas0cube2dall.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube2d/raviartthomas0cube2dall.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -347,15 +347,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02278.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02278.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RT0Cube2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube2d/raviartthomas0cube2dall.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube2d/raviartthomas0cube2dall.hh>

    \n
    \n Inheritance diagram for Dune::RT0Cube2DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -177,15 +177,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02282.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02282.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Protected Attributes |\n List of all members \n \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube2d/raviartthomas0cube2dall.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube2d/raviartthomas0cube2dall.hh>

    \n
    \n Inheritance diagram for Dune::RT0Cube2DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -226,15 +226,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02286.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02286.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT0Cube3DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    Zero order Raviart-Thomas shape functions on cubes. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube3d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube3d.hh>

    \n
    \n Inheritance diagram for Dune::RT0Cube3DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -341,15 +341,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02290.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02290.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::RT0Cube3DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube3d/raviartthomas0cube3dall.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube3d/raviartthomas0cube3dall.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
     
    \n \n

    \n@@ -347,15 +347,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02294.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02294.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RT0Cube3DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube3d/raviartthomas0cube3dall.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube3d/raviartthomas0cube3dall.hh>

    \n
    \n Inheritance diagram for Dune::RT0Cube3DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -175,15 +175,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02298.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02298.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Protected Attributes |\n List of all members \n \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube3d/raviartthomas0cube3dall.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0cube3d/raviartthomas0cube3dall.hh>

    \n
    \n Inheritance diagram for Dune::RT0Cube3DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -226,15 +226,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02302.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02302.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT0PrismLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on prisms. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0prism.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0prism.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RT0PrismLocalBasis< D, R >, RT0PrismLocalCoefficients, RT0PrismLocalInterpolation< RT0PrismLocalBasis< D, R > > > Traits
     
    \n \n

    \n@@ -343,15 +343,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02306.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02306.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT0PrismLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference prism. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0prism/raviartthomas0prismlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0prism/raviartthomas0prismlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
     
    \n \n

    \n@@ -372,15 +372,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02310.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02310.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Raviart-Thomas-1 elements on prisms. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0prism/raviartthomas0prismlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0prism/raviartthomas0prismlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RT0PrismLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02314.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02314.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT0PrismLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference prism. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0prism/raviartthomas0prismlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0prism/raviartthomas0prismlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT0PrismLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02318.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02318.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT0PyramidLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on pyramids. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0pyramid.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0pyramid.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RT0PyramidLocalBasis< D, R >, RT0PyramidLocalCoefficients, RT0PyramidLocalInterpolation< RT0PyramidLocalBasis< D, R > > > Traits
     
    \n \n

    \n@@ -343,15 +343,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02322.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02322.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT0PyramidLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference pyramid. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0pyramid/raviartthomas0pyramidlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0pyramid/raviartthomas0pyramidlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
     
    \n \n

    \n@@ -372,15 +372,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02326.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02326.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Raviart-Thomas-1 elements on pyramids. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0pyramid/raviartthomas0pyramidlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0pyramid/raviartthomas0pyramidlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RT0PyramidLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02330.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02330.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT0PyramidLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference hexahedron. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas0pyramid/raviartthomas0pyramidlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas0pyramid/raviartthomas0pyramidlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT0PyramidLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02334.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02334.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT12DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on triangles. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas12d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas12d.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RT12DLocalBasis< D, R >, RT12DLocalCoefficients, RT12DLocalInterpolation< RT12DLocalBasis< D, R > > > Traits
     
    \n \n

    \n@@ -343,15 +343,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02338.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02338.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference triangle. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas12d/raviartthomas12dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas12d/raviartthomas12dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -372,15 +372,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02342.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02342.html", "unified_diff": "@@ -79,15 +79,15 @@\n \n \n
    \n \n

    Layout map for Raviart-Thomas-1 elements on the reference triangle. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas12d/raviartthomas12dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas12d/raviartthomas12dlocalcoefficients.hh>

    \n \n \n \n \n \n \n@@ -180,15 +180,15 @@\n
    \n \n

    number of coefficients

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02346.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02346.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT12DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference quadrilateral. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas12d/raviartthomas12dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas12d/raviartthomas12dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT12DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,15 @@\n

    \n Public Member Functions

     RT12DLocalCoefficients ()
     Standard constructor.
     
    std::size_t size () const
    \n \n \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02350.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02350.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT1Cube2DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube2d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube2d.hh>

    \n
    \n Inheritance diagram for Dune::RT1Cube2DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -353,15 +353,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02354.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02354.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT1Cube2DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference quadrilateral. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube2d/raviartthomas1cube2dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube2d/raviartthomas1cube2dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -372,15 +372,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02358.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02358.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Raviart-Thomas-1 elements on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube2d/raviartthomas1cube2dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube2d/raviartthomas1cube2dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RT1Cube2DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02362.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02362.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT1Cube2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference quadrilateral. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube2d/raviartthomas1cube2dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube2d/raviartthomas1cube2dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT1Cube2DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02366.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02366.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT1Cube3DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on cubes. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube3d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube3d.hh>

    \n
    \n Inheritance diagram for Dune::RT1Cube3DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -353,15 +353,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02370.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02370.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT1Cube3DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference hexahedron. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube3d/raviartthomas1cube3dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube3d/raviartthomas1cube3dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
     
    \n \n

    \n@@ -372,15 +372,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02374.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02374.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Raviart-Thomas-1 elements on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube3d/raviartthomas1cube3dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube3d/raviartthomas1cube3dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RT1Cube3DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02378.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02378.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT1Cube3DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    First order Raviart-Thomas shape functions on the reference hexahedron. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube3d/raviartthomas1cube3dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas1cube3d/raviartthomas1cube3dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT1Cube3DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02382.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02382.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT2Cube2DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    Second order Raviart-Thomas shape functions on cubes. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas2cube2d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas2cube2d.hh>

    \n
    \n Inheritance diagram for Dune::RT2Cube2DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -353,15 +353,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02386.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02386.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT2Cube2DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    Second order Raviart-Thomas shape functions on the reference quadrilateral. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas2cube2d/raviartthomas2cube2dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas2cube2d/raviartthomas2cube2dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -372,15 +372,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02390.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02390.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Raviart-Thomas-2 elements on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas2cube2d/raviartthomas2cube2dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas2cube2d/raviartthomas2cube2dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RT2Cube2DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02394.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02394.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT2Cube2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    Second order Raviart-Thomas shape functions on the reference triangle. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas2cube2d/raviartthomas2cube2dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas2cube2d/raviartthomas2cube2dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT2Cube2DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02398.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02398.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT3Cube2DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    Second order Raviart-Thomas shape functions on cubes. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas3cube2d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas3cube2d.hh>

    \n
    \n Inheritance diagram for Dune::RT3Cube2DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -354,15 +354,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02402.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02402.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT3Cube2DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    Second order Raviart-Thomas shape functions on the reference quadrilateral. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas3cube2d/raviartthomas3cube2dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas3cube2d/raviartthomas3cube2dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -372,15 +372,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02406.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02406.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Raviart-Thomas-3 elements on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas3cube2d/raviartthomas3cube2dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas3cube2d/raviartthomas3cube2dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RT3Cube2DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02410.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02410.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT3Cube2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    Second order Raviart-Thomas shape functions on the reference quadrilateral. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas3cube2d/raviartthomas3cube2dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas3cube2d/raviartthomas3cube2dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT3Cube2DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02414.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02414.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RT4Cube2DLocalFiniteElement< D, R > Class Template Reference
    \n \n
    \n \n

    Second order Raviart-Thomas shape functions on cubes. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas4cube2d.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas4cube2d.hh>

    \n
    \n Inheritance diagram for Dune::RT4Cube2DLocalFiniteElement< D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -354,15 +354,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02418.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02418.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT4Cube2DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    Second order Raviart-Thomas shape functions on the reference quadrilateral. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas4cube2d/raviartthomas4cube2dlocalbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas4cube2d/raviartthomas4cube2dlocalbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
     
    \n \n

    \n@@ -372,15 +372,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02422.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02422.html", "unified_diff": "@@ -80,15 +80,15 @@\n \n \n
    \n \n

    Layout map for Raviart-Thomas-4 elements on quadrilaterals. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas4cube2d/raviartthomas4cube2dlocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas4cube2d/raviartthomas4cube2dlocalcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RT4Cube2DLocalCoefficients:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -227,15 +227,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02426.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02426.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT4Cube2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    Second order Raviart-Thomas shape functions on the reference triangle. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomas4cube2d/raviartthomas4cube2dlocalinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomas4cube2d/raviartthomas4cube2dlocalinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RT4Cube2DLocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02430.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02430.html", "unified_diff": "@@ -89,15 +89,15 @@\n Rtype to represent the field in the range. \n dimdimension of the reference elements, must be 2 or 3. \n orderorder of the element, depending on dim it can be 0, 1, or 2. \n \n \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02434.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02434.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 0 > Class Template Reference
    \n \n
    \n \n

    Raviart-Thomas local finite elements for cubes with dimension 2 and order 0. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 0 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -342,15 +342,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02438.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02438.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 1 > Class Template Reference
    \n \n
    \n \n

    Raviart-Thomas local finite elements for cubes with dimension 2 and order 1. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 1 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -342,15 +342,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02442.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02442.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 2 > Class Template Reference
    \n \n
    \n \n

    Raviart-Thomas local finite elements for cubes with dimension 2 and order 2. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 2 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -342,15 +342,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02446.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02446.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 3 > Class Template Reference
    \n \n
    \n \n

    Raviart-Thomas local finite elements for cubes with dimension 2 and order 3. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 3 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -342,15 +342,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02450.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02450.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 4 > Class Template Reference
    \n \n
    \n \n

    Raviart-Thomas local finite elements for cubes with dimension 2 and order 4. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 4 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -342,15 +342,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02454.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02454.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RaviartThomasCubeLocalFiniteElement< D, R, 3, 0 > Class Template Reference
    \n \n
    \n \n

    Raviart-Thomas local finite elements for cubes with dimension 3 and order 0. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasCubeLocalFiniteElement< D, R, 3, 0 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -342,15 +342,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02458.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02458.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RaviartThomasCubeLocalFiniteElement< D, R, 3, 1 > Class Template Reference
    \n \n
    \n \n

    Raviart-Thomas local finite elements for cubes with dimension 3 and order 1. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomascube.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasCubeLocalFiniteElement< D, R, 3, 1 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -342,15 +342,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02486.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02486.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RaviartThomasSimplexLocalFiniteElement< dimDomain, D, R, SF, CF > Class Template Reference
    \n \n
    \n \n

    Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasSimplexLocalFiniteElement< dimDomain, D, R, SF, CF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -488,15 +488,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02490.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02490.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::RaviartThomasBasisFactory< dim, SF, CF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexbasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexbasis.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasBasisFactory< dim, SF, CF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -500,15 +500,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02494.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02494.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::RaviartThomasL2InterpolationFactory< dim, Field > Struct Template Reference
    \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02498.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02498.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::RaviartThomasCoefficientsFactory< dim > Struct Template Reference
    \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02502.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02502.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::RTL2InterpolationBuilder< dim, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RTL2InterpolationBuilder< dim, Field >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -548,15 +548,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02510.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02510.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RaviartThomasL2Interpolation< dimension, F > Class Template Reference
    \n \n
    \n \n

    An L2-based interpolation for Raviart Thomas. \n More...

    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexinterpolation.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RaviartThomasL2Interpolation< dimension, F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -414,15 +414,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02514.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02514.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::RTVecMatrix< geometryId, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexprebasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexprebasis.hh>

    \n \n \n \n \n \n \n@@ -400,15 +400,15 @@\n \n

    \n Public Types

    typedef MultiIndex< dim, Field > MI
     
    typedef MonomialBasis< geometryId, MIMIBasis
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02518.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02518.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::RTPreBasisFactory< dim, Field > Struct Template Reference
    \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02522.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02522.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RTPreBasisFactory< dim, Field >::EvaluationBasisFactory< dd, FF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexprebasis.hh>

    \n+

    #include <dune/localfunctions/raviartthomas/raviartthomassimplex/raviartthomassimplexprebasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef MonomialBasisProvider< dd, FF > Type
     
    \n

    Member Typedef Documentation

    \n@@ -103,15 +103,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02526.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02526.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RefinedSimplexLocalBasis< D, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>

    \n+

    #include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>

    \n
    \n Inheritance diagram for Dune::RefinedSimplexLocalBasis< D, dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -133,15 +133,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02530.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02530.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RefinedSimplexLocalBasis< D, 1 > Class Template Reference
    \n \n
    \n \n

    Base class for LocalBasis classes based on uniform refinement in 1D; provides numbering and local coordinates of subelements. \n More...

    \n \n-

    #include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>

    \n+

    #include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>

    \n
    \n Inheritance diagram for Dune::RefinedSimplexLocalBasis< D, 1 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -241,15 +241,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02534.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02534.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RefinedSimplexLocalBasis< D, 2 > Class Template Reference
    \n \n
    \n \n

    Base class for LocalBasis classes based on uniform refinement in 2D; provides numbering and local coordinates of subelements. \n More...

    \n \n-

    #include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>

    \n+

    #include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>

    \n
    \n Inheritance diagram for Dune::RefinedSimplexLocalBasis< D, 2 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -246,15 +246,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02538.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02538.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RefinedSimplexLocalBasis< D, 3 > Class Template Reference
    \n \n
    \n \n

    Base class for LocalBasis classes based on uniform refinement in 3D; provides numbering and local coordinates of subelements. \n More...

    \n \n-

    #include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>

    \n+

    #include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>

    \n
    \n Inheritance diagram for Dune::RefinedSimplexLocalBasis< D, 3 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -245,15 +245,15 @@\n \n \n \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02542.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02542.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RefinedP0LocalFiniteElement< D, R, dim > Class Template Reference
    \n \n
    \n \n

    Local finite element that is piecewise P0 on a once uniformly refined reference geometry. \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp0.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0.hh>

    \n \n \n \n \n

    \n Public Types

    typedef P0LocalFiniteElement< D, R, dim >::Traits Traits
     
    \n

    Detailed Description

    \n@@ -107,15 +107,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02546.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02546.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RefinedP0LocalFiniteElement< D, R, 1 > Class Template Reference
    \n \n
    \n \n

    Local finite element that is piecewise P0 on a once uniformly refined reference geometry. \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp0.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 1 >, RefinedP0LocalCoefficients< 1 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > > > Traits
     
    \n

    \n@@ -300,15 +300,15 @@\n

    \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02550.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02550.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RefinedP0LocalFiniteElement< D, R, 2 > Class Template Reference
    \n \n
    \n \n

    Local finite element that is piecewise P0 on a once uniformly refined reference geometry. \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp0.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 2 >, RefinedP0LocalCoefficients< 2 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > > > Traits
     
    \n

    \n@@ -300,15 +300,15 @@\n

    \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02554.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02554.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RefinedP0LocalFiniteElement< D, R, 3 > Class Template Reference
    \n \n
    \n \n

    Local finite element that is piecewise P0 on a once uniformly refined reference geometry. \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp0.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0.hh>

    \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 3 >, RefinedP0LocalCoefficients< 3 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > > > Traits
     
    \n

    \n@@ -300,15 +300,15 @@\n

    \n
    \n
    Todo:
    Please doc me !
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02558.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02558.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RefinedP0LocalBasis< D, R, dim > Class Template Reference
    \n \n
    \n \n

    Uniformly refined constant shape functions on a unit simplex in R^dim. \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp0/refinedp0localbasis.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0/refinedp0localbasis.hh>

    \n
    \n Inheritance diagram for Dune::RefinedP0LocalBasis< D, R, dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -339,15 +339,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02562.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02562.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RefinedP0LocalCoefficients< k > Class Template Reference
    \n \n
    \n \n

    Layout map for RefinedP0 elements. \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp0/refinedp0localcoefficients.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0/refinedp0localcoefficients.hh>

    \n
    \n Inheritance diagram for Dune::RefinedP0LocalCoefficients< k >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -237,15 +237,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02566.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02566.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::RefinedP0LocalInterpolation< LB > Class Template Reference
    \n
    \n
    \n \n-

    #include <dune/localfunctions/refined/refinedp0/refinedp0localinterpolation.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0/refinedp0localinterpolation.hh>

    \n
    \n Inheritance diagram for Dune::RefinedP0LocalInterpolation< LB >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -89,15 +89,15 @@\n \"\"\n \"\"\n \"\"\n \"\"\n \n
    \n
    The documentation for this class was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02570.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02570.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/refined/refinedp0/refinedp0localinterpolation.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0/refinedp0localinterpolation.hh>

    \n \n \n \n \n \n \n@@ -156,15 +156,15 @@\n \n

    \n Public Member Functions

     RefinedP0LocalInterpolation ()
     
    template<typename F , typename C >
    void interpolate (const F &f, std::vector< C > &out) const
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02574.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02574.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/refined/refinedp0/refinedp0localinterpolation.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0/refinedp0localinterpolation.hh>

    \n \n \n \n \n \n \n@@ -156,15 +156,15 @@\n \n

    \n Public Member Functions

     RefinedP0LocalInterpolation ()
     
    template<typename F , typename C >
    void interpolate (const F &f, std::vector< C > &out) const
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02578.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02578.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/refined/refinedp0/refinedp0localinterpolation.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp0/refinedp0localinterpolation.hh>

    \n \n \n \n \n \n \n@@ -156,15 +156,15 @@\n \n

    \n Public Member Functions

     RefinedP0LocalInterpolation ()
     
    template<typename F , typename C >
    void interpolate (const F &f, std::vector< C > &out) const
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02582.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02582.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::RefinedP1LocalFiniteElement< D, R, dim > Class Template Reference
    \n \n
    \n \n

    Piecewise linear continuous Lagrange functions on a uniformly refined simplex element. \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp1.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp1.hh>

    \n \n \n \n \n \n

    \n Public Types

    typedef LocalFiniteElementTraits< RefinedP1LocalBasis< D, R, dim >, Impl::LagrangeSimplexLocalCoefficients< dim, 2 >, Impl::LagrangeSimplexLocalInterpolation< Impl::LagrangeSimplexLocalBasis< D, R, dim, 2 > > > Traits
     Export all types used by this implementation.
     
    \n@@ -320,15 +320,15 @@\n
    \n \n

    The element type that this finite element is defined on.

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02586.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02586.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::RefinedP1LocalBasis< D, R, dim > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh>

    \n
    \n Inheritance diagram for Dune::RefinedP1LocalBasis< D, R, dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -122,15 +122,15 @@\n \n
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02590.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02590.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::RefinedP1LocalBasis< D, R, 1 > Class Template Reference
    \n \n
    \n \n

    Uniformly refined linear Lagrange shape functions in 1D. \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh>

    \n
    \n Inheritance diagram for Dune::RefinedP1LocalBasis< D, R, 1 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -442,15 +442,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02594.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02594.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::RefinedP1LocalBasis< D, R, 2 > Class Template Reference
    \n \n
    \n \n

    Uniformly refined linear Lagrange shape functions on the triangle. \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh>

    \n
    \n Inheritance diagram for Dune::RefinedP1LocalBasis< D, R, 2 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -446,15 +446,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02598.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02598.html", "unified_diff": "@@ -82,15 +82,15 @@\n
    Dune::RefinedP1LocalBasis< D, R, 3 > Class Template Reference
    \n \n
    \n \n

    Uniformly refined linear Lagrange shape functions on the 3D-simplex (tetrahedron). \n More...

    \n \n-

    #include <dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh>

    \n+

    #include <dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh>

    \n
    \n Inheritance diagram for Dune::RefinedP1LocalBasis< D, R, 3 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -445,15 +445,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02602.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02602.html", "unified_diff": "@@ -81,15 +81,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::MonomialEvaluator< B > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/basisevaluator.hh>

    \n+

    #include <dune/localfunctions/utility/basisevaluator.hh>

    \n
    \n Inheritance diagram for Dune::MonomialEvaluator< B >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -485,15 +485,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02606.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02606.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::MonomialEvaluator< B >::BaseIterator< Deriv > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/basisevaluator.hh>

    \n+

    #include <dune/localfunctions/utility/basisevaluator.hh>

    \n \n \n \n \n \n \n@@ -494,15 +494,15 @@\n \n

    \n Public Types

    typedef Deriv Derivatives
     
    typedef Deriv::Field Field
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02610.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02610.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::MonomialEvaluator< B >::Iterator< deriv > Struct Template Reference
    \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02614.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02614.html", "unified_diff": "@@ -81,15 +81,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::StandardEvaluator< B > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/basisevaluator.hh>

    \n+

    #include <dune/localfunctions/utility/basisevaluator.hh>

    \n
    \n Inheritance diagram for Dune::StandardEvaluator< B >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -505,15 +505,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02618.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02618.html", "unified_diff": "@@ -73,27 +73,27 @@\n \n \n
    \n
    Dune::StandardEvaluator< B >::Iterator< deriv > Struct Template Reference
    \n
    \n
    \n \n-

    #include <dune/localfunctions/utility/basisevaluator.hh>

    \n+

    #include <dune/localfunctions/utility/basisevaluator.hh>

    \n
    \n Inheritance diagram for Dune::StandardEvaluator< B >::Iterator< deriv >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n \"\"\n \n
    \n
    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02622.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02622.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::BasisMatrix< PreBasis, Interpolation, Field > Struct Template Reference
    \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02626.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02626.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::BasisMatrixBase< PreBasis, Interpolation, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n+

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n
    \n Inheritance diagram for Dune::BasisMatrixBase< PreBasis, Interpolation, Field >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -231,15 +231,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02630.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02630.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n+

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n
    \n Inheritance diagram for Dune::BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -295,15 +295,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02634.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02634.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n+

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n
    \n Inheritance diagram for Dune::BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -295,15 +295,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02638.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02638.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::BasisMatrix< const PolynomialBasis< Eval, CM, D, R >, Interpolation, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n+

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n
    \n Inheritance diagram for Dune::BasisMatrix< const PolynomialBasis< Eval, CM, D, R >, Interpolation, Field >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -297,15 +297,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02642.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02642.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::BasisMatrix< const PolynomialBasisWithMatrix< Eval, CM >, Interpolation, Field > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n+

    #include <dune/localfunctions/utility/basismatrix.hh>

    \n
    \n Inheritance diagram for Dune::BasisMatrix< const PolynomialBasisWithMatrix< Eval, CM >, Interpolation, Field >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -299,15 +299,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02646.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02646.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::Mult< Field, Field2 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/coeffmatrix.hh>

    \n+

    #include <dune/localfunctions/utility/coeffmatrix.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Field2 BasisEntry
     
    \n \n

    \n@@ -152,15 +152,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02650.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02650.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::Mult< Field, FieldVector< Field2, dimRange > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/coeffmatrix.hh>

    \n+

    #include <dune/localfunctions/utility/coeffmatrix.hh>

    \n \n \n \n \n

    \n Public Types

    typedef FieldVector< Field2, dimRange > BasisEntry
     
    \n \n

    \n@@ -152,15 +152,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02654.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02654.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::SparseCoeffMatrix< F, bSize > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/coeffmatrix.hh>

    \n+

    #include <dune/localfunctions/utility/coeffmatrix.hh>

    \n
    \n Inheritance diagram for Dune::SparseCoeffMatrix< F, bSize >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -509,15 +509,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02658.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02658.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Identity Struct Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/defaultbasisfactory.hh>

    \n+

    #include <dune/localfunctions/utility/defaultbasisfactory.hh>

    \n \n \n \n \n \n

    \n Static Public Member Functions

    template<class T >
    static T apply (const T &t)
     
    \n@@ -114,15 +114,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02662.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02662.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::DefaultBasisFactory< PreBFactory, InterpolFactory, dim, dimR, SF, CF, PreBasisKeyExtractor > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/defaultbasisfactory.hh>

    \n+

    #include <dune/localfunctions/utility/defaultbasisfactory.hh>

    \n
    \n Inheritance diagram for Dune::DefaultBasisFactory< PreBFactory, InterpolFactory, dim, dimR, SF, CF, PreBasisKeyExtractor >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -453,15 +453,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02666.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02666.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DefaultBasisFactory< PreBFactory, InterpolFactory, dim, dimR, SF, CF, PreBasisKeyExtractor >::EvaluationBasisFactory< dd, FF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/defaultbasisfactory.hh>

    \n+

    #include <dune/localfunctions/utility/defaultbasisfactory.hh>

    \n \n \n \n \n

    \n Public Types

    typedef PreBasisFactory::template EvaluationBasisFactory< dd, FF >::Type Type
     
    \n

    Member Typedef Documentation

    \n@@ -103,15 +103,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02670.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02670.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::DGLocalCoefficients Class Reference
    \n \n
    \n \n

    A class providing local coefficients for dg spaces. \n More...

    \n \n-

    #include <dune/localfunctions/utility/dglocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/utility/dglocalcoefficients.hh>

    \n \n \n \n \n \n \n@@ -175,15 +175,15 @@\n \n

    \n Public Member Functions

     DGLocalCoefficients (const unsigned int n)
     construct local keys for n basis functions
     
    const LocalKeylocalKey (const unsigned int i) const
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02674.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02674.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::DGLocalCoefficientsFactory< BasisFactory > Struct Template Reference
    \n \n
    \n \n

    A factory class for the dg local coefficients. \n More...

    \n \n-

    #include <dune/localfunctions/utility/dglocalcoefficients.hh>

    \n+

    #include <dune/localfunctions/utility/dglocalcoefficients.hh>

    \n \n \n \n \n \n \n@@ -224,15 +224,15 @@\n \n

    \n Public Types

    typedef BasisFactory::Key Key
     
    typedef const DGLocalCoefficients Object
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02678.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02678.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::Unity< Field > Struct Template Reference
    \n \n
    \n \n

    A class representing the unit of a given Field. \n More...

    \n \n-

    #include <dune/localfunctions/utility/field.hh>

    \n+

    #include <dune/localfunctions/utility/field.hh>

    \n \n \n \n \n

    \n Public Member Functions

     operator Field () const
     
    \n

    Detailed Description

    \n@@ -119,15 +119,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02682.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02682.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::Zero< Field > Struct Template Reference
    \n \n
    \n \n

    A class representing the zero of a given Field. \n More...

    \n \n-

    #include <dune/localfunctions/utility/field.hh>

    \n+

    #include <dune/localfunctions/utility/field.hh>

    \n \n \n \n \n

    \n Public Member Functions

     operator Field () const
     
    \n \n

    \n@@ -152,15 +152,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02686.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02686.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::FieldCast< F2, V > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/field.hh>

    \n+

    #include <dune/localfunctions/utility/field.hh>

    \n \n \n \n \n

    \n Public Types

    typedef F2 type
     
    \n

    Member Typedef Documentation

    \n@@ -101,15 +101,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02690.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02690.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::FieldCast< F2, Dune::FieldVector< F1, dim > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/field.hh>

    \n+

    #include <dune/localfunctions/utility/field.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Dune::FieldVector< F2, dim > type
     
    \n

    Member Typedef Documentation

    \n@@ -101,15 +101,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02694.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02694.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::FieldCast< F2, Dune::FieldMatrix< F1, dim1, dim2 > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/field.hh>

    \n+

    #include <dune/localfunctions/utility/field.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Dune::FieldMatrix< F2, dim1, dim2 > type
     
    \n

    Member Typedef Documentation

    \n@@ -101,15 +101,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02698.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02698.html", "unified_diff": "@@ -73,15 +73,15 @@\n \n \n
    \n
    Dune::Precision< Field > Struct Template Reference
    \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02702.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02702.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Precision< double > Struct Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/field.hh>

    \n+

    #include <dune/localfunctions/utility/field.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const unsigned int value = 64
     
    \n

    Member Data Documentation

    \n@@ -107,15 +107,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02706.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02706.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Precision< long double > Struct Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/field.hh>

    \n+

    #include <dune/localfunctions/utility/field.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const unsigned int value = 80
     
    \n

    Member Data Documentation

    \n@@ -107,15 +107,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02710.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02710.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::Precision< float > Struct Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/field.hh>

    \n+

    #include <dune/localfunctions/utility/field.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const unsigned int value = 32
     
    \n

    Member Data Documentation

    \n@@ -107,15 +107,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02714.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02714.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::ComputeField< Field, sum > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/field.hh>

    \n+

    #include <dune/localfunctions/utility/field.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Field Type
     
    \n

    Member Typedef Documentation

    \n@@ -101,15 +101,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02718.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02718.html", "unified_diff": "@@ -75,15 +75,15 @@\n
    \n \n
    Dune::InterpolationHelper< F, dimension > Struct Template Reference
    \n
    \n
    \n \n-

    #include <dune/localfunctions/utility/interpolationhelper.hh>

    \n+

    #include <dune/localfunctions/utility/interpolationhelper.hh>

    \n
    \n Inheritance diagram for Dune::InterpolationHelper< F, dimension >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -99,15 +99,15 @@\n  \n struct  Helper< Basis, Matrix, false >\n  \n struct  Helper< Func, Vector, true >\n  \n \n
    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02722.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02722.html", "unified_diff": "@@ -73,15 +73,15 @@\n
    \n \n
    \n
    Dune::InterpolationHelper< F, dimension >::Helper< Func, Container, type > Struct Template Reference
    \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02726.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02726.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Public Attributes |\n List of all members \n
    Dune::InterpolationHelper< F, dimension >::Helper< Func, Vector, true > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/interpolationhelper.hh>

    \n+

    #include <dune/localfunctions/utility/interpolationhelper.hh>

    \n \n \n \n \n

    \n Public Types

    typedef std::vector< Dune::FieldVector< F, d > > Result
     
    \n \n

    \n@@ -434,15 +434,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02730.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02730.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Public Attributes |\n List of all members \n
    Dune::InterpolationHelper< F, dimension >::Helper< Basis, Matrix, false > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/interpolationhelper.hh>

    \n+

    #include <dune/localfunctions/utility/interpolationhelper.hh>

    \n \n \n \n \n

    \n Public Types

    typedef std::vector< Dune::FieldVector< F, d > > Result
     
    \n \n

    \n@@ -476,15 +476,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02734.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02734.html", "unified_diff": "@@ -83,15 +83,15 @@\n
    template<class B, class Q, bool onb>
    \n struct Dune::LocalL2Interpolation< B, Q, onb >

    A local L2 interpolation taking a test basis and a quadrature rule.

    \n

    This class computes a local interpolation where the coefficients are of the form: c = M^{-1}b

      \n
    • M is the mass matrix with respect to the given basis and
    • \n
    • b = int f phi (where phi are the basis functions). Thus the resulting local function u=c.varphi is defined through the l2 interpolation int u phi = in f phi for all phi in the base function set. The third template argument can be used to specify that the mass matrix is the unit matrix (onb=true).
    • \n
    \n

    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02738.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02738.html", "unified_diff": "@@ -80,15 +80,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::LocalL2InterpolationBase< B, Q > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/l2interpolation.hh>

    \n+

    #include <dune/localfunctions/utility/l2interpolation.hh>

    \n
    \n Inheritance diagram for Dune::LocalL2InterpolationBase< B, Q >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -372,15 +372,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02742.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02742.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Attributes |\n List of all members \n
    Dune::LocalL2Interpolation< B, Q, true > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/l2interpolation.hh>

    \n+

    #include <dune/localfunctions/utility/l2interpolation.hh>

    \n
    \n Inheritance diagram for Dune::LocalL2Interpolation< B, Q, true >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -343,15 +343,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02746.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02746.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Attributes |\n List of all members \n
    Dune::LocalL2Interpolation< B, Q, false > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/l2interpolation.hh>

    \n+

    #include <dune/localfunctions/utility/l2interpolation.hh>

    \n
    \n Inheritance diagram for Dune::LocalL2Interpolation< B, Q, false >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -340,15 +340,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02750.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02750.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::LocalL2InterpolationFactory< BasisFactory, onb > Struct Template Reference
    \n \n
    \n \n

    A factory class for the local l2 interpolations taking a basis factory. \n More...

    \n \n-

    #include <dune/localfunctions/utility/l2interpolation.hh>

    \n+

    #include <dune/localfunctions/utility/l2interpolation.hh>

    \n \n \n \n \n \n \n@@ -314,15 +314,15 @@\n \n

    \n Public Types

    typedef BasisFactory::Key Key
     
    typedef BasisFactory::Object Basis
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02754.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02754.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::LFEMatrix< F > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/lfematrix.hh>

    \n+

    #include <dune/localfunctions/utility/lfematrix.hh>

    \n \n \n \n \n

    \n Public Types

    typedef F Field
     
    \n \n

    \n@@ -474,15 +474,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02774.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02774.html", "unified_diff": "@@ -78,15 +78,15 @@\n Static Public Member Functions |\n Public Attributes |\n List of all members \n
    Dune::MonomialBasisSize< geometryId > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n \n \n \n \n \n \n@@ -339,15 +339,15 @@\n \n

    \n Public Member Functions

     MonomialBasisSize ()
     
     ~MonomialBasisSize ()
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02778.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02778.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::MonomialBasis< geometryId, F > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n
    \n Inheritance diagram for Dune::MonomialBasis< geometryId, F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -837,15 +837,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02782.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02782.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::MonomialBasisHelper< mydim, dim, F > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n \n \n \n \n \n \n@@ -182,15 +182,15 @@\n \n

    \n Public Types

    typedef MonomialBasisSize< GeometryTypes::simplex(mydim).toId() > MySize
     
    typedef MonomialBasisSize< GeometryTypes::simplex(dim).toId() > Size
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02786.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02786.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Attributes |\n List of all members \n
    Dune::MonomialBasisImpl< geometryId, F > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n
    \n Inheritance diagram for Dune::MonomialBasisImpl< geometryId, F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -201,15 +201,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02790.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02790.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::StandardMonomialBasis< dim, F > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n
    \n Inheritance diagram for Dune::StandardMonomialBasis< dim, F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -829,15 +829,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02794.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02794.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::StandardBiMonomialBasis< dim, F > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n
    \n Inheritance diagram for Dune::StandardBiMonomialBasis< dim, F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -829,15 +829,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02798.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02798.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Attributes |\n List of all members \n
    Dune::VirtualMonomialBasis< dim, F > Class Template Referenceabstract
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n
    \n Inheritance diagram for Dune::VirtualMonomialBasis< dim, F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -887,15 +887,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02802.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02802.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Attributes |\n List of all members \n
    Dune::VirtualMonomialBasisImpl< geometryId, F > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n
    \n Inheritance diagram for Dune::VirtualMonomialBasisImpl< geometryId, F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -706,15 +706,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02806.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02806.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::MonomialBasisFactory< dim, F > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n \n \n \n \n

    \n Classes

    struct  EvaluationBasisFactory
     
    \n \n

    \n@@ -242,15 +242,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02810.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02810.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::MonomialBasisFactory< dim, F >::EvaluationBasisFactory< dd, FF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef MonomialBasisFactory< dd, FF > Type
     
    \n

    Member Typedef Documentation

    \n@@ -103,15 +103,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02814.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02814.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Types |\n Static Public Attributes |\n List of all members \n
    Dune::MonomialBasisProvider< dim, SF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n
    \n Inheritance diagram for Dune::MonomialBasisProvider< dim, SF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -148,15 +148,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02818.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02818.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::MonomialBasisProvider< dim, SF >::EvaluationBasisFactory< dd, FF > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/monomialbasis.hh>

    \n \n \n \n \n

    \n Public Types

    typedef MonomialBasisProvider< dd, FF > Type
     
    \n

    Member Typedef Documentation

    \n@@ -103,15 +103,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02822.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02822.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Member Functions |\n Static Public Attributes |\n List of all members \n
    Dune::MultiIndex< dim, Field > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/multiindex.hh>

    \n+

    #include <dune/localfunctions/utility/multiindex.hh>

    \n \n \n \n \n \n \n@@ -1018,15 +1018,15 @@\n \n

    \n Public Member Functions

     MultiIndex ()
     
    template<class F >
     MultiIndex (const F &f)
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02826.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02826.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::FieldTraits< MultiIndex< dim, Field > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/multiindex.hh>

    \n+

    #include <dune/localfunctions/utility/multiindex.hh>

    \n \n \n \n \n \n \n@@ -119,15 +119,15 @@\n \n

    \n Public Types

    using field_type = Field
     
    using real_type = typename FieldTraits< field_type >::real_type
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02830.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02830.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::Unity< MultiIndex< dim, F > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/multiindex.hh>

    \n+

    #include <dune/localfunctions/utility/multiindex.hh>

    \n \n \n \n \n

    \n Public Types

    typedef MultiIndex< dim, F > Field
     
    \n \n

    \n@@ -195,15 +195,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02834.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02834.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Public Member Functions |\n List of all members \n
    Dune::Zero< MultiIndex< dim, F > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/multiindex.hh>

    \n+

    #include <dune/localfunctions/utility/multiindex.hh>

    \n \n \n \n \n

    \n Public Types

    typedef MultiIndex< dim, F > Field
     
    \n \n

    \n@@ -135,15 +135,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02838.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02838.html", "unified_diff": "@@ -81,15 +81,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::PolynomialBasis< Eval, CM, D, R > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/polynomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/polynomialbasis.hh>

    \n
    \n Inheritance diagram for Dune::PolynomialBasis< Eval, CM, D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1393,15 +1393,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02842.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02842.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::PolynomialBasis< Eval, CM, D, R >::Convert< dummy, DVector > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/polynomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/polynomialbasis.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static DomainVector apply (const DVector &x)
     
    \n

    Member Function Documentation

    \n@@ -115,15 +115,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02846.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02846.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::PolynomialBasis< Eval, CM, D, R >::Convert< dummy, DomainVector > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/polynomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/polynomialbasis.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static const DomainVectorapply (const DomainVector &x)
     
    \n

    Member Function Documentation

    \n@@ -115,15 +115,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02850.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02850.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Attributes |\n List of all members \n
    Dune::PolynomialBasisWithMatrix< Eval, CM, D, R > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/polynomialbasis.hh>

    \n+

    #include <dune/localfunctions/utility/polynomialbasis.hh>

    \n
    \n Inheritance diagram for Dune::PolynomialBasisWithMatrix< Eval, CM, D, R >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1385,15 +1385,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02854.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02854.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::LFETensor< F, dimD, deriv > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -461,15 +461,15 @@\n \n

    \n Public Types

    typedef F field_type
     
    typedef Dune::FieldVector< F, sizeBlock
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02858.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02858.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::FieldTraits< LFETensor< F, dimD, deriv > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -119,15 +119,15 @@\n \n

    \n Public Types

    using field_type = F
     
    using real_type = typename FieldTraits< field_type >::real_type
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02862.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02862.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::LFETensor< F, 0, deriv > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int size = 0
     
    \n

    Member Data Documentation

    \n@@ -109,15 +109,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02866.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02866.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::LFETensor< F, 0, 0 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n

    \n Static Public Attributes

    static const int size = 1
     
    \n

    Member Data Documentation

    \n@@ -109,15 +109,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02870.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02870.html", "unified_diff": "@@ -79,15 +79,15 @@\n Public Attributes |\n Static Public Attributes |\n List of all members \n
    Dune::LFETensor< F, dimD, 0 > Class Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -461,15 +461,15 @@\n \n

    \n Public Types

    typedef F field_type
     
    typedef Dune::FieldVector< F, sizeBlock
     
    \n
    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02874.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02874.html", "unified_diff": "@@ -85,15 +85,15 @@\n \"\"\n \"\"\n \"\"\n \"\"\n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02878.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02878.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::FieldTraits< Derivatives< F, dimD, dimR, deriv, layout > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -119,15 +119,15 @@\n \n

    \n Public Types

    using field_type = F
     
    using real_type = typename FieldTraits< field_type >::real_type
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02882.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02882.html", "unified_diff": "@@ -80,15 +80,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n
    \n Inheritance diagram for Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -1230,15 +1230,15 @@\n \n \n
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02886.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02886.html", "unified_diff": "@@ -80,15 +80,15 @@\n Protected Member Functions |\n Protected Attributes |\n List of all members \n
    Dune::Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -1101,15 +1101,15 @@\n \n

    \n Public Types

    typedef Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::valueThis
     
    typedef LFETensor< F, dimD, 0 > ThisLFETensor
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02890.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02890.html", "unified_diff": "@@ -79,15 +79,15 @@\n Static Public Attributes |\n Protected Attributes |\n List of all members \n
    Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -680,15 +680,15 @@\n \n

    \n Public Types

    typedef Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivativeThis
     
    typedef Derivatives< F, dimD, 1, deriv, DerivativeLayoutNS::valueScalarDeriv
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02894.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02894.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::LFETensorAxpy< Vec1, Vec2, deriv > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n

    \n Static Public Member Functions

    template<class Field >
    static void apply (unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
     
    \n@@ -138,15 +138,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02898.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02898.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::LFETensorAxpy< Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value >, Vec2, deriv > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::valueVec1
     
    \n \n

    \n@@ -161,15 +161,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02902.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02902.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::LFETensorAxpy< Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative >, Vec2, deriv > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivativeVec1
     
    \n \n

    \n@@ -161,15 +161,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02906.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02906.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::LFETensorAxpy< Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivative >, Vec2, deriv > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::derivativeVec1
     
    \n \n

    \n@@ -161,15 +161,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02910.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02910.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::LFETensorAxpy< Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value >, Vec2, deriv > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::valueVec1
     
    \n \n

    \n@@ -161,15 +161,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02914.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02914.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::DerivativeAssign< Vec1, Vec2 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n

    \n Static Public Member Functions

    static void apply (unsigned int r, const Vec1 &vec1, Vec2 &vec2)
     
    \n

    Member Function Documentation

    \n@@ -129,15 +129,15 @@\n \n \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02918.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02918.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, layout >, Derivatives< F2, dimD, dimR, deriv, layout > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, dimR, deriv, layout > Vec1
     
    typedef Derivatives< F2, dimD, dimR, deriv, layout > Vec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02922.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02922.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::valueVec1
     
    typedef Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivativeVec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02926.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02926.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivativeVec1
     
    typedef Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::valueVec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02930.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02930.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, layout >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, layout > Vec1
     
    typedef Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::valueVec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02934.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02934.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, layout >, Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, layout > Vec1
     
    typedef Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivativeVec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02938.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02938.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::valueVec1
     
    typedef Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::valueVec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02942.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02942.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivativeVec1
     
    typedef Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivativeVec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02946.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02946.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::value > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivativeVec1
     
    typedef Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::valueVec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02950.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02950.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivative > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::valueVec1
     
    typedef Derivatives< F2, dimD, 1, deriv, DerivativeLayoutNS::derivativeVec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02954.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02954.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, layout >, F2 > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, layout > Vec1
     
    typedef F2 Vec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02958.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02958.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value >, FieldVector< F2, dimR > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::valueVec1
     
    typedef FieldVector< F2, dimR > Vec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02962.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02962.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, dimR > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivativeVec1
     
    typedef FieldVector< F2, dimR > Vec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02966.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02966.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, FieldVector< F2, dimR > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::valueVec1
     
    typedef FieldVector< F2, dimR > Vec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02970.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02970.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, dimR > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivativeVec1
     
    typedef FieldVector< F2, dimR > Vec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02974.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02974.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value >, FieldVector< F2, 1 > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::valueVec1
     
    typedef FieldVector< F2, 1 > Vec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02978.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02978.html", "unified_diff": "@@ -77,15 +77,15 @@\n Public Types |\n Static Public Member Functions |\n List of all members \n
    Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, 1 > > Struct Template Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/utility/tensor.hh>

    \n+

    #include <dune/localfunctions/utility/tensor.hh>

    \n \n \n \n \n \n \n@@ -170,15 +170,15 @@\n \n

    \n Public Types

    typedef Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivativeVec1
     
    typedef FieldVector< F2, 1 > Vec2
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02982.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02982.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::EdgeS0_5FiniteElement< Geometry, RF > Class Template Reference
    \n \n
    \n \n

    FiniteElement for lowest order edge elements on simplices. \n More...

    \n \n-

    #include <dune/localfunctions/whitney/edges0.5.hh>

    \n+

    #include <dune/localfunctions/whitney/edges0.5.hh>

    \n \n \n \n \n

    \n Classes

    struct  Traits
     
    \n \n

    \n@@ -296,15 +296,15 @@\n
    \n \n

    return geometry type of this element

    \n \n
    \n \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02986.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02986.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::EdgeS0_5FiniteElement< Geometry, RF >::Traits Struct Reference
    \n \n
    \n \n-

    #include <dune/localfunctions/whitney/edges0.5.hh>

    \n+

    #include <dune/localfunctions/whitney/edges0.5.hh>

    \n
    \n Inheritance diagram for Dune::EdgeS0_5FiniteElement< Geometry, RF >::Traits:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -147,15 +147,15 @@\n

    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02990.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02990.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::EdgeS0_5FiniteElementFactory< Geometry, RF > Struct Template Reference
    \n \n
    \n \n

    Factory for EdgeS0_5FiniteElement objects. \n More...

    \n \n-

    #include <dune/localfunctions/whitney/edges0.5.hh>

    \n+

    #include <dune/localfunctions/whitney/edges0.5.hh>

    \n
    \n Inheritance diagram for Dune::EdgeS0_5FiniteElementFactory< Geometry, RF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -401,15 +401,15 @@\n
    \n \n

    create a finite element from a vertex ordering

    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02994.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02994.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::EdgeS0_5Basis< Geometry, RF > Class Template Reference
    \n \n
    \n \n

    Basis for order 0.5 (lowest order) edge elements on simplices. \n More...

    \n \n-

    #include <dune/localfunctions/whitney/edges0.5/basis.hh>

    \n+

    #include <dune/localfunctions/whitney/edges0.5/basis.hh>

    \n
    \n Inheritance diagram for Dune::EdgeS0_5Basis< Geometry, RF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -368,15 +368,15 @@\n
    \n \n

    number of shape functions

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02998.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02998.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::EdgeS0_5Basis< Geometry, RF >::Traits Struct Reference
    \n \n
    \n \n

    export type traits for function signature \n More...

    \n \n-

    #include <dune/localfunctions/whitney/edges0.5/basis.hh>

    \n+

    #include <dune/localfunctions/whitney/edges0.5/basis.hh>

    \n \n \n \n \n \n \n@@ -280,15 +280,15 @@\n \n

    \n Public Types

    typedef Geometry::ctype DomainField
     
    typedef FieldVector< DomainField, dimDomainLocalDomainLocal
     
    \n
    \n \n
    \n \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a03002.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a03002.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::EdgeS0_5Coefficients< dim > Class Template Reference
    \n \n
    \n \n

    Coefficients for lowest order edge elements on simplices. \n More...

    \n \n-

    #include <dune/localfunctions/whitney/edges0.5/coefficients.hh>

    \n+

    #include <dune/localfunctions/whitney/edges0.5/coefficients.hh>

    \n
    \n Inheritance diagram for Dune::EdgeS0_5Coefficients< dim >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -205,15 +205,15 @@\n
    \n \n

    number of coefficients

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a03006.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a03006.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::EdgeS0_5Common< dim, DF > Struct Template Reference
    \n \n
    \n \n

    Common base class for edge elements. \n More...

    \n \n-

    #include <dune/localfunctions/whitney/edges0.5/common.hh>

    \n+

    #include <dune/localfunctions/whitney/edges0.5/common.hh>

    \n
    \n Inheritance diagram for Dune::EdgeS0_5Common< dim, DF >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -181,15 +181,15 @@\n \n

    The number of base functions.

    \n
    Note
    This is not a compile time constant, since the number of edges is extracted from the reference element.
    \n \n
    \n
    \n
    The documentation for this struct was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a03010.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a03010.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::EdgeS0_5Interpolation< Geometry, Traits_ > Class Template Reference
    \n \n
    \n \n

    Interpolation for lowest order edge elements on simplices. \n More...

    \n \n-

    #include <dune/localfunctions/whitney/edges0.5/interpolation.hh>

    \n+

    #include <dune/localfunctions/whitney/edges0.5/interpolation.hh>

    \n
    \n Inheritance diagram for Dune::EdgeS0_5Interpolation< Geometry, Traits_ >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -233,15 +233,15 @@\n
    \n \n

    Interpolation of a function.

    \n \n
    \n
    \n
    The documentation for this class was generated from the following file:\n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04547.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04547.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localinterpolation.hh File Reference\n+dune-localfunctions: localcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -72,34 +72,30 @@\n
  • dune
  • localfunctions
  • brezzidouglasfortinmarini
  • cube
  • \n \n \n
    \n \n-
    localinterpolation.hh File Reference
    \n+
    localcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <array>
    \n-#include <bitset>
    \n+
    #include <cstddef>
    \n #include <vector>
    \n-#include <limits>
    \n-#include <dune/common/fvector.hh>
    \n #include <dune/common/math.hh>
    \n #include <dune/common/rangeutilities.hh>
    \n #include <dune/common/typetraits.hh>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::BDFMCubeLocalInterpolation< D, R, dim, order >
     Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes. More...
    class  Dune::BDFMCubeLocalCoefficients< D, R, dim, order >
     Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,29 +3,24 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n * _\bc_\bu_\bb_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-localinterpolation.hh File Reference\n-#include \n-#include \n-#include \n+localcoefficients.hh File Reference\n+#include \n #include \n-#include \n-#include \n #include \n #include \n #include \n-#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b _\b>\n-\u00a0 Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on\n- cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b _\b>\n+\u00a0 Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04547_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04547_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localinterpolation.hh Source File\n+dune-localfunctions: localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -74,246 +74,98 @@\n \n \n
    \n
    \n-
    brezzidouglasfortinmarini/cube/localinterpolation.hh
    \n+
    brezzidouglasfortinmarini/cube/localcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// SPDX-FileCopyrightText: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    3#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH
    \n-
    4#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH
    \n+
    3#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH
    \n+
    4#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH
    \n
    5
    \n-
    6#include <algorithm>
    \n-
    7#include <array>
    \n-
    8#include <bitset>
    \n-
    9#include <vector>
    \n-
    10#include <limits>
    \n-
    11
    \n-
    12#include <dune/common/fvector.hh>
    \n-
    13#include <dune/common/math.hh>
    \n-
    14#include <dune/common/rangeutilities.hh>
    \n-
    15#include <dune/common/typetraits.hh>
    \n-
    16
    \n-
    17#include <dune/geometry/quadraturerules.hh>
    \n-
    18
    \n-
    19
    \n-
    20namespace Dune
    \n-
    21{
    \n-
    22
    \n-
    34 template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    \n-\n-
    36 {
    \n-
    37 using DomainType = FieldVector<D, dim>;
    \n-
    38 using FaceDomainType = FieldVector<D, dim-1>;
    \n-
    39 using RangeType = FieldVector<R, dim>;
    \n-
    40 using DomainFieldType = D;
    \n-
    41 using RangeFieldType = R;
    \n-
    42
    \n-
    43 static constexpr std::size_t numFaces = 2*dim;
    \n-
    44
    \n-
    45 static constexpr unsigned int interiorDofs = dim*binomial(dim+order-2, order-2);
    \n-
    46 static constexpr unsigned int faceDofs = binomial(dim+order-2, order-1);
    \n+
    6#include <cstddef>
    \n+
    7#include <vector>
    \n+
    8
    \n+
    9#include <dune/common/math.hh>
    \n+
    10#include <dune/common/rangeutilities.hh>
    \n+
    11#include <dune/common/typetraits.hh>
    \n+
    12
    \n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17
    \n+
    31 template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    \n+\n+
    33 {
    \n+
    34 static constexpr unsigned int interiorDofs = dim*binomial(dim+order-2, order-2);
    \n+
    35 static constexpr unsigned int faceDofs = binomial(dim+order-2, order-1);
    \n+
    36
    \n+
    37 static constexpr std::size_t numFaces = 2*dim;
    \n+
    38 static constexpr std::size_t numDofs = numFaces*faceDofs + interiorDofs;
    \n+
    39
    \n+
    40 public:
    \n+
    \n+\n+
    43 {
    \n+
    44 for (auto j : range(numFaces))
    \n+
    45 for (auto i : range(faceDofs))
    \n+
    46 li[j*faceDofs + i] = LocalKey(j, 1, i);
    \n
    47
    \n-
    54 inline static auto legendre( unsigned int i, const DomainFieldType& x )
    \n-
    55 -> RangeFieldType
    \n-
    56 {
    \n-
    57 switch( i )
    \n-
    58 {
    \n-
    59 case 0:
    \n-
    60 return 1;
    \n-
    61 case 1:
    \n-
    62 return 2*x-1;
    \n-
    63 case 2:
    \n-
    64 return 6*x*x-6*x+1;
    \n-
    65 case 3:
    \n-
    66 return 20*x*x*x-30*x*x+12*x-1;
    \n-
    67 default:
    \n-
    68 return ((2*i-1)*(2*x-1)*legendre(x,i-1) - (i-1)*legendre(x,i-2)) / i;
    \n-
    69 }
    \n-
    70 }
    \n-
    71
    \n-
    81 template<std::size_t d, std::size_t kMax = std::numeric_limits<std::size_t>::max()>
    \n-
    82 constexpr inline static auto unrank (std::size_t i)
    \n-
    83 -> std::array<std::size_t, d>
    \n-
    84 {
    \n-
    85 assert( i < binomial(d+kMax, kMax));
    \n-
    86
    \n-
    87 std::array<std::size_t, d> mi{};
    \n-
    88 if (i == 0)
    \n-
    89 return mi;
    \n-
    90
    \n-
    91 std::size_t k = 0, b = 1;
    \n-
    92 for(;k <= kMax && b <= i; ++k, b = binomial(d+k-1, k))
    \n-
    93 i -= b;
    \n-
    94
    \n-
    95 std::size_t p = 0;
    \n-
    96 for(; p < d && i > 0; ++p)
    \n-
    97 {
    \n-
    98 std::size_t m = 0, c = 1;
    \n-
    99 for(; m <= k && c <= i; ++m, c = binomial(d-p+m-2, m))
    \n-
    100 i -= c;
    \n-
    101
    \n-
    102 mi[p] = k-m;
    \n-
    103 k = m;
    \n-
    104 }
    \n-
    105 mi[p] = k;
    \n-
    106
    \n-
    107 return mi;
    \n-
    108 }
    \n-
    109
    \n-
    116 inline static auto embed (unsigned int face, const FaceDomainType& x )
    \n-
    117 -> DomainType
    \n-
    118 {
    \n-
    119 DomainType y;
    \n-
    120
    \n-
    121 std::size_t j = 0;
    \n-
    122 for (auto i : range(dim))
    \n-
    123 if (i == face/2)
    \n-
    124 y[i] = face%2;
    \n-
    125 else
    \n-
    126 y[i] = x[j++];
    \n-
    127
    \n-
    128 return y;
    \n-
    129 }
    \n-
    130
    \n-
    131 public:
    \n-
    \n-\n-
    134 {
    \n-
    135 std::fill(sign_.begin(), sign_.end(), 1.0);
    \n-
    136 }
    \n-
    \n-
    137
    \n-
    \n-
    143 BDFMCubeLocalInterpolation (std::bitset<numFaces> s)
    \n-
    144 {
    \n-
    145 for (auto i : range(numFaces))
    \n-
    146 {
    \n-
    147 sign_[i] = s[i] ? -1 : 1;
    \n-
    148 normal_[i][i/2] = i%2 ? 1 : -1;
    \n-
    149 }
    \n-
    150 }
    \n-
    \n-
    151
    \n-
    161 template<class F, class C>
    \n-
    \n-
    162 void interpolate (const F& f, C& out) const
    \n-
    163 {
    \n-
    164 out.resize(numFaces*faceDofs + interiorDofs);
    \n-
    165 std::fill(out.begin(),out.end(), 0.0);
    \n-
    166
    \n-
    167 for(auto i : range(numFaces))
    \n-
    168 trace(i, f, out);
    \n-
    169
    \n-
    170 interior(f, out);
    \n-
    171 }
    \n-
    \n-
    172
    \n-
    184 template<class F, class C>
    \n-
    \n-
    185 void trace (unsigned int face, const F& f, C& out) const
    \n-
    186 {
    \n-
    187 assert(out.size() >= numFaces*faceDofs + interiorDofs);
    \n-
    188 assert(face < numFaces);
    \n-
    189
    \n-
    190 const auto o = face*faceDofs;
    \n-
    191 const auto& n = normal_[face];
    \n-
    192 const auto& s = sign_[face];
    \n-
    193 const auto& c = n[face/2];
    \n-
    194
    \n-
    195 const auto& rule = QuadratureRules<DomainFieldType, dim-1>::rule(GeometryTypes::cube(dim-1), order+(order-1)+5);
    \n-
    196 for (const auto& qp : rule)
    \n-
    197 {
    \n-
    198 const auto& x = qp.position();
    \n-
    199 auto y = f(embed(face, x));
    \n-
    200
    \n-
    201 for (auto i : range(faceDofs))
    \n-
    202 {
    \n-
    203 auto mi = unrank<dim-1,order-1>(i);
    \n-
    204
    \n-
    205 RangeFieldType phi = 1.;
    \n-
    206 for (auto j : range(dim-1))
    \n-
    207 phi *= legendre(mi[j], x[j]);
    \n-
    208
    \n-
    209 out[o+i] += (y*n) * phi * qp.weight() * (i%2 ? c : s);
    \n-
    210 }
    \n-
    211 }
    \n-
    212 }
    \n-
    \n-
    213
    \n-
    223 template<class F, class C>
    \n-
    \n-
    224 void interior (const F& f, C& out) const
    \n-
    225 {
    \n-
    226 assert(out.size() >= numFaces*faceDofs + interiorDofs);
    \n-
    227
    \n-
    228 const auto o = numFaces*faceDofs;
    \n-
    229
    \n-
    230 const auto& rule = QuadratureRules<DomainFieldType, dim>::rule(GeometryTypes::cube(dim), order+std::max((int)order-2,(int)0)+5);
    \n-
    231 for(const auto& qp : rule)
    \n-
    232 {
    \n-
    233 const auto& x = qp.position();
    \n-
    234 auto y = f(x);
    \n-
    235
    \n-
    236 for (auto i : range(interiorDofs/dim))
    \n-
    237 {
    \n-
    238 auto mi = unrank<dim,order-2>(i);
    \n-
    239
    \n-
    240 RangeFieldType phi = 1.;
    \n-
    241 for (auto j : range(dim))
    \n-
    242 phi *= legendre(mi[j], x[j]);
    \n-
    243
    \n-
    244 for (auto j : range(dim))
    \n-
    245 out[o+dim*i+j] += y[j]* phi * qp.weight();
    \n-
    246 }
    \n-
    247 }
    \n-
    248 }
    \n-
    \n-
    249
    \n-
    250 private:
    \n-
    251 std::array<RangeFieldType, numFaces> sign_;
    \n-
    252 std::array<DomainType, numFaces> normal_;
    \n-
    253 };
    \n-
    \n-
    254
    \n-
    255
    \n-
    256 template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    257 constexpr std::size_t BDFMCubeLocalInterpolation<D, R, dim, order>::numFaces;
    \n-
    258
    \n-
    259 template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    260 constexpr unsigned int BDFMCubeLocalInterpolation<D, R, dim, order>::interiorDofs;
    \n-
    261
    \n-
    262 template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    263 constexpr unsigned int BDFMCubeLocalInterpolation<D, R, dim, order>::faceDofs;
    \n-
    264
    \n-
    265
    \n-
    266#ifndef DOXYGEN
    \n-
    267 template<class D, class R, unsigned int dim>
    \n-
    268 class BDFMCubeLocalInterpolation<D, R, dim, 0>
    \n-
    269 {
    \n-
    270 static_assert(AlwaysFalse<D>::value,
    \n-
    271 "`BDFMCubeLocalCoefficients` not defined for order 0.");
    \n-
    272 };
    \n-
    273#endif //#ifndef DOXYGEN
    \n-
    274
    \n-
    275} // namespace Dune
    \n-
    276
    \n-
    277#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH
    \n+
    48 for (auto i : range(interiorDofs))
    \n+
    49 li[numFaces*faceDofs + i] = LocalKey(0, 0, i);
    \n+
    50 }
    \n+
    \n+
    51
    \n+
    53 std::size_t size () const { return numDofs; }
    \n+
    54
    \n+
    56 auto localKey (std::size_t i) const -> const LocalKey& { return li[i]; }
    \n+
    57
    \n+
    58 private:
    \n+
    59 std::vector<LocalKey> li;
    \n+
    60 };
    \n+
    \n+
    61
    \n+
    62 template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    63 constexpr unsigned int BDFMCubeLocalCoefficients<D, R, dim, order>::interiorDofs;
    \n+
    64
    \n+
    65 template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    66 constexpr unsigned int BDFMCubeLocalCoefficients<D, R, dim, order>::faceDofs;
    \n+
    67
    \n+
    68 template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    69 constexpr std::size_t BDFMCubeLocalCoefficients<D, R, dim, order>::numFaces;
    \n+
    70
    \n+
    71 // template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    72 // constexpr std::size_t BDFMCubeLocalCoefficients<D, R, dim, order>::numDofs;
    \n+
    73
    \n+
    74
    \n+
    75#ifndef DOXYGEN
    \n+
    76 template<class D, class R, unsigned int dim>
    \n+
    77 class BDFMCubeLocalCoefficients<D, R, dim, 0>
    \n+
    78 {
    \n+
    79 static_assert( AlwaysFalse<D>::value,
    \n+
    80 "`BDFMCubeLocalCoefficients` not defined for order 0." );
    \n+
    81 };
    \n+
    82#endif // #ifndef DOXYGEN
    \n+
    83
    \n+
    84} // namespace Dune
    \n+
    85
    \n+
    86#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:36
    \n-
    BDFMCubeLocalInterpolation(std::bitset< numFaces > s)
    Make set number s, where 0 <= s < 2^(2*dim)
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:143
    \n-
    BDFMCubeLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:133
    \n-
    void interpolate(const F &f, C &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:162
    \n-
    void trace(unsigned int face, const F &f, C &out) const
    Interpolate a given function with shape functions on a face of the reference element.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:185
    \n-
    void interior(const F &f, C &out) const
    Interpolate a given function with shape functions in the interior of the reference element.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:224
    \n+
    Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:33
    \n+
    BDFMCubeLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:42
    \n+
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:53
    \n+
    auto localKey(std::size_t i) const -> const LocalKey &
    geth i'th index
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:56
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,259 +2,110 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n * _\bc_\bu_\bb_\be\n-brezzidouglasfortinmarini/cube/localinterpolation.hh\n+brezzidouglasfortinmarini/cube/localcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// SPDX-FileCopyrightText: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 3#ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH\n 4#define\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH\n 5\n-6#include \n-7#include \n-8#include \n-9#include \n-10#include \n-11\n-12#include \n-13#include \n-14#include \n-15#include \n-16\n-17#include \n-18\n-19\n-20namespace _\bD_\bu_\bn_\be\n-21{\n-22\n-34 template\n-_\b3_\b5 class _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-36 {\n-37 using DomainType = FieldVector;\n-38 using FaceDomainType = FieldVector;\n-39 using RangeType = FieldVector;\n-40 using DomainFieldType = D;\n-41 using RangeFieldType = R;\n-42\n-43 static constexpr std::size_t numFaces = 2*dim;\n-44\n-45 static constexpr unsigned int interiorDofs = dim*binomial(dim+order-2,\n+6#include \n+7#include \n+8\n+9#include \n+10#include \n+11#include \n+12\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17\n+31 template\n+_\b3_\b2 class _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+33 {\n+34 static constexpr unsigned int interiorDofs = dim*binomial(dim+order-2,\n order-2);\n-46 static constexpr unsigned int faceDofs = binomial(dim+order-2, order-1);\n+35 static constexpr unsigned int faceDofs = binomial(dim+order-2, order-1);\n+36\n+37 static constexpr std::size_t numFaces = 2*dim;\n+38 static constexpr std::size_t numDofs = numFaces*faceDofs + interiorDofs;\n+39\n+40 public:\n+_\b4_\b2 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(numDofs)\n+43 {\n+44 for (auto j : range(numFaces))\n+45 for (auto i : range(faceDofs))\n+46 li[j*faceDofs + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(j, 1, i);\n 47\n-54 inline static auto legendre( unsigned int i, const DomainFieldType& x )\n-55 -> RangeFieldType\n-56 {\n-57 switch( i )\n-58 {\n-59 case 0:\n-60 return 1;\n-61 case 1:\n-62 return 2*x-1;\n-63 case 2:\n-64 return 6*x*x-6*x+1;\n-65 case 3:\n-66 return 20*x*x*x-30*x*x+12*x-1;\n-67 default:\n-68 return ((2*i-1)*(2*x-1)*legendre(x,i-1) - (i-1)*legendre(x,i-2)) / i;\n-69 }\n-70 }\n-71\n-81 template::max()>\n-82 constexpr inline static auto unrank (std::size_t i)\n-83 -> std::array\n-84 {\n-85 assert( i < binomial(d+kMax, kMax));\n-86\n-87 std::array mi{};\n-88 if (i == 0)\n-89 return mi;\n-90\n-91 std::size_t k = 0, b = 1;\n-92 for(;k <= kMax && b <= i; ++k, b = binomial(d+k-1, k))\n-93 i -= b;\n-94\n-95 std::size_t p = 0;\n-96 for(; p < d && i > 0; ++p)\n-97 {\n-98 std::size_t m = 0, c = 1;\n-99 for(; m <= k && c <= i; ++m, c = binomial(d-p+m-2, m))\n-100 i -= c;\n-101\n-102 mi[p] = k-m;\n-103 k = m;\n-104 }\n-105 mi[p] = k;\n-106\n-107 return mi;\n-108 }\n-109\n-116 inline static auto embed (unsigned int face, const FaceDomainType& x )\n-117 -> DomainType\n-118 {\n-119 DomainType y;\n-120\n-121 std::size_t j = 0;\n-122 for (auto i : range(dim))\n-123 if (i == face/2)\n-124 y[i] = face%2;\n-125 else\n-126 y[i] = x[j++];\n-127\n-128 return y;\n-129 }\n-130\n-131 public:\n-_\b1_\b3_\b3 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ()\n-134 {\n-135 std::fill(sign_.begin(), sign_.end(), 1.0);\n-136 }\n-137\n-_\b1_\b4_\b3 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset s)\n-144 {\n-145 for (auto i : range(numFaces))\n-146 {\n-147 sign_[i] = s[i] ? -1 : 1;\n-148 normal_[i][i/2] = i%2 ? 1 : -1;\n-149 }\n-150 }\n-151\n-161 template\n-_\b1_\b6_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, C& out) const\n-163 {\n-164 out.resize(numFaces*faceDofs + interiorDofs);\n-165 std::fill(out.begin(),out.end(), 0.0);\n-166\n-167 for(auto i : range(numFaces))\n-168 _\bt_\br_\ba_\bc_\be(i, f, out);\n-169\n-170 _\bi_\bn_\bt_\be_\br_\bi_\bo_\br(f, out);\n-171 }\n-172\n-184 template\n-_\b1_\b8_\b5 void _\bt_\br_\ba_\bc_\be (unsigned int face, const F& f, C& out) const\n-186 {\n-187 assert(out.size() >= numFaces*faceDofs + interiorDofs);\n-188 assert(face < numFaces);\n-189\n-190 const auto o = face*faceDofs;\n-191 const auto& n = normal_[face];\n-192 const auto& s = sign_[face];\n-193 const auto& c = n[face/2];\n-194\n-195 const auto& rule = QuadratureRules::rule\n-(GeometryTypes::cube(dim-1), order+(order-1)+5);\n-196 for (const auto& qp : rule)\n-197 {\n-198 const auto& x = qp.position();\n-199 auto y = f(embed(face, x));\n-200\n-201 for (auto i : range(faceDofs))\n-202 {\n-203 auto mi = unrank(i);\n-204\n-205 RangeFieldType phi = 1.;\n-206 for (auto j : range(dim-1))\n-207 phi *= legendre(mi[j], x[j]);\n-208\n-209 out[o+i] += (y*n) * phi * qp.weight() * (i%2 ? c : s);\n-210 }\n-211 }\n-212 }\n-213\n-223 template\n-_\b2_\b2_\b4 void _\bi_\bn_\bt_\be_\br_\bi_\bo_\br (const F& f, C& out) const\n-225 {\n-226 assert(out.size() >= numFaces*faceDofs + interiorDofs);\n-227\n-228 const auto o = numFaces*faceDofs;\n-229\n-230 const auto& rule = QuadratureRules::rule\n-(GeometryTypes::cube(dim), order+std::max((int)order-2,(int)0)+5);\n-231 for(const auto& qp : rule)\n-232 {\n-233 const auto& x = qp.position();\n-234 auto y = f(x);\n-235\n-236 for (auto i : range(interiorDofs/dim))\n-237 {\n-238 auto mi = unrank(i);\n-239\n-240 RangeFieldType phi = 1.;\n-241 for (auto j : range(dim))\n-242 phi *= legendre(mi[j], x[j]);\n-243\n-244 for (auto j : range(dim))\n-245 out[o+dim*i+j] += y[j]* phi * qp.weight();\n-246 }\n-247 }\n-248 }\n-249\n-250 private:\n-251 std::array sign_;\n-252 std::array normal_;\n-253 };\n-254\n-255\n-256 template\n-257 constexpr std::size_t BDFMCubeLocalInterpolation::\n-numFaces;\n-258\n-259 template\n-260 constexpr unsigned int BDFMCubeLocalInterpolation::\n+48 for (auto i : range(interiorDofs))\n+49 li[numFaces*faceDofs + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0, 0, i);\n+50 }\n+51\n+_\b5_\b3 std::size_t _\bs_\bi_\bz_\be () const { return numDofs; }\n+54\n+_\b5_\b6 auto _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const -> const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& { return li[i]; }\n+57\n+58 private:\n+59 std::vector li;\n+60 };\n+61\n+62 template\n+63 constexpr unsigned int BDFMCubeLocalCoefficients::\n interiorDofs;\n-261\n-262 template\n-263 constexpr unsigned int BDFMCubeLocalInterpolation::\n+64\n+65 template\n+66 constexpr unsigned int BDFMCubeLocalCoefficients::\n faceDofs;\n-264\n-265\n-266#ifndef DOXYGEN\n-267 template\n-268 class BDFMCubeLocalInterpolation\n-269 {\n-270 static_assert(AlwaysFalse::value,\n-271 \"`BDFMCubeLocalCoefficients` not defined for order 0.\");\n-272 };\n-273#endif //#ifndef DOXYGEN\n-274\n-275} // namespace Dune\n-276\n-277#endif // #ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH\n+67\n+68 template\n+69 constexpr std::size_t BDFMCubeLocalCoefficients::numFaces;\n+70\n+71 // template\n+72 // constexpr std::size_t BDFMCubeLocalCoefficients::\n+numDofs;\n+73\n+74\n+75#ifndef DOXYGEN\n+76 template\n+77 class BDFMCubeLocalCoefficients\n+78 {\n+79 static_assert( AlwaysFalse::value,\n+80 \"`BDFMCubeLocalCoefficients` not defined for order 0.\" );\n+81 };\n+82#endif // #ifndef DOXYGEN\n+83\n+84} // namespace Dune\n+85\n+86#endif // #ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDFMCubeLocalInterpolation(std::bitset< numFaces > s)\n-Make set number s, where 0 <= s < 2^(2*dim)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:143\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-BDFMCubeLocalInterpolation()\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+BDFMCubeLocalCoefficients()\n Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:133\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, C &out) const\n-Interpolate a given function with shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:162\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bc_\be\n-void trace(unsigned int face, const F &f, C &out) const\n-Interpolate a given function with shape functions on a face of the reference\n-element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:185\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br\n-void interior(const F &f, C &out) const\n-Interpolate a given function with shape functions in the interior of the\n-reference element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:224\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:53\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+auto localKey(std::size_t i) const -> const LocalKey &\n+geth i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04550.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04550.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localinterpolation.hh File Reference\n+dune-localfunctions: localcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,28 +65,35 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    localinterpolation.hh File Reference
    \n+
    localcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <functional>
    \n-#include <dune/common/concept.hh>
    \n+
    #include <array>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n+\n+\n+\n+\n+

    \n+Classes

    class  Dune::SimplexP1BubbleLocalCoefficients< dim >
     The Local keys associated to the dim-d local basis functions. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,17 +1,22 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-localinterpolation.hh File Reference\n-#include \n-#include \n+ * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n+ * _\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+localcoefficients.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 The Local keys associated to the dim-d local basis functions. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04550_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04550_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localinterpolation.hh Source File\n+dune-localfunctions: localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,74 +70,79 @@\n
    \n \n \n \n \n \n \n
    \n-
    common/localinterpolation.hh
    \n+
    enriched/simplexp1bubble/localcoefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <functional>
    \n+
    8#include <array>
    \n
    9
    \n-
    10#include <dune/common/concept.hh>
    \n+\n
    11
    \n-
    12
    \n-
    13
    \n-
    14namespace Dune {
    \n-
    15
    \n-
    16 namespace Impl {
    \n-
    17
    \n-
    18 // Concept for function supporting f.evaluate(Domain, Range&)
    \n-
    19 template<class Domain, class Range>
    \n-
    20 struct FunctionWithEvaluate
    \n-
    21 {
    \n-
    22 template<class F>
    \n-
    23 auto require(F&& f) -> decltype(
    \n-
    24 f.evaluate(std::declval<Domain>(), std::declval<Range&>())
    \n-
    25 );
    \n-
    26 };
    \n-
    27
    \n-
    28 // Concept for function supporting f(Domain)
    \n-
    29 template<class Domain>
    \n-
    30 struct FunctionWithCallOperator
    \n-
    31 {
    \n-
    32 template<class F>
    \n-
    33 auto require(F&& f) -> decltype(
    \n-
    34 f(std::declval<Domain>())
    \n-
    35 );
    \n-
    36 };
    \n-
    37
    \n-
    38 // Create function supporting Range = f(Domain)
    \n-
    39 // This functions returns the passed in reference.
    \n-
    40 template<class Domain, class F,
    \n-
    41 std::enable_if_t<models<FunctionWithCallOperator<Domain>, F>(), int> = 0>
    \n-
    42 [[deprecated( "The utility function makeFunctionWithCallOperator() is deprecated and will be removed after 2.10."
    \n-
    43 "Downstream modules no longer need to call this function since interpolate() no-longer supports non-callable functions.")]]
    \n-
    44 decltype(auto) makeFunctionWithCallOperator(const F& f)
    \n-
    45 {
    \n-
    46 return f;
    \n-
    47 }
    \n-
    48
    \n-
    49 } // namespace Impl
    \n-
    50
    \n-
    51} // namespace Dune
    \n-
    52#endif
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    22 template <int dim>
    \n+
    \n+\n+
    24 {
    \n+
    25 static const int numVertices = dim+1;
    \n+
    26
    \n+
    27 public:
    \n+
    \n+\n+
    30 {
    \n+
    31 for (int i = 0; i <= dim; ++i)
    \n+
    32 li_[i] = LocalKey(i,dim,0); // Vertex
    \n+
    33 li_[numVertices] = LocalKey(0,0,0); // Element
    \n+
    34 }
    \n+
    \n+
    35
    \n+
    \n+
    37 static constexpr std::size_t size () noexcept
    \n+
    38 {
    \n+
    39 return numVertices + 1;
    \n+
    40 }
    \n+
    \n+
    41
    \n+
    \n+
    43 const LocalKey& localKey (std::size_t i) const noexcept
    \n+
    44 {
    \n+
    45 return li_[i];
    \n+
    46 }
    \n+
    \n+
    47
    \n+
    48 private:
    \n+
    49 std::array<LocalKey, numVertices+1> li_;
    \n+
    50 };
    \n+
    \n+
    51
    \n+
    52} // end namespace Dune
    \n+
    53
    \n+
    54#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    The Local keys associated to the dim-d local basis functions.
    Definition enriched/simplexp1bubble/localcoefficients.hh:24
    \n+
    const LocalKey & localKey(std::size_t i) const noexcept
    Returns the i'th local key.
    Definition enriched/simplexp1bubble/localcoefficients.hh:43
    \n+
    SimplexP1BubbleLocalCoefficients() noexcept
    Default constructor, initialized the local keys.
    Definition enriched/simplexp1bubble/localcoefficients.hh:29
    \n+
    static constexpr std::size_t size() noexcept
    Returns number of coefficients.
    Definition enriched/simplexp1bubble/localcoefficients.hh:37
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,68 +1,77 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bc_\bo_\bm_\bm_\bo_\bn\n-common/localinterpolation.hh\n+ * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n+ * _\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be\n+enriched/simplexp1bubble/localcoefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALINTERPOLATION_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n 11\n-12\n-13\n-14namespace _\bD_\bu_\bn_\be {\n-15\n-16 namespace Impl {\n-17\n-18 // Concept for function supporting f.evaluate(Domain, Range&)\n-19 template\n-20 struct FunctionWithEvaluate\n-21 {\n-22 template\n-23 auto require(F&& f) -> decltype(\n-24 f.evaluate(std::declval(), std::declval())\n-25 );\n-26 };\n-27\n-28 // Concept for function supporting f(Domain)\n-29 template\n-30 struct FunctionWithCallOperator\n-31 {\n-32 template\n-33 auto require(F&& f) -> decltype(\n-34 f(std::declval())\n-35 );\n-36 };\n-37\n-38 // Create function supporting Range = f(Domain)\n-39 // This functions returns the passed in reference.\n-40 template, F>(), int> = 0>\n-42 [[deprecated( \"The utility function makeFunctionWithCallOperator() is\n-deprecated and will be removed after 2.10.\"\n-43 \"Downstream modules no longer need to call this function since interpolate()\n-no-longer supports non-callable functions.\")]]\n-44 decltype(auto) makeFunctionWithCallOperator(const F& f)\n-45 {\n-46 return f;\n-47 }\n-48\n-49 } // namespace Impl\n-50\n-51} // namespace Dune\n-52#endif\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+22 template \n+_\b2_\b3 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+24 {\n+25 static const int numVertices = dim+1;\n+26\n+27 public:\n+_\b2_\b9 _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () noexcept\n+30 {\n+31 for (int i = 0; i <= dim; ++i)\n+32 li_[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim,0); // Vertex\n+33 li_[numVertices] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0); // Element\n+34 }\n+35\n+_\b3_\b7 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n+38 {\n+39 return numVertices + 1;\n+40 }\n+41\n+_\b4_\b3 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const noexcept\n+44 {\n+45 return li_[i];\n+46 }\n+47\n+48 private:\n+49 std::array li_;\n+50 };\n+51\n+52} // end namespace Dune\n+53\n+54#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+The Local keys associated to the dim-d local basis functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const noexcept\n+Returns the i'th local key.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+SimplexP1BubbleLocalCoefficients() noexcept\n+Default constructor, initialized the local keys.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+static constexpr std::size_t size() noexcept\n+Returns number of coefficients.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:37\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04553.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04553.html", "unified_diff": "@@ -65,33 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n
    localinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <type_traits>
    \n+
    #include <algorithm>
    \n+#include <array>
    \n+#include <bitset>
    \n #include <vector>
    \n+#include <limits>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/math.hh>
    \n+#include <dune/common/rangeutilities.hh>
    \n+#include <dune/common/typetraits.hh>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::SimplexP1BubbleLocalInterpolation< LB >
     Interpolation into the SimplexP1BubbleLocalBasis. More...
    class  Dune::BDFMCubeLocalInterpolation< D, R, dim, order >
     Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,31 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n- * _\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bc_\bu_\bb_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n localinterpolation.hh File Reference\n-#include \n+#include \n+#include \n+#include \n #include \n+#include \n+#include \n+#include \n+#include \n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n-\u00a0 Interpolation into the _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b _\b>\n+\u00a0 Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on\n+ cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04553_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04553_source.html", "unified_diff": "@@ -70,84 +70,250 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    enriched/simplexp1bubble/localinterpolation.hh
    \n+
    brezzidouglasfortinmarini/cube/localinterpolation.hh
    \n
    \n
    \n-Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n-
    2// vi: set et ts=4 sw=2 sts=2:
    \n-
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n-
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH
    \n-
    7
    \n-
    8#include <type_traits>
    \n+Go to the documentation of this file.
    1// SPDX-FileCopyrightText: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n+
    2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n+
    3#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH
    \n+
    4#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH
    \n+
    5
    \n+
    6#include <algorithm>
    \n+
    7#include <array>
    \n+
    8#include <bitset>
    \n
    9#include <vector>
    \n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    32 template<class LB>
    \n-
    \n-\n-
    34 {
    \n-
    35 static const int dim = LB::dimension;
    \n-
    36 static const int numVertices = dim+1;
    \n-
    37
    \n-
    38 using DomainType = typename LB::Traits::DomainType;
    \n-
    39 using RangeType = typename LB::Traits::RangeType;
    \n-
    40
    \n-
    41 public:
    \n-
    49 template<class F, class C,
    \n-
    50 class R = std::invoke_result_t<F, DomainType>,
    \n-
    51 std::enable_if_t<std::is_convertible_v<R, C>, int> = 0>
    \n-
    \n-
    52 static constexpr void interpolate (const F& f, std::vector<C>& out)
    \n-
    53 {
    \n-
    54 out.resize(numVertices+1);
    \n-
    55
    \n-
    56 // vertices
    \n-
    57 DomainType x(0);
    \n-
    58 out[0] = f(x);
    \n-
    59
    \n-
    60 for (int i = 0; i < dim; ++i) {
    \n-
    61 x = 0;
    \n-
    62 x[i] = 1;
    \n-
    63 out[i+1] = f(x);
    \n-
    64 }
    \n-
    65
    \n-
    66 // element bubble
    \n-
    67 x = 1.0/(dim+1);
    \n-
    68 R y = f(x);
    \n-
    69
    \n-
    70 // evaluate the other shape functions in x and subtract this value
    \n-
    71 std::vector<RangeType> sfValues;
    \n-
    72 LB::evaluateFunction(x, sfValues);
    \n-
    73
    \n-
    74 out[numVertices] = y;
    \n-
    75 for (int i = 0; i < numVertices; ++i)
    \n-
    76 out[numVertices] -= out[i]*sfValues[i];
    \n-
    77 }
    \n-
    \n-
    78 };
    \n-
    \n-
    79
    \n-
    80} // end namespace Dune
    \n-
    81
    \n-
    82#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH
    \n+
    10#include <limits>
    \n+
    11
    \n+
    12#include <dune/common/fvector.hh>
    \n+
    13#include <dune/common/math.hh>
    \n+
    14#include <dune/common/rangeutilities.hh>
    \n+
    15#include <dune/common/typetraits.hh>
    \n+
    16
    \n+
    17#include <dune/geometry/quadraturerules.hh>
    \n+
    18
    \n+
    19
    \n+
    20namespace Dune
    \n+
    21{
    \n+
    22
    \n+
    34 template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    \n+\n+
    36 {
    \n+
    37 using DomainType = FieldVector<D, dim>;
    \n+
    38 using FaceDomainType = FieldVector<D, dim-1>;
    \n+
    39 using RangeType = FieldVector<R, dim>;
    \n+
    40 using DomainFieldType = D;
    \n+
    41 using RangeFieldType = R;
    \n+
    42
    \n+
    43 static constexpr std::size_t numFaces = 2*dim;
    \n+
    44
    \n+
    45 static constexpr unsigned int interiorDofs = dim*binomial(dim+order-2, order-2);
    \n+
    46 static constexpr unsigned int faceDofs = binomial(dim+order-2, order-1);
    \n+
    47
    \n+
    54 inline static auto legendre( unsigned int i, const DomainFieldType& x )
    \n+
    55 -> RangeFieldType
    \n+
    56 {
    \n+
    57 switch( i )
    \n+
    58 {
    \n+
    59 case 0:
    \n+
    60 return 1;
    \n+
    61 case 1:
    \n+
    62 return 2*x-1;
    \n+
    63 case 2:
    \n+
    64 return 6*x*x-6*x+1;
    \n+
    65 case 3:
    \n+
    66 return 20*x*x*x-30*x*x+12*x-1;
    \n+
    67 default:
    \n+
    68 return ((2*i-1)*(2*x-1)*legendre(x,i-1) - (i-1)*legendre(x,i-2)) / i;
    \n+
    69 }
    \n+
    70 }
    \n+
    71
    \n+
    81 template<std::size_t d, std::size_t kMax = std::numeric_limits<std::size_t>::max()>
    \n+
    82 constexpr inline static auto unrank (std::size_t i)
    \n+
    83 -> std::array<std::size_t, d>
    \n+
    84 {
    \n+
    85 assert( i < binomial(d+kMax, kMax));
    \n+
    86
    \n+
    87 std::array<std::size_t, d> mi{};
    \n+
    88 if (i == 0)
    \n+
    89 return mi;
    \n+
    90
    \n+
    91 std::size_t k = 0, b = 1;
    \n+
    92 for(;k <= kMax && b <= i; ++k, b = binomial(d+k-1, k))
    \n+
    93 i -= b;
    \n+
    94
    \n+
    95 std::size_t p = 0;
    \n+
    96 for(; p < d && i > 0; ++p)
    \n+
    97 {
    \n+
    98 std::size_t m = 0, c = 1;
    \n+
    99 for(; m <= k && c <= i; ++m, c = binomial(d-p+m-2, m))
    \n+
    100 i -= c;
    \n+
    101
    \n+
    102 mi[p] = k-m;
    \n+
    103 k = m;
    \n+
    104 }
    \n+
    105 mi[p] = k;
    \n+
    106
    \n+
    107 return mi;
    \n+
    108 }
    \n+
    109
    \n+
    116 inline static auto embed (unsigned int face, const FaceDomainType& x )
    \n+
    117 -> DomainType
    \n+
    118 {
    \n+
    119 DomainType y;
    \n+
    120
    \n+
    121 std::size_t j = 0;
    \n+
    122 for (auto i : range(dim))
    \n+
    123 if (i == face/2)
    \n+
    124 y[i] = face%2;
    \n+
    125 else
    \n+
    126 y[i] = x[j++];
    \n+
    127
    \n+
    128 return y;
    \n+
    129 }
    \n+
    130
    \n+
    131 public:
    \n+
    \n+\n+
    134 {
    \n+
    135 std::fill(sign_.begin(), sign_.end(), 1.0);
    \n+
    136 }
    \n+
    \n+
    137
    \n+
    \n+
    143 BDFMCubeLocalInterpolation (std::bitset<numFaces> s)
    \n+
    144 {
    \n+
    145 for (auto i : range(numFaces))
    \n+
    146 {
    \n+
    147 sign_[i] = s[i] ? -1 : 1;
    \n+
    148 normal_[i][i/2] = i%2 ? 1 : -1;
    \n+
    149 }
    \n+
    150 }
    \n+
    \n+
    151
    \n+
    161 template<class F, class C>
    \n+
    \n+
    162 void interpolate (const F& f, C& out) const
    \n+
    163 {
    \n+
    164 out.resize(numFaces*faceDofs + interiorDofs);
    \n+
    165 std::fill(out.begin(),out.end(), 0.0);
    \n+
    166
    \n+
    167 for(auto i : range(numFaces))
    \n+
    168 trace(i, f, out);
    \n+
    169
    \n+
    170 interior(f, out);
    \n+
    171 }
    \n+
    \n+
    172
    \n+
    184 template<class F, class C>
    \n+
    \n+
    185 void trace (unsigned int face, const F& f, C& out) const
    \n+
    186 {
    \n+
    187 assert(out.size() >= numFaces*faceDofs + interiorDofs);
    \n+
    188 assert(face < numFaces);
    \n+
    189
    \n+
    190 const auto o = face*faceDofs;
    \n+
    191 const auto& n = normal_[face];
    \n+
    192 const auto& s = sign_[face];
    \n+
    193 const auto& c = n[face/2];
    \n+
    194
    \n+
    195 const auto& rule = QuadratureRules<DomainFieldType, dim-1>::rule(GeometryTypes::cube(dim-1), order+(order-1)+5);
    \n+
    196 for (const auto& qp : rule)
    \n+
    197 {
    \n+
    198 const auto& x = qp.position();
    \n+
    199 auto y = f(embed(face, x));
    \n+
    200
    \n+
    201 for (auto i : range(faceDofs))
    \n+
    202 {
    \n+
    203 auto mi = unrank<dim-1,order-1>(i);
    \n+
    204
    \n+
    205 RangeFieldType phi = 1.;
    \n+
    206 for (auto j : range(dim-1))
    \n+
    207 phi *= legendre(mi[j], x[j]);
    \n+
    208
    \n+
    209 out[o+i] += (y*n) * phi * qp.weight() * (i%2 ? c : s);
    \n+
    210 }
    \n+
    211 }
    \n+
    212 }
    \n+
    \n+
    213
    \n+
    223 template<class F, class C>
    \n+
    \n+
    224 void interior (const F& f, C& out) const
    \n+
    225 {
    \n+
    226 assert(out.size() >= numFaces*faceDofs + interiorDofs);
    \n+
    227
    \n+
    228 const auto o = numFaces*faceDofs;
    \n+
    229
    \n+
    230 const auto& rule = QuadratureRules<DomainFieldType, dim>::rule(GeometryTypes::cube(dim), order+std::max((int)order-2,(int)0)+5);
    \n+
    231 for(const auto& qp : rule)
    \n+
    232 {
    \n+
    233 const auto& x = qp.position();
    \n+
    234 auto y = f(x);
    \n+
    235
    \n+
    236 for (auto i : range(interiorDofs/dim))
    \n+
    237 {
    \n+
    238 auto mi = unrank<dim,order-2>(i);
    \n+
    239
    \n+
    240 RangeFieldType phi = 1.;
    \n+
    241 for (auto j : range(dim))
    \n+
    242 phi *= legendre(mi[j], x[j]);
    \n+
    243
    \n+
    244 for (auto j : range(dim))
    \n+
    245 out[o+dim*i+j] += y[j]* phi * qp.weight();
    \n+
    246 }
    \n+
    247 }
    \n+
    248 }
    \n+
    \n+
    249
    \n+
    250 private:
    \n+
    251 std::array<RangeFieldType, numFaces> sign_;
    \n+
    252 std::array<DomainType, numFaces> normal_;
    \n+
    253 };
    \n+
    \n+
    254
    \n+
    255
    \n+
    256 template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    257 constexpr std::size_t BDFMCubeLocalInterpolation<D, R, dim, order>::numFaces;
    \n+
    258
    \n+
    259 template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    260 constexpr unsigned int BDFMCubeLocalInterpolation<D, R, dim, order>::interiorDofs;
    \n+
    261
    \n+
    262 template<class D, class R, unsigned int dim, unsigned int order>
    \n+
    263 constexpr unsigned int BDFMCubeLocalInterpolation<D, R, dim, order>::faceDofs;
    \n+
    264
    \n+
    265
    \n+
    266#ifndef DOXYGEN
    \n+
    267 template<class D, class R, unsigned int dim>
    \n+
    268 class BDFMCubeLocalInterpolation<D, R, dim, 0>
    \n+
    269 {
    \n+
    270 static_assert(AlwaysFalse<D>::value,
    \n+
    271 "`BDFMCubeLocalCoefficients` not defined for order 0.");
    \n+
    272 };
    \n+
    273#endif //#ifndef DOXYGEN
    \n+
    274
    \n+
    275} // namespace Dune
    \n+
    276
    \n+
    277#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Interpolation into the SimplexP1BubbleLocalBasis.
    Definition enriched/simplexp1bubble/localinterpolation.hh:34
    \n-
    static constexpr void interpolate(const F &f, std::vector< C > &out)
    Local interpolation of the function f.
    Definition enriched/simplexp1bubble/localinterpolation.hh:52
    \n+
    Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:36
    \n+
    BDFMCubeLocalInterpolation(std::bitset< numFaces > s)
    Make set number s, where 0 <= s < 2^(2*dim)
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:143
    \n+
    BDFMCubeLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:133
    \n+
    void interpolate(const F &f, C &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:162
    \n+
    void trace(unsigned int face, const F &f, C &out) const
    Interpolate a given function with shape functions on a face of the reference element.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:185
    \n+
    void interior(const F &f, C &out) const
    Interpolate a given function with shape functions in the interior of the reference element.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:224
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,78 +1,260 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n- * _\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be\n-enriched/simplexp1bubble/localinterpolation.hh\n+ * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n+ * _\bc_\bu_\bb_\be\n+brezzidouglasfortinmarini/cube/localinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n-2// vi: set et ts=4 sw=2 sts=2:\n-3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n+1// SPDX-FileCopyrightText: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n-4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH\n-6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH\n-7\n-8#include \n+2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n+3#ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH\n+4#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH\n+5\n+6#include \n+7#include \n+8#include \n 9#include \n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n-32 template\n-_\b3_\b3 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-34 {\n-35 static const int dim = LB::dimension;\n-36 static const int numVertices = dim+1;\n-37\n-38 using DomainType = typename LB::Traits::DomainType;\n-39 using RangeType = typename LB::Traits::RangeType;\n-40\n-41 public:\n-49 template,\n-51 std::enable_if_t, int> = 0>\n-_\b5_\b2 static constexpr void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out)\n-53 {\n-54 out.resize(numVertices+1);\n-55\n-56 // vertices\n-57 DomainType x(0);\n-58 out[0] = f(x);\n-59\n-60 for (int i = 0; i < dim; ++i) {\n-61 x = 0;\n-62 x[i] = 1;\n-63 out[i+1] = f(x);\n-64 }\n-65\n-66 // element bubble\n-67 x = 1.0/(dim+1);\n-68 R y = f(x);\n-69\n-70 // evaluate the other shape functions in x and subtract this value\n-71 std::vector sfValues;\n-72 LB::evaluateFunction(x, sfValues);\n-73\n-74 out[numVertices] = y;\n-75 for (int i = 0; i < numVertices; ++i)\n-76 out[numVertices] -= out[i]*sfValues[i];\n-77 }\n-78 };\n-79\n-80} // end namespace Dune\n-81\n-82#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH\n+10#include \n+11\n+12#include \n+13#include \n+14#include \n+15#include \n+16\n+17#include \n+18\n+19\n+20namespace _\bD_\bu_\bn_\be\n+21{\n+22\n+34 template\n+_\b3_\b5 class _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+36 {\n+37 using DomainType = FieldVector;\n+38 using FaceDomainType = FieldVector;\n+39 using RangeType = FieldVector;\n+40 using DomainFieldType = D;\n+41 using RangeFieldType = R;\n+42\n+43 static constexpr std::size_t numFaces = 2*dim;\n+44\n+45 static constexpr unsigned int interiorDofs = dim*binomial(dim+order-2,\n+order-2);\n+46 static constexpr unsigned int faceDofs = binomial(dim+order-2, order-1);\n+47\n+54 inline static auto legendre( unsigned int i, const DomainFieldType& x )\n+55 -> RangeFieldType\n+56 {\n+57 switch( i )\n+58 {\n+59 case 0:\n+60 return 1;\n+61 case 1:\n+62 return 2*x-1;\n+63 case 2:\n+64 return 6*x*x-6*x+1;\n+65 case 3:\n+66 return 20*x*x*x-30*x*x+12*x-1;\n+67 default:\n+68 return ((2*i-1)*(2*x-1)*legendre(x,i-1) - (i-1)*legendre(x,i-2)) / i;\n+69 }\n+70 }\n+71\n+81 template::max()>\n+82 constexpr inline static auto unrank (std::size_t i)\n+83 -> std::array\n+84 {\n+85 assert( i < binomial(d+kMax, kMax));\n+86\n+87 std::array mi{};\n+88 if (i == 0)\n+89 return mi;\n+90\n+91 std::size_t k = 0, b = 1;\n+92 for(;k <= kMax && b <= i; ++k, b = binomial(d+k-1, k))\n+93 i -= b;\n+94\n+95 std::size_t p = 0;\n+96 for(; p < d && i > 0; ++p)\n+97 {\n+98 std::size_t m = 0, c = 1;\n+99 for(; m <= k && c <= i; ++m, c = binomial(d-p+m-2, m))\n+100 i -= c;\n+101\n+102 mi[p] = k-m;\n+103 k = m;\n+104 }\n+105 mi[p] = k;\n+106\n+107 return mi;\n+108 }\n+109\n+116 inline static auto embed (unsigned int face, const FaceDomainType& x )\n+117 -> DomainType\n+118 {\n+119 DomainType y;\n+120\n+121 std::size_t j = 0;\n+122 for (auto i : range(dim))\n+123 if (i == face/2)\n+124 y[i] = face%2;\n+125 else\n+126 y[i] = x[j++];\n+127\n+128 return y;\n+129 }\n+130\n+131 public:\n+_\b1_\b3_\b3 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ()\n+134 {\n+135 std::fill(sign_.begin(), sign_.end(), 1.0);\n+136 }\n+137\n+_\b1_\b4_\b3 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn (std::bitset s)\n+144 {\n+145 for (auto i : range(numFaces))\n+146 {\n+147 sign_[i] = s[i] ? -1 : 1;\n+148 normal_[i][i/2] = i%2 ? 1 : -1;\n+149 }\n+150 }\n+151\n+161 template\n+_\b1_\b6_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, C& out) const\n+163 {\n+164 out.resize(numFaces*faceDofs + interiorDofs);\n+165 std::fill(out.begin(),out.end(), 0.0);\n+166\n+167 for(auto i : range(numFaces))\n+168 _\bt_\br_\ba_\bc_\be(i, f, out);\n+169\n+170 _\bi_\bn_\bt_\be_\br_\bi_\bo_\br(f, out);\n+171 }\n+172\n+184 template\n+_\b1_\b8_\b5 void _\bt_\br_\ba_\bc_\be (unsigned int face, const F& f, C& out) const\n+186 {\n+187 assert(out.size() >= numFaces*faceDofs + interiorDofs);\n+188 assert(face < numFaces);\n+189\n+190 const auto o = face*faceDofs;\n+191 const auto& n = normal_[face];\n+192 const auto& s = sign_[face];\n+193 const auto& c = n[face/2];\n+194\n+195 const auto& rule = QuadratureRules::rule\n+(GeometryTypes::cube(dim-1), order+(order-1)+5);\n+196 for (const auto& qp : rule)\n+197 {\n+198 const auto& x = qp.position();\n+199 auto y = f(embed(face, x));\n+200\n+201 for (auto i : range(faceDofs))\n+202 {\n+203 auto mi = unrank(i);\n+204\n+205 RangeFieldType phi = 1.;\n+206 for (auto j : range(dim-1))\n+207 phi *= legendre(mi[j], x[j]);\n+208\n+209 out[o+i] += (y*n) * phi * qp.weight() * (i%2 ? c : s);\n+210 }\n+211 }\n+212 }\n+213\n+223 template\n+_\b2_\b2_\b4 void _\bi_\bn_\bt_\be_\br_\bi_\bo_\br (const F& f, C& out) const\n+225 {\n+226 assert(out.size() >= numFaces*faceDofs + interiorDofs);\n+227\n+228 const auto o = numFaces*faceDofs;\n+229\n+230 const auto& rule = QuadratureRules::rule\n+(GeometryTypes::cube(dim), order+std::max((int)order-2,(int)0)+5);\n+231 for(const auto& qp : rule)\n+232 {\n+233 const auto& x = qp.position();\n+234 auto y = f(x);\n+235\n+236 for (auto i : range(interiorDofs/dim))\n+237 {\n+238 auto mi = unrank(i);\n+239\n+240 RangeFieldType phi = 1.;\n+241 for (auto j : range(dim))\n+242 phi *= legendre(mi[j], x[j]);\n+243\n+244 for (auto j : range(dim))\n+245 out[o+dim*i+j] += y[j]* phi * qp.weight();\n+246 }\n+247 }\n+248 }\n+249\n+250 private:\n+251 std::array sign_;\n+252 std::array normal_;\n+253 };\n+254\n+255\n+256 template\n+257 constexpr std::size_t BDFMCubeLocalInterpolation::\n+numFaces;\n+258\n+259 template\n+260 constexpr unsigned int BDFMCubeLocalInterpolation::\n+interiorDofs;\n+261\n+262 template\n+263 constexpr unsigned int BDFMCubeLocalInterpolation::\n+faceDofs;\n+264\n+265\n+266#ifndef DOXYGEN\n+267 template\n+268 class BDFMCubeLocalInterpolation\n+269 {\n+270 static_assert(AlwaysFalse::value,\n+271 \"`BDFMCubeLocalCoefficients` not defined for order 0.\");\n+272 };\n+273#endif //#ifndef DOXYGEN\n+274\n+275} // namespace Dune\n+276\n+277#endif // #ifndef\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Interpolation into the SimplexP1BubbleLocalBasis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localinterpolation.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-static constexpr void interpolate(const F &f, std::vector< C > &out)\n-Local interpolation of the function f.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localinterpolation.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDFMCubeLocalInterpolation(std::bitset< numFaces > s)\n+Make set number s, where 0 <= s < 2^(2*dim)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:143\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+BDFMCubeLocalInterpolation()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:133\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, C &out) const\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:162\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bt_\br_\ba_\bc_\be\n+void trace(unsigned int face, const F &f, C &out) const\n+Interpolate a given function with shape functions on a face of the reference\n+element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:185\n+_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bi_\bo_\br\n+void interior(const F &f, C &out) const\n+Interpolate a given function with shape functions in the interior of the\n+reference element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localinterpolation.hh:224\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04556.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04556.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localcoefficients.hh File Reference\n+dune-localfunctions: localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,28 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    localcoefficients.hh File Reference
    \n+
    localinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include <dune/common/math.hh>
    \n-#include <dune/common/rangeutilities.hh>
    \n-#include <dune/common/typetraits.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+
    #include <functional>
    \n+#include <dune/common/concept.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n-\n-\n-\n-\n-

    \n-Classes

    class  Dune::BDFMCubeLocalCoefficients< D, R, dim, order >
     Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,17 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bc_\bu_\bb_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-localcoefficients.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+localinterpolation.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b,_\b _\bo_\br_\bd_\be_\br_\b _\b>\n-\u00a0 Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04556_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04556_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localcoefficients.hh Source File\n+dune-localfunctions: localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,102 +70,74 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasfortinmarini/cube/localcoefficients.hh
    \n+
    common/localinterpolation.hh
    \n
    \n
    \n-Go to the documentation of this file.
    1// SPDX-FileCopyrightText: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n-
    2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    3#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH
    \n-
    4#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH
    \n-
    5
    \n-
    6#include <cstddef>
    \n-
    7#include <vector>
    \n-
    8
    \n-
    9#include <dune/common/math.hh>
    \n-
    10#include <dune/common/rangeutilities.hh>
    \n-
    11#include <dune/common/typetraits.hh>
    \n+Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+
    2// vi: set et ts=4 sw=2 sts=2:
    \n+
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n+
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALINTERPOLATION_HH
    \n+
    7
    \n+
    8#include <functional>
    \n+
    9
    \n+
    10#include <dune/common/concept.hh>
    \n+
    11
    \n
    12
    \n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n+
    13
    \n+
    14namespace Dune {
    \n+
    15
    \n+
    16 namespace Impl {
    \n
    17
    \n-
    31 template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    \n-\n-
    33 {
    \n-
    34 static constexpr unsigned int interiorDofs = dim*binomial(dim+order-2, order-2);
    \n-
    35 static constexpr unsigned int faceDofs = binomial(dim+order-2, order-1);
    \n-
    36
    \n-
    37 static constexpr std::size_t numFaces = 2*dim;
    \n-
    38 static constexpr std::size_t numDofs = numFaces*faceDofs + interiorDofs;
    \n-
    39
    \n-
    40 public:
    \n-
    \n-\n-
    43 {
    \n-
    44 for (auto j : range(numFaces))
    \n-
    45 for (auto i : range(faceDofs))
    \n-
    46 li[j*faceDofs + i] = LocalKey(j, 1, i);
    \n-
    47
    \n-
    48 for (auto i : range(interiorDofs))
    \n-
    49 li[numFaces*faceDofs + i] = LocalKey(0, 0, i);
    \n-
    50 }
    \n-
    \n-
    51
    \n-
    53 std::size_t size () const { return numDofs; }
    \n-
    54
    \n-
    56 auto localKey (std::size_t i) const -> const LocalKey& { return li[i]; }
    \n-
    57
    \n-
    58 private:
    \n-
    59 std::vector<LocalKey> li;
    \n-
    60 };
    \n-
    \n-
    61
    \n-
    62 template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    63 constexpr unsigned int BDFMCubeLocalCoefficients<D, R, dim, order>::interiorDofs;
    \n-
    64
    \n-
    65 template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    66 constexpr unsigned int BDFMCubeLocalCoefficients<D, R, dim, order>::faceDofs;
    \n-
    67
    \n-
    68 template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    69 constexpr std::size_t BDFMCubeLocalCoefficients<D, R, dim, order>::numFaces;
    \n-
    70
    \n-
    71 // template<class D, class R, unsigned int dim, unsigned int order>
    \n-
    72 // constexpr std::size_t BDFMCubeLocalCoefficients<D, R, dim, order>::numDofs;
    \n-
    73
    \n-
    74
    \n-
    75#ifndef DOXYGEN
    \n-
    76 template<class D, class R, unsigned int dim>
    \n-
    77 class BDFMCubeLocalCoefficients<D, R, dim, 0>
    \n-
    78 {
    \n-
    79 static_assert( AlwaysFalse<D>::value,
    \n-
    80 "`BDFMCubeLocalCoefficients` not defined for order 0." );
    \n-
    81 };
    \n-
    82#endif // #ifndef DOXYGEN
    \n-
    83
    \n-
    84} // namespace Dune
    \n-
    85
    \n-
    86#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH
    \n-\n+
    18 // Concept for function supporting f.evaluate(Domain, Range&)
    \n+
    19 template<class Domain, class Range>
    \n+
    20 struct FunctionWithEvaluate
    \n+
    21 {
    \n+
    22 template<class F>
    \n+
    23 auto require(F&& f) -> decltype(
    \n+
    24 f.evaluate(std::declval<Domain>(), std::declval<Range&>())
    \n+
    25 );
    \n+
    26 };
    \n+
    27
    \n+
    28 // Concept for function supporting f(Domain)
    \n+
    29 template<class Domain>
    \n+
    30 struct FunctionWithCallOperator
    \n+
    31 {
    \n+
    32 template<class F>
    \n+
    33 auto require(F&& f) -> decltype(
    \n+
    34 f(std::declval<Domain>())
    \n+
    35 );
    \n+
    36 };
    \n+
    37
    \n+
    38 // Create function supporting Range = f(Domain)
    \n+
    39 // This functions returns the passed in reference.
    \n+
    40 template<class Domain, class F,
    \n+
    41 std::enable_if_t<models<FunctionWithCallOperator<Domain>, F>(), int> = 0>
    \n+
    42 [[deprecated( "The utility function makeFunctionWithCallOperator() is deprecated and will be removed after 2.10."
    \n+
    43 "Downstream modules no longer need to call this function since interpolate() no-longer supports non-callable functions.")]]
    \n+
    44 decltype(auto) makeFunctionWithCallOperator(const F& f)
    \n+
    45 {
    \n+
    46 return f;
    \n+
    47 }
    \n+
    48
    \n+
    49 } // namespace Impl
    \n+
    50
    \n+
    51} // namespace Dune
    \n+
    52#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:33
    \n-
    BDFMCubeLocalCoefficients()
    Standard constructor.
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:42
    \n-
    std::size_t size() const
    number of coefficients
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:53
    \n-
    auto localKey(std::size_t i) const -> const LocalKey &
    geth i'th index
    Definition brezzidouglasfortinmarini/cube/localcoefficients.hh:56
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,111 +1,68 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bb_\br_\be_\bz_\bz_\bi_\bd_\bo_\bu_\bg_\bl_\ba_\bs_\bf_\bo_\br_\bt_\bi_\bn_\bm_\ba_\br_\bi_\bn_\bi\n- * _\bc_\bu_\bb_\be\n-brezzidouglasfortinmarini/cube/localcoefficients.hh\n+ * _\bc_\bo_\bm_\bm_\bo_\bn\n+common/localinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-1// SPDX-FileCopyrightText: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n+1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+2// vi: set et ts=4 sw=2 sts=2:\n+3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n-2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3#ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH\n-4#define\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH\n-5\n-6#include \n-7#include \n-8\n-9#include \n-10#include \n-11#include \n+4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n+5#ifndef DUNE_LOCALFUNCTIONS_COMMON_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALINTERPOLATION_HH\n+7\n+8#include \n+9\n+10#include \n+11\n 12\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n+13\n+14namespace _\bD_\bu_\bn_\be {\n+15\n+16 namespace Impl {\n 17\n-31 template\n-_\b3_\b2 class _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-33 {\n-34 static constexpr unsigned int interiorDofs = dim*binomial(dim+order-2,\n-order-2);\n-35 static constexpr unsigned int faceDofs = binomial(dim+order-2, order-1);\n-36\n-37 static constexpr std::size_t numFaces = 2*dim;\n-38 static constexpr std::size_t numDofs = numFaces*faceDofs + interiorDofs;\n-39\n-40 public:\n-_\b4_\b2 _\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(numDofs)\n-43 {\n-44 for (auto j : range(numFaces))\n-45 for (auto i : range(faceDofs))\n-46 li[j*faceDofs + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(j, 1, i);\n-47\n-48 for (auto i : range(interiorDofs))\n-49 li[numFaces*faceDofs + i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0, 0, i);\n-50 }\n-51\n-_\b5_\b3 std::size_t _\bs_\bi_\bz_\be () const { return numDofs; }\n-54\n-_\b5_\b6 auto _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const -> const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& { return li[i]; }\n-57\n-58 private:\n-59 std::vector li;\n-60 };\n-61\n-62 template\n-63 constexpr unsigned int BDFMCubeLocalCoefficients::\n-interiorDofs;\n-64\n-65 template\n-66 constexpr unsigned int BDFMCubeLocalCoefficients::\n-faceDofs;\n-67\n-68 template\n-69 constexpr std::size_t BDFMCubeLocalCoefficients::numFaces;\n-70\n-71 // template\n-72 // constexpr std::size_t BDFMCubeLocalCoefficients::\n-numDofs;\n-73\n-74\n-75#ifndef DOXYGEN\n-76 template\n-77 class BDFMCubeLocalCoefficients\n-78 {\n-79 static_assert( AlwaysFalse::value,\n-80 \"`BDFMCubeLocalCoefficients` not defined for order 0.\" );\n-81 };\n-82#endif // #ifndef DOXYGEN\n-83\n-84} // namespace Dune\n-85\n-86#endif // #ifndef\n-DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+18 // Concept for function supporting f.evaluate(Domain, Range&)\n+19 template\n+20 struct FunctionWithEvaluate\n+21 {\n+22 template\n+23 auto require(F&& f) -> decltype(\n+24 f.evaluate(std::declval(), std::declval())\n+25 );\n+26 };\n+27\n+28 // Concept for function supporting f(Domain)\n+29 template\n+30 struct FunctionWithCallOperator\n+31 {\n+32 template\n+33 auto require(F&& f) -> decltype(\n+34 f(std::declval())\n+35 );\n+36 };\n+37\n+38 // Create function supporting Range = f(Domain)\n+39 // This functions returns the passed in reference.\n+40 template, F>(), int> = 0>\n+42 [[deprecated( \"The utility function makeFunctionWithCallOperator() is\n+deprecated and will be removed after 2.10.\"\n+43 \"Downstream modules no longer need to call this function since interpolate()\n+no-longer supports non-callable functions.\")]]\n+44 decltype(auto) makeFunctionWithCallOperator(const F& f)\n+45 {\n+46 return f;\n+47 }\n+48\n+49 } // namespace Impl\n+50\n+51} // namespace Dune\n+52#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-BDFMCubeLocalCoefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bB_\bD_\bF_\bM_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-auto localKey(std::size_t i) const -> const LocalKey &\n-geth i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn brezzidouglasfortinmarini/cube/localcoefficients.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04559.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04559.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localcoefficients.hh File Reference\n+dune-localfunctions: localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -72,26 +72,26 @@\n
  • dune
  • localfunctions
  • enriched
  • simplexp1bubble
  • \n
    \n \n
    \n \n-
    localcoefficients.hh File Reference
    \n+
    localinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+
    #include <type_traits>
    \n+#include <vector>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::SimplexP1BubbleLocalCoefficients< dim >
     The Local keys associated to the dim-d local basis functions. More...
    class  Dune::SimplexP1BubbleLocalInterpolation< LB >
     Interpolation into the SimplexP1BubbleLocalBasis. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -3,20 +3,20 @@\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n * _\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-localcoefficients.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+localinterpolation.hh File Reference\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 The Local keys associated to the dim-d local basis functions. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bB_\b _\b>\n+\u00a0 Interpolation into the _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04559_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04559_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localcoefficients.hh Source File\n+dune-localfunctions: localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -74,75 +74,80 @@\n \n \n
    \n
    \n-
    enriched/simplexp1bubble/localcoefficients.hh
    \n+
    enriched/simplexp1bubble/localinterpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9
    \n-\n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    22 template <int dim>
    \n-
    \n-\n-
    24 {
    \n-
    25 static const int numVertices = dim+1;
    \n-
    26
    \n-
    27 public:
    \n-
    \n-\n-
    30 {
    \n-
    31 for (int i = 0; i <= dim; ++i)
    \n-
    32 li_[i] = LocalKey(i,dim,0); // Vertex
    \n-
    33 li_[numVertices] = LocalKey(0,0,0); // Element
    \n-
    34 }
    \n-
    \n-
    35
    \n-
    \n-
    37 static constexpr std::size_t size () noexcept
    \n-
    38 {
    \n-
    39 return numVertices + 1;
    \n-
    40 }
    \n-
    \n-
    41
    \n-
    \n-
    43 const LocalKey& localKey (std::size_t i) const noexcept
    \n-
    44 {
    \n-
    45 return li_[i];
    \n-
    46 }
    \n-
    \n-
    47
    \n-
    48 private:
    \n-
    49 std::array<LocalKey, numVertices+1> li_;
    \n-
    50 };
    \n-
    \n-
    51
    \n-
    52} // end namespace Dune
    \n-
    53
    \n-
    54#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH
    \n-\n+
    8#include <type_traits>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    32 template<class LB>
    \n+
    \n+\n+
    34 {
    \n+
    35 static const int dim = LB::dimension;
    \n+
    36 static const int numVertices = dim+1;
    \n+
    37
    \n+
    38 using DomainType = typename LB::Traits::DomainType;
    \n+
    39 using RangeType = typename LB::Traits::RangeType;
    \n+
    40
    \n+
    41 public:
    \n+
    49 template<class F, class C,
    \n+
    50 class R = std::invoke_result_t<F, DomainType>,
    \n+
    51 std::enable_if_t<std::is_convertible_v<R, C>, int> = 0>
    \n+
    \n+
    52 static constexpr void interpolate (const F& f, std::vector<C>& out)
    \n+
    53 {
    \n+
    54 out.resize(numVertices+1);
    \n+
    55
    \n+
    56 // vertices
    \n+
    57 DomainType x(0);
    \n+
    58 out[0] = f(x);
    \n+
    59
    \n+
    60 for (int i = 0; i < dim; ++i) {
    \n+
    61 x = 0;
    \n+
    62 x[i] = 1;
    \n+
    63 out[i+1] = f(x);
    \n+
    64 }
    \n+
    65
    \n+
    66 // element bubble
    \n+
    67 x = 1.0/(dim+1);
    \n+
    68 R y = f(x);
    \n+
    69
    \n+
    70 // evaluate the other shape functions in x and subtract this value
    \n+
    71 std::vector<RangeType> sfValues;
    \n+
    72 LB::evaluateFunction(x, sfValues);
    \n+
    73
    \n+
    74 out[numVertices] = y;
    \n+
    75 for (int i = 0; i < numVertices; ++i)
    \n+
    76 out[numVertices] -= out[i]*sfValues[i];
    \n+
    77 }
    \n+
    \n+
    78 };
    \n+
    \n+
    79
    \n+
    80} // end namespace Dune
    \n+
    81
    \n+
    82#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    The Local keys associated to the dim-d local basis functions.
    Definition enriched/simplexp1bubble/localcoefficients.hh:24
    \n-
    const LocalKey & localKey(std::size_t i) const noexcept
    Returns the i'th local key.
    Definition enriched/simplexp1bubble/localcoefficients.hh:43
    \n-
    SimplexP1BubbleLocalCoefficients() noexcept
    Default constructor, initialized the local keys.
    Definition enriched/simplexp1bubble/localcoefficients.hh:29
    \n-
    static constexpr std::size_t size() noexcept
    Returns number of coefficients.
    Definition enriched/simplexp1bubble/localcoefficients.hh:37
    \n+
    Interpolation into the SimplexP1BubbleLocalBasis.
    Definition enriched/simplexp1bubble/localinterpolation.hh:34
    \n+
    static constexpr void interpolate(const F &f, std::vector< C > &out)
    Local interpolation of the function f.
    Definition enriched/simplexp1bubble/localinterpolation.hh:52
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -2,76 +2,77 @@\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n * _\be_\bn_\br_\bi_\bc_\bh_\be_\bd\n * _\bs_\bi_\bm_\bp_\bl_\be_\bx_\bp_\b1_\bb_\bu_\bb_\bb_\bl_\be\n-enriched/simplexp1bubble/localcoefficients.hh\n+enriched/simplexp1bubble/localinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH\n-6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH\n 7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-22 template \n-_\b2_\b3 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\n-25 static const int numVertices = dim+1;\n-26\n-27 public:\n-_\b2_\b9 _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () noexcept\n-30 {\n-31 for (int i = 0; i <= dim; ++i)\n-32 li_[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim,0); // Vertex\n-33 li_[numVertices] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0); // Element\n-34 }\n-35\n-_\b3_\b7 static constexpr std::size_t _\bs_\bi_\bz_\be () noexcept\n-38 {\n-39 return numVertices + 1;\n-40 }\n-41\n-_\b4_\b3 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const noexcept\n-44 {\n-45 return li_[i];\n-46 }\n-47\n-48 private:\n-49 std::array li_;\n-50 };\n-51\n-52} // end namespace Dune\n-53\n-54#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALCOEFFICIENTS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+8#include \n+9#include \n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n+32 template\n+_\b3_\b3 class _\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+34 {\n+35 static const int dim = LB::dimension;\n+36 static const int numVertices = dim+1;\n+37\n+38 using DomainType = typename LB::Traits::DomainType;\n+39 using RangeType = typename LB::Traits::RangeType;\n+40\n+41 public:\n+49 template,\n+51 std::enable_if_t, int> = 0>\n+_\b5_\b2 static constexpr void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& f, std::vector& out)\n+53 {\n+54 out.resize(numVertices+1);\n+55\n+56 // vertices\n+57 DomainType x(0);\n+58 out[0] = f(x);\n+59\n+60 for (int i = 0; i < dim; ++i) {\n+61 x = 0;\n+62 x[i] = 1;\n+63 out[i+1] = f(x);\n+64 }\n+65\n+66 // element bubble\n+67 x = 1.0/(dim+1);\n+68 R y = f(x);\n+69\n+70 // evaluate the other shape functions in x and subtract this value\n+71 std::vector sfValues;\n+72 LB::evaluateFunction(x, sfValues);\n+73\n+74 out[numVertices] = y;\n+75 for (int i = 0; i < numVertices; ++i)\n+76 out[numVertices] -= out[i]*sfValues[i];\n+77 }\n+78 };\n+79\n+80} // end namespace Dune\n+81\n+82#endif // DUNE_LOCALFUNCTIONS_ENRICHED_SIMPLEXP1BUBBLE_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-The Local keys associated to the dim-d local basis functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const noexcept\n-Returns the i'th local key.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-SimplexP1BubbleLocalCoefficients() noexcept\n-Default constructor, initialized the local keys.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr std::size_t size() noexcept\n-Returns number of coefficients.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localcoefficients.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Interpolation into the SimplexP1BubbleLocalBasis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localinterpolation.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bP_\b1_\bB_\bu_\bb_\bb_\bl_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+static constexpr void interpolate(const F &f, std::vector< C > &out)\n+Local interpolation of the function f.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn enriched/simplexp1bubble/localinterpolation.hh:52\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04562.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04562.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolation.hh File Reference\n+dune-localfunctions: basis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,39 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    interpolation.hh File Reference
    \n+
    basis.hh File Reference
    \n
    \n
    \n-
    #include <type_traits>
    \n-#include <utility>
    \n+
    #include <numeric>
    \n+#include <cstddef>
    \n #include <vector>
    \n-#include <dune/common/typeutilities.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangecoefficients.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/fvector.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n-\n+\n+\n \n

    \n Classes

    class  Dune::LocalLagrangeInterpolation< LP, dim, F >
    class  Dune::PowerBasis< Backend, dimR >
     Meta-basis turning a scalar basis into vector-valued basis. More...
     
    struct  Dune::LagrangeInterpolationFactory< LP, dim, F >
    struct  Dune::PowerBasis< Backend, dimR >::Traits
     types of domain and range More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,28 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\bm_\be_\bt_\ba\n+ * _\bp_\bo_\bw_\be_\br\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-interpolation.hh File Reference\n-#include \n-#include \n+basis.hh File Reference\n+#include \n+#include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+#include \n+#include \n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>\n+\u00a0 Meta-basis turning a scalar basis into vector-valued basis. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+\u00a0 types of domain and range _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04562_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04562_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolation.hh Source File\n+dune-localfunctions: basis.hh Source File\n \n \n \n \n \n \n \n@@ -70,175 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    lagrange/interpolation.hh
    \n+
    meta/power/basis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH
    \n-
    6#define DUNE_LAGRANGEBASIS_INTERPOLATION_HH
    \n-
    7
    \n-
    8#include <type_traits>
    \n-
    9#include <utility>
    \n-
    10#include <vector>
    \n-
    11
    \n-
    12#include <dune/common/typeutilities.hh>
    \n-
    13
    \n-\n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH
    \n+
    8
    \n+
    9#include <numeric>
    \n+
    10#include <cstddef>
    \n+
    11#include <vector>
    \n+
    12
    \n+
    13#include <dune/common/fmatrix.hh>
    \n+
    14#include <dune/common/fvector.hh>
    \n
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    19 template< template <class,unsigned int> class LP,
    \n-
    20 unsigned int dim, class F >
    \n-
    21 struct LagrangeInterpolationFactory;
    \n-
    22
    \n-
    23 // LocalLagrangeInterpolation
    \n-
    24 // --------------------------
    \n-
    25
    \n-
    26 template< template <class,unsigned int> class LP, unsigned int dim, class F >
    \n-
    \n-\n-
    28 {
    \n-\n-
    30
    \n-
    31 public:
    \n-
    32 typedef LP<F,dim> LagrangePointSet;
    \n-
    33 typedef typename LagrangePointSet::Field Field;
    \n-
    34
    \n-
    35 static const unsigned int dimension = LagrangePointSet::dimension;
    \n-
    36
    \n-
    37 private:
    \n-
    38 friend struct LagrangeInterpolationFactory<LP,dim,F>;
    \n-
    39 const LagrangePointSet &lagrangePoints_;
    \n-
    40
    \n-\n-
    42 : lagrangePoints_( lagrangePoints )
    \n-
    43 {}
    \n-
    44
    \n-
    45 const LagrangePointSet *points () const { return &lagrangePoints_; }
    \n-
    46
    \n-
    47 template< class Fn, class Vector >
    \n-
    48 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 1 > ) const
    \n-
    49 -> std::enable_if_t< std::is_invocable_v< const Fn &, decltype( this->lagrangePoints_.begin()->point() ) > >
    \n-
    50 {
    \n-
    51 unsigned int index = 0;
    \n-
    52 for( const auto &lp : lagrangePoints_ )
    \n-
    53 field_cast( fn( lp.point() ), coefficients[ index++ ] );
    \n-
    54 }
    \n-
    55
    \n-
    56 public:
    \n-
    57 template< class Fn, class Vector,
    \n-
    58 decltype(std::declval<Vector>().size(),bool{}) = true,
    \n-
    59 decltype(std::declval<Vector>().resize(0u),bool{}) = true>
    \n-
    \n-
    60 void interpolate ( const Fn &fn, Vector &coefficients ) const
    \n-
    61 {
    \n-
    62 coefficients.resize( lagrangePoints_.size() );
    \n-
    63 interpolate( fn, coefficients, PriorityTag< 42 >() );
    \n-
    64 }
    \n-
    \n-
    65
    \n-
    66 template< class Basis, class Matrix,
    \n-
    67 decltype(std::declval<Matrix>().rows(),bool{}) = true,
    \n-
    68 decltype(std::declval<Matrix>().cols(),bool{}) = true,
    \n-
    69 decltype(std::declval<Matrix>().resize(0u,0u),bool{}) = true>
    \n-
    \n-
    70 void interpolate ( const Basis &basis, Matrix &coefficients ) const
    \n-
    71 {
    \n-
    72 coefficients.resize( lagrangePoints_.size(), basis.size( ) );
    \n-
    73
    \n-
    74 unsigned int index = 0;
    \n-
    75 for( const auto &lp : lagrangePoints_ )
    \n-
    76 basis.template evaluate< 0 >( lp.point(), coefficients[index++] );
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    79 const LagrangePointSet &lagrangePoints () const { return lagrangePoints_; }
    \n-
    80 };
    \n-
    \n-
    81
    \n-
    82
    \n-
    83
    \n-
    84 // LocalLagrangeInterpolationFactory
    \n-
    85 // ---------------------------------
    \n-
    86 template< template <class,unsigned int> class LP,
    \n-
    87 unsigned int dim, class F >
    \n-
    \n-\n-
    89 {
    \n-\n-\n-
    92
    \n-\n-\n-
    95
    \n-
    96 template< GeometryType::Id geometryId >
    \n-
    \n-
    97 static Object *create ( const Key &key )
    \n-
    98 {
    \n-
    99 const LagrangePointSet *lagrangeCoeff
    \n-
    100 = LagrangePointSetFactory::template create< geometryId >( key );
    \n-
    101 if ( lagrangeCoeff == 0 )
    \n-
    102 return 0;
    \n-
    103 else
    \n-
    104 return new Object( *lagrangeCoeff );
    \n-
    105 }
    \n-
    \n-
    106 template< GeometryType::Id geometryId >
    \n-
    \n-
    107 static bool supports ( const Key &key )
    \n-
    108 {
    \n-
    109 return true;
    \n-
    110 }
    \n-
    \n-
    \n-
    111 static void release( Object *object)
    \n-
    112 {
    \n-
    113 LagrangePointSetFactory::release( object->points() );
    \n-
    114 delete object;
    \n-
    115 }
    \n-
    \n-
    116 };
    \n-
    \n-
    117
    \n-
    118}
    \n-
    119
    \n-
    120#endif // #ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH
    \n-\n+
    16namespace Dune {
    \n+
    17
    \n+
    19
    \n+
    25 template<class Backend, std::size_t dimR>
    \n+
    \n+
    26 class PowerBasis {
    \n+
    27 static_assert(Backend::Traits::dimRange == 1,
    \n+
    28 "PowerBasis works only with scalar backends");
    \n+
    29
    \n+
    30 // don't use a reference here so this class stays copyable
    \n+
    31 const Backend *backend;
    \n+
    32
    \n+
    33 public:
    \n+
    \n+
    35 struct Traits : public Backend::Traits
    \n+
    36 {
    \n+
    38 static const std::size_t dimRange = dimR;
    \n+
    40 typedef FieldVector<typename Traits::RangeField, dimR> Range;
    \n+
    41
    \n+
    43
    \n+
    47 typedef FieldMatrix<typename Traits::RangeField, dimR,
    \n+
    48 Traits::dimDomainGlobal> Jacobian;
    \n+
    49 };
    \n+
    \n+
    50
    \n+
    52
    \n+
    58 PowerBasis(const Backend &backend_) : backend(&backend_) { }
    \n+
    59
    \n+
    61 std::size_t size () const { return backend->size()*dimR; }
    \n+
    63 std::size_t order () const { return backend->order(); }
    \n+
    64
    \n+
    \n+
    66 void evaluateFunction(const typename Traits::DomainLocal& in,
    \n+
    67 std::vector<typename Traits::Range>& out) const
    \n+
    68 {
    \n+
    69 std::vector<typename Backend::Traits::Range> backendValues;
    \n+
    70 backend->evaluateFunction(in, backendValues);
    \n+
    71 out.assign(size(), typename Traits::Range(0));
    \n+
    72 for(std::size_t d = 0; d < dimR; ++d)
    \n+
    73 for(std::size_t i = 0; i < backend->size(); ++i)
    \n+
    74 out[d*backend->size()+i][d] = backendValues[i][0];
    \n+
    75 }
    \n+
    \n+
    76
    \n+
    \n+
    78 void evaluateJacobian(const typename Traits::DomainLocal& in,
    \n+
    79 std::vector<typename Traits::Jacobian>& out) const
    \n+
    80 {
    \n+
    81 std::vector<typename Backend::Traits::Jacobian> backendValues;
    \n+
    82 backend->evaluateJacobian(in, backendValues);
    \n+
    83 out.assign(size(), typename Traits::Jacobian(0));
    \n+
    84 for(std::size_t d = 0; d < dimR; ++d)
    \n+
    85 for(std::size_t i = 0; i < backend->size(); ++i)
    \n+
    86 out[d*backend->size()+i][d] = backendValues[i][0];
    \n+
    87 }
    \n+
    \n+
    88
    \n+
    \n+
    90 void partial (const std::array<unsigned int, Backend::Traits::dimDomainGlobal>& order,
    \n+
    91 const typename Traits::DomainLocal& in, // position
    \n+
    92 std::vector<typename Traits::Range>& out) const // return value
    \n+
    93 {
    \n+
    94 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    95 if (totalOrder == 0) {
    \n+
    96 evaluateFunction(in, out);
    \n+
    97 } else {
    \n+
    98 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    99 }
    \n+
    100 }
    \n+
    \n+
    101 };
    \n+
    \n+
    102
    \n+
    103} // namespace Dune
    \n+
    104
    \n+
    105#endif // DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n-
    Definition lagrange/interpolation.hh:89
    \n-
    LagrangeCoefficientsFactory< LP, dim, F > LagrangePointSetFactory
    Definition lagrange/interpolation.hh:90
    \n-
    LagrangePointSetFactory::Object LagrangePointSet
    Definition lagrange/interpolation.hh:91
    \n-
    static bool supports(const Key &key)
    Definition lagrange/interpolation.hh:107
    \n-
    LagrangePointSetFactory::Key Key
    Definition lagrange/interpolation.hh:93
    \n-
    static Object * create(const Key &key)
    Definition lagrange/interpolation.hh:97
    \n-
    static void release(Object *object)
    Definition lagrange/interpolation.hh:111
    \n-
    const LocalLagrangeInterpolation< LP, dim, F > Object
    Definition lagrange/interpolation.hh:94
    \n-
    Definition lagrange/interpolation.hh:28
    \n-
    LagrangePointSet::Field Field
    Definition lagrange/interpolation.hh:33
    \n-
    const LagrangePointSet & lagrangePoints() const
    Definition lagrange/interpolation.hh:79
    \n-
    static const unsigned int dimension
    Definition lagrange/interpolation.hh:35
    \n-
    LP< F, dim > LagrangePointSet
    Definition lagrange/interpolation.hh:32
    \n-
    Definition lagrangecoefficients.hh:23
    \n-
    static void release(Object *object)
    Definition lagrangecoefficients.hh:42
    \n-
    const typedef LP< F, dim > Object
    Definition lagrangecoefficients.hh:25
    \n-
    std::size_t Key
    Definition lagrangecoefficients.hh:26
    \n+
    Meta-basis turning a scalar basis into vector-valued basis.
    Definition meta/power/basis.hh:26
    \n+
    PowerBasis(const Backend &backend_)
    Construct a PowerBasis.
    Definition meta/power/basis.hh:58
    \n+
    std::size_t size() const
    Number of shape functions.
    Definition meta/power/basis.hh:61
    \n+
    void partial(const std::array< unsigned int, Backend::Traits::dimDomainGlobal > &order, const typename Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition meta/power/basis.hh:90
    \n+
    void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector< typename Traits::Jacobian > &out) const
    Evaluate Jacobian of all shape functions at given position.
    Definition meta/power/basis.hh:78
    \n+
    void evaluateFunction(const typename Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const
    Evaluate all shape functions at given position.
    Definition meta/power/basis.hh:66
    \n+
    std::size_t order() const
    Polynomial order of the shape functions for quadrature.
    Definition meta/power/basis.hh:63
    \n+
    types of domain and range
    Definition meta/power/basis.hh:36
    \n+
    FieldMatrix< typename Traits::RangeField, dimR, Traits::dimDomainGlobal > Jacobian
    Jacobian properties.
    Definition meta/power/basis.hh:48
    \n+
    FieldVector< typename Traits::RangeField, dimR > Range
    Type used for range values.
    Definition meta/power/basis.hh:40
    \n+
    static const std::size_t dimRange
    Dimension of the range values.
    Definition meta/power/basis.hh:38
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,191 +1,144 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-lagrange/interpolation.hh\n+ * _\bm_\be_\bt_\ba\n+ * _\bp_\bo_\bw_\be_\br\n+meta/power/basis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH\n-6#define DUNE_LAGRANGEBASIS_INTERPOLATION_HH\n-7\n-8#include \n-9#include \n-10#include \n-11\n-12#include \n-13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH\n+7#define DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH\n+8\n+9#include \n+10#include \n+11#include \n+12\n+13#include \n+14#include \n 15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-19 template< template class LP,\n-20 unsigned int dim, class F >\n-21 struct LagrangeInterpolationFactory;\n-22\n-23 // LocalLagrangeInterpolation\n-24 // --------------------------\n-25\n-26 template< template class LP, unsigned int dim, class F\n->\n-_\b2_\b7 class _\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-28 {\n-29 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bP_\b,_\bd_\bi_\bm_\b,_\bF_\b _\b> _\bT_\bh_\bi_\bs;\n-30\n-31 public:\n-_\b3_\b2 typedef LP _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt;\n-_\b3_\b3 typedef typename LagrangePointSet::Field _\bF_\bi_\be_\bl_\bd;\n-34\n-_\b3_\b5 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = LagrangePointSet::dimension;\n-36\n-37 private:\n-38 friend struct _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-39 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt &lagrangePoints_;\n-40\n-41 explicit _\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ( const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt &_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n-)\n-42 : lagrangePoints_( _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs )\n-43 {}\n-44\n-45 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt *points () const { return &lagrangePoints_; }\n-46\n-47 template< class Fn, class Vector >\n-48 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 1 > )\n-const\n-49 -> std::enable_if_t< std::is_invocable_v< const Fn &, decltype( this-\n->lagrangePoints_.begin()->point() ) > >\n-50 {\n-51 unsigned int index = 0;\n-52 for( const auto &lp : lagrangePoints_ )\n-53 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( fn( lp.point() ), coefficients[ index++ ] );\n-54 }\n-55\n-56 public:\n-57 template< class Fn, class Vector,\n-58 decltype(std::declval().size(),bool{}) = true,\n-59 decltype(std::declval().resize(0u),bool{}) = true>\n-_\b6_\b0 void interpolate ( const Fn &fn, Vector &coefficients ) const\n-61 {\n-62 coefficients.resize( lagrangePoints_.size() );\n-63 interpolate( fn, coefficients, PriorityTag< 42 >() );\n-64 }\n-65\n-66 template< class Basis, class Matrix,\n-67 decltype(std::declval().rows(),bool{}) = true,\n-68 decltype(std::declval().cols(),bool{}) = true,\n-69 decltype(std::declval().resize(0u,0u),bool{}) = true>\n-_\b7_\b0 void interpolate ( const Basis &basis, Matrix &coefficients ) const\n-71 {\n-72 coefficients.resize( lagrangePoints_.size(), basis.size( ) );\n-73\n-74 unsigned int index = 0;\n-75 for( const auto &lp : lagrangePoints_ )\n-76 basis.template evaluate< 0 >( lp.point(), coefficients[index++] );\n-77 }\n-78\n-_\b7_\b9 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt &_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs () const { return lagrangePoints_; }\n-80 };\n-81\n-82\n-83\n-84 // LocalLagrangeInterpolationFactory\n-85 // ---------------------------------\n-86 template< template class LP,\n-87 unsigned int dim, class F >\n-_\b8_\b8 struct _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-89 {\n-_\b9_\b0 typedef _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bL_\bP_\b,_\bd_\bi_\bm_\b,_\bF_\b> _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b9_\b1 typedef typename _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt;\n-92\n-_\b9_\b3 typedef typename _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by _\bK_\be_\by;\n-_\b9_\b4 typedef const _\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bP_\b,_\bd_\bi_\bm_\b,_\bF_\b _\b> _\bO_\bb_\bj_\be_\bc_\bt;\n-95\n-96 template< GeometryType::Id geometryId >\n-_\b9_\b7 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n-98 {\n-99 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt *lagrangeCoeff\n-100 = LagrangePointSetFactory::template create< geometryId >( key );\n-101 if ( lagrangeCoeff == 0 )\n-102 return 0;\n-103 else\n-104 return new _\bO_\bb_\bj_\be_\bc_\bt( *lagrangeCoeff );\n-105 }\n-106 template< GeometryType::Id geometryId >\n-_\b1_\b0_\b7 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n-108 {\n-109 return true;\n-110 }\n-_\b1_\b1_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object)\n-112 {\n-113 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( object->points() );\n-114 delete object;\n-115 }\n-116 };\n-117\n-118}\n-119\n-120#endif // #ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+16namespace _\bD_\bu_\bn_\be {\n+17\n+19\n+25 template\n+_\b2_\b6 class _\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs {\n+27 static_assert(Backend::Traits::dimRange == 1,\n+28 \"PowerBasis works only with scalar backends\");\n+29\n+30 // don't use a reference here so this class stays copyable\n+31 const Backend *backend;\n+32\n+33 public:\n+_\b3_\b5 struct _\bT_\br_\ba_\bi_\bt_\bs : public Backend::Traits\n+36 {\n+_\b3_\b8 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = dimR;\n+_\b4_\b0 typedef FieldVector _\bR_\ba_\bn_\bg_\be;\n+41\n+43\n+47 typedef FieldMatrix _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn;\n+49 };\n+50\n+52\n+_\b5_\b8 _\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs(const Backend &backend_) : backend(&backend_) { }\n+59\n+_\b6_\b1 std::size_t _\bs_\bi_\bz_\be () const { return backend->size()*dimR; }\n+_\b6_\b3 std::size_t _\bo_\br_\bd_\be_\br () const { return backend->order(); }\n+64\n+_\b6_\b6 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename Traits::DomainLocal& in,\n+67 std::vector& out) const\n+68 {\n+69 std::vector backendValues;\n+70 backend->evaluateFunction(in, backendValues);\n+71 out.assign(_\bs_\bi_\bz_\be(), typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be(0));\n+72 for(std::size_t d = 0; d < dimR; ++d)\n+73 for(std::size_t i = 0; i < backend->size(); ++i)\n+74 out[d*backend->size()+i][d] = backendValues[i][0];\n+75 }\n+76\n+_\b7_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename Traits::DomainLocal& in,\n+79 std::vector& out) const\n+80 {\n+81 std::vector backendValues;\n+82 backend->evaluateJacobian(in, backendValues);\n+83 out.assign(_\bs_\bi_\bz_\be(), typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(0));\n+84 for(std::size_t d = 0; d < dimR; ++d)\n+85 for(std::size_t i = 0; i < backend->size(); ++i)\n+86 out[d*backend->size()+i][d] = backendValues[i][0];\n+87 }\n+88\n+_\b9_\b0 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+91 const typename Traits::DomainLocal& in, // position\n+92 std::vector& out) const // return value\n+93 {\n+94 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+95 if (totalOrder == 0) {\n+96 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+97 } else {\n+98 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+99 }\n+100 }\n+101 };\n+102\n+103} // namespace Dune\n+104\n+105#endif // DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n-void field_cast(const F1 &f1, F2 &f2)\n-a helper class to cast from one field to another\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-LagrangeCoefficientsFactory< LP, dim, F > LagrangePointSetFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-LagrangePointSetFactory::Object LagrangePointSet\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:91\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n-static bool supports(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-LagrangePointSetFactory::Key Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:93\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n-static Object * create(const Key &key)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:97\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const LocalLagrangeInterpolation< LP, dim, F > Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:94\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:28\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-LagrangePointSet::Field Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n-const LagrangePointSet & lagrangePoints() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-LP< F, dim > LagrangePointSet\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:32\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n-static void release(Object *object)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n-const typedef LP< F, dim > Object\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n-std::size_t Key\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs\n+Meta-basis turning a scalar basis into vector-valued basis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs\n+PowerBasis(const Backend &backend_)\n+Construct a PowerBasis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+Number of shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:61\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, Backend::Traits::dimDomainGlobal >\n+&order, const typename Traits::DomainLocal &in, std::vector< typename Traits::\n+Range > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector<\n+typename Traits::Jacobian > &out) const\n+Evaluate Jacobian of all shape functions at given position.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainLocal &in, std::vector<\n+typename Traits::Range > &out) const\n+Evaluate all shape functions at given position.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:66\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+Polynomial order of the shape functions for quadrature.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+types of domain and range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+FieldMatrix< typename Traits::RangeField, dimR, Traits::dimDomainGlobal >\n+Jacobian\n+Jacobian properties.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be\n+FieldVector< typename Traits::RangeField, dimR > Range\n+Type used for range values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const std::size_t dimRange\n+Dimension of the range values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:38\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04565.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04565.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolation.hh File Reference\n+dune-localfunctions: basis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    interpolation.hh File Reference
    \n+
    basis.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <cassert>
    \n-#include <cstddef>
    \n+
    #include <cstddef>
    \n #include <vector>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/localfunctions/common/localtoglobaladaptors.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n+#include <dune/localfunctions/whitney/edges0.5/common.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::PowerInterpolation< Backend, BasisTraits >
     Meta-interpolation turning a scalar interpolation into vector-valued interpolation. More...
    class  Dune::EdgeS0_5Basis< Geometry, RF >
     Basis for order 0.5 (lowest order) edge elements on simplices. More...
     
    struct  Dune::EdgeS0_5Basis< Geometry, RF >::Traits
     export type traits for function signature More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,30 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\be_\bt_\ba\n- * _\bp_\bo_\bw_\be_\br\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+ * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-interpolation.hh File Reference\n-#include \n-#include \n+basis.hh File Reference\n #include \n #include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b _\b>\n-\u00a0 Meta-interpolation turning a scalar interpolation into vector-valued\n- interpolation. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n+\u00a0 Basis for order 0.5 (lowest order) edge elements on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+\u00a0 export type traits for function signature _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04565_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04565_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolation.hh Source File\n+dune-localfunctions: basis.hh Source File\n \n \n \n \n \n \n \n@@ -70,104 +70,217 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    meta/power/interpolation.hh
    \n+
    whitney/edges0.5/basis.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH
    \n
    8
    \n-
    9#include <algorithm>
    \n-
    10#include <cassert>
    \n-
    11#include <cstddef>
    \n-
    12#include <vector>
    \n-
    13
    \n-
    14namespace Dune {
    \n-
    15
    \n+
    9#include <cstddef>
    \n+
    10#include <vector>
    \n+
    11
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+
    13#include <dune/common/fvector.hh>
    \n+
    14
    \n+\n+\n+\n
    18
    \n-
    25 template<class Backend, class BasisTraits>
    \n-
    \n-\n-
    27 static_assert(Backend::Traits::dimRange == 1,
    \n-
    28 "PowerInterpolation works only with scalar backends");
    \n-
    29
    \n-
    30 const Backend *backend;
    \n-
    31
    \n-
    32 public:
    \n-
    34 typedef BasisTraits Traits;
    \n-
    35
    \n-
    37
    \n-
    43 PowerInterpolation(const Backend &backend_) : backend(&backend_) { }
    \n-
    44
    \n-
    45 private:
    \n-
    46 template<class F>
    \n-
    47 class ComponentEvaluator
    \n-
    48 {
    \n-
    49 const F &f;
    \n-
    50 std::size_t comp;
    \n+
    19namespace Dune {
    \n+
    20
    \n+
    22 //
    \n+
    23 // Basis
    \n+
    24 //
    \n+
    25
    \n+
    27
    \n+
    35 template<class Geometry, class RF>
    \n+
    \n+\n+
    37 private EdgeS0_5Common<Geometry::mydimension, typename Geometry::ctype>
    \n+
    38 {
    \n+
    39 public:
    \n+
    \n+
    41 struct Traits {
    \n+
    42 typedef typename Geometry::ctype DomainField;
    \n+
    43 static const std::size_t dimDomainLocal = Geometry::mydimension;
    \n+
    44 static const std::size_t dimDomainGlobal = Geometry::coorddimension;
    \n+
    45 typedef FieldVector<DomainField, dimDomainLocal> DomainLocal;
    \n+
    46 typedef FieldVector<DomainField, dimDomainGlobal> DomainGlobal;
    \n+
    47
    \n+
    48 typedef RF RangeField;
    \n+
    49 static const std::size_t dimRange = dimDomainLocal;
    \n+
    50 typedef FieldVector<RangeField, dimRange> Range;
    \n
    51
    \n-
    52 public:
    \n-
    53 ComponentEvaluator(const F &f_, std::size_t comp_) :
    \n-
    54 f(f_), comp(comp_)
    \n-
    55 { }
    \n-
    56
    \n-
    57 typename Backend::Traits::Range operator()(const typename Backend::Traits::DomainLocal &x) const
    \n-
    58 {
    \n-
    59 typename Traits::Range fy = f(x);
    \n-
    60 typename Backend::Traits::Range y;
    \n-
    61 y[0] = fy[comp];
    \n-
    62 return y;
    \n-
    63 }
    \n-
    64 };
    \n+
    52 typedef FieldMatrix<RangeField, dimRange, dimDomainGlobal> Jacobian;
    \n+
    53 };
    \n+
    \n+
    54
    \n+
    55 private:
    \n+
    56 typedef Dune::Impl::LagrangeSimplexLocalBasis<typename Traits::DomainField,
    \n+
    57 typename Traits::RangeField,
    \n+\n+
    59 1 // Polynomial order
    \n+
    60 > P1LocalBasis;
    \n+\n+
    62
    \n+
    63 static const P1LocalBasis& p1LocalBasis;
    \n+
    64 static const std::size_t dim = Traits::dimDomainLocal;
    \n
    65
    \n-
    66 public:
    \n-
    68
    \n-
    77 template<typename F, typename C>
    \n-
    \n-
    78 void interpolate(const F& f, std::vector<C>& out) const {
    \n-
    79 out.clear();
    \n-
    80 std::vector<C> cout;
    \n-
    81 for(std::size_t d = 0; d < Traits::dimRange; ++d) {
    \n-
    82 // When dropping support for `evaluate()` we can simply use a lambda
    \n-
    83 // instead of ComponentEvaluator. But changing this now would break
    \n-
    84 // PowerInterpolation for FE-implementation outside of dune-localfunctions
    \n-
    85 // which may not have been adjusted so far.
    \n-
    86 backend->interpolate(ComponentEvaluator<std::decay_t<decltype(f)>>(f, d), cout);
    \n-
    87 if(d == 0)
    \n-
    88 out.resize(cout.size()*Traits::dimRange);
    \n-
    89 // make sure the size of cout does not change surprisingly
    \n-
    90 assert(out.size() == cout.size()*Traits::dimRange);
    \n-
    91 std::copy(cout.begin(), cout.end(), out.begin() + d*cout.size());
    \n-
    92 }
    \n-
    93 }
    \n-
    \n-
    94 };
    \n-
    \n-
    95
    \n-
    96} // namespace Dune
    \n-
    97
    \n-
    98#endif // DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH
    \n+\n+
    67 using Base::refelem;
    \n+
    68 using Base::s;
    \n+
    69
    \n+
    70 // global values of the Jacobians (gradients) of the p1 basis
    \n+
    71 std::vector<typename P1Basis::Traits::Jacobian> p1j;
    \n+
    72 // edge sizes and orientations
    \n+
    73 std::vector<typename Traits::DomainField> edgel;
    \n+
    74
    \n+
    75 public:
    \n+
    77
    \n+
    83 template<typename VertexOrder>
    \n+
    \n+
    84 EdgeS0_5Basis(const Geometry& geo, const VertexOrder& vertexOrder) :
    \n+
    85 p1j(s, typename P1Basis::Traits::Jacobian(0)), edgel(s)
    \n+
    86 {
    \n+
    87 // use some arbitrary position to evaluate jacobians, they are constant
    \n+
    88 static const typename Traits::DomainLocal xl(0);
    \n+
    89
    \n+
    90 // precompute Jacobian (gradients) of the p1 element
    \n+
    91 P1Basis(p1LocalBasis, geo).evaluateJacobian(xl, p1j);
    \n+
    92
    \n+
    93 // calculate edge sizes and orientations
    \n+
    94 for(std::size_t i = 0; i < s; ++i) {
    \n+
    95 edgel[i] = (geo.corner(refelem.subEntity(i,dim-1,0,dim))-
    \n+
    96 geo.corner(refelem.subEntity(i,dim-1,1,dim))
    \n+
    97 ).two_norm();
    \n+
    98 const typename VertexOrder::iterator& edgeVertexOrder =
    \n+
    99 vertexOrder.begin(dim-1, i);
    \n+
    100 if(edgeVertexOrder[0] > edgeVertexOrder[1])
    \n+
    101 edgel[i] *= -1;
    \n+
    102 }
    \n+
    103 }
    \n+
    \n+
    104
    \n+
    106 std::size_t size () const { return s; }
    \n+
    107
    \n+
    \n+
    109 void evaluateFunction(const typename Traits::DomainLocal& xl,
    \n+
    110 std::vector<typename Traits::Range>& out) const
    \n+
    111 {
    \n+
    112 out.assign(s, typename Traits::Range(0));
    \n+
    113
    \n+
    114 // compute p1 values -- use the local basis directly for that, local and
    \n+
    115 // global values are identical for scalars
    \n+
    116 std::vector<typename P1LocalBasis::Traits::RangeType> p1v;
    \n+
    117 p1LocalBasis.evaluateFunction(xl, p1v);
    \n+
    118
    \n+
    119 for(std::size_t i = 0; i < s; i++) {
    \n+
    120 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);
    \n+
    121 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);
    \n+
    122 out[i].axpy( p1v[i0], p1j[i1][0]);
    \n+
    123 out[i].axpy(-p1v[i1], p1j[i0][0]);
    \n+
    124 out[i] *= edgel[i];
    \n+
    125 }
    \n+
    126 }
    \n+
    \n+
    127
    \n+
    \n+\n+
    130 std::vector<typename Traits::Jacobian>& out) const
    \n+
    131 {
    \n+
    132 out.resize(s);
    \n+
    133
    \n+
    134 for(std::size_t i = 0; i < s; i++) {
    \n+
    135 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);
    \n+
    136 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);
    \n+
    137 for(std::size_t j = 0; j < dim; j++)
    \n+
    138 for(std::size_t k = 0; k < dim; k++)
    \n+
    139 out[i][j][k] = edgel[i] *
    \n+
    140 (p1j[i0][0][k]*p1j[i1][0][j]-p1j[i1][0][k]*p1j[i0][0][j]);
    \n+
    141 }
    \n+
    142 }
    \n+
    \n+
    143
    \n+
    \n+
    145 void partial (const std::array<unsigned int, dim>& order,
    \n+
    146 const typename Traits::DomainLocal& in, // position
    \n+
    147 std::vector<typename Traits::Range>& out) const // return value
    \n+
    148 {
    \n+
    149 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    150 if (totalOrder == 0) {
    \n+
    151 evaluateFunction(in, out);
    \n+
    152 } else if (totalOrder==1) {
    \n+
    153 auto const k = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    154 out.resize(size());
    \n+
    155
    \n+
    156 for (std::size_t i = 0; i < s; i++)
    \n+
    157 {
    \n+
    158 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);
    \n+
    159 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);
    \n+
    160 for(std::size_t j = 0; j < dim; j++)
    \n+
    161 out[i][j] = edgel[i] *
    \n+
    162 (p1j[i0][0][k]*p1j[i1][0][j] - p1j[i1][0][k]*p1j[i0][0][j]);
    \n+
    163 }
    \n+
    164 } else {
    \n+
    165 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    166 }
    \n+
    167 }
    \n+
    \n+
    168
    \n+
    170 std::size_t order () const { return 1; }
    \n+
    171 };
    \n+
    \n+
    172
    \n+
    173 template<class Geometry, class RF>
    \n+
    174 const typename EdgeS0_5Basis<Geometry, RF>::P1LocalBasis&
    \n+
    175 EdgeS0_5Basis<Geometry, RF>::p1LocalBasis = P1LocalBasis();
    \n+
    176
    \n+
    177} // namespace Dune
    \n+
    178
    \n+
    179#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Meta-interpolation turning a scalar interpolation into vector-valued interpolation.
    Definition meta/power/interpolation.hh:26
    \n-
    BasisTraits Traits
    Export basis traits.
    Definition meta/power/interpolation.hh:34
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    Definition meta/power/interpolation.hh:78
    \n-
    PowerInterpolation(const Backend &backend_)
    Construct a PowerInterpolation.
    Definition meta/power/interpolation.hh:43
    \n+
    Convert a simple scalar local basis into a global basis.
    Definition localtoglobaladaptors.hh:65
    \n+
    void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector< typename Traits::Jacobian > &out) const
    Definition localtoglobaladaptors.hh:125
    \n+
    Basis for order 0.5 (lowest order) edge elements on simplices.
    Definition whitney/edges0.5/basis.hh:38
    \n+
    EdgeS0_5Basis(const Geometry &geo, const VertexOrder &vertexOrder)
    Construct an EdgeS0_5Basis.
    Definition whitney/edges0.5/basis.hh:84
    \n+
    void evaluateJacobian(const typename Traits::DomainLocal &, std::vector< typename Traits::Jacobian > &out) const
    Evaluate all Jacobians.
    Definition whitney/edges0.5/basis.hh:129
    \n+
    void evaluateFunction(const typename Traits::DomainLocal &xl, std::vector< typename Traits::Range > &out) const
    Evaluate all shape functions.
    Definition whitney/edges0.5/basis.hh:109
    \n+
    std::size_t size() const
    number of shape functions
    Definition whitney/edges0.5/basis.hh:106
    \n+
    void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition whitney/edges0.5/basis.hh:145
    \n+
    std::size_t order() const
    Polynomial order of the shape functions.
    Definition whitney/edges0.5/basis.hh:170
    \n+
    export type traits for function signature
    Definition whitney/edges0.5/basis.hh:41
    \n+
    FieldVector< DomainField, dimDomainGlobal > DomainGlobal
    Definition whitney/edges0.5/basis.hh:46
    \n+
    static const std::size_t dimRange
    Definition whitney/edges0.5/basis.hh:49
    \n+
    static const std::size_t dimDomainLocal
    Definition whitney/edges0.5/basis.hh:43
    \n+
    FieldMatrix< RangeField, dimRange, dimDomainGlobal > Jacobian
    Definition whitney/edges0.5/basis.hh:52
    \n+
    static const std::size_t dimDomainGlobal
    Definition whitney/edges0.5/basis.hh:44
    \n+
    RF RangeField
    Definition whitney/edges0.5/basis.hh:48
    \n+
    FieldVector< DomainField, dimDomainLocal > DomainLocal
    Definition whitney/edges0.5/basis.hh:45
    \n+
    FieldVector< RangeField, dimRange > Range
    Definition whitney/edges0.5/basis.hh:50
    \n+
    Geometry::ctype DomainField
    Definition whitney/edges0.5/basis.hh:42
    \n+
    Common base class for edge elements.
    Definition common.hh:23
    \n+
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:30
    \n+
    std::size_t s
    The number of base functions.
    Definition common.hh:38
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,107 +1,255 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\be_\bt_\ba\n- * _\bp_\bo_\bw_\be_\br\n-meta/power/interpolation.hh\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+ * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n+whitney/edges0.5/basis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 5\n-6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH\n-7#define DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH\n+6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH\n+7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH\n 8\n-9#include \n-10#include \n-11#include \n-12#include \n-13\n-14namespace _\bD_\bu_\bn_\be {\n-15\n+9#include \n+10#include \n+11\n+12#include \n+13#include \n+14\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n+16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n 18\n-25 template\n-_\b2_\b6 class _\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn {\n-27 static_assert(Backend::Traits::dimRange == 1,\n-28 \"PowerInterpolation works only with scalar backends\");\n-29\n-30 const Backend *backend;\n-31\n-32 public:\n-_\b3_\b4 typedef BasisTraits _\bT_\br_\ba_\bi_\bt_\bs;\n-35\n-37\n-_\b4_\b3 _\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(const Backend &backend_) : backend(&backend_) { }\n-44\n-45 private:\n-46 template\n-47 class ComponentEvaluator\n-48 {\n-49 const F &f;\n-50 std::size_t comp;\n+19namespace _\bD_\bu_\bn_\be {\n+20\n+22 //\n+23 // Basis\n+24 //\n+25\n+27\n+35 template\n+_\b3_\b6 class _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs :\n+37 private _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n+38 {\n+39 public:\n+_\b4_\b1 struct _\bT_\br_\ba_\bi_\bt_\bs {\n+_\b4_\b2 typedef typename Geometry::ctype _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n+_\b4_\b3 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl = Geometry::mydimension;\n+_\b4_\b4 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl = Geometry::coorddimension;\n+_\b4_\b5 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n+_\b4_\b6 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl;\n+47\n+_\b4_\b8 typedef RF _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n+_\b4_\b9 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n+_\b5_\b0 typedef FieldVector _\bR_\ba_\bn_\bg_\be;\n 51\n-52 public:\n-53 ComponentEvaluator(const F &f_, std::size_t comp_) :\n-54 f(f_), comp(comp_)\n-55 { }\n-56\n-57 typename Backend::Traits::Range operator()(const typename Backend::Traits::\n-DomainLocal &x) const\n-58 {\n-59 typename Traits::Range fy = f(x);\n-60 typename Backend::Traits::Range y;\n-61 y[0] = fy[comp];\n-62 return y;\n-63 }\n-64 };\n+_\b5_\b2 typedef FieldMatrix _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn;\n+53 };\n+54\n+55 private:\n+56 typedef Dune::Impl::LagrangeSimplexLocalBasis P1LocalBasis;\n+61 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bP_\b1_\bB_\ba_\bs_\bi_\bs;\n+62\n+63 static const P1LocalBasis& p1LocalBasis;\n+64 static const std::size_t dim = _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n 65\n-66 public:\n-68\n-77 template\n-_\b7_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const {\n-79 out.clear();\n-80 std::vector cout;\n-81 for(std::size_t d = 0; d < Traits::dimRange; ++d) {\n-82 // When dropping support for `evaluate()` we can simply use a lambda\n-83 // instead of ComponentEvaluator. But changing this now would break\n-84 // PowerInterpolation for FE-implementation outside of dune-localfunctions\n-85 // which may not have been adjusted so far.\n-86 backend->interpolate(ComponentEvaluator>(f, d),\n-cout);\n-87 if(d == 0)\n-88 out.resize(cout.size()*Traits::dimRange);\n-89 // make sure the size of cout does not change surprisingly\n-90 assert(out.size() == cout.size()*Traits::dimRange);\n-91 std::copy(cout.begin(), cout.end(), out.begin() + d*cout.size());\n-92 }\n-93 }\n-94 };\n-95\n-96} // namespace Dune\n-97\n-98#endif // DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH\n+66 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bc_\bt_\by_\bp_\be_\b> _\bB_\ba_\bs_\be;\n+67 using _\bB_\ba_\bs_\be_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm;\n+68 using _\bB_\ba_\bs_\be_\b:_\b:_\bs;\n+69\n+70 // global values of the Jacobians (gradients) of the p1 basis\n+71 std::vector p1j;\n+72 // edge sizes and orientations\n+73 std::vector edgel;\n+74\n+75 public:\n+77\n+83 template\n+_\b8_\b4 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs(const Geometry& geo, const VertexOrder& vertexOrder) :\n+85 p1j(s, typename _\bP_\b1_\bB_\ba_\bs_\bi_\bs::_\bT_\br_\ba_\bi_\bt_\bs::Jacobian(0)), edgel(s)\n+86 {\n+87 // use some arbitrary position to evaluate jacobians, they are constant\n+88 static const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl xl(0);\n+89\n+90 // precompute Jacobian (gradients) of the p1 element\n+91 _\bP_\b1_\bB_\ba_\bs_\bi_\bs(p1LocalBasis, geo)._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(xl, p1j);\n+92\n+93 // calculate edge sizes and orientations\n+94 for(std::size_t i = 0; i < s; ++i) {\n+95 edgel[i] = (geo.corner(refelem.subEntity(i,dim-1,0,dim))-\n+96 geo.corner(refelem.subEntity(i,dim-1,1,dim))\n+97 ).two_norm();\n+98 const typename VertexOrder::iterator& edgeVertexOrder =\n+99 vertexOrder.begin(dim-1, i);\n+100 if(edgeVertexOrder[0] > edgeVertexOrder[1])\n+101 edgel[i] *= -1;\n+102 }\n+103 }\n+104\n+_\b1_\b0_\b6 std::size_t _\bs_\bi_\bz_\be () const { return s; }\n+107\n+_\b1_\b0_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& xl,\n+110 std::vector& out) const\n+111 {\n+112 out.assign(s, typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be(0));\n+113\n+114 // compute p1 values -- use the local basis directly for that, local and\n+115 // global values are identical for scalars\n+116 std::vector p1v;\n+117 p1LocalBasis.evaluateFunction(xl, p1v);\n+118\n+119 for(std::size_t i = 0; i < s; i++) {\n+120 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);\n+121 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);\n+122 out[i].axpy( p1v[i0], p1j[i1][0]);\n+123 out[i].axpy(-p1v[i1], p1j[i0][0]);\n+124 out[i] *= edgel[i];\n+125 }\n+126 }\n+127\n+_\b1_\b2_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl&,\n+130 std::vector& out) const\n+131 {\n+132 out.resize(s);\n+133\n+134 for(std::size_t i = 0; i < s; i++) {\n+135 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);\n+136 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);\n+137 for(std::size_t j = 0; j < dim; j++)\n+138 for(std::size_t k = 0; k < dim; k++)\n+139 out[i][j][k] = edgel[i] *\n+140 (p1j[i0][0][k]*p1j[i1][0][j]-p1j[i1][0][k]*p1j[i0][0][j]);\n+141 }\n+142 }\n+143\n+_\b1_\b4_\b5 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+146 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& in, // position\n+147 std::vector& out) const // return value\n+148 {\n+149 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+150 if (totalOrder == 0) {\n+151 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+152 } else if (totalOrder==1) {\n+153 auto const k = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n+_\bo_\br_\bd_\be_\br.end(), 1));\n+154 out.resize(_\bs_\bi_\bz_\be());\n+155\n+156 for (std::size_t i = 0; i < s; i++)\n+157 {\n+158 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);\n+159 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);\n+160 for(std::size_t j = 0; j < dim; j++)\n+161 out[i][j] = edgel[i] *\n+162 (p1j[i0][0][k]*p1j[i1][0][j] - p1j[i1][0][k]*p1j[i0][0][j]);\n+163 }\n+164 } else {\n+165 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+166 }\n+167 }\n+168\n+_\b1_\b7_\b0 std::size_t _\bo_\br_\bd_\be_\br () const { return 1; }\n+171 };\n+172\n+173 template\n+174 const typename EdgeS0_5Basis::P1LocalBasis&\n+175 EdgeS0_5Basis::p1LocalBasis = P1LocalBasis();\n+176\n+177} // namespace Dune\n+178\n+179#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH\n+_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Meta-interpolation turning a scalar interpolation into vector-valued\n-interpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-BasisTraits Traits\n-Export basis traits.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Determine coefficients interpolating a given function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-PowerInterpolation(const Backend &backend_)\n-Construct a PowerInterpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n+Convert a simple scalar local basis into a global basis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector<\n+typename Traits::Jacobian > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:125\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs\n+Basis for order 0.5 (lowest order) edge elements on simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs\n+EdgeS0_5Basis(const Geometry &geo, const VertexOrder &vertexOrder)\n+Construct an EdgeS0_5Basis.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainLocal &, std::vector<\n+typename Traits::Jacobian > &out) const\n+Evaluate all Jacobians.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:129\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainLocal &xl, std::vector<\n+typename Traits::Range > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:109\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:106\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, dim > &order, const typename\n+Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:145\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+std::size_t order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:170\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+export type traits for function signature\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl\n+FieldVector< DomainField, dimDomainGlobal > DomainGlobal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:46\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n+static const std::size_t dimRange\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n+static const std::size_t dimDomainLocal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+FieldMatrix< RangeField, dimRange, dimDomainGlobal > Jacobian\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:52\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl\n+static const std::size_t dimDomainGlobal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd\n+RF RangeField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n+FieldVector< DomainField, dimDomainLocal > DomainLocal\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be\n+FieldVector< RangeField, dimRange > Range\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd\n+Geometry::ctype DomainField\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n+Common base class for edge elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm\n+RefElem refelem\n+The reference element for this edge element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs\n+std::size_t s\n+The number of base functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:38\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04568.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04568.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolation.hh File Reference\n+dune-localfunctions: coefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    interpolation.hh File Reference
    \n+
    coefficients.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n #include <vector>
    \n-#include <dune/localfunctions/whitney/edges0.5/common.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::EdgeS0_5Interpolation< Geometry, Traits_ >
     Interpolation for lowest order edge elements on simplices. More...
    class  Dune::PowerCoefficients
     Meta-coefficients turning a scalar coefficients into vector-valued coefficients. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n- * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n+ * _\bm_\be_\bt_\ba\n+ * _\bp_\bo_\bw_\be_\br\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-interpolation.hh File Reference\n+coefficients.hh File Reference\n #include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bT_\br_\ba_\bi_\bt_\bs_\b__\b _\b>\n-\u00a0 Interpolation for lowest order edge elements on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Meta-coefficients turning a scalar coefficients into vector-valued\n+ coefficients. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04568_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04568_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolation.hh Source File\n+dune-localfunctions: coefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,111 +70,75 @@\n
    \n \n \n \n \n \n \n
    \n-
    whitney/edges0.5/interpolation.hh
    \n+
    meta/power/coefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
    \n
    8
    \n
    9#include <cstddef>
    \n
    10#include <vector>
    \n
    11
    \n-\n+\n
    13
    \n
    14namespace Dune {
    \n
    15
    \n-
    17 //
    \n-
    18 // Interpolation
    \n-
    19 //
    \n-
    20
    \n-
    22
    \n-
    29 template<class Geometry, class Traits_>
    \n-
    \n-\n-
    31 private EdgeS0_5Common<Traits_::dimDomainLocal,
    \n-
    32 typename Traits_::DomainField>
    \n-
    33 {
    \n-
    34 public:
    \n-
    35 typedef Traits_ Traits;
    \n-
    36
    \n-
    37 private:
    \n-
    38 static const std::size_t dim = Traits::dimDomainLocal;
    \n-\n-
    40 using Base::refelem;
    \n-
    41 using Base::s;
    \n-
    42
    \n-
    43 std::vector<typename Traits::DomainGlobal> edgev;
    \n-
    44
    \n-
    45 public:
    \n-
    47
    \n-
    53 template<typename VertexOrder>
    \n-
    \n-
    54 EdgeS0_5Interpolation(const Geometry& geo,
    \n-
    55 const VertexOrder& vertexOrder) :
    \n-
    56 edgev(s)
    \n-
    57 {
    \n-
    58 for(std::size_t i = 0; i < s; ++i) {
    \n-
    59 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);
    \n-
    60 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);
    \n-
    61
    \n-
    62 edgev[i] = geo.corner(i1);
    \n-
    63 edgev[i] -= geo.corner(i0);
    \n-
    64 edgev[i] /= edgev[i].two_norm();
    \n-
    65
    \n-
    66 const typename VertexOrder::iterator& edgeVertexOrder =
    \n-
    67 vertexOrder.begin(dim-1, i);
    \n-
    68 if(edgeVertexOrder[0] > edgeVertexOrder[1])
    \n-
    69 edgev[i] *= -1;
    \n-
    70 }
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    74 template<typename F, typename C>
    \n-
    \n-
    75 void interpolate(const F& f, std::vector<C>& out) const {
    \n-
    76 typename Traits::Range y;
    \n-
    77
    \n-
    78 out.resize(s);
    \n-
    79
    \n-
    80 for(std::size_t i = 0; i < s; ++i) {
    \n-
    81 y = f(refelem.position(i,dim-1));
    \n-
    82
    \n-
    83 out[i] = y * edgev[i];
    \n-
    84 }
    \n-
    85 }
    \n-
    \n-
    86 };
    \n-
    \n-
    87
    \n-
    88} // namespace Dune
    \n-
    89
    \n-
    90#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH
    \n-\n+
    18
    \n+
    \n+\n+
    24 std::vector<LocalKey> keys;
    \n+
    25
    \n+
    26 public:
    \n+
    28
    \n+
    36 template<class Backend>
    \n+
    \n+
    37 PowerCoefficients(const Backend &backend, std::size_t power) :
    \n+
    38 keys(backend.size()*power)
    \n+
    39 {
    \n+
    40 for(std::size_t i = 0; i < backend.size(); ++i) {
    \n+
    41 const LocalKey &k = backend.localKey(i);
    \n+
    42 for(std::size_t d = 0; d < power; ++d)
    \n+
    43 keys[i+d*backend.size()] =
    \n+
    44 LocalKey(k.subEntity(), k.codim(), power*k.index() + d);
    \n+
    45 }
    \n+
    46 }
    \n+
    \n+
    48 inline std::size_t size() const { return keys.size(); }
    \n+
    49
    \n+
    51 inline const LocalKey& localKey(std::size_t i) const { return keys[i]; }
    \n+
    52 };
    \n+
    \n+
    53
    \n+
    54} // namespace Dune
    \n+
    55
    \n+
    56#endif // DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Common base class for edge elements.
    Definition common.hh:23
    \n-
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:30
    \n-
    std::size_t s
    The number of base functions.
    Definition common.hh:38
    \n-
    Interpolation for lowest order edge elements on simplices.
    Definition whitney/edges0.5/interpolation.hh:33
    \n-
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolation of a function.
    Definition whitney/edges0.5/interpolation.hh:75
    \n-
    Traits_ Traits
    Definition whitney/edges0.5/interpolation.hh:35
    \n-
    EdgeS0_5Interpolation(const Geometry &geo, const VertexOrder &vertexOrder)
    constructor
    Definition whitney/edges0.5/interpolation.hh:54
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    constexpr unsigned int index() const noexcept
    Return offset within subentity.
    Definition localkey.hh:70
    \n+
    constexpr unsigned int codim() const noexcept
    Return codim of associated entity.
    Definition localkey.hh:63
    \n+
    constexpr unsigned int subEntity() const noexcept
    Return number of associated subentity.
    Definition localkey.hh:56
    \n+
    Meta-coefficients turning a scalar coefficients into vector-valued coefficients.
    Definition meta/power/coefficients.hh:23
    \n+
    std::size_t size() const
    number of coefficients
    Definition meta/power/coefficients.hh:48
    \n+
    PowerCoefficients(const Backend &backend, std::size_t power)
    Construct a PowerCoefficients object.
    Definition meta/power/coefficients.hh:37
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition meta/power/coefficients.hh:51
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,116 +1,87 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n- * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n-whitney/edges0.5/interpolation.hh\n+ * _\bm_\be_\bt_\ba\n+ * _\bp_\bo_\bw_\be_\br\n+meta/power/coefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 5\n-6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH\n-7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH\n+6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH\n+7#define DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH\n 8\n 9#include \n 10#include \n 11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n 13\n 14namespace _\bD_\bu_\bn_\be {\n 15\n-17 //\n-18 // Interpolation\n-19 //\n-20\n-22\n-29 template\n-_\b3_\b0 class _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn :\n-31 private _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n-33 {\n-34 public:\n-_\b3_\b5 typedef Traits_ _\bT_\br_\ba_\bi_\bt_\bs;\n-36\n-37 private:\n-38 static const std::size_t dim = Traits::dimDomainLocal;\n-39 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n-40 using _\bB_\ba_\bs_\be_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm;\n-41 using _\bB_\ba_\bs_\be_\b:_\b:_\bs;\n-42\n-43 std::vector edgev;\n-44\n-45 public:\n-47\n-53 template\n-_\b5_\b4 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(const Geometry& geo,\n-55 const VertexOrder& vertexOrder) :\n-56 edgev(s)\n-57 {\n-58 for(std::size_t i = 0; i < s; ++i) {\n-59 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);\n-60 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);\n-61\n-62 edgev[i] = geo.corner(i1);\n-63 edgev[i] -= geo.corner(i0);\n-64 edgev[i] /= edgev[i].two_norm();\n-65\n-66 const typename VertexOrder::iterator& edgeVertexOrder =\n-67 vertexOrder.begin(dim-1, i);\n-68 if(edgeVertexOrder[0] > edgeVertexOrder[1])\n-69 edgev[i] *= -1;\n-70 }\n-71 }\n-72\n-74 template\n-_\b7_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const {\n-76 typename Traits::Range y;\n-77\n-78 out.resize(s);\n-79\n-80 for(std::size_t i = 0; i < s; ++i) {\n-81 y = f(refelem.position(i,dim-1));\n-82\n-83 out[i] = y * edgev[i];\n-84 }\n-85 }\n-86 };\n-87\n-88} // namespace Dune\n-89\n-90#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+18\n+_\b2_\b3 class _\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs {\n+24 std::vector keys;\n+25\n+26 public:\n+28\n+36 template\n+_\b3_\b7 _\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const Backend &backend, std::size_t power) :\n+38 keys(backend._\bs_\bi_\bz_\be()*power)\n+39 {\n+40 for(std::size_t i = 0; i < backend.size(); ++i) {\n+41 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &k = backend.localKey(i);\n+42 for(std::size_t d = 0; d < power; ++d)\n+43 keys[i+d*backend.size()] =\n+44 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(k._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by(), k._\bc_\bo_\bd_\bi_\bm(), power*k._\bi_\bn_\bd_\be_\bx() + d);\n+45 }\n+46 }\n+_\b4_\b8 inline std::size_t _\bs_\bi_\bz_\be() const { return keys.size(); }\n+49\n+_\b5_\b1 inline const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const { return keys[i]; }\n+52 };\n+53\n+54} // namespace Dune\n+55\n+56#endif // DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n-Common base class for edge elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm\n-RefElem refelem\n-The reference element for this edge element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs\n-std::size_t s\n-The number of base functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Interpolation for lowest order edge elements on simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:33\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &f, std::vector< C > &out) const\n-Interpolation of a function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:75\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-Traits_ Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-EdgeS0_5Interpolation(const Geometry &geo, const VertexOrder &vertexOrder)\n-constructor\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+constexpr unsigned int index() const noexcept\n+Return offset within subentity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm\n+constexpr unsigned int codim() const noexcept\n+Return codim of associated entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n+constexpr unsigned int subEntity() const noexcept\n+Return number of associated subentity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Meta-coefficients turning a scalar coefficients into vector-valued\n+coefficients.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:48\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+PowerCoefficients(const Backend &backend, std::size_t power)\n+Construct a PowerCoefficients object.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:37\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:51\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04571.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04571.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannacherturek.hh File Reference\n+dune-localfunctions: coefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    rannacherturek.hh File Reference
    \n+
    coefficients.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include "rannachertureklocalbasis.hh"
    \n-#include "rannachertureklocalcoefficients.hh"
    \n-#include "rannachertureklocalinterpolation.hh"
    \n+
    #include <cstddef>
    \n+#include <vector>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/localfunctions/whitney/edges0.5/common.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::RannacherTurekLocalFiniteElement< D, R, d >
     Rannacher-Turek shape functions. More...
    class  Dune::EdgeS0_5Coefficients< dim >
     Coefficients for lowest order edge elements on simplices. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+ * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-rannacherturek.hh File Reference\n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+coefficients.hh File Reference\n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n-\u00a0 Rannacher-Turek shape functions. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Coefficients for lowest order edge elements on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04571_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04571_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannacherturek.hh Source File\n+dune-localfunctions: coefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,111 +70,76 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannacherturek/rannacherturek.hh
    \n+
    whitney/edges0.5/coefficients.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH
    \n-
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH
    \n+
    8
    \n+
    9#include <cstddef>
    \n+
    10#include <vector>
    \n
    11
    \n-\n-\n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    28 template< class D, class R, unsigned int d >
    \n-
    \n-\n-
    30 {
    \n-\n-\n-\n-\n-
    36
    \n+\n+\n+
    14
    \n+
    15namespace Dune {
    \n+
    16
    \n+
    18 //
    \n+
    19 // Coefficients
    \n+
    20 //
    \n+
    21
    \n+
    23
    \n+
    30 template<std::size_t dim>
    \n+
    \n+
    31 class EdgeS0_5Coefficients : private EdgeS0_5Common<dim> {
    \n+
    32 using EdgeS0_5Common<dim>::s;
    \n+
    33
    \n+
    34 std::vector<LocalKey> li;
    \n+
    35
    \n+
    36 public:
    \n
    \n-
    38 const typename Traits::LocalBasisType &localBasis () const
    \n-
    39 {
    \n-
    40 return localBasis_;
    \n+\n+
    39 for(std::size_t i = 0; i < s; i++)
    \n+
    40 li[i] = LocalKey(i, dim-1, 0);
    \n
    41 }
    \n
    \n
    42
    \n-
    \n-\n-
    45 {
    \n-
    46 return localCoefficients_;
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    \n-\n-
    51 {
    \n-
    52 return localInterpolation_;
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    \n-
    56 unsigned int size () const
    \n-
    57 {
    \n-
    58 return localBasis_.size();
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-
    62 GeometryType type () const
    \n-
    63 {
    \n-
    64 return GeometryTypes::cube(d);
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    67 private:
    \n-
    68 typename Traits::LocalBasisType localBasis_;
    \n-
    69 typename Traits::LocalCoefficientsType localCoefficients_;
    \n-
    70 typename Traits::LocalInterpolationType localInterpolation_;
    \n-
    71 };
    \n-
    \n-
    72
    \n-
    73} // namespace Dune
    \n-
    74
    \n-
    75#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH
    \n-\n-\n-\n-\n+
    44 std::size_t size () const { return s; }
    \n+
    45
    \n+
    47 const LocalKey& localKey(std::size_t i) const { return li[i]; }
    \n+
    48 };
    \n+
    \n+
    49
    \n+
    50} // namespace Dune
    \n+
    51
    \n+
    52#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Rannacher-Turek shape functions.
    Definition rannacherturek/rannacherturek.hh:30
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition rannacherturek/rannacherturek.hh:56
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    return local interpolation
    Definition rannacherturek/rannacherturek.hh:50
    \n-
    GeometryType type() const
    return geometry type
    Definition rannacherturek/rannacherturek.hh:62
    \n-
    const Traits::LocalBasisType & localBasis() const
    return local basis
    Definition rannacherturek/rannacherturek.hh:38
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    return local coefficients
    Definition rannacherturek/rannacherturek.hh:44
    \n-
    LocalFiniteElementTraits< RannacherTurekLocalBasis< D, R, d >, RannacherTurekLocalCoefficients< d >, RannacherTurekLocalInterpolation< D, R, d > > Traits
    export traits class
    Definition rannacherturek/rannacherturek.hh:35
    \n-
    layout for Rannacher-Turek elements
    Definition rannachertureklocalcoefficients.hh:27
    \n-
    please doc me
    Definition rannachertureklocalinterpolation.hh:31
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n+
    Coefficients for lowest order edge elements on simplices.
    Definition whitney/edges0.5/coefficients.hh:31
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition whitney/edges0.5/coefficients.hh:47
    \n+
    EdgeS0_5Coefficients()
    Standard constructor.
    Definition whitney/edges0.5/coefficients.hh:38
    \n+
    std::size_t size() const
    number of coefficients
    Definition whitney/edges0.5/coefficients.hh:44
    \n+
    Common base class for edge elements.
    Definition common.hh:23
    \n+
    std::size_t s
    The number of base functions.
    Definition common.hh:38
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,125 +1,83 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n-rannacherturek/rannacherturek.hh\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+ * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n+whitney/edges0.5/coefficients.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH\n-6#define DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH\n-7\n-8#include \n-9\n-10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH\n+7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH\n+8\n+9#include \n+10#include \n 11\n-12#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-13#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-14#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-28 template< class D, class R, unsigned int d >\n-_\b2_\b9 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-30 {\n-32 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>,\n-33 _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\b _\b>,\n-34 _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n-_\b3_\b5 > _\bT_\br_\ba_\bi_\bt_\bs;\n-36\n-_\b3_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be &_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-39 {\n-40 return localBasis_;\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+14\n+15namespace _\bD_\bu_\bn_\be {\n+16\n+18 //\n+19 // Coefficients\n+20 //\n+21\n+23\n+30 template\n+_\b3_\b1 class _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs : private _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn {\n+32 using _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs;\n+33\n+34 std::vector li;\n+35\n+36 public:\n+_\b3_\b8 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(_\bs) {\n+39 for(std::size_t i = 0; i < _\bs; i++)\n+40 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i, dim-1, 0);\n 41 }\n 42\n-_\b4_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be &_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-45 {\n-46 return localCoefficients_;\n-47 }\n-48\n-_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be &_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-51 {\n-52 return localInterpolation_;\n-53 }\n-54\n-_\b5_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-57 {\n-58 return localBasis_.size();\n-59 }\n-60\n-_\b6_\b2 GeometryType _\bt_\by_\bp_\be () const\n-63 {\n-64 return GeometryTypes::cube(d);\n-65 }\n-66\n-67 private:\n-68 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be localBasis_;\n-69 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be localCoefficients_;\n-70 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be localInterpolation_;\n-71 };\n-72\n-73} // namespace Dune\n-74\n-75#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\b4_\b4 std::size_t _\bs_\bi_\bz_\be () const { return _\bs; }\n+45\n+_\b4_\b7 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const { return li[i]; }\n+48 };\n+49\n+50} // namespace Dune\n+51\n+52#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Rannacher-Turek shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-return local interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-return geometry type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-return local basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-return local coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< RannacherTurekLocalBasis< D, R, d >,\n-RannacherTurekLocalCoefficients< d >, RannacherTurekLocalInterpolation< D, R, d\n-> > Traits\n-export traits class\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:35\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-layout for Rannacher-Turek elements\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:27\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-please doc me\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalinterpolation.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+Describe position of one degree of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Coefficients for lowest order edge elements on simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n+const LocalKey & localKey(std::size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+EdgeS0_5Coefficients()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+std::size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n+Common base class for edge elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs\n+std::size_t s\n+The number of base functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:38\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04574.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04574.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basis.hh File Reference\n+dune-localfunctions: interpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    basis.hh File Reference
    \n+
    interpolation.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <cstddef>
    \n+
    #include <type_traits>
    \n+#include <utility>
    \n #include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/common/fvector.hh>
    \n+#include <dune/common/typeutilities.hh>
    \n+#include <dune/localfunctions/lagrange/lagrangecoefficients.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n \n-\n-\n+\n \n

    \n Classes

    class  Dune::PowerBasis< Backend, dimR >
     Meta-basis turning a scalar basis into vector-valued basis. More...
    class  Dune::LocalLagrangeInterpolation< LP, dim, F >
     
    struct  Dune::PowerBasis< Backend, dimR >::Traits
     types of domain and range More...
    struct  Dune::LagrangeInterpolationFactory< LP, dim, F >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\be_\bt_\ba\n- * _\bp_\bo_\bw_\be_\br\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-basis.hh File Reference\n-#include \n-#include \n+interpolation.hh File Reference\n+#include \n+#include \n #include \n-#include \n-#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>\n-\u00a0 Meta-basis turning a scalar basis into vector-valued basis. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n \u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bd_\bi_\bm_\bR_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-\u00a0 types of domain and range _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bL_\bP_\b,_\b _\bd_\bi_\bm_\b,_\b _\bF_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04574_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04574_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basis.hh Source File\n+dune-localfunctions: interpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,175 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    meta/power/basis.hh
    \n+
    lagrange/interpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH
    \n-
    8
    \n-
    9#include <numeric>
    \n-
    10#include <cstddef>
    \n-
    11#include <vector>
    \n-
    12
    \n-
    13#include <dune/common/fmatrix.hh>
    \n-
    14#include <dune/common/fvector.hh>
    \n+
    5#ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH
    \n+
    6#define DUNE_LAGRANGEBASIS_INTERPOLATION_HH
    \n+
    7
    \n+
    8#include <type_traits>
    \n+
    9#include <utility>
    \n+
    10#include <vector>
    \n+
    11
    \n+
    12#include <dune/common/typeutilities.hh>
    \n+
    13
    \n+\n
    15
    \n-
    16namespace Dune {
    \n-
    17
    \n-
    19
    \n-
    25 template<class Backend, std::size_t dimR>
    \n-
    \n-
    26 class PowerBasis {
    \n-
    27 static_assert(Backend::Traits::dimRange == 1,
    \n-
    28 "PowerBasis works only with scalar backends");
    \n-
    29
    \n-
    30 // don't use a reference here so this class stays copyable
    \n-
    31 const Backend *backend;
    \n-
    32
    \n-
    33 public:
    \n-
    \n-
    35 struct Traits : public Backend::Traits
    \n-
    36 {
    \n-
    38 static const std::size_t dimRange = dimR;
    \n-
    40 typedef FieldVector<typename Traits::RangeField, dimR> Range;
    \n-
    41
    \n-
    43
    \n-
    47 typedef FieldMatrix<typename Traits::RangeField, dimR,
    \n-
    48 Traits::dimDomainGlobal> Jacobian;
    \n-
    49 };
    \n-
    \n-
    50
    \n-
    52
    \n-
    58 PowerBasis(const Backend &backend_) : backend(&backend_) { }
    \n-
    59
    \n-
    61 std::size_t size () const { return backend->size()*dimR; }
    \n-
    63 std::size_t order () const { return backend->order(); }
    \n-
    64
    \n-
    \n-
    66 void evaluateFunction(const typename Traits::DomainLocal& in,
    \n-
    67 std::vector<typename Traits::Range>& out) const
    \n-
    68 {
    \n-
    69 std::vector<typename Backend::Traits::Range> backendValues;
    \n-
    70 backend->evaluateFunction(in, backendValues);
    \n-
    71 out.assign(size(), typename Traits::Range(0));
    \n-
    72 for(std::size_t d = 0; d < dimR; ++d)
    \n-
    73 for(std::size_t i = 0; i < backend->size(); ++i)
    \n-
    74 out[d*backend->size()+i][d] = backendValues[i][0];
    \n-
    75 }
    \n-
    \n-
    76
    \n-
    \n-
    78 void evaluateJacobian(const typename Traits::DomainLocal& in,
    \n-
    79 std::vector<typename Traits::Jacobian>& out) const
    \n-
    80 {
    \n-
    81 std::vector<typename Backend::Traits::Jacobian> backendValues;
    \n-
    82 backend->evaluateJacobian(in, backendValues);
    \n-
    83 out.assign(size(), typename Traits::Jacobian(0));
    \n-
    84 for(std::size_t d = 0; d < dimR; ++d)
    \n-
    85 for(std::size_t i = 0; i < backend->size(); ++i)
    \n-
    86 out[d*backend->size()+i][d] = backendValues[i][0];
    \n-
    87 }
    \n-
    \n-
    88
    \n-
    \n-
    90 void partial (const std::array<unsigned int, Backend::Traits::dimDomainGlobal>& order,
    \n-
    91 const typename Traits::DomainLocal& in, // position
    \n-
    92 std::vector<typename Traits::Range>& out) const // return value
    \n-
    93 {
    \n-
    94 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    95 if (totalOrder == 0) {
    \n-
    96 evaluateFunction(in, out);
    \n-
    97 } else {
    \n-
    98 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    99 }
    \n-
    100 }
    \n-
    \n-
    101 };
    \n-
    \n-
    102
    \n-
    103} // namespace Dune
    \n-
    104
    \n-
    105#endif // DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    19 template< template <class,unsigned int> class LP,
    \n+
    20 unsigned int dim, class F >
    \n+
    21 struct LagrangeInterpolationFactory;
    \n+
    22
    \n+
    23 // LocalLagrangeInterpolation
    \n+
    24 // --------------------------
    \n+
    25
    \n+
    26 template< template <class,unsigned int> class LP, unsigned int dim, class F >
    \n+
    \n+\n+
    28 {
    \n+\n+
    30
    \n+
    31 public:
    \n+
    32 typedef LP<F,dim> LagrangePointSet;
    \n+
    33 typedef typename LagrangePointSet::Field Field;
    \n+
    34
    \n+
    35 static const unsigned int dimension = LagrangePointSet::dimension;
    \n+
    36
    \n+
    37 private:
    \n+
    38 friend struct LagrangeInterpolationFactory<LP,dim,F>;
    \n+
    39 const LagrangePointSet &lagrangePoints_;
    \n+
    40
    \n+\n+
    42 : lagrangePoints_( lagrangePoints )
    \n+
    43 {}
    \n+
    44
    \n+
    45 const LagrangePointSet *points () const { return &lagrangePoints_; }
    \n+
    46
    \n+
    47 template< class Fn, class Vector >
    \n+
    48 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 1 > ) const
    \n+
    49 -> std::enable_if_t< std::is_invocable_v< const Fn &, decltype( this->lagrangePoints_.begin()->point() ) > >
    \n+
    50 {
    \n+
    51 unsigned int index = 0;
    \n+
    52 for( const auto &lp : lagrangePoints_ )
    \n+
    53 field_cast( fn( lp.point() ), coefficients[ index++ ] );
    \n+
    54 }
    \n+
    55
    \n+
    56 public:
    \n+
    57 template< class Fn, class Vector,
    \n+
    58 decltype(std::declval<Vector>().size(),bool{}) = true,
    \n+
    59 decltype(std::declval<Vector>().resize(0u),bool{}) = true>
    \n+
    \n+
    60 void interpolate ( const Fn &fn, Vector &coefficients ) const
    \n+
    61 {
    \n+
    62 coefficients.resize( lagrangePoints_.size() );
    \n+
    63 interpolate( fn, coefficients, PriorityTag< 42 >() );
    \n+
    64 }
    \n+
    \n+
    65
    \n+
    66 template< class Basis, class Matrix,
    \n+
    67 decltype(std::declval<Matrix>().rows(),bool{}) = true,
    \n+
    68 decltype(std::declval<Matrix>().cols(),bool{}) = true,
    \n+
    69 decltype(std::declval<Matrix>().resize(0u,0u),bool{}) = true>
    \n+
    \n+
    70 void interpolate ( const Basis &basis, Matrix &coefficients ) const
    \n+
    71 {
    \n+
    72 coefficients.resize( lagrangePoints_.size(), basis.size( ) );
    \n+
    73
    \n+
    74 unsigned int index = 0;
    \n+
    75 for( const auto &lp : lagrangePoints_ )
    \n+
    76 basis.template evaluate< 0 >( lp.point(), coefficients[index++] );
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    79 const LagrangePointSet &lagrangePoints () const { return lagrangePoints_; }
    \n+
    80 };
    \n+
    \n+
    81
    \n+
    82
    \n+
    83
    \n+
    84 // LocalLagrangeInterpolationFactory
    \n+
    85 // ---------------------------------
    \n+
    86 template< template <class,unsigned int> class LP,
    \n+
    87 unsigned int dim, class F >
    \n+
    \n+\n+
    89 {
    \n+\n+\n+
    92
    \n+\n+\n+
    95
    \n+
    96 template< GeometryType::Id geometryId >
    \n+
    \n+
    97 static Object *create ( const Key &key )
    \n+
    98 {
    \n+
    99 const LagrangePointSet *lagrangeCoeff
    \n+
    100 = LagrangePointSetFactory::template create< geometryId >( key );
    \n+
    101 if ( lagrangeCoeff == 0 )
    \n+
    102 return 0;
    \n+
    103 else
    \n+
    104 return new Object( *lagrangeCoeff );
    \n+
    105 }
    \n+
    \n+
    106 template< GeometryType::Id geometryId >
    \n+
    \n+
    107 static bool supports ( const Key &key )
    \n+
    108 {
    \n+
    109 return true;
    \n+
    110 }
    \n+
    \n+
    \n+
    111 static void release( Object *object)
    \n+
    112 {
    \n+
    113 LagrangePointSetFactory::release( object->points() );
    \n+
    114 delete object;
    \n+
    115 }
    \n+
    \n+
    116 };
    \n+
    \n+
    117
    \n+
    118}
    \n+
    119
    \n+
    120#endif // #ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Meta-basis turning a scalar basis into vector-valued basis.
    Definition meta/power/basis.hh:26
    \n-
    PowerBasis(const Backend &backend_)
    Construct a PowerBasis.
    Definition meta/power/basis.hh:58
    \n-
    std::size_t size() const
    Number of shape functions.
    Definition meta/power/basis.hh:61
    \n-
    void partial(const std::array< unsigned int, Backend::Traits::dimDomainGlobal > &order, const typename Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition meta/power/basis.hh:90
    \n-
    void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector< typename Traits::Jacobian > &out) const
    Evaluate Jacobian of all shape functions at given position.
    Definition meta/power/basis.hh:78
    \n-
    void evaluateFunction(const typename Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const
    Evaluate all shape functions at given position.
    Definition meta/power/basis.hh:66
    \n-
    std::size_t order() const
    Polynomial order of the shape functions for quadrature.
    Definition meta/power/basis.hh:63
    \n-
    types of domain and range
    Definition meta/power/basis.hh:36
    \n-
    FieldMatrix< typename Traits::RangeField, dimR, Traits::dimDomainGlobal > Jacobian
    Jacobian properties.
    Definition meta/power/basis.hh:48
    \n-
    FieldVector< typename Traits::RangeField, dimR > Range
    Type used for range values.
    Definition meta/power/basis.hh:40
    \n-
    static const std::size_t dimRange
    Dimension of the range values.
    Definition meta/power/basis.hh:38
    \n+
    void field_cast(const F1 &f1, F2 &f2)
    a helper class to cast from one field to another
    Definition field.hh:159
    \n+
    Definition lagrange/interpolation.hh:89
    \n+
    LagrangeCoefficientsFactory< LP, dim, F > LagrangePointSetFactory
    Definition lagrange/interpolation.hh:90
    \n+
    LagrangePointSetFactory::Object LagrangePointSet
    Definition lagrange/interpolation.hh:91
    \n+
    static bool supports(const Key &key)
    Definition lagrange/interpolation.hh:107
    \n+
    LagrangePointSetFactory::Key Key
    Definition lagrange/interpolation.hh:93
    \n+
    static Object * create(const Key &key)
    Definition lagrange/interpolation.hh:97
    \n+
    static void release(Object *object)
    Definition lagrange/interpolation.hh:111
    \n+
    const LocalLagrangeInterpolation< LP, dim, F > Object
    Definition lagrange/interpolation.hh:94
    \n+
    Definition lagrange/interpolation.hh:28
    \n+
    LagrangePointSet::Field Field
    Definition lagrange/interpolation.hh:33
    \n+
    const LagrangePointSet & lagrangePoints() const
    Definition lagrange/interpolation.hh:79
    \n+
    static const unsigned int dimension
    Definition lagrange/interpolation.hh:35
    \n+
    LP< F, dim > LagrangePointSet
    Definition lagrange/interpolation.hh:32
    \n+
    Definition lagrangecoefficients.hh:23
    \n+
    static void release(Object *object)
    Definition lagrangecoefficients.hh:42
    \n+
    const typedef LP< F, dim > Object
    Definition lagrangecoefficients.hh:25
    \n+
    std::size_t Key
    Definition lagrangecoefficients.hh:26
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,144 +1,191 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\be_\bt_\ba\n- * _\bp_\bo_\bw_\be_\br\n-meta/power/basis.hh\n+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+lagrange/interpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH\n-7#define DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH\n-8\n-9#include \n-10#include \n-11#include \n-12\n-13#include \n-14#include \n+5#ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH\n+6#define DUNE_LAGRANGEBASIS_INTERPOLATION_HH\n+7\n+8#include \n+9#include \n+10#include \n+11\n+12#include \n+13\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh>\n 15\n-16namespace _\bD_\bu_\bn_\be {\n-17\n-19\n-25 template\n-_\b2_\b6 class _\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs {\n-27 static_assert(Backend::Traits::dimRange == 1,\n-28 \"PowerBasis works only with scalar backends\");\n-29\n-30 // don't use a reference here so this class stays copyable\n-31 const Backend *backend;\n-32\n-33 public:\n-_\b3_\b5 struct _\bT_\br_\ba_\bi_\bt_\bs : public Backend::Traits\n-36 {\n-_\b3_\b8 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = dimR;\n-_\b4_\b0 typedef FieldVector _\bR_\ba_\bn_\bg_\be;\n-41\n-43\n-47 typedef FieldMatrix _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn;\n-49 };\n-50\n-52\n-_\b5_\b8 _\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs(const Backend &backend_) : backend(&backend_) { }\n-59\n-_\b6_\b1 std::size_t _\bs_\bi_\bz_\be () const { return backend->size()*dimR; }\n-_\b6_\b3 std::size_t _\bo_\br_\bd_\be_\br () const { return backend->order(); }\n-64\n-_\b6_\b6 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename Traits::DomainLocal& in,\n-67 std::vector& out) const\n-68 {\n-69 std::vector backendValues;\n-70 backend->evaluateFunction(in, backendValues);\n-71 out.assign(_\bs_\bi_\bz_\be(), typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be(0));\n-72 for(std::size_t d = 0; d < dimR; ++d)\n-73 for(std::size_t i = 0; i < backend->size(); ++i)\n-74 out[d*backend->size()+i][d] = backendValues[i][0];\n-75 }\n-76\n-_\b7_\b8 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename Traits::DomainLocal& in,\n-79 std::vector& out) const\n-80 {\n-81 std::vector backendValues;\n-82 backend->evaluateJacobian(in, backendValues);\n-83 out.assign(_\bs_\bi_\bz_\be(), typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(0));\n-84 for(std::size_t d = 0; d < dimR; ++d)\n-85 for(std::size_t i = 0; i < backend->size(); ++i)\n-86 out[d*backend->size()+i][d] = backendValues[i][0];\n-87 }\n-88\n-_\b9_\b0 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-91 const typename Traits::DomainLocal& in, // position\n-92 std::vector& out) const // return value\n-93 {\n-94 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-95 if (totalOrder == 0) {\n-96 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-97 } else {\n-98 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-99 }\n-100 }\n-101 };\n-102\n-103} // namespace Dune\n-104\n-105#endif // DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+19 template< template class LP,\n+20 unsigned int dim, class F >\n+21 struct LagrangeInterpolationFactory;\n+22\n+23 // LocalLagrangeInterpolation\n+24 // --------------------------\n+25\n+26 template< template class LP, unsigned int dim, class F\n+>\n+_\b2_\b7 class _\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+28 {\n+29 typedef _\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bP_\b,_\bd_\bi_\bm_\b,_\bF_\b _\b> _\bT_\bh_\bi_\bs;\n+30\n+31 public:\n+_\b3_\b2 typedef LP _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt;\n+_\b3_\b3 typedef typename LagrangePointSet::Field _\bF_\bi_\be_\bl_\bd;\n+34\n+_\b3_\b5 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = LagrangePointSet::dimension;\n+36\n+37 private:\n+38 friend struct _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+39 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt &lagrangePoints_;\n+40\n+41 explicit _\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn ( const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt &_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n+)\n+42 : lagrangePoints_( _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs )\n+43 {}\n+44\n+45 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt *points () const { return &lagrangePoints_; }\n+46\n+47 template< class Fn, class Vector >\n+48 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 1 > )\n+const\n+49 -> std::enable_if_t< std::is_invocable_v< const Fn &, decltype( this-\n+>lagrangePoints_.begin()->point() ) > >\n+50 {\n+51 unsigned int index = 0;\n+52 for( const auto &lp : lagrangePoints_ )\n+53 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( fn( lp.point() ), coefficients[ index++ ] );\n+54 }\n+55\n+56 public:\n+57 template< class Fn, class Vector,\n+58 decltype(std::declval().size(),bool{}) = true,\n+59 decltype(std::declval().resize(0u),bool{}) = true>\n+_\b6_\b0 void interpolate ( const Fn &fn, Vector &coefficients ) const\n+61 {\n+62 coefficients.resize( lagrangePoints_.size() );\n+63 interpolate( fn, coefficients, PriorityTag< 42 >() );\n+64 }\n+65\n+66 template< class Basis, class Matrix,\n+67 decltype(std::declval().rows(),bool{}) = true,\n+68 decltype(std::declval().cols(),bool{}) = true,\n+69 decltype(std::declval().resize(0u,0u),bool{}) = true>\n+_\b7_\b0 void interpolate ( const Basis &basis, Matrix &coefficients ) const\n+71 {\n+72 coefficients.resize( lagrangePoints_.size(), basis.size( ) );\n+73\n+74 unsigned int index = 0;\n+75 for( const auto &lp : lagrangePoints_ )\n+76 basis.template evaluate< 0 >( lp.point(), coefficients[index++] );\n+77 }\n+78\n+_\b7_\b9 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt &_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs () const { return lagrangePoints_; }\n+80 };\n+81\n+82\n+83\n+84 // LocalLagrangeInterpolationFactory\n+85 // ---------------------------------\n+86 template< template class LP,\n+87 unsigned int dim, class F >\n+_\b8_\b8 struct _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+89 {\n+_\b9_\b0 typedef _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bL_\bP_\b,_\bd_\bi_\bm_\b,_\bF_\b> _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b9_\b1 typedef typename _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt;\n+92\n+_\b9_\b3 typedef typename _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by _\bK_\be_\by;\n+_\b9_\b4 typedef const _\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bL_\bP_\b,_\bd_\bi_\bm_\b,_\bF_\b _\b> _\bO_\bb_\bj_\be_\bc_\bt;\n+95\n+96 template< GeometryType::Id geometryId >\n+_\b9_\b7 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n+98 {\n+99 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt *lagrangeCoeff\n+100 = LagrangePointSetFactory::template create< geometryId >( key );\n+101 if ( lagrangeCoeff == 0 )\n+102 return 0;\n+103 else\n+104 return new _\bO_\bb_\bj_\be_\bc_\bt( *lagrangeCoeff );\n+105 }\n+106 template< GeometryType::Id geometryId >\n+_\b1_\b0_\b7 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n+108 {\n+109 return true;\n+110 }\n+_\b1_\b1_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object)\n+112 {\n+113 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be( object->points() );\n+114 delete object;\n+115 }\n+116 };\n+117\n+118}\n+119\n+120#endif // #ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs\n-Meta-basis turning a scalar basis into vector-valued basis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:26\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs\n-PowerBasis(const Backend &backend_)\n-Construct a PowerBasis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-Number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:61\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, Backend::Traits::dimDomainGlobal >\n-&order, const typename Traits::DomainLocal &in, std::vector< typename Traits::\n-Range > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:90\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector<\n-typename Traits::Jacobian > &out) const\n-Evaluate Jacobian of all shape functions at given position.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainLocal &in, std::vector<\n-typename Traits::Range > &out) const\n-Evaluate all shape functions at given position.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-Polynomial order of the shape functions for quadrature.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-types of domain and range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-FieldMatrix< typename Traits::RangeField, dimR, Traits::dimDomainGlobal >\n-Jacobian\n-Jacobian properties.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be\n-FieldVector< typename Traits::RangeField, dimR > Range\n-Type used for range values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const std::size_t dimRange\n-Dimension of the range values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt\n+void field_cast(const F1 &f1, F2 &f2)\n+a helper class to cast from one field to another\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn field.hh:159\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n+LagrangeCoefficientsFactory< LP, dim, F > LagrangePointSetFactory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:90\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n+LagrangePointSetFactory::Object LagrangePointSet\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:91\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n+static bool supports(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:107\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+LagrangePointSetFactory::Key Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:93\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bc_\br_\be_\ba_\bt_\be\n+static Object * create(const Key &key)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:97\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:111\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const LocalLagrangeInterpolation< LP, dim, F > Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:94\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+LagrangePointSet::Field Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n+const LagrangePointSet & lagrangePoints() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:79\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n+static const unsigned int dimension\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n+LP< F, dim > LagrangePointSet\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:32\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\br_\be_\bl_\be_\ba_\bs_\be\n+static void release(Object *object)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bb_\bj_\be_\bc_\bt\n+const typedef LP< F, dim > Object\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bK_\be_\by\n+std::size_t Key\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecoefficients.hh:26\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04577.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04577.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basis.hh File Reference\n+dune-localfunctions: interpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    basis.hh File Reference
    \n+
    interpolation.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n+
    #include <algorithm>
    \n+#include <cassert>
    \n+#include <cstddef>
    \n #include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/localfunctions/common/localtoglobaladaptors.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n-#include <dune/localfunctions/whitney/edges0.5/common.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::EdgeS0_5Basis< Geometry, RF >
     Basis for order 0.5 (lowest order) edge elements on simplices. More...
     
    struct  Dune::EdgeS0_5Basis< Geometry, RF >::Traits
     export type traits for function signature More...
    class  Dune::PowerInterpolation< Backend, BasisTraits >
     Meta-interpolation turning a scalar interpolation into vector-valued interpolation. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n- * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n+ * _\bm_\be_\bt_\ba\n+ * _\bp_\bo_\bw_\be_\br\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-basis.hh File Reference\n+interpolation.hh File Reference\n+#include \n+#include \n #include \n #include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>\n-\u00a0 Basis for order 0.5 (lowest order) edge elements on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-\u00a0 export type traits for function signature _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bB_\ba_\bc_\bk_\be_\bn_\bd_\b,_\b _\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b _\b>\n+\u00a0 Meta-interpolation turning a scalar interpolation into vector-valued\n+ interpolation. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04577_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04577_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basis.hh Source File\n+dune-localfunctions: interpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,217 +70,104 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    whitney/edges0.5/basis.hh
    \n+
    meta/power/interpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH
    \n
    8
    \n-
    9#include <cstddef>
    \n-
    10#include <vector>
    \n-
    11
    \n-
    12#include <dune/common/fmatrix.hh>
    \n-
    13#include <dune/common/fvector.hh>
    \n-
    14
    \n-\n-\n-\n+
    9#include <algorithm>
    \n+
    10#include <cassert>
    \n+
    11#include <cstddef>
    \n+
    12#include <vector>
    \n+
    13
    \n+
    14namespace Dune {
    \n+
    15
    \n
    18
    \n-
    19namespace Dune {
    \n-
    20
    \n-
    22 //
    \n-
    23 // Basis
    \n-
    24 //
    \n-
    25
    \n-
    27
    \n-
    35 template<class Geometry, class RF>
    \n-
    \n-\n-
    37 private EdgeS0_5Common<Geometry::mydimension, typename Geometry::ctype>
    \n-
    38 {
    \n-
    39 public:
    \n-
    \n-
    41 struct Traits {
    \n-
    42 typedef typename Geometry::ctype DomainField;
    \n-
    43 static const std::size_t dimDomainLocal = Geometry::mydimension;
    \n-
    44 static const std::size_t dimDomainGlobal = Geometry::coorddimension;
    \n-
    45 typedef FieldVector<DomainField, dimDomainLocal> DomainLocal;
    \n-
    46 typedef FieldVector<DomainField, dimDomainGlobal> DomainGlobal;
    \n-
    47
    \n-
    48 typedef RF RangeField;
    \n-
    49 static const std::size_t dimRange = dimDomainLocal;
    \n-
    50 typedef FieldVector<RangeField, dimRange> Range;
    \n+
    25 template<class Backend, class BasisTraits>
    \n+
    \n+\n+
    27 static_assert(Backend::Traits::dimRange == 1,
    \n+
    28 "PowerInterpolation works only with scalar backends");
    \n+
    29
    \n+
    30 const Backend *backend;
    \n+
    31
    \n+
    32 public:
    \n+
    34 typedef BasisTraits Traits;
    \n+
    35
    \n+
    37
    \n+
    43 PowerInterpolation(const Backend &backend_) : backend(&backend_) { }
    \n+
    44
    \n+
    45 private:
    \n+
    46 template<class F>
    \n+
    47 class ComponentEvaluator
    \n+
    48 {
    \n+
    49 const F &f;
    \n+
    50 std::size_t comp;
    \n
    51
    \n-
    52 typedef FieldMatrix<RangeField, dimRange, dimDomainGlobal> Jacobian;
    \n-
    53 };
    \n-
    \n-
    54
    \n-
    55 private:
    \n-
    56 typedef Dune::Impl::LagrangeSimplexLocalBasis<typename Traits::DomainField,
    \n-
    57 typename Traits::RangeField,
    \n-\n-
    59 1 // Polynomial order
    \n-
    60 > P1LocalBasis;
    \n-\n-
    62
    \n-
    63 static const P1LocalBasis& p1LocalBasis;
    \n-
    64 static const std::size_t dim = Traits::dimDomainLocal;
    \n+
    52 public:
    \n+
    53 ComponentEvaluator(const F &f_, std::size_t comp_) :
    \n+
    54 f(f_), comp(comp_)
    \n+
    55 { }
    \n+
    56
    \n+
    57 typename Backend::Traits::Range operator()(const typename Backend::Traits::DomainLocal &x) const
    \n+
    58 {
    \n+
    59 typename Traits::Range fy = f(x);
    \n+
    60 typename Backend::Traits::Range y;
    \n+
    61 y[0] = fy[comp];
    \n+
    62 return y;
    \n+
    63 }
    \n+
    64 };
    \n
    65
    \n-\n-
    67 using Base::refelem;
    \n-
    68 using Base::s;
    \n-
    69
    \n-
    70 // global values of the Jacobians (gradients) of the p1 basis
    \n-
    71 std::vector<typename P1Basis::Traits::Jacobian> p1j;
    \n-
    72 // edge sizes and orientations
    \n-
    73 std::vector<typename Traits::DomainField> edgel;
    \n-
    74
    \n-
    75 public:
    \n-
    77
    \n-
    83 template<typename VertexOrder>
    \n-
    \n-
    84 EdgeS0_5Basis(const Geometry& geo, const VertexOrder& vertexOrder) :
    \n-
    85 p1j(s, typename P1Basis::Traits::Jacobian(0)), edgel(s)
    \n-
    86 {
    \n-
    87 // use some arbitrary position to evaluate jacobians, they are constant
    \n-
    88 static const typename Traits::DomainLocal xl(0);
    \n-
    89
    \n-
    90 // precompute Jacobian (gradients) of the p1 element
    \n-
    91 P1Basis(p1LocalBasis, geo).evaluateJacobian(xl, p1j);
    \n-
    92
    \n-
    93 // calculate edge sizes and orientations
    \n-
    94 for(std::size_t i = 0; i < s; ++i) {
    \n-
    95 edgel[i] = (geo.corner(refelem.subEntity(i,dim-1,0,dim))-
    \n-
    96 geo.corner(refelem.subEntity(i,dim-1,1,dim))
    \n-
    97 ).two_norm();
    \n-
    98 const typename VertexOrder::iterator& edgeVertexOrder =
    \n-
    99 vertexOrder.begin(dim-1, i);
    \n-
    100 if(edgeVertexOrder[0] > edgeVertexOrder[1])
    \n-
    101 edgel[i] *= -1;
    \n-
    102 }
    \n-
    103 }
    \n-
    \n-
    104
    \n-
    106 std::size_t size () const { return s; }
    \n-
    107
    \n-
    \n-
    109 void evaluateFunction(const typename Traits::DomainLocal& xl,
    \n-
    110 std::vector<typename Traits::Range>& out) const
    \n-
    111 {
    \n-
    112 out.assign(s, typename Traits::Range(0));
    \n-
    113
    \n-
    114 // compute p1 values -- use the local basis directly for that, local and
    \n-
    115 // global values are identical for scalars
    \n-
    116 std::vector<typename P1LocalBasis::Traits::RangeType> p1v;
    \n-
    117 p1LocalBasis.evaluateFunction(xl, p1v);
    \n-
    118
    \n-
    119 for(std::size_t i = 0; i < s; i++) {
    \n-
    120 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);
    \n-
    121 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);
    \n-
    122 out[i].axpy( p1v[i0], p1j[i1][0]);
    \n-
    123 out[i].axpy(-p1v[i1], p1j[i0][0]);
    \n-
    124 out[i] *= edgel[i];
    \n-
    125 }
    \n-
    126 }
    \n-
    \n-
    127
    \n-
    \n-\n-
    130 std::vector<typename Traits::Jacobian>& out) const
    \n-
    131 {
    \n-
    132 out.resize(s);
    \n-
    133
    \n-
    134 for(std::size_t i = 0; i < s; i++) {
    \n-
    135 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);
    \n-
    136 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);
    \n-
    137 for(std::size_t j = 0; j < dim; j++)
    \n-
    138 for(std::size_t k = 0; k < dim; k++)
    \n-
    139 out[i][j][k] = edgel[i] *
    \n-
    140 (p1j[i0][0][k]*p1j[i1][0][j]-p1j[i1][0][k]*p1j[i0][0][j]);
    \n-
    141 }
    \n-
    142 }
    \n-
    \n-
    143
    \n-
    \n-
    145 void partial (const std::array<unsigned int, dim>& order,
    \n-
    146 const typename Traits::DomainLocal& in, // position
    \n-
    147 std::vector<typename Traits::Range>& out) const // return value
    \n-
    148 {
    \n-
    149 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    150 if (totalOrder == 0) {
    \n-
    151 evaluateFunction(in, out);
    \n-
    152 } else if (totalOrder==1) {
    \n-
    153 auto const k = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    154 out.resize(size());
    \n-
    155
    \n-
    156 for (std::size_t i = 0; i < s; i++)
    \n-
    157 {
    \n-
    158 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);
    \n-
    159 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);
    \n-
    160 for(std::size_t j = 0; j < dim; j++)
    \n-
    161 out[i][j] = edgel[i] *
    \n-
    162 (p1j[i0][0][k]*p1j[i1][0][j] - p1j[i1][0][k]*p1j[i0][0][j]);
    \n-
    163 }
    \n-
    164 } else {
    \n-
    165 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    166 }
    \n-
    167 }
    \n-
    \n-
    168
    \n-
    170 std::size_t order () const { return 1; }
    \n-
    171 };
    \n-
    \n-
    172
    \n-
    173 template<class Geometry, class RF>
    \n-
    174 const typename EdgeS0_5Basis<Geometry, RF>::P1LocalBasis&
    \n-
    175 EdgeS0_5Basis<Geometry, RF>::p1LocalBasis = P1LocalBasis();
    \n-
    176
    \n-
    177} // namespace Dune
    \n-
    178
    \n-
    179#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH
    \n-\n-\n-\n+
    66 public:
    \n+
    68
    \n+
    77 template<typename F, typename C>
    \n+
    \n+
    78 void interpolate(const F& f, std::vector<C>& out) const {
    \n+
    79 out.clear();
    \n+
    80 std::vector<C> cout;
    \n+
    81 for(std::size_t d = 0; d < Traits::dimRange; ++d) {
    \n+
    82 // When dropping support for `evaluate()` we can simply use a lambda
    \n+
    83 // instead of ComponentEvaluator. But changing this now would break
    \n+
    84 // PowerInterpolation for FE-implementation outside of dune-localfunctions
    \n+
    85 // which may not have been adjusted so far.
    \n+
    86 backend->interpolate(ComponentEvaluator<std::decay_t<decltype(f)>>(f, d), cout);
    \n+
    87 if(d == 0)
    \n+
    88 out.resize(cout.size()*Traits::dimRange);
    \n+
    89 // make sure the size of cout does not change surprisingly
    \n+
    90 assert(out.size() == cout.size()*Traits::dimRange);
    \n+
    91 std::copy(cout.begin(), cout.end(), out.begin() + d*cout.size());
    \n+
    92 }
    \n+
    93 }
    \n+
    \n+
    94 };
    \n+
    \n+
    95
    \n+
    96} // namespace Dune
    \n+
    97
    \n+
    98#endif // DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Convert a simple scalar local basis into a global basis.
    Definition localtoglobaladaptors.hh:65
    \n-
    void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector< typename Traits::Jacobian > &out) const
    Definition localtoglobaladaptors.hh:125
    \n-
    Basis for order 0.5 (lowest order) edge elements on simplices.
    Definition whitney/edges0.5/basis.hh:38
    \n-
    EdgeS0_5Basis(const Geometry &geo, const VertexOrder &vertexOrder)
    Construct an EdgeS0_5Basis.
    Definition whitney/edges0.5/basis.hh:84
    \n-
    void evaluateJacobian(const typename Traits::DomainLocal &, std::vector< typename Traits::Jacobian > &out) const
    Evaluate all Jacobians.
    Definition whitney/edges0.5/basis.hh:129
    \n-
    void evaluateFunction(const typename Traits::DomainLocal &xl, std::vector< typename Traits::Range > &out) const
    Evaluate all shape functions.
    Definition whitney/edges0.5/basis.hh:109
    \n-
    std::size_t size() const
    number of shape functions
    Definition whitney/edges0.5/basis.hh:106
    \n-
    void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition whitney/edges0.5/basis.hh:145
    \n-
    std::size_t order() const
    Polynomial order of the shape functions.
    Definition whitney/edges0.5/basis.hh:170
    \n-
    export type traits for function signature
    Definition whitney/edges0.5/basis.hh:41
    \n-
    FieldVector< DomainField, dimDomainGlobal > DomainGlobal
    Definition whitney/edges0.5/basis.hh:46
    \n-
    static const std::size_t dimRange
    Definition whitney/edges0.5/basis.hh:49
    \n-
    static const std::size_t dimDomainLocal
    Definition whitney/edges0.5/basis.hh:43
    \n-
    FieldMatrix< RangeField, dimRange, dimDomainGlobal > Jacobian
    Definition whitney/edges0.5/basis.hh:52
    \n-
    static const std::size_t dimDomainGlobal
    Definition whitney/edges0.5/basis.hh:44
    \n-
    RF RangeField
    Definition whitney/edges0.5/basis.hh:48
    \n-
    FieldVector< DomainField, dimDomainLocal > DomainLocal
    Definition whitney/edges0.5/basis.hh:45
    \n-
    FieldVector< RangeField, dimRange > Range
    Definition whitney/edges0.5/basis.hh:50
    \n-
    Geometry::ctype DomainField
    Definition whitney/edges0.5/basis.hh:42
    \n-
    Common base class for edge elements.
    Definition common.hh:23
    \n-
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:30
    \n-
    std::size_t s
    The number of base functions.
    Definition common.hh:38
    \n+
    Meta-interpolation turning a scalar interpolation into vector-valued interpolation.
    Definition meta/power/interpolation.hh:26
    \n+
    BasisTraits Traits
    Export basis traits.
    Definition meta/power/interpolation.hh:34
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    Definition meta/power/interpolation.hh:78
    \n+
    PowerInterpolation(const Backend &backend_)
    Construct a PowerInterpolation.
    Definition meta/power/interpolation.hh:43
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,255 +1,107 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n- * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n-whitney/edges0.5/basis.hh\n+ * _\bm_\be_\bt_\ba\n+ * _\bp_\bo_\bw_\be_\br\n+meta/power/interpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 5\n-6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH\n-7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH\n+6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH\n+7#define DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH\n 8\n-9#include \n-10#include \n-11\n-12#include \n-13#include \n-14\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-16#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-17#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+9#include \n+10#include \n+11#include \n+12#include \n+13\n+14namespace _\bD_\bu_\bn_\be {\n+15\n 18\n-19namespace _\bD_\bu_\bn_\be {\n-20\n-22 //\n-23 // Basis\n-24 //\n-25\n-27\n-35 template\n-_\b3_\b6 class _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs :\n-37 private _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n-38 {\n-39 public:\n-_\b4_\b1 struct _\bT_\br_\ba_\bi_\bt_\bs {\n-_\b4_\b2 typedef typename Geometry::ctype _\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd;\n-_\b4_\b3 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl = Geometry::mydimension;\n-_\b4_\b4 static const std::size_t _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl = Geometry::coorddimension;\n-_\b4_\b5 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n-_\b4_\b6 typedef FieldVector _\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl;\n-47\n-_\b4_\b8 typedef RF _\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd;\n-_\b4_\b9 static const std::size_t _\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be = _\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n-_\b5_\b0 typedef FieldVector _\bR_\ba_\bn_\bg_\be;\n+25 template\n+_\b2_\b6 class _\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn {\n+27 static_assert(Backend::Traits::dimRange == 1,\n+28 \"PowerInterpolation works only with scalar backends\");\n+29\n+30 const Backend *backend;\n+31\n+32 public:\n+_\b3_\b4 typedef BasisTraits _\bT_\br_\ba_\bi_\bt_\bs;\n+35\n+37\n+_\b4_\b3 _\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(const Backend &backend_) : backend(&backend_) { }\n+44\n+45 private:\n+46 template\n+47 class ComponentEvaluator\n+48 {\n+49 const F &f;\n+50 std::size_t comp;\n 51\n-_\b5_\b2 typedef FieldMatrix _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn;\n-53 };\n-54\n-55 private:\n-56 typedef Dune::Impl::LagrangeSimplexLocalBasis P1LocalBasis;\n-61 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bP_\b1_\bB_\ba_\bs_\bi_\bs;\n-62\n-63 static const P1LocalBasis& p1LocalBasis;\n-64 static const std::size_t dim = _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl;\n+52 public:\n+53 ComponentEvaluator(const F &f_, std::size_t comp_) :\n+54 f(f_), comp(comp_)\n+55 { }\n+56\n+57 typename Backend::Traits::Range operator()(const typename Backend::Traits::\n+DomainLocal &x) const\n+58 {\n+59 typename Traits::Range fy = f(x);\n+60 typename Backend::Traits::Range y;\n+61 y[0] = fy[comp];\n+62 return y;\n+63 }\n+64 };\n 65\n-66 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b:_\b:_\bc_\bt_\by_\bp_\be_\b> _\bB_\ba_\bs_\be;\n-67 using _\bB_\ba_\bs_\be_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm;\n-68 using _\bB_\ba_\bs_\be_\b:_\b:_\bs;\n-69\n-70 // global values of the Jacobians (gradients) of the p1 basis\n-71 std::vector p1j;\n-72 // edge sizes and orientations\n-73 std::vector edgel;\n-74\n-75 public:\n-77\n-83 template\n-_\b8_\b4 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs(const Geometry& geo, const VertexOrder& vertexOrder) :\n-85 p1j(s, typename _\bP_\b1_\bB_\ba_\bs_\bi_\bs::_\bT_\br_\ba_\bi_\bt_\bs::Jacobian(0)), edgel(s)\n-86 {\n-87 // use some arbitrary position to evaluate jacobians, they are constant\n-88 static const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl xl(0);\n-89\n-90 // precompute Jacobian (gradients) of the p1 element\n-91 _\bP_\b1_\bB_\ba_\bs_\bi_\bs(p1LocalBasis, geo)._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(xl, p1j);\n-92\n-93 // calculate edge sizes and orientations\n-94 for(std::size_t i = 0; i < s; ++i) {\n-95 edgel[i] = (geo.corner(refelem.subEntity(i,dim-1,0,dim))-\n-96 geo.corner(refelem.subEntity(i,dim-1,1,dim))\n-97 ).two_norm();\n-98 const typename VertexOrder::iterator& edgeVertexOrder =\n-99 vertexOrder.begin(dim-1, i);\n-100 if(edgeVertexOrder[0] > edgeVertexOrder[1])\n-101 edgel[i] *= -1;\n-102 }\n-103 }\n-104\n-_\b1_\b0_\b6 std::size_t _\bs_\bi_\bz_\be () const { return s; }\n-107\n-_\b1_\b0_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& xl,\n-110 std::vector& out) const\n-111 {\n-112 out.assign(s, typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be(0));\n-113\n-114 // compute p1 values -- use the local basis directly for that, local and\n-115 // global values are identical for scalars\n-116 std::vector p1v;\n-117 p1LocalBasis.evaluateFunction(xl, p1v);\n-118\n-119 for(std::size_t i = 0; i < s; i++) {\n-120 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);\n-121 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);\n-122 out[i].axpy( p1v[i0], p1j[i1][0]);\n-123 out[i].axpy(-p1v[i1], p1j[i0][0]);\n-124 out[i] *= edgel[i];\n-125 }\n-126 }\n-127\n-_\b1_\b2_\b9 void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl&,\n-130 std::vector& out) const\n-131 {\n-132 out.resize(s);\n-133\n-134 for(std::size_t i = 0; i < s; i++) {\n-135 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);\n-136 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);\n-137 for(std::size_t j = 0; j < dim; j++)\n-138 for(std::size_t k = 0; k < dim; k++)\n-139 out[i][j][k] = edgel[i] *\n-140 (p1j[i0][0][k]*p1j[i1][0][j]-p1j[i1][0][k]*p1j[i0][0][j]);\n-141 }\n-142 }\n-143\n-_\b1_\b4_\b5 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-146 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl& in, // position\n-147 std::vector& out) const // return value\n-148 {\n-149 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-150 if (totalOrder == 0) {\n-151 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-152 } else if (totalOrder==1) {\n-153 auto const k = std::distance(_\bo_\br_\bd_\be_\br.begin(), std::find(_\bo_\br_\bd_\be_\br.begin(),\n-_\bo_\br_\bd_\be_\br.end(), 1));\n-154 out.resize(_\bs_\bi_\bz_\be());\n-155\n-156 for (std::size_t i = 0; i < s; i++)\n-157 {\n-158 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);\n-159 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);\n-160 for(std::size_t j = 0; j < dim; j++)\n-161 out[i][j] = edgel[i] *\n-162 (p1j[i0][0][k]*p1j[i1][0][j] - p1j[i1][0][k]*p1j[i0][0][j]);\n-163 }\n-164 } else {\n-165 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-166 }\n-167 }\n-168\n-_\b1_\b7_\b0 std::size_t _\bo_\br_\bd_\be_\br () const { return 1; }\n-171 };\n-172\n-173 template\n-174 const typename EdgeS0_5Basis::P1LocalBasis&\n-175 EdgeS0_5Basis::p1LocalBasis = P1LocalBasis();\n-176\n-177} // namespace Dune\n-178\n-179#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+66 public:\n+68\n+77 template\n+_\b7_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const {\n+79 out.clear();\n+80 std::vector cout;\n+81 for(std::size_t d = 0; d < Traits::dimRange; ++d) {\n+82 // When dropping support for `evaluate()` we can simply use a lambda\n+83 // instead of ComponentEvaluator. But changing this now would break\n+84 // PowerInterpolation for FE-implementation outside of dune-localfunctions\n+85 // which may not have been adjusted so far.\n+86 backend->interpolate(ComponentEvaluator>(f, d),\n+cout);\n+87 if(d == 0)\n+88 out.resize(cout.size()*Traits::dimRange);\n+89 // make sure the size of cout does not change surprisingly\n+90 assert(out.size() == cout.size()*Traits::dimRange);\n+91 std::copy(cout.begin(), cout.end(), out.begin() + d*cout.size());\n+92 }\n+93 }\n+94 };\n+95\n+96} // namespace Dune\n+97\n+98#endif // DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-Convert a simple scalar local basis into a global basis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainLocal &in, std::vector<\n-typename Traits::Jacobian > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:125\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs\n-Basis for order 0.5 (lowest order) edge elements on simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs\n-EdgeS0_5Basis(const Geometry &geo, const VertexOrder &vertexOrder)\n-Construct an EdgeS0_5Basis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:84\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainLocal &, std::vector<\n-typename Traits::Jacobian > &out) const\n-Evaluate all Jacobians.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:129\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainLocal &xl, std::vector<\n-typename Traits::Range > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:109\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:106\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, dim > &order, const typename\n-Traits::DomainLocal &in, std::vector< typename Traits::Range > &out) const\n-Evaluate partial derivatives of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:145\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:170\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl\n-FieldVector< DomainField, dimDomainGlobal > DomainGlobal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bR_\ba_\bn_\bg_\be\n-static const std::size_t dimRange\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n-static const std::size_t dimDomainLocal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-FieldMatrix< RangeField, dimRange, dimDomainGlobal > Jacobian\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:52\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bd_\bi_\bm_\bD_\bo_\bm_\ba_\bi_\bn_\bG_\bl_\bo_\bb_\ba_\bl\n-static const std::size_t dimDomainGlobal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bF_\bi_\be_\bl_\bd\n-RF RangeField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bL_\bo_\bc_\ba_\bl\n-FieldVector< DomainField, dimDomainLocal > DomainLocal\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:45\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be\n-FieldVector< RangeField, dimRange > Range\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:50\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd\n-Geometry::ctype DomainField\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/basis.hh:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n-Common base class for edge elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm\n-RefElem refelem\n-The reference element for this edge element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs\n-std::size_t s\n-The number of base functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Meta-interpolation turning a scalar interpolation into vector-valued\n+interpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:26\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+BasisTraits Traits\n+Export basis traits.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Determine coefficients interpolating a given function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:78\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\bo_\bw_\be_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+PowerInterpolation(const Backend &backend_)\n+Construct a PowerInterpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/interpolation.hh:43\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04580.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04580.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: coefficients.hh File Reference\n+dune-localfunctions: interpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    coefficients.hh File Reference
    \n+
    interpolation.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n #include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/localfunctions/whitney/edges0.5/common.hh>
    \n
    \n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::PowerCoefficients
     Meta-coefficients turning a scalar coefficients into vector-valued coefficients. More...
    class  Dune::EdgeS0_5Interpolation< Geometry, Traits_ >
     Interpolation for lowest order edge elements on simplices. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\be_\bt_\ba\n- * _\bp_\bo_\bw_\be_\br\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+ * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-coefficients.hh File Reference\n+interpolation.hh File Reference\n #include \n #include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Meta-coefficients turning a scalar coefficients into vector-valued\n- coefficients. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bT_\br_\ba_\bi_\bt_\bs_\b__\b _\b>\n+\u00a0 Interpolation for lowest order edge elements on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04580_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04580_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: coefficients.hh Source File\n+dune-localfunctions: interpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,75 +70,111 @@\n
    \n \n \n \n \n \n \n
    \n-
    meta/power/coefficients.hh
    \n+
    whitney/edges0.5/interpolation.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH
    \n
    8
    \n
    9#include <cstddef>
    \n
    10#include <vector>
    \n
    11
    \n-\n+\n
    13
    \n
    14namespace Dune {
    \n
    15
    \n-
    18
    \n-
    \n-\n-
    24 std::vector<LocalKey> keys;
    \n-
    25
    \n-
    26 public:
    \n-
    28
    \n-
    36 template<class Backend>
    \n-
    \n-
    37 PowerCoefficients(const Backend &backend, std::size_t power) :
    \n-
    38 keys(backend.size()*power)
    \n-
    39 {
    \n-
    40 for(std::size_t i = 0; i < backend.size(); ++i) {
    \n-
    41 const LocalKey &k = backend.localKey(i);
    \n-
    42 for(std::size_t d = 0; d < power; ++d)
    \n-
    43 keys[i+d*backend.size()] =
    \n-
    44 LocalKey(k.subEntity(), k.codim(), power*k.index() + d);
    \n-
    45 }
    \n-
    46 }
    \n-
    \n-
    48 inline std::size_t size() const { return keys.size(); }
    \n-
    49
    \n-
    51 inline const LocalKey& localKey(std::size_t i) const { return keys[i]; }
    \n-
    52 };
    \n-
    \n-
    53
    \n-
    54} // namespace Dune
    \n-
    55
    \n-
    56#endif // DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
    \n-\n+
    17 //
    \n+
    18 // Interpolation
    \n+
    19 //
    \n+
    20
    \n+
    22
    \n+
    29 template<class Geometry, class Traits_>
    \n+
    \n+\n+
    31 private EdgeS0_5Common<Traits_::dimDomainLocal,
    \n+
    32 typename Traits_::DomainField>
    \n+
    33 {
    \n+
    34 public:
    \n+
    35 typedef Traits_ Traits;
    \n+
    36
    \n+
    37 private:
    \n+
    38 static const std::size_t dim = Traits::dimDomainLocal;
    \n+\n+
    40 using Base::refelem;
    \n+
    41 using Base::s;
    \n+
    42
    \n+
    43 std::vector<typename Traits::DomainGlobal> edgev;
    \n+
    44
    \n+
    45 public:
    \n+
    47
    \n+
    53 template<typename VertexOrder>
    \n+
    \n+
    54 EdgeS0_5Interpolation(const Geometry& geo,
    \n+
    55 const VertexOrder& vertexOrder) :
    \n+
    56 edgev(s)
    \n+
    57 {
    \n+
    58 for(std::size_t i = 0; i < s; ++i) {
    \n+
    59 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);
    \n+
    60 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);
    \n+
    61
    \n+
    62 edgev[i] = geo.corner(i1);
    \n+
    63 edgev[i] -= geo.corner(i0);
    \n+
    64 edgev[i] /= edgev[i].two_norm();
    \n+
    65
    \n+
    66 const typename VertexOrder::iterator& edgeVertexOrder =
    \n+
    67 vertexOrder.begin(dim-1, i);
    \n+
    68 if(edgeVertexOrder[0] > edgeVertexOrder[1])
    \n+
    69 edgev[i] *= -1;
    \n+
    70 }
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    74 template<typename F, typename C>
    \n+
    \n+
    75 void interpolate(const F& f, std::vector<C>& out) const {
    \n+
    76 typename Traits::Range y;
    \n+
    77
    \n+
    78 out.resize(s);
    \n+
    79
    \n+
    80 for(std::size_t i = 0; i < s; ++i) {
    \n+
    81 y = f(refelem.position(i,dim-1));
    \n+
    82
    \n+
    83 out[i] = y * edgev[i];
    \n+
    84 }
    \n+
    85 }
    \n+
    \n+
    86 };
    \n+
    \n+
    87
    \n+
    88} // namespace Dune
    \n+
    89
    \n+
    90#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    constexpr unsigned int index() const noexcept
    Return offset within subentity.
    Definition localkey.hh:70
    \n-
    constexpr unsigned int codim() const noexcept
    Return codim of associated entity.
    Definition localkey.hh:63
    \n-
    constexpr unsigned int subEntity() const noexcept
    Return number of associated subentity.
    Definition localkey.hh:56
    \n-
    Meta-coefficients turning a scalar coefficients into vector-valued coefficients.
    Definition meta/power/coefficients.hh:23
    \n-
    std::size_t size() const
    number of coefficients
    Definition meta/power/coefficients.hh:48
    \n-
    PowerCoefficients(const Backend &backend, std::size_t power)
    Construct a PowerCoefficients object.
    Definition meta/power/coefficients.hh:37
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition meta/power/coefficients.hh:51
    \n+
    Common base class for edge elements.
    Definition common.hh:23
    \n+
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:30
    \n+
    std::size_t s
    The number of base functions.
    Definition common.hh:38
    \n+
    Interpolation for lowest order edge elements on simplices.
    Definition whitney/edges0.5/interpolation.hh:33
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Interpolation of a function.
    Definition whitney/edges0.5/interpolation.hh:75
    \n+
    Traits_ Traits
    Definition whitney/edges0.5/interpolation.hh:35
    \n+
    EdgeS0_5Interpolation(const Geometry &geo, const VertexOrder &vertexOrder)
    constructor
    Definition whitney/edges0.5/interpolation.hh:54
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,87 +1,116 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bm_\be_\bt_\ba\n- * _\bp_\bo_\bw_\be_\br\n-meta/power/coefficients.hh\n+ * _\bw_\bh_\bi_\bt_\bn_\be_\by\n+ * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n+whitney/edges0.5/interpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n 5\n-6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH\n-7#define DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH\n+6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH\n+7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH\n 8\n 9#include \n 10#include \n 11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n+12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n 13\n 14namespace _\bD_\bu_\bn_\be {\n 15\n-18\n-_\b2_\b3 class _\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs {\n-24 std::vector keys;\n-25\n-26 public:\n-28\n-36 template\n-_\b3_\b7 _\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const Backend &backend, std::size_t power) :\n-38 keys(backend._\bs_\bi_\bz_\be()*power)\n-39 {\n-40 for(std::size_t i = 0; i < backend.size(); ++i) {\n-41 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &k = backend.localKey(i);\n-42 for(std::size_t d = 0; d < power; ++d)\n-43 keys[i+d*backend.size()] =\n-44 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(k._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by(), k._\bc_\bo_\bd_\bi_\bm(), power*k._\bi_\bn_\bd_\be_\bx() + d);\n-45 }\n-46 }\n-_\b4_\b8 inline std::size_t _\bs_\bi_\bz_\be() const { return keys.size(); }\n-49\n-_\b5_\b1 inline const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const { return keys[i]; }\n-52 };\n-53\n-54} // namespace Dune\n-55\n-56#endif // DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+17 //\n+18 // Interpolation\n+19 //\n+20\n+22\n+29 template\n+_\b3_\b0 class _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn :\n+31 private _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n+33 {\n+34 public:\n+_\b3_\b5 typedef Traits_ _\bT_\br_\ba_\bi_\bt_\bs;\n+36\n+37 private:\n+38 static const std::size_t dim = Traits::dimDomainLocal;\n+39 typedef _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b<_\bd_\bi_\bm_\b,_\b _\bt_\by_\bp_\be_\bn_\ba_\bm_\be_\b _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bF_\bi_\be_\bl_\bd_\b> _\bB_\ba_\bs_\be;\n+40 using _\bB_\ba_\bs_\be_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm;\n+41 using _\bB_\ba_\bs_\be_\b:_\b:_\bs;\n+42\n+43 std::vector edgev;\n+44\n+45 public:\n+47\n+53 template\n+_\b5_\b4 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(const Geometry& geo,\n+55 const VertexOrder& vertexOrder) :\n+56 edgev(s)\n+57 {\n+58 for(std::size_t i = 0; i < s; ++i) {\n+59 const std::size_t i0 = refelem.subEntity(i,dim-1,0,dim);\n+60 const std::size_t i1 = refelem.subEntity(i,dim-1,1,dim);\n+61\n+62 edgev[i] = geo.corner(i1);\n+63 edgev[i] -= geo.corner(i0);\n+64 edgev[i] /= edgev[i].two_norm();\n+65\n+66 const typename VertexOrder::iterator& edgeVertexOrder =\n+67 vertexOrder.begin(dim-1, i);\n+68 if(edgeVertexOrder[0] > edgeVertexOrder[1])\n+69 edgev[i] *= -1;\n+70 }\n+71 }\n+72\n+74 template\n+_\b7_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& f, std::vector& out) const {\n+76 typename Traits::Range y;\n+77\n+78 out.resize(s);\n+79\n+80 for(std::size_t i = 0; i < s; ++i) {\n+81 y = f(refelem.position(i,dim-1));\n+82\n+83 out[i] = y * edgev[i];\n+84 }\n+85 }\n+86 };\n+87\n+88} // namespace Dune\n+89\n+90#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH\n+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-constexpr unsigned int index() const noexcept\n-Return offset within subentity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm\n-constexpr unsigned int codim() const noexcept\n-Return codim of associated entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n-constexpr unsigned int subEntity() const noexcept\n-Return number of associated subentity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Meta-coefficients turning a scalar coefficients into vector-valued\n-coefficients.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-PowerCoefficients(const Backend &backend, std::size_t power)\n-Construct a PowerCoefficients object.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:37\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n+Common base class for edge elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\br_\be_\bf_\be_\bl_\be_\bm\n+RefElem refelem\n+The reference element for this edge element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs\n+std::size_t s\n+The number of base functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Interpolation for lowest order edge elements on simplices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+Interpolation of a function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:75\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+Traits_ Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+EdgeS0_5Interpolation(const Geometry &geo, const VertexOrder &vertexOrder)\n+constructor\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/interpolation.hh:54\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04583.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04583.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: coefficients.hh File Reference\n+dune-localfunctions: rannacherturek.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    coefficients.hh File Reference
    \n+
    rannacherturek.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/whitney/edges0.5/common.hh>
    \n+\n

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::EdgeS0_5Coefficients< dim >
     Coefficients for lowest order edge elements on simplices. More...
    struct  Dune::RannacherTurekLocalFiniteElement< D, R, d >
     Rannacher-Turek shape functions. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n- * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-coefficients.hh File Reference\n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n+rannacherturek.hh File Reference\n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n+#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\bi_\bm_\b _\b>\n-\u00a0 Coefficients for lowest order edge elements on simplices. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n+\u00a0 Rannacher-Turek shape functions. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04583_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04583_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: coefficients.hh Source File\n+dune-localfunctions: rannacherturek.hh Source File\n \n \n \n \n \n \n \n@@ -70,76 +70,111 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    whitney/edges0.5/coefficients.hh
    \n+
    rannacherturek/rannacherturek.hh
    \n
    \n
    \n Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH
    \n-
    8
    \n-
    9#include <cstddef>
    \n-
    10#include <vector>
    \n+
    5#ifndef DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH
    \n+
    7
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n
    11
    \n-\n-\n-
    14
    \n-
    15namespace Dune {
    \n-
    16
    \n-
    18 //
    \n-
    19 // Coefficients
    \n-
    20 //
    \n-
    21
    \n-
    23
    \n-
    30 template<std::size_t dim>
    \n-
    \n-
    31 class EdgeS0_5Coefficients : private EdgeS0_5Common<dim> {
    \n-
    32 using EdgeS0_5Common<dim>::s;
    \n-
    33
    \n-
    34 std::vector<LocalKey> li;
    \n-
    35
    \n-
    36 public:
    \n+\n+\n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    28 template< class D, class R, unsigned int d >
    \n+
    \n+\n+
    30 {
    \n+\n+\n+\n+\n+
    36
    \n
    \n-\n-
    39 for(std::size_t i = 0; i < s; i++)
    \n-
    40 li[i] = LocalKey(i, dim-1, 0);
    \n+
    38 const typename Traits::LocalBasisType &localBasis () const
    \n+
    39 {
    \n+
    40 return localBasis_;
    \n
    41 }
    \n
    \n
    42
    \n-
    44 std::size_t size () const { return s; }
    \n-
    45
    \n-
    47 const LocalKey& localKey(std::size_t i) const { return li[i]; }
    \n-
    48 };
    \n-
    \n-
    49
    \n-
    50} // namespace Dune
    \n-
    51
    \n-
    52#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH
    \n-\n-\n+
    \n+\n+
    45 {
    \n+
    46 return localCoefficients_;
    \n+
    47 }
    \n+
    \n+
    48
    \n+
    \n+\n+
    51 {
    \n+
    52 return localInterpolation_;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+
    56 unsigned int size () const
    \n+
    57 {
    \n+
    58 return localBasis_.size();
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    62 GeometryType type () const
    \n+
    63 {
    \n+
    64 return GeometryTypes::cube(d);
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    67 private:
    \n+
    68 typename Traits::LocalBasisType localBasis_;
    \n+
    69 typename Traits::LocalCoefficientsType localCoefficients_;
    \n+
    70 typename Traits::LocalInterpolationType localInterpolation_;
    \n+
    71 };
    \n+
    \n+
    72
    \n+
    73} // namespace Dune
    \n+
    74
    \n+
    75#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    Coefficients for lowest order edge elements on simplices.
    Definition whitney/edges0.5/coefficients.hh:31
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition whitney/edges0.5/coefficients.hh:47
    \n-
    EdgeS0_5Coefficients()
    Standard constructor.
    Definition whitney/edges0.5/coefficients.hh:38
    \n-
    std::size_t size() const
    number of coefficients
    Definition whitney/edges0.5/coefficients.hh:44
    \n-
    Common base class for edge elements.
    Definition common.hh:23
    \n-
    std::size_t s
    The number of base functions.
    Definition common.hh:38
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Rannacher-Turek shape functions.
    Definition rannacherturek/rannacherturek.hh:30
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition rannacherturek/rannacherturek.hh:56
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    return local interpolation
    Definition rannacherturek/rannacherturek.hh:50
    \n+
    GeometryType type() const
    return geometry type
    Definition rannacherturek/rannacherturek.hh:62
    \n+
    const Traits::LocalBasisType & localBasis() const
    return local basis
    Definition rannacherturek/rannacherturek.hh:38
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    return local coefficients
    Definition rannacherturek/rannacherturek.hh:44
    \n+
    LocalFiniteElementTraits< RannacherTurekLocalBasis< D, R, d >, RannacherTurekLocalCoefficients< d >, RannacherTurekLocalInterpolation< D, R, d > > Traits
    export traits class
    Definition rannacherturek/rannacherturek.hh:35
    \n+
    layout for Rannacher-Turek elements
    Definition rannachertureklocalcoefficients.hh:27
    \n+
    please doc me
    Definition rannachertureklocalinterpolation.hh:31
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,83 +1,125 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bw_\bh_\bi_\bt_\bn_\be_\by\n- * _\be_\bd_\bg_\be_\bs_\b0_\b._\b5\n-whitney/edges0.5/coefficients.hh\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+rannacherturek/rannacherturek.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH\n-7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH\n-8\n-9#include \n-10#include \n+5#ifndef DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH\n+6#define DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH\n+7\n+8#include \n+9\n+10#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n 11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bw_\bh_\bi_\bt_\bn_\be_\by_\b/_\be_\bd_\bg_\be_\bs_\b0_\b._\b5_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh>\n-14\n-15namespace _\bD_\bu_\bn_\be {\n-16\n-18 //\n-19 // Coefficients\n-20 //\n-21\n-23\n-30 template\n-_\b3_\b1 class _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs : private _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn {\n-32 using _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs;\n-33\n-34 std::vector li;\n-35\n-36 public:\n-_\b3_\b8 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(_\bs) {\n-39 for(std::size_t i = 0; i < _\bs; i++)\n-40 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i, dim-1, 0);\n+12#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+14#include \"_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+28 template< class D, class R, unsigned int d >\n+_\b2_\b9 struct _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+30 {\n+32 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>,\n+33 _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\b _\b>,\n+34 _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n+_\b3_\b5 > _\bT_\br_\ba_\bi_\bt_\bs;\n+36\n+_\b3_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be &_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+39 {\n+40 return localBasis_;\n 41 }\n 42\n-_\b4_\b4 std::size_t _\bs_\bi_\bz_\be () const { return _\bs; }\n-45\n-_\b4_\b7 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by(std::size_t i) const { return li[i]; }\n-48 };\n-49\n-50} // namespace Dune\n-51\n-52#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n+_\b4_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be &_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+45 {\n+46 return localCoefficients_;\n+47 }\n+48\n+_\b5_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be &_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+51 {\n+52 return localInterpolation_;\n+53 }\n+54\n+_\b5_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+57 {\n+58 return localBasis_.size();\n+59 }\n+60\n+_\b6_\b2 GeometryType _\bt_\by_\bp_\be () const\n+63 {\n+64 return GeometryTypes::cube(d);\n+65 }\n+66\n+67 private:\n+68 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be localBasis_;\n+69 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be localCoefficients_;\n+70 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be localInterpolation_;\n+71 };\n+72\n+73} // namespace Dune\n+74\n+75#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALFINITEELEMENT_HH\n+_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Coefficients for lowest order edge elements on simplices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by\n-const LocalKey & localKey(std::size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-EdgeS0_5Coefficients()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-std::size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn\n-Common base class for edge elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs\n-std::size_t s\n-The number of base functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Rannacher-Turek shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:56\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+return local interpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+GeometryType type() const\n+return geometry type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+return local basis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:38\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+return local coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RannacherTurekLocalBasis< D, R, d >,\n+RannacherTurekLocalCoefficients< d >, RannacherTurekLocalInterpolation< D, R, d\n+> > Traits\n+export traits class\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek/rannacherturek.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+layout for Rannacher-Turek elements\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+please doc me\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalinterpolation.hh:31\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04586.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04586.html", "unified_diff": "@@ -77,17 +77,17 @@\n Classes |\n Namespaces \n
    localfiniteelement.hh File Reference
    \n \n
    \n \n

    Go to the source code of this file.

    \n \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04586_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04586_source.html", "unified_diff": "@@ -87,17 +87,17 @@\n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n
    5#ifndef DUNE_GENERIC_LOCALFINITEELEMENT_HH
    \n
    6#define DUNE_GENERIC_LOCALFINITEELEMENT_HH
    \n
    7
    \n
    8#include <dune/geometry/type.hh>
    \n
    9#include <dune/geometry/typeindex.hh>
    \n
    10
    \n-\n-\n-\n+\n+\n+\n
    14
    \n
    15namespace Dune
    \n
    16{
    \n
    23 template< class BasisF, class CoeffF, class InterpolF>
    \n
    \n \n
    25 {
    \n@@ -257,17 +257,17 @@\n
    184 {}
    \n
    \n
    185 };
    \n \n
    186}
    \n
    187
    \n
    188#endif
    \n-\n-\n-\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n
    A factory class for the dg local coefficients.
    Definition dglocalcoefficients.hh:59
    \n
    A factory class for the local l2 interpolations taking a basis factory.
    Definition l2interpolation.hh:163
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04589.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04589.html", "unified_diff": "@@ -77,16 +77,16 @@\n Namespaces |\n Functions\n
    localfiniteelement.hh File Reference
    \n \n
    \n
    #include <dune/python/pybind11/pybind11.h>
    \n #include <dune/common/visibility.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/common/virtualinterface.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/localfunctions/common/virtualinterface.hh>
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    struct  Dune::GenericLocalFiniteElement< BasisF, CoeffF, InterpolF >
     A LocalFiniteElement implementation based on three TopologyFactories providing the LocalBasis, LocalCoefficients, and LocalInterpolations. Note the key type for all three factories must coincide. More...
    \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04589_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04589_source.html", "unified_diff": "@@ -85,16 +85,16 @@\n
    2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n
    3#ifndef DUNE_PYTHON_LOCALFUNCTIONS_LOCALFINITEELEMENT_HH
    \n
    4#define DUNE_PYTHON_LOCALFUNCTIONS_LOCALFINITEELEMENT_HH
    \n
    5
    \n
    6#include <dune/python/pybind11/pybind11.h>
    \n
    7
    \n
    8#include <dune/common/visibility.hh>
    \n-\n-\n+\n+\n
    11
    \n
    12namespace Dune {
    \n
    \n
    13namespace Python {
    \n
    14
    \n
    15namespace detail {
    \n
    16
    \n@@ -157,16 +157,16 @@\n
    71
    \n
    72
    \n
    73} /* namespace Python */
    \n
    \n
    74} /* namespace Dune */
    \n
    75
    \n
    76#endif
    \n-\n-\n+\n+\n
    Definition bdfmcube.hh:18
    \n
    DUNE_EXPORT auto registerLocalFiniteElement(pybind11::handle scope, const char *name="LocalFiniteElement")
    Definition python/localfunctions/localfiniteelement.hh:56
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n
    constexpr unsigned int index() const noexcept
    Return offset within subentity.
    Definition localkey.hh:70
    \n
    constexpr unsigned int codim() const noexcept
    Return codim of associated entity.
    Definition localkey.hh:63
    \n
    constexpr unsigned int subEntity() const noexcept
    Return number of associated subentity.
    Definition localkey.hh:56
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -88,16 +88,16 @@\n 70}\n 71\n 72\n 73} /* namespace Python */\n 74} /* namespace Dune */\n 75\n 76#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bv_\bi_\br_\bt_\bu_\ba_\bl_\bi_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b._\bh_\bh\n+_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bP_\by_\bt_\bh_\bo_\bn_\b:_\b:_\br_\be_\bg_\bi_\bs_\bt_\be_\br_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n DUNE_EXPORT auto registerLocalFiniteElement(pybind11::handle scope, const char\n *name=\"LocalFiniteElement\")\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn python/localfunctions/localfiniteelement.hh:56\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000000_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000000_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasfortinmarini → common Relation

    \n Namespaces

    namespace  Dune
     
    File in dune/localfunctions/brezzidouglasfortinmariniIncludes file in dune/localfunctions/common
    bdfmcube.hhlocalfiniteelementtraits.hh
    cube / brezzidouglasfortinmarini/cube/localbasis.hhcommon/localbasis.hh
    cube / brezzidouglasfortinmarini/cube/localcoefficients.hhlocalkey.hh
    \n+

    brezzidouglasfortinmarini → common Relation

    File in dune/localfunctions/brezzidouglasfortinmariniIncludes file in dune/localfunctions/common
    bdfmcube.hhlocalfiniteelementtraits.hh
    cube / brezzidouglasfortinmarini/cube/localbasis.hhcommon/localbasis.hh
    cube / brezzidouglasfortinmarini/cube/localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000000_000009.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000000_000009.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasfortinmarini → cube Relation

    File in dune/localfunctions/brezzidouglasfortinmariniIncludes file in dune/localfunctions/brezzidouglasfortinmarini/cube
    bdfmcube.hhbrezzidouglasfortinmarini/cube/localbasis.hh
    bdfmcube.hhbrezzidouglasfortinmarini/cube/localcoefficients.hh
    bdfmcube.hhbrezzidouglasfortinmarini/cube/localinterpolation.hh
    \n+

    brezzidouglasfortinmarini → cube Relation

    File in dune/localfunctions/brezzidouglasfortinmariniIncludes file in dune/localfunctions/brezzidouglasfortinmarini/cube
    bdfmcube.hhbrezzidouglasfortinmarini/cube/localbasis.hh
    bdfmcube.hhbrezzidouglasfortinmarini/cube/localcoefficients.hh
    bdfmcube.hhbrezzidouglasfortinmarini/cube/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000002.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000002.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini → brezzidouglasmarini1cube2d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d
    brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2dlocalbasis.hh
    brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2dlocalcoefficients.hh
    brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2dlocalinterpolation.hh
    \n+

    brezzidouglasmarini → brezzidouglasmarini1cube2d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d
    brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2dlocalbasis.hh
    brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2dlocalcoefficients.hh
    brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000003.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000003.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini → brezzidouglasmarini1cube3d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d
    brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3dlocalbasis.hh
    brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3dlocalcoefficients.hh
    brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3dlocalinterpolation.hh
    \n+

    brezzidouglasmarini → brezzidouglasmarini1cube3d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d
    brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3dlocalbasis.hh
    brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3dlocalcoefficients.hh
    brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000004.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000004.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini → brezzidouglasmarini1simplex2d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d
    brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2dlocalbasis.hh
    brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2dlocalcoefficients.hh
    brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2dlocalinterpolation.hh
    \n+

    brezzidouglasmarini → brezzidouglasmarini1simplex2d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d
    brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2dlocalbasis.hh
    brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2dlocalcoefficients.hh
    brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000005.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000005.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini → brezzidouglasmarini2cube2d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d
    brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2dlocalbasis.hh
    brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2dlocalcoefficients.hh
    brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2dlocalinterpolation.hh
    \n+

    brezzidouglasmarini → brezzidouglasmarini2cube2d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d
    brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2dlocalbasis.hh
    brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2dlocalcoefficients.hh
    brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000006.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000006.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini → brezzidouglasmarini2simplex2d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d
    brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2dlocalbasis.hh
    brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2dlocalcoefficients.hh
    brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2dlocalinterpolation.hh
    \n+

    brezzidouglasmarini → brezzidouglasmarini2simplex2d Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d
    brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2dlocalbasis.hh
    brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2dlocalcoefficients.hh
    brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000001_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    brezzidouglasmarini → common Relation

    File in dune/localfunctions/brezzidouglasmariniIncludes file in dune/localfunctions/common
    brezzidouglasmarini1cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini1cube3d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini1simplex2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini2cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini2simplex2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000002_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000002_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini1cube2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini1cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1cube2dlocalcoefficients.hhlocalkey.hh
    \n+

    brezzidouglasmarini1cube2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini1cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1cube2dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000003_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000003_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini1cube3d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3dIncludes file in dune/localfunctions/common
    brezzidouglasmarini1cube3dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1cube3dlocalcoefficients.hhlocalkey.hh
    \n+

    brezzidouglasmarini1cube3d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3dIncludes file in dune/localfunctions/common
    brezzidouglasmarini1cube3dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1cube3dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000004_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000004_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini1simplex2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini1simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1simplex2dlocalcoefficients.hhlocalkey.hh
    \n+

    brezzidouglasmarini1simplex2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini1simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1simplex2dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000005_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000005_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini2cube2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    \n+

    brezzidouglasmarini2cube2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000006_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000006_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    brezzidouglasmarini2simplex2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    \n+

    brezzidouglasmarini2simplex2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000008_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000008_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    common → common Relation

    File in dune/localfunctions/refined/commonIncludes file in dune/localfunctions/common
    refinedsimplexlocalbasis.hhcommon/localbasis.hh
    \n+

    common → common Relation

    File in dune/localfunctions/refined/commonIncludes file in dune/localfunctions/common
    refinedsimplexlocalbasis.hhcommon/localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000009_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000009_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    cube → common Relation

    File in dune/localfunctions/brezzidouglasfortinmarini/cubeIncludes file in dune/localfunctions/common
    brezzidouglasfortinmarini/cube/localbasis.hhcommon/localbasis.hh
    brezzidouglasfortinmarini/cube/localcoefficients.hhlocalkey.hh
    \n+

    cube → common Relation

    File in dune/localfunctions/brezzidouglasfortinmarini/cubeIncludes file in dune/localfunctions/common
    brezzidouglasfortinmarini/cube/localbasis.hhcommon/localbasis.hh
    brezzidouglasfortinmarini/cube/localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000012_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000012_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    dualmortarbasis → common Relation

    File in dune/localfunctions/dualmortarbasisIncludes file in dune/localfunctions/common
    dualp1.hhlocalfiniteelementtraits.hh
    dualpq1factory.hhvirtualinterface.hh
    dualpq1factory.hhvirtualwrappers.hh
    dualq1.hhlocalfiniteelementtraits.hh
    dualp1 / dualp1localbasis.hhcommon/localbasis.hh
    dualp1 / dualp1localcoefficients.hhlocalkey.hh
    dualq1 / dualq1localbasis.hhcommon/localbasis.hh
    dualq1 / dualq1localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000012_000013.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000012_000013.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    dualmortarbasis → dualp1 Relation

    File in dune/localfunctions/dualmortarbasisIncludes file in dune/localfunctions/dualmortarbasis/dualp1
    dualp1.hhdualp1localbasis.hh
    dualp1.hhdualp1localcoefficients.hh
    dualp1.hhdualp1localinterpolation.hh
    \n+

    dualmortarbasis → dualp1 Relation

    File in dune/localfunctions/dualmortarbasisIncludes file in dune/localfunctions/dualmortarbasis/dualp1
    dualp1.hhdualp1localbasis.hh
    dualp1.hhdualp1localcoefficients.hh
    dualp1.hhdualp1localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000012_000014.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000012_000014.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    dualmortarbasis → dualq1 Relation

    File in dune/localfunctions/dualmortarbasisIncludes file in dune/localfunctions/dualmortarbasis/dualq1
    dualq1.hhdualq1localbasis.hh
    dualq1.hhdualq1localcoefficients.hh
    dualq1.hhdualq1localinterpolation.hh
    \n+

    dualmortarbasis → dualq1 Relation

    File in dune/localfunctions/dualmortarbasisIncludes file in dune/localfunctions/dualmortarbasis/dualq1
    dualq1.hhdualq1localbasis.hh
    dualq1.hhdualq1localcoefficients.hh
    dualq1.hhdualq1localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000012_000022.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000012_000022.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    dualmortarbasis → lagrange Relation

    File in dune/localfunctions/dualmortarbasisIncludes file in dune/localfunctions/lagrange
    dualq1.hhlagrangecube.hh
    \n+

    dualmortarbasis → lagrange Relation

    File in dune/localfunctions/dualmortarbasisIncludes file in dune/localfunctions/lagrange
    dualq1.hhlagrangecube.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000013_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000013_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    dualp1 → common Relation

    File in dune/localfunctions/dualmortarbasis/dualp1Includes file in dune/localfunctions/common
    dualp1localbasis.hhcommon/localbasis.hh
    dualp1localcoefficients.hhlocalkey.hh
    \n+

    dualp1 → common Relation

    File in dune/localfunctions/dualmortarbasis/dualp1Includes file in dune/localfunctions/common
    dualp1localbasis.hhcommon/localbasis.hh
    dualp1localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000014_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000014_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    dualq1 → common Relation

    File in dune/localfunctions/dualmortarbasis/dualq1Includes file in dune/localfunctions/common
    dualq1localbasis.hhcommon/localbasis.hh
    dualq1localcoefficients.hhlocalkey.hh
    \n+

    dualq1 → common Relation

    File in dune/localfunctions/dualmortarbasis/dualq1Includes file in dune/localfunctions/common
    dualq1localbasis.hhcommon/localbasis.hh
    dualq1localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000016_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000016_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    edges0.5 → common Relation

    File in dune/localfunctions/whitney/edges0.5Includes file in dune/localfunctions/common
    whitney/edges0.5/basis.hhlocaltoglobaladaptors.hh
    whitney/edges0.5/coefficients.hhlocalkey.hh
    \n+

    edges0.5 → common Relation

    File in dune/localfunctions/whitney/edges0.5Includes file in dune/localfunctions/common
    whitney/edges0.5/basis.hhlocaltoglobaladaptors.hh
    whitney/edges0.5/coefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000016_000022.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000016_000022.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    edges0.5 → lagrange Relation

    File in dune/localfunctions/whitney/edges0.5Includes file in dune/localfunctions/lagrange
    whitney/edges0.5/basis.hhlagrangesimplex.hh
    \n+

    edges0.5 → lagrange Relation

    File in dune/localfunctions/whitney/edges0.5Includes file in dune/localfunctions/lagrange
    whitney/edges0.5/basis.hhlagrangesimplex.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000017_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000017_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    enriched → common Relation

    File in dune/localfunctions/enrichedIncludes file in dune/localfunctions/common
    simplexp1bubble.hhlocalfiniteelementtraits.hh
    simplexp1bubble / enriched/simplexp1bubble/localbasis.hhcommon/localbasis.hh
    simplexp1bubble / enriched/simplexp1bubble/localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000017_000054.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000017_000054.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    enriched → simplexp1bubble Relation

    File in dune/localfunctions/enrichedIncludes file in dune/localfunctions/enriched/simplexp1bubble
    simplexp1bubble.hhenriched/simplexp1bubble/localbasis.hh
    simplexp1bubble.hhenriched/simplexp1bubble/localcoefficients.hh
    simplexp1bubble.hhenriched/simplexp1bubble/localinterpolation.hh
    \n+

    enriched → simplexp1bubble Relation

    File in dune/localfunctions/enrichedIncludes file in dune/localfunctions/enriched/simplexp1bubble
    simplexp1bubble.hhenriched/simplexp1bubble/localbasis.hh
    simplexp1bubble.hhenriched/simplexp1bubble/localcoefficients.hh
    simplexp1bubble.hhenriched/simplexp1bubble/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    hierarchical → common Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/common
    hierarchicalp2.hhlocalfiniteelementtraits.hh
    hierarchicalp2withelementbubble.hhlocalfiniteelementtraits.hh
    hierarchicalprismp2.hhlocalfiniteelementtraits.hh
    hierarchicalp2 / hierarchicalsimplexp2localbasis.hhcommon/localbasis.hh
    hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhlocalkey.hh
    hierarchicalprismp2 / hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000017.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000017.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    hierarchical → enriched Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/enriched
    hierarchicalp1withelementbubble.hhsimplexp1bubble.hh
    \n+

    hierarchical → enriched Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/enriched
    hierarchicalp1withelementbubble.hhsimplexp1bubble.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000019.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000019.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    hierarchical → hierarchicalp2 Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/hierarchical/hierarchicalp2
    hierarchicalp2.hhhierarchicalsimplexp2localbasis.hh
    hierarchicalp2.hhhierarchicalsimplexp2localinterpolation.hh
    \n+

    hierarchical → hierarchicalp2 Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/hierarchical/hierarchicalp2
    hierarchicalp2.hhhierarchicalsimplexp2localbasis.hh
    hierarchicalp2.hhhierarchicalsimplexp2localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000020.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000020.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    hierarchical → hierarchicalp2withelementbubble Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/hierarchical/hierarchicalp2withelementbubble
    hierarchicalp2withelementbubble.hhhierarchicalsimplexp2withelementbubble.hh
    \n+

    hierarchical → hierarchicalp2withelementbubble Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/hierarchical/hierarchicalp2withelementbubble
    hierarchicalp2withelementbubble.hhhierarchicalsimplexp2withelementbubble.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000021.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000021.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    hierarchical → hierarchicalprismp2 Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/hierarchical/hierarchicalprismp2
    hierarchicalprismp2.hhhierarchicalprismp2localbasis.hh
    hierarchicalprismp2.hhhierarchicalprismp2localinterpolation.hh
    \n+

    hierarchical → hierarchicalprismp2 Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/hierarchical/hierarchicalprismp2
    hierarchicalprismp2.hhhierarchicalprismp2localbasis.hh
    hierarchicalprismp2.hhhierarchicalprismp2localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000022.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000018_000022.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    hierarchical → lagrange Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/lagrange
    hierarchicalp2.hhlagrangesimplex.hh
    hierarchicalprismp2.hhlagrangeprism.hh
    \n+

    hierarchical → lagrange Relation

    File in dune/localfunctions/hierarchicalIncludes file in dune/localfunctions/lagrange
    hierarchicalp2.hhlagrangesimplex.hh
    hierarchicalprismp2.hhlagrangeprism.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000019_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000019_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    hierarchicalp2 → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalp2Includes file in dune/localfunctions/common
    hierarchicalsimplexp2localbasis.hhcommon/localbasis.hh
    \n+

    hierarchicalp2 → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalp2Includes file in dune/localfunctions/common
    hierarchicalsimplexp2localbasis.hhcommon/localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000020_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000020_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    hierarchicalp2withelementbubble → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalp2withelementbubbleIncludes file in dune/localfunctions/common
    hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchicalsimplexp2withelementbubble.hhlocalkey.hh
    \n+

    hierarchicalp2withelementbubble → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalp2withelementbubbleIncludes file in dune/localfunctions/common
    hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchicalsimplexp2withelementbubble.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000021_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000021_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    hierarchicalprismp2 → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalprismp2Includes file in dune/localfunctions/common
    hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    \n+

    hierarchicalprismp2 → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalprismp2Includes file in dune/localfunctions/common
    hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    lagrange → common Relation

    File in dune/localfunctions/lagrangeIncludes file in dune/localfunctions/common
    emptypoints.hhlocalkey.hh
    lagrangecoefficients.hhlocalkey.hh
    lagrangecube.hhcommon/localbasis.hh
    lagrangecube.hhlocalfiniteelementtraits.hh
    lagrangecube.hhlocalkey.hh
    lagrangelfecache.hhlocalfiniteelementvariantcache.hh
    lagrangeprism.hhcommon/localbasis.hh
    lagrangeprism.hhlocalfiniteelementtraits.hh
    lagrangeprism.hhlocalkey.hh
    lagrangepyramid.hhcommon/localbasis.hh
    lagrangepyramid.hhlocalfiniteelementtraits.hh
    lagrangepyramid.hhlocalkey.hh
    lagrangesimplex.hhcommon/localbasis.hh
    lagrangesimplex.hhlocalfiniteelementtraits.hh
    lagrangesimplex.hhlocalkey.hh
    p0.hhlocalfiniteelementtraits.hh
    pk1d.hhlocalfiniteelementtraits.hh
    pk1d.hhlocaltoglobaladaptors.hh
    pk2d.hhlocalfiniteelementtraits.hh
    pk2d.hhlocaltoglobaladaptors.hh
    pq22d.hhlocalfiniteelementvariant.hh
    pqkfactory.hhvirtualinterface.hh
    pqkfactory.hhvirtualwrappers.hh
    q1.hhlocalfiniteelementtraits.hh
    q1.hhlocaltoglobaladaptors.hh
    q2.hhlocalfiniteelementtraits.hh
    q2.hhlocaltoglobaladaptors.hh
    p0 / p0localbasis.hhcommon/localbasis.hh
    p0 / p0localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000031.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000031.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    lagrange → p0 Relation

    File in dune/localfunctions/lagrangeIncludes file in dune/localfunctions/lagrange/p0
    p0.hhp0localbasis.hh
    p0.hhp0localcoefficients.hh
    p0.hhp0localinterpolation.hh
    \n+

    lagrange → p0 Relation

    File in dune/localfunctions/lagrangeIncludes file in dune/localfunctions/lagrange/p0
    p0.hhp0localbasis.hh
    p0.hhp0localcoefficients.hh
    p0.hhp0localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000055.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000055.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    lagrange → utility Relation

    File in dune/localfunctions/lagrangeIncludes file in dune/localfunctions/utility
    equidistantpoints.hhfield.hh
    lagrangebasis.hhdefaultbasisfactory.hh
    lagrangebasis.hhmonomialbasis.hh
    lagrangecoefficients.hhfield.hh
    \n+

    lagrange → utility Relation

    File in dune/localfunctions/lagrangeIncludes file in dune/localfunctions/utility
    equidistantpoints.hhfield.hh
    lagrangebasis.hhdefaultbasisfactory.hh
    lagrangebasis.hhmonomialbasis.hh
    lagrangecoefficients.hhfield.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000001.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000001.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    localfunctions → brezzidouglasmarini Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/brezzidouglasmarini
    brezzidouglasmarini.hhbrezzidouglasmarinicube.hh
    brezzidouglasmarini.hhbrezzidouglasmarinisimplex.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalinterpolation.hh
    \n+

    localfunctions → brezzidouglasmarini Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/brezzidouglasmarini
    brezzidouglasmarini.hhbrezzidouglasmarinicube.hh
    brezzidouglasmarini.hhbrezzidouglasmarinisimplex.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhbrezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d.hhbrezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d.hhbrezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhbrezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalcoefficients.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhbrezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    localfunctions → common Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/common
    brezzidouglasfortinmarini / bdfmcube.hhlocalfiniteelementtraits.hh
    brezzidouglasfortinmarini / cube / brezzidouglasfortinmarini/cube/localbasis.hhcommon/localbasis.hh
    brezzidouglasfortinmarini / cube / brezzidouglasfortinmarini/cube/localcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    crouzeixraviart.hhcommon/localbasis.hh
    crouzeixraviart.hhlocalfiniteelementtraits.hh
    crouzeixraviart.hhlocalkey.hh
    dualmortarbasis / dualp1.hhlocalfiniteelementtraits.hh
    dualmortarbasis / dualp1 / dualp1localbasis.hhcommon/localbasis.hh
    dualmortarbasis / dualp1 / dualp1localcoefficients.hhlocalkey.hh
    dualmortarbasis / dualpq1factory.hhvirtualinterface.hh
    dualmortarbasis / dualpq1factory.hhvirtualwrappers.hh
    dualmortarbasis / dualq1.hhlocalfiniteelementtraits.hh
    dualmortarbasis / dualq1 / dualq1localbasis.hhcommon/localbasis.hh
    dualmortarbasis / dualq1 / dualq1localcoefficients.hhlocalkey.hh
    lagrange / emptypoints.hhlocalkey.hh
    hierarchical / hierarchicalp2.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalp2withelementbubble.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalprismp2.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalprismp2 / hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2 / hierarchicalsimplexp2localbasis.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhlocalkey.hh
    lagrange / lagrangecoefficients.hhlocalkey.hh
    lagrange / lagrangecube.hhcommon/localbasis.hh
    lagrange / lagrangecube.hhlocalfiniteelementtraits.hh
    lagrange / lagrangecube.hhlocalkey.hh
    lagrange / lagrangelfecache.hhlocalfiniteelementvariantcache.hh
    lagrange / lagrangeprism.hhcommon/localbasis.hh
    lagrange / lagrangeprism.hhlocalfiniteelementtraits.hh
    lagrange / lagrangeprism.hhlocalkey.hh
    lagrange / lagrangepyramid.hhcommon/localbasis.hh
    lagrange / lagrangepyramid.hhlocalfiniteelementtraits.hh
    lagrange / lagrangepyramid.hhlocalkey.hh
    lagrange / lagrangesimplex.hhcommon/localbasis.hh
    lagrange / lagrangesimplex.hhlocalfiniteelementtraits.hh
    lagrange / lagrangesimplex.hhlocalkey.hh
    mimetic.hhlocalfiniteelementtraits.hh
    monomial.hhlocalfiniteelementtraits.hh
    monomial.hhlocaltoglobaladaptors.hh
    lagrange / p0.hhlocalfiniteelementtraits.hh
    lagrange / pk1d.hhlocalfiniteelementtraits.hh
    lagrange / pk1d.hhlocaltoglobaladaptors.hh
    lagrange / pk2d.hhlocalfiniteelementtraits.hh
    lagrange / pk2d.hhlocaltoglobaladaptors.hh
    lagrange / pq22d.hhlocalfiniteelementvariant.hh
    lagrange / pqkfactory.hhvirtualinterface.hh
    lagrange / pqkfactory.hhvirtualwrappers.hh
    lagrange / q1.hhlocalfiniteelementtraits.hh
    lagrange / q1.hhlocaltoglobaladaptors.hh
    lagrange / q2.hhlocalfiniteelementtraits.hh
    lagrange / q2.hhlocaltoglobaladaptors.hh
    refined / common / refinedsimplexlocalbasis.hhcommon/localbasis.hh
    enriched / simplexp1bubble.hhlocalfiniteelementtraits.hh
    whitney / edges0.5 / whitney/edges0.5/basis.hhlocaltoglobaladaptors.hh
    whitney / edges0.5 / whitney/edges0.5/coefficients.hhlocalkey.hh
    mimetic / mimeticall.hhcommon/localbasis.hh
    mimetic / mimeticall.hhlocalkey.hh
    monomial / monomiallocalbasis.hhcommon/localbasis.hh
    monomial / monomiallocalcoefficients.hhlocalkey.hh
    nedelec / nedelec1stkindcube.hhcommon/localbasis.hh
    nedelec / nedelec1stkindcube.hhlocalfiniteelementtraits.hh
    nedelec / nedelec1stkindcube.hhlocalkey.hh
    nedelec / nedelec1stkindsimplex.hhcommon/localbasis.hh
    nedelec / nedelec1stkindsimplex.hhlocalfiniteelementtraits.hh
    nedelec / nedelec1stkindsimplex.hhlocalkey.hh
    nedelec / nedelecsimplex / nedelecsimplexinterpolation.hhlocalkey.hh
    lagrange / p0 / p0localbasis.hhcommon/localbasis.hh
    lagrange / p0 / p0localcoefficients.hhlocalkey.hh
    meta / power / meta/power/coefficients.hhlocalkey.hh
    rannacherturek / rannacherturek/rannacherturek.hhlocalfiniteelementtraits.hh
    rannacherturek / rannachertureklocalcoefficients.hhlocalkey.hh
    rannacherturek / rannachertureklocalinterpolation.hhcommon/localbasis.hh
    rannacherturek / rannacherturek2d / rannacherturek2dlocalbasis.hhcommon/localbasis.hh
    rannacherturek / rannacherturek3d / rannacherturek3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas02d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas03d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas0cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas0cube3d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas0prism.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas0pyramid.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas12d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas1cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas1cube3d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas2cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas3cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas4cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomaslfecache.hhlocalfiniteelementvariantcache.hh
    raviartthomas / raviartthomas02d / raviartthomas02dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas02d / raviartthomas02dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhlocalkey.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhlocalkey.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomassimplex / raviartthomassimplexinterpolation.hhlocalkey.hh
    refined / refinedp0.hhlocalfiniteelementtraits.hh
    refined / refinedp1.hhlocalfiniteelementtraits.hh
    refined / refinedp0 / refinedp0localbasis.hhcommon/localbasis.hh
    refined / refinedp0 / refinedp0localcoefficients.hhlocalkey.hh
    enriched / simplexp1bubble / enriched/simplexp1bubble/localbasis.hhcommon/localbasis.hh
    enriched / simplexp1bubble / enriched/simplexp1bubble/localcoefficients.hhlocalkey.hh
    utility / dglocalcoefficients.hhlocalkey.hh
    utility / localfunctions/utility/localfiniteelement.hhlocalfiniteelementtraits.hh
    utility / polynomialbasis.hhcommon/localbasis.hh
    \n+

    localfunctions → common Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/common
    brezzidouglasfortinmarini / bdfmcube.hhlocalfiniteelementtraits.hh
    brezzidouglasfortinmarini / cube / brezzidouglasfortinmarini/cube/localbasis.hhcommon/localbasis.hh
    brezzidouglasfortinmarini / cube / brezzidouglasfortinmarini/cube/localcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    crouzeixraviart.hhcommon/localbasis.hh
    crouzeixraviart.hhlocalfiniteelementtraits.hh
    crouzeixraviart.hhlocalkey.hh
    dualmortarbasis / dualp1.hhlocalfiniteelementtraits.hh
    dualmortarbasis / dualp1 / dualp1localbasis.hhcommon/localbasis.hh
    dualmortarbasis / dualp1 / dualp1localcoefficients.hhlocalkey.hh
    dualmortarbasis / dualpq1factory.hhvirtualinterface.hh
    dualmortarbasis / dualpq1factory.hhvirtualwrappers.hh
    dualmortarbasis / dualq1.hhlocalfiniteelementtraits.hh
    dualmortarbasis / dualq1 / dualq1localbasis.hhcommon/localbasis.hh
    dualmortarbasis / dualq1 / dualq1localcoefficients.hhlocalkey.hh
    lagrange / emptypoints.hhlocalkey.hh
    hierarchical / hierarchicalp2.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalp2withelementbubble.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalprismp2.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalprismp2 / hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2 / hierarchicalsimplexp2localbasis.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhlocalkey.hh
    lagrange / lagrangecoefficients.hhlocalkey.hh
    lagrange / lagrangecube.hhcommon/localbasis.hh
    lagrange / lagrangecube.hhlocalfiniteelementtraits.hh
    lagrange / lagrangecube.hhlocalkey.hh
    lagrange / lagrangelfecache.hhlocalfiniteelementvariantcache.hh
    lagrange / lagrangeprism.hhcommon/localbasis.hh
    lagrange / lagrangeprism.hhlocalfiniteelementtraits.hh
    lagrange / lagrangeprism.hhlocalkey.hh
    lagrange / lagrangepyramid.hhcommon/localbasis.hh
    lagrange / lagrangepyramid.hhlocalfiniteelementtraits.hh
    lagrange / lagrangepyramid.hhlocalkey.hh
    lagrange / lagrangesimplex.hhcommon/localbasis.hh
    lagrange / lagrangesimplex.hhlocalfiniteelementtraits.hh
    lagrange / lagrangesimplex.hhlocalkey.hh
    mimetic.hhlocalfiniteelementtraits.hh
    monomial.hhlocalfiniteelementtraits.hh
    monomial.hhlocaltoglobaladaptors.hh
    lagrange / p0.hhlocalfiniteelementtraits.hh
    lagrange / pk1d.hhlocalfiniteelementtraits.hh
    lagrange / pk1d.hhlocaltoglobaladaptors.hh
    lagrange / pk2d.hhlocalfiniteelementtraits.hh
    lagrange / pk2d.hhlocaltoglobaladaptors.hh
    lagrange / pq22d.hhlocalfiniteelementvariant.hh
    lagrange / pqkfactory.hhvirtualinterface.hh
    lagrange / pqkfactory.hhvirtualwrappers.hh
    lagrange / q1.hhlocalfiniteelementtraits.hh
    lagrange / q1.hhlocaltoglobaladaptors.hh
    lagrange / q2.hhlocalfiniteelementtraits.hh
    lagrange / q2.hhlocaltoglobaladaptors.hh
    refined / common / refinedsimplexlocalbasis.hhcommon/localbasis.hh
    enriched / simplexp1bubble.hhlocalfiniteelementtraits.hh
    whitney / edges0.5 / whitney/edges0.5/basis.hhlocaltoglobaladaptors.hh
    whitney / edges0.5 / whitney/edges0.5/coefficients.hhlocalkey.hh
    mimetic / mimeticall.hhcommon/localbasis.hh
    mimetic / mimeticall.hhlocalkey.hh
    monomial / monomiallocalbasis.hhcommon/localbasis.hh
    monomial / monomiallocalcoefficients.hhlocalkey.hh
    nedelec / nedelec1stkindcube.hhcommon/localbasis.hh
    nedelec / nedelec1stkindcube.hhlocalfiniteelementtraits.hh
    nedelec / nedelec1stkindcube.hhlocalkey.hh
    nedelec / nedelec1stkindsimplex.hhcommon/localbasis.hh
    nedelec / nedelec1stkindsimplex.hhlocalfiniteelementtraits.hh
    nedelec / nedelec1stkindsimplex.hhlocalkey.hh
    nedelec / nedelecsimplex / nedelecsimplexinterpolation.hhlocalkey.hh
    lagrange / p0 / p0localbasis.hhcommon/localbasis.hh
    lagrange / p0 / p0localcoefficients.hhlocalkey.hh
    meta / power / meta/power/coefficients.hhlocalkey.hh
    rannacherturek / rannacherturek/rannacherturek.hhlocalfiniteelementtraits.hh
    rannacherturek / rannachertureklocalcoefficients.hhlocalkey.hh
    rannacherturek / rannachertureklocalinterpolation.hhcommon/localbasis.hh
    rannacherturek / rannacherturek2d / rannacherturek2dlocalbasis.hhcommon/localbasis.hh
    rannacherturek / rannacherturek3d / rannacherturek3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas02d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas03d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas0cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas0cube3d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas0prism.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas0pyramid.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas12d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas1cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas1cube3d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas2cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas3cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomas4cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas / raviartthomaslfecache.hhlocalfiniteelementvariantcache.hh
    raviartthomas / raviartthomas02d / raviartthomas02dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas02d / raviartthomas02dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhlocalkey.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhlocalkey.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomassimplex / raviartthomassimplexinterpolation.hhlocalkey.hh
    refined / refinedp0.hhlocalfiniteelementtraits.hh
    refined / refinedp1.hhlocalfiniteelementtraits.hh
    refined / refinedp0 / refinedp0localbasis.hhcommon/localbasis.hh
    refined / refinedp0 / refinedp0localcoefficients.hhlocalkey.hh
    enriched / simplexp1bubble / enriched/simplexp1bubble/localbasis.hhcommon/localbasis.hh
    enriched / simplexp1bubble / enriched/simplexp1bubble/localcoefficients.hhlocalkey.hh
    utility / dglocalcoefficients.hhlocalkey.hh
    utility / localfunctions/utility/localfiniteelement.hhlocalfiniteelementtraits.hh
    utility / polynomialbasis.hhcommon/localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000012.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000012.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    localfunctions → dualmortarbasis Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/dualmortarbasis
    dualmortarbasis.hhdualp1.hh
    dualmortarbasis.hhdualq1.hh
    dualmortarbasis / dualp1.hhdualp1 / dualp1localbasis.hh
    dualmortarbasis / dualp1.hhdualp1 / dualp1localcoefficients.hh
    dualmortarbasis / dualp1.hhdualp1 / dualp1localinterpolation.hh
    dualmortarbasis / dualq1.hhdualq1 / dualq1localbasis.hh
    dualmortarbasis / dualq1.hhdualq1 / dualq1localcoefficients.hh
    dualmortarbasis / dualq1.hhdualq1 / dualq1localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000017.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000017.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    localfunctions → enriched Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/enriched
    enriched.hhsimplexp1bubble.hh
    hierarchical / hierarchicalp1withelementbubble.hhsimplexp1bubble.hh
    enriched / simplexp1bubble.hhsimplexp1bubble / enriched/simplexp1bubble/localbasis.hh
    enriched / simplexp1bubble.hhsimplexp1bubble / enriched/simplexp1bubble/localcoefficients.hh
    enriched / simplexp1bubble.hhsimplexp1bubble / enriched/simplexp1bubble/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000018.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000018.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    localfunctions → hierarchical Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/hierarchical
    hierarchical.hhhierarchicalp2.hh
    hierarchical.hhhierarchicalp2withelementbubble.hh
    hierarchical.hhhierarchicalprismp2.hh
    hierarchical / hierarchicalp2.hhhierarchicalp2 / hierarchicalsimplexp2localbasis.hh
    hierarchical / hierarchicalp2.hhhierarchicalp2 / hierarchicalsimplexp2localinterpolation.hh
    hierarchical / hierarchicalp2withelementbubble.hhhierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hh
    hierarchical / hierarchicalprismp2.hhhierarchicalprismp2 / hierarchicalprismp2localbasis.hh
    hierarchical / hierarchicalprismp2.hhhierarchicalprismp2 / hierarchicalprismp2localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000022.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000022.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    localfunctions → lagrange Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/lagrange
    dualmortarbasis / dualq1.hhlagrangecube.hh
    hierarchical / hierarchicalp2.hhlagrangesimplex.hh
    hierarchical / hierarchicalprismp2.hhlagrangeprism.hh
    lagrange.hhlagrange/interpolation.hh
    lagrange.hhlagrangebasis.hh
    lagrange.hhlagrangecoefficients.hh
    lagrange.hhlagrangecube.hh
    lagrange.hhlagrangeprism.hh
    lagrange.hhlagrangepyramid.hh
    lagrange.hhlagrangesimplex.hh
    lagrange.hhp0.hh
    lagrange.hhpq22d.hh
    lagrange / p0.hhp0 / p0localbasis.hh
    lagrange / p0.hhp0 / p0localcoefficients.hh
    lagrange / p0.hhp0 / p0localinterpolation.hh
    whitney / edges0.5 / whitney/edges0.5/basis.hhlagrangesimplex.hh
    refined / refinedp0.hhp0.hh
    refined / refinedp1.hhp0.hh
    refined / refinedp1.hhlagrangesimplex.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000026.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000026.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    localfunctions → mimetic Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/mimetic
    mimetic.hhmimeticall.hh
    \n+

    localfunctions → mimetic Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/mimetic
    mimetic.hhmimeticall.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000027.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000027.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    localfunctions → monomial Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/monomial
    monomial.hhmonomiallocalbasis.hh
    monomial.hhmonomiallocalcoefficients.hh
    monomial.hhmonomiallocalinterpolation.hh
    \n+

    localfunctions → monomial Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/monomial
    monomial.hhmonomiallocalbasis.hh
    monomial.hhmonomiallocalcoefficients.hh
    monomial.hhmonomiallocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000028.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000028.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    localfunctions → nedelec Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/nedelec
    nedelec.hhnedelec1stkindcube.hh
    nedelec.hhnedelec1stkindsimplex.hh
    \n+

    localfunctions → nedelec Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/nedelec
    nedelec.hhnedelec1stkindcube.hh
    nedelec.hhnedelec1stkindsimplex.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000030.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000030.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    localfunctions → orthonormal Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/orthonormal
    orthonormal.hhorthonormalbasis.hh
    nedelec / nedelecsimplex / nedelecsimplexinterpolation.hhorthonormalbasis.hh
    raviartthomas / raviartthomassimplex / raviartthomassimplexinterpolation.hhorthonormalbasis.hh
    \n+

    localfunctions → orthonormal Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/orthonormal
    orthonormal.hhorthonormalbasis.hh
    nedelec / nedelecsimplex / nedelecsimplexinterpolation.hhorthonormalbasis.hh
    raviartthomas / raviartthomassimplex / raviartthomassimplexinterpolation.hhorthonormalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000034.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000034.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    localfunctions → rannacherturek Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/rannacherturek
    rannacherturek.hhrannacherturek/rannacherturek.hh
    rannacherturek / rannachertureklocalbasis.hhrannacherturek2d / rannacherturek2dlocalbasis.hh
    rannacherturek / rannachertureklocalbasis.hhrannacherturek3d / rannacherturek3dlocalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000037.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000037.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    localfunctions → raviartthomas Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/raviartthomas
    raviartthomas.hhraviartthomas02d.hh
    raviartthomas.hhraviartthomas03d.hh
    raviartthomas.hhraviartthomas0cube2d.hh
    raviartthomas.hhraviartthomas0cube3d.hh
    raviartthomas.hhraviartthomas0prism.hh
    raviartthomas.hhraviartthomas0pyramid.hh
    raviartthomas.hhraviartthomas12d.hh
    raviartthomas.hhraviartthomas1cube2d.hh
    raviartthomas.hhraviartthomas1cube3d.hh
    raviartthomas.hhraviartthomas2cube2d.hh
    raviartthomas.hhraviartthomas3cube2d.hh
    raviartthomas.hhraviartthomascube.hh
    raviartthomas.hhraviartthomassimplex.hh
    raviartthomas / raviartthomas02d.hhraviartthomas02d / raviartthomas02dlocalbasis.hh
    raviartthomas / raviartthomas02d.hhraviartthomas02d / raviartthomas02dlocalcoefficients.hh
    raviartthomas / raviartthomas02d.hhraviartthomas02d / raviartthomas02dlocalinterpolation.hh
    raviartthomas / raviartthomas03d.hhraviartthomas03d / raviartthomas03dlocalbasis.hh
    raviartthomas / raviartthomas03d.hhraviartthomas03d / raviartthomas03dlocalcoefficients.hh
    raviartthomas / raviartthomas03d.hhraviartthomas03d / raviartthomas03dlocalinterpolation.hh
    raviartthomas / raviartthomas0cube2d.hhraviartthomas0cube2d / raviartthomas0cube2dall.hh
    raviartthomas / raviartthomas0cube3d.hhraviartthomas0cube3d / raviartthomas0cube3dall.hh
    raviartthomas / raviartthomas0prism.hhraviartthomas0prism / raviartthomas0prismlocalbasis.hh
    raviartthomas / raviartthomas0prism.hhraviartthomas0prism / raviartthomas0prismlocalcoefficients.hh
    raviartthomas / raviartthomas0prism.hhraviartthomas0prism / raviartthomas0prismlocalinterpolation.hh
    raviartthomas / raviartthomas0pyramid.hhraviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hh
    raviartthomas / raviartthomas0pyramid.hhraviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hh
    raviartthomas / raviartthomas0pyramid.hhraviartthomas0pyramid / raviartthomas0pyramidlocalinterpolation.hh
    raviartthomas / raviartthomas12d.hhraviartthomas12d / raviartthomas12dlocalbasis.hh
    raviartthomas / raviartthomas12d.hhraviartthomas12d / raviartthomas12dlocalcoefficients.hh
    raviartthomas / raviartthomas12d.hhraviartthomas12d / raviartthomas12dlocalinterpolation.hh
    raviartthomas / raviartthomas1cube2d.hhraviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hh
    raviartthomas / raviartthomas1cube2d.hhraviartthomas1cube2d / raviartthomas1cube2dlocalinterpolation.hh
    raviartthomas / raviartthomas1cube2d.hhraviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hh
    raviartthomas / raviartthomas1cube3d.hhraviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hh
    raviartthomas / raviartthomas1cube3d.hhraviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hh
    raviartthomas / raviartthomas1cube3d.hhraviartthomas1cube3d / raviartthomas1cube3dlocalinterpolation.hh
    raviartthomas / raviartthomas2cube2d.hhraviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hh
    raviartthomas / raviartthomas2cube2d.hhraviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hh
    raviartthomas / raviartthomas2cube2d.hhraviartthomas2cube2d / raviartthomas2cube2dlocalinterpolation.hh
    raviartthomas / raviartthomas3cube2d.hhraviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hh
    raviartthomas / raviartthomas3cube2d.hhraviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hh
    raviartthomas / raviartthomas3cube2d.hhraviartthomas3cube2d / raviartthomas3cube2dlocalinterpolation.hh
    raviartthomas / raviartthomas4cube2d.hhraviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hh
    raviartthomas / raviartthomas4cube2d.hhraviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hh
    raviartthomas / raviartthomas4cube2d.hhraviartthomas4cube2d / raviartthomas4cube2dlocalinterpolation.hh
    raviartthomas / raviartthomassimplex.hhraviartthomassimplex / raviartthomassimplexbasis.hh
    \n+

    localfunctions → raviartthomas Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/raviartthomas
    raviartthomas.hhraviartthomas02d.hh
    raviartthomas.hhraviartthomas03d.hh
    raviartthomas.hhraviartthomas0cube2d.hh
    raviartthomas.hhraviartthomas0cube3d.hh
    raviartthomas.hhraviartthomas0prism.hh
    raviartthomas.hhraviartthomas0pyramid.hh
    raviartthomas.hhraviartthomas12d.hh
    raviartthomas.hhraviartthomas1cube2d.hh
    raviartthomas.hhraviartthomas1cube3d.hh
    raviartthomas.hhraviartthomas2cube2d.hh
    raviartthomas.hhraviartthomas3cube2d.hh
    raviartthomas.hhraviartthomascube.hh
    raviartthomas.hhraviartthomassimplex.hh
    raviartthomas / raviartthomas02d.hhraviartthomas02d / raviartthomas02dlocalbasis.hh
    raviartthomas / raviartthomas02d.hhraviartthomas02d / raviartthomas02dlocalcoefficients.hh
    raviartthomas / raviartthomas02d.hhraviartthomas02d / raviartthomas02dlocalinterpolation.hh
    raviartthomas / raviartthomas03d.hhraviartthomas03d / raviartthomas03dlocalbasis.hh
    raviartthomas / raviartthomas03d.hhraviartthomas03d / raviartthomas03dlocalcoefficients.hh
    raviartthomas / raviartthomas03d.hhraviartthomas03d / raviartthomas03dlocalinterpolation.hh
    raviartthomas / raviartthomas0cube2d.hhraviartthomas0cube2d / raviartthomas0cube2dall.hh
    raviartthomas / raviartthomas0cube3d.hhraviartthomas0cube3d / raviartthomas0cube3dall.hh
    raviartthomas / raviartthomas0prism.hhraviartthomas0prism / raviartthomas0prismlocalbasis.hh
    raviartthomas / raviartthomas0prism.hhraviartthomas0prism / raviartthomas0prismlocalcoefficients.hh
    raviartthomas / raviartthomas0prism.hhraviartthomas0prism / raviartthomas0prismlocalinterpolation.hh
    raviartthomas / raviartthomas0pyramid.hhraviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hh
    raviartthomas / raviartthomas0pyramid.hhraviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hh
    raviartthomas / raviartthomas0pyramid.hhraviartthomas0pyramid / raviartthomas0pyramidlocalinterpolation.hh
    raviartthomas / raviartthomas12d.hhraviartthomas12d / raviartthomas12dlocalbasis.hh
    raviartthomas / raviartthomas12d.hhraviartthomas12d / raviartthomas12dlocalcoefficients.hh
    raviartthomas / raviartthomas12d.hhraviartthomas12d / raviartthomas12dlocalinterpolation.hh
    raviartthomas / raviartthomas1cube2d.hhraviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hh
    raviartthomas / raviartthomas1cube2d.hhraviartthomas1cube2d / raviartthomas1cube2dlocalinterpolation.hh
    raviartthomas / raviartthomas1cube2d.hhraviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hh
    raviartthomas / raviartthomas1cube3d.hhraviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hh
    raviartthomas / raviartthomas1cube3d.hhraviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hh
    raviartthomas / raviartthomas1cube3d.hhraviartthomas1cube3d / raviartthomas1cube3dlocalinterpolation.hh
    raviartthomas / raviartthomas2cube2d.hhraviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hh
    raviartthomas / raviartthomas2cube2d.hhraviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hh
    raviartthomas / raviartthomas2cube2d.hhraviartthomas2cube2d / raviartthomas2cube2dlocalinterpolation.hh
    raviartthomas / raviartthomas3cube2d.hhraviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hh
    raviartthomas / raviartthomas3cube2d.hhraviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hh
    raviartthomas / raviartthomas3cube2d.hhraviartthomas3cube2d / raviartthomas3cube2dlocalinterpolation.hh
    raviartthomas / raviartthomas4cube2d.hhraviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hh
    raviartthomas / raviartthomas4cube2d.hhraviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hh
    raviartthomas / raviartthomas4cube2d.hhraviartthomas4cube2d / raviartthomas4cube2dlocalinterpolation.hh
    raviartthomas / raviartthomassimplex.hhraviartthomassimplex / raviartthomassimplexbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000051.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000051.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    localfunctions → refined Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/refined
    refined.hhrefinedp0.hh
    refined.hhrefinedp1.hh
    refined / refinedp0.hhrefinedp0 / refinedp0localbasis.hh
    refined / refinedp0.hhrefinedp0 / refinedp0localcoefficients.hh
    refined / refinedp0.hhrefinedp0 / refinedp0localinterpolation.hh
    refined / refinedp1.hhrefinedp1 / refinedp1localbasis.hh
    refined / refinedp0 / refinedp0localbasis.hhcommon / refinedsimplexlocalbasis.hh
    refined / refinedp1 / refinedp1localbasis.hhcommon / refinedsimplexlocalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000055.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000023_000055.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    localfunctions → utility Relation

    File in dune/localfunctionsIncludes file in dune/localfunctions/utility
    lagrange / equidistantpoints.hhfield.hh
    lagrange.hhdglocalcoefficients.hh
    lagrange.hhlocalfunctions/utility/localfiniteelement.hh
    lagrange / lagrangebasis.hhdefaultbasisfactory.hh
    lagrange / lagrangebasis.hhmonomialbasis.hh
    lagrange / lagrangecoefficients.hhfield.hh
    orthonormal.hhdglocalcoefficients.hh
    orthonormal.hhl2interpolation.hh
    orthonormal.hhlocalfunctions/utility/localfiniteelement.hh
    nedelec / nedelecsimplex / nedelecsimplexbasis.hhdefaultbasisfactory.hh
    nedelec / nedelecsimplex / nedelecsimplexinterpolation.hhinterpolationhelper.hh
    nedelec / nedelecsimplex / nedelecsimplexinterpolation.hhpolynomialbasis.hh
    nedelec / nedelecsimplex / nedelecsimplexprebasis.hhpolynomialbasis.hh
    orthonormal / orthonormalbasis.hhpolynomialbasis.hh
    orthonormal / orthonormalcompute.hhfield.hh
    orthonormal / orthonormalcompute.hhmonomialbasis.hh
    orthonormal / orthonormalcompute.hhmultiindex.hh
    raviartthomas / raviartthomassimplex.hhlocalfunctions/utility/localfiniteelement.hh
    raviartthomas / raviartthomassimplex / raviartthomassimplexbasis.hhdefaultbasisfactory.hh
    raviartthomas / raviartthomassimplex / raviartthomassimplexinterpolation.hhinterpolationhelper.hh
    raviartthomas / raviartthomassimplex / raviartthomassimplexinterpolation.hhpolynomialbasis.hh
    raviartthomas / raviartthomassimplex / raviartthomassimplexprebasis.hhpolynomialbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000024_000023.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000024_000023.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    localfunctions → localfunctions Relation

    File in dune/python/localfunctionsIncludes file in dune/localfunctions
    python/localfunctions/localfiniteelement.hhcommon / localkey.hh
    python/localfunctions/localfiniteelement.hhcommon / virtualinterface.hh
    \n+

    localfunctions → localfunctions Relation

    File in dune/python/localfunctionsIncludes file in dune/localfunctions
    python/localfunctions/localfiniteelement.hhcommon / localkey.hh
    python/localfunctions/localfiniteelement.hhcommon / virtualinterface.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000025_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000025_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    meta → common Relation

    File in dune/localfunctions/metaIncludes file in dune/localfunctions/common
    power / meta/power/coefficients.hhlocalkey.hh
    \n+

    meta → common Relation

    File in dune/localfunctions/metaIncludes file in dune/localfunctions/common
    power / meta/power/coefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000025_000032.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000025_000032.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    meta → power Relation

    File in dune/localfunctions/metaIncludes file in dune/localfunctions/meta/power
    power.hhmeta/power/basis.hh
    power.hhmeta/power/coefficients.hh
    power.hhmeta/power/interpolation.hh
    \n+

    meta → power Relation

    File in dune/localfunctions/metaIncludes file in dune/localfunctions/meta/power
    power.hhmeta/power/basis.hh
    power.hhmeta/power/coefficients.hh
    power.hhmeta/power/interpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000026_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000026_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    mimetic → common Relation

    File in dune/localfunctions/mimeticIncludes file in dune/localfunctions/common
    mimeticall.hhcommon/localbasis.hh
    mimeticall.hhlocalkey.hh
    \n+

    mimetic → common Relation

    File in dune/localfunctions/mimeticIncludes file in dune/localfunctions/common
    mimeticall.hhcommon/localbasis.hh
    mimeticall.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000027_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000027_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    monomial → common Relation

    File in dune/localfunctions/monomialIncludes file in dune/localfunctions/common
    monomiallocalbasis.hhcommon/localbasis.hh
    monomiallocalcoefficients.hhlocalkey.hh
    \n+

    monomial → common Relation

    File in dune/localfunctions/monomialIncludes file in dune/localfunctions/common
    monomiallocalbasis.hhcommon/localbasis.hh
    monomiallocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000028_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000028_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    nedelec → common Relation

    File in dune/localfunctions/nedelecIncludes file in dune/localfunctions/common
    nedelec1stkindcube.hhcommon/localbasis.hh
    nedelec1stkindcube.hhlocalfiniteelementtraits.hh
    nedelec1stkindcube.hhlocalkey.hh
    nedelec1stkindsimplex.hhcommon/localbasis.hh
    nedelec1stkindsimplex.hhlocalfiniteelementtraits.hh
    nedelec1stkindsimplex.hhlocalkey.hh
    nedelecsimplex / nedelecsimplexinterpolation.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000028_000030.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000028_000030.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    nedelec → orthonormal Relation

    File in dune/localfunctions/nedelecIncludes file in dune/localfunctions/orthonormal
    nedelecsimplex / nedelecsimplexinterpolation.hhorthonormalbasis.hh
    \n+

    nedelec → orthonormal Relation

    File in dune/localfunctions/nedelecIncludes file in dune/localfunctions/orthonormal
    nedelecsimplex / nedelecsimplexinterpolation.hhorthonormalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000028_000055.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000028_000055.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    nedelec → utility Relation

    File in dune/localfunctions/nedelecIncludes file in dune/localfunctions/utility
    nedelecsimplex / nedelecsimplexbasis.hhdefaultbasisfactory.hh
    nedelecsimplex / nedelecsimplexinterpolation.hhinterpolationhelper.hh
    nedelecsimplex / nedelecsimplexinterpolation.hhpolynomialbasis.hh
    nedelecsimplex / nedelecsimplexprebasis.hhpolynomialbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000029_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000029_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    nedelecsimplex → common Relation

    File in dune/localfunctions/nedelec/nedelecsimplexIncludes file in dune/localfunctions/common
    nedelecsimplexinterpolation.hhlocalkey.hh
    \n+

    nedelecsimplex → common Relation

    File in dune/localfunctions/nedelec/nedelecsimplexIncludes file in dune/localfunctions/common
    nedelecsimplexinterpolation.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000029_000030.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000029_000030.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    nedelecsimplex → orthonormal Relation

    File in dune/localfunctions/nedelec/nedelecsimplexIncludes file in dune/localfunctions/orthonormal
    nedelecsimplexinterpolation.hhorthonormalbasis.hh
    \n+

    nedelecsimplex → orthonormal Relation

    File in dune/localfunctions/nedelec/nedelecsimplexIncludes file in dune/localfunctions/orthonormal
    nedelecsimplexinterpolation.hhorthonormalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000029_000055.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000029_000055.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    nedelecsimplex → utility Relation

    File in dune/localfunctions/nedelec/nedelecsimplexIncludes file in dune/localfunctions/utility
    nedelecsimplexbasis.hhdefaultbasisfactory.hh
    nedelecsimplexinterpolation.hhinterpolationhelper.hh
    nedelecsimplexinterpolation.hhpolynomialbasis.hh
    nedelecsimplexprebasis.hhpolynomialbasis.hh
    \n+

    nedelecsimplex → utility Relation

    File in dune/localfunctions/nedelec/nedelecsimplexIncludes file in dune/localfunctions/utility
    nedelecsimplexbasis.hhdefaultbasisfactory.hh
    nedelecsimplexinterpolation.hhinterpolationhelper.hh
    nedelecsimplexinterpolation.hhpolynomialbasis.hh
    nedelecsimplexprebasis.hhpolynomialbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000030_000055.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000030_000055.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    orthonormal → utility Relation

    File in dune/localfunctions/orthonormalIncludes file in dune/localfunctions/utility
    orthonormalbasis.hhpolynomialbasis.hh
    orthonormalcompute.hhfield.hh
    orthonormalcompute.hhmonomialbasis.hh
    orthonormalcompute.hhmultiindex.hh
    \n+

    orthonormal → utility Relation

    File in dune/localfunctions/orthonormalIncludes file in dune/localfunctions/utility
    orthonormalbasis.hhpolynomialbasis.hh
    orthonormalcompute.hhfield.hh
    orthonormalcompute.hhmonomialbasis.hh
    orthonormalcompute.hhmultiindex.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000031_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000031_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    p0 → common Relation

    File in dune/localfunctions/lagrange/p0Includes file in dune/localfunctions/common
    p0localbasis.hhcommon/localbasis.hh
    p0localcoefficients.hhlocalkey.hh
    \n+

    p0 → common Relation

    File in dune/localfunctions/lagrange/p0Includes file in dune/localfunctions/common
    p0localbasis.hhcommon/localbasis.hh
    p0localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000032_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000032_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    power → common Relation

    File in dune/localfunctions/meta/powerIncludes file in dune/localfunctions/common
    meta/power/coefficients.hhlocalkey.hh
    \n+

    power → common Relation

    File in dune/localfunctions/meta/powerIncludes file in dune/localfunctions/common
    meta/power/coefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000033_000023.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000033_000023.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n
    \n \n
    \n \n
    \n-

    python → localfunctions Relation

    File in dune/pythonIncludes file in dune/localfunctions
    localfunctions / python/localfunctions/localfiniteelement.hhcommon / localkey.hh
    localfunctions / python/localfunctions/localfiniteelement.hhcommon / virtualinterface.hh
    \n+

    python → localfunctions Relation

    File in dune/pythonIncludes file in dune/localfunctions
    localfunctions / python/localfunctions/localfiniteelement.hhcommon / localkey.hh
    localfunctions / python/localfunctions/localfiniteelement.hhcommon / virtualinterface.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000034_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000034_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    rannacherturek → common Relation

    File in dune/localfunctions/rannacherturekIncludes file in dune/localfunctions/common
    rannacherturek/rannacherturek.hhlocalfiniteelementtraits.hh
    rannachertureklocalcoefficients.hhlocalkey.hh
    rannachertureklocalinterpolation.hhcommon/localbasis.hh
    rannacherturek2d / rannacherturek2dlocalbasis.hhcommon/localbasis.hh
    rannacherturek3d / rannacherturek3dlocalbasis.hhcommon/localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000034_000035.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000034_000035.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    rannacherturek → rannacherturek2d Relation

    File in dune/localfunctions/rannacherturekIncludes file in dune/localfunctions/rannacherturek/rannacherturek2d
    rannachertureklocalbasis.hhrannacherturek2dlocalbasis.hh
    \n+

    rannacherturek → rannacherturek2d Relation

    File in dune/localfunctions/rannacherturekIncludes file in dune/localfunctions/rannacherturek/rannacherturek2d
    rannachertureklocalbasis.hhrannacherturek2dlocalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000034_000036.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000034_000036.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    rannacherturek → rannacherturek3d Relation

    File in dune/localfunctions/rannacherturekIncludes file in dune/localfunctions/rannacherturek/rannacherturek3d
    rannachertureklocalbasis.hhrannacherturek3dlocalbasis.hh
    \n+

    rannacherturek → rannacherturek3d Relation

    File in dune/localfunctions/rannacherturekIncludes file in dune/localfunctions/rannacherturek/rannacherturek3d
    rannachertureklocalbasis.hhrannacherturek3dlocalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000035_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000035_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    rannacherturek2d → common Relation

    File in dune/localfunctions/rannacherturek/rannacherturek2dIncludes file in dune/localfunctions/common
    rannacherturek2dlocalbasis.hhcommon/localbasis.hh
    \n+

    rannacherturek2d → common Relation

    File in dune/localfunctions/rannacherturek/rannacherturek2dIncludes file in dune/localfunctions/common
    rannacherturek2dlocalbasis.hhcommon/localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    rannacherturek3d → common Relation

    File in dune/localfunctions/rannacherturek/rannacherturek3dIncludes file in dune/localfunctions/common
    rannacherturek3dlocalbasis.hhcommon/localbasis.hh
    \n+

    rannacherturek3d → common Relation

    File in dune/localfunctions/rannacherturek/rannacherturek3dIncludes file in dune/localfunctions/common
    rannacherturek3dlocalbasis.hhcommon/localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → common Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/common
    raviartthomas02d.hhlocalfiniteelementtraits.hh
    raviartthomas03d.hhlocalfiniteelementtraits.hh
    raviartthomas0cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas0cube3d.hhlocalfiniteelementtraits.hh
    raviartthomas0prism.hhlocalfiniteelementtraits.hh
    raviartthomas0pyramid.hhlocalfiniteelementtraits.hh
    raviartthomas12d.hhlocalfiniteelementtraits.hh
    raviartthomas1cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas1cube3d.hhlocalfiniteelementtraits.hh
    raviartthomas2cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas3cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas4cube2d.hhlocalfiniteelementtraits.hh
    raviartthomaslfecache.hhlocalfiniteelementvariantcache.hh
    raviartthomas02d / raviartthomas02dlocalbasis.hhcommon/localbasis.hh
    raviartthomas02d / raviartthomas02dlocalcoefficients.hhlocalkey.hh
    raviartthomas03d / raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas03d / raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhlocalkey.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhlocalkey.hh
    raviartthomas0prism / raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas0prism / raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas12d / raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas12d / raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomassimplex / raviartthomassimplexinterpolation.hhlocalkey.hh
    \n+

    raviartthomas → common Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/common
    raviartthomas02d.hhlocalfiniteelementtraits.hh
    raviartthomas03d.hhlocalfiniteelementtraits.hh
    raviartthomas0cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas0cube3d.hhlocalfiniteelementtraits.hh
    raviartthomas0prism.hhlocalfiniteelementtraits.hh
    raviartthomas0pyramid.hhlocalfiniteelementtraits.hh
    raviartthomas12d.hhlocalfiniteelementtraits.hh
    raviartthomas1cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas1cube3d.hhlocalfiniteelementtraits.hh
    raviartthomas2cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas3cube2d.hhlocalfiniteelementtraits.hh
    raviartthomas4cube2d.hhlocalfiniteelementtraits.hh
    raviartthomaslfecache.hhlocalfiniteelementvariantcache.hh
    raviartthomas02d / raviartthomas02dlocalbasis.hhcommon/localbasis.hh
    raviartthomas02d / raviartthomas02dlocalcoefficients.hhlocalkey.hh
    raviartthomas03d / raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas03d / raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhlocalkey.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhlocalkey.hh
    raviartthomas0prism / raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas0prism / raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas12d / raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas12d / raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomassimplex / raviartthomassimplexinterpolation.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000030.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000030.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → orthonormal Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/orthonormal
    raviartthomassimplex / raviartthomassimplexinterpolation.hhorthonormalbasis.hh
    \n+

    raviartthomas → orthonormal Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/orthonormal
    raviartthomassimplex / raviartthomassimplexinterpolation.hhorthonormalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000038.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000038.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas02d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas02d
    raviartthomas02d.hhraviartthomas02dlocalbasis.hh
    raviartthomas02d.hhraviartthomas02dlocalcoefficients.hh
    raviartthomas02d.hhraviartthomas02dlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas02d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas02d
    raviartthomas02d.hhraviartthomas02dlocalbasis.hh
    raviartthomas02d.hhraviartthomas02dlocalcoefficients.hh
    raviartthomas02d.hhraviartthomas02dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000039.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000039.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas03d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas03d
    raviartthomas03d.hhraviartthomas03dlocalbasis.hh
    raviartthomas03d.hhraviartthomas03dlocalcoefficients.hh
    raviartthomas03d.hhraviartthomas03dlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas03d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas03d
    raviartthomas03d.hhraviartthomas03dlocalbasis.hh
    raviartthomas03d.hhraviartthomas03dlocalcoefficients.hh
    raviartthomas03d.hhraviartthomas03dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000040.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000040.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas0cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas0cube2d
    raviartthomas0cube2d.hhraviartthomas0cube2dall.hh
    \n+

    raviartthomas → raviartthomas0cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas0cube2d
    raviartthomas0cube2d.hhraviartthomas0cube2dall.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000041.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000041.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas0cube3d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas0cube3d
    raviartthomas0cube3d.hhraviartthomas0cube3dall.hh
    \n+

    raviartthomas → raviartthomas0cube3d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas0cube3d
    raviartthomas0cube3d.hhraviartthomas0cube3dall.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000042.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000042.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas0prism Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas0prism
    raviartthomas0prism.hhraviartthomas0prismlocalbasis.hh
    raviartthomas0prism.hhraviartthomas0prismlocalcoefficients.hh
    raviartthomas0prism.hhraviartthomas0prismlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas0prism Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas0prism
    raviartthomas0prism.hhraviartthomas0prismlocalbasis.hh
    raviartthomas0prism.hhraviartthomas0prismlocalcoefficients.hh
    raviartthomas0prism.hhraviartthomas0prismlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000043.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000043.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas0pyramid Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas0pyramid
    raviartthomas0pyramid.hhraviartthomas0pyramidlocalbasis.hh
    raviartthomas0pyramid.hhraviartthomas0pyramidlocalcoefficients.hh
    raviartthomas0pyramid.hhraviartthomas0pyramidlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas0pyramid Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas0pyramid
    raviartthomas0pyramid.hhraviartthomas0pyramidlocalbasis.hh
    raviartthomas0pyramid.hhraviartthomas0pyramidlocalcoefficients.hh
    raviartthomas0pyramid.hhraviartthomas0pyramidlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000044.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000044.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas12d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas12d
    raviartthomas12d.hhraviartthomas12dlocalbasis.hh
    raviartthomas12d.hhraviartthomas12dlocalcoefficients.hh
    raviartthomas12d.hhraviartthomas12dlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas12d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas12d
    raviartthomas12d.hhraviartthomas12dlocalbasis.hh
    raviartthomas12d.hhraviartthomas12dlocalcoefficients.hh
    raviartthomas12d.hhraviartthomas12dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000045.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000045.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas1cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas1cube2d
    raviartthomas1cube2d.hhraviartthomas1cube2dlocalbasis.hh
    raviartthomas1cube2d.hhraviartthomas1cube2dlocalcoefficients.hh
    raviartthomas1cube2d.hhraviartthomas1cube2dlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas1cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas1cube2d
    raviartthomas1cube2d.hhraviartthomas1cube2dlocalbasis.hh
    raviartthomas1cube2d.hhraviartthomas1cube2dlocalcoefficients.hh
    raviartthomas1cube2d.hhraviartthomas1cube2dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000046.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000046.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas1cube3d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas1cube3d
    raviartthomas1cube3d.hhraviartthomas1cube3dlocalbasis.hh
    raviartthomas1cube3d.hhraviartthomas1cube3dlocalcoefficients.hh
    raviartthomas1cube3d.hhraviartthomas1cube3dlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas1cube3d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas1cube3d
    raviartthomas1cube3d.hhraviartthomas1cube3dlocalbasis.hh
    raviartthomas1cube3d.hhraviartthomas1cube3dlocalcoefficients.hh
    raviartthomas1cube3d.hhraviartthomas1cube3dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000047.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000047.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas2cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas2cube2d
    raviartthomas2cube2d.hhraviartthomas2cube2dlocalbasis.hh
    raviartthomas2cube2d.hhraviartthomas2cube2dlocalcoefficients.hh
    raviartthomas2cube2d.hhraviartthomas2cube2dlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas2cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas2cube2d
    raviartthomas2cube2d.hhraviartthomas2cube2dlocalbasis.hh
    raviartthomas2cube2d.hhraviartthomas2cube2dlocalcoefficients.hh
    raviartthomas2cube2d.hhraviartthomas2cube2dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000048.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000048.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas3cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas3cube2d
    raviartthomas3cube2d.hhraviartthomas3cube2dlocalbasis.hh
    raviartthomas3cube2d.hhraviartthomas3cube2dlocalcoefficients.hh
    raviartthomas3cube2d.hhraviartthomas3cube2dlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas3cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas3cube2d
    raviartthomas3cube2d.hhraviartthomas3cube2dlocalbasis.hh
    raviartthomas3cube2d.hhraviartthomas3cube2dlocalcoefficients.hh
    raviartthomas3cube2d.hhraviartthomas3cube2dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000049.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000049.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomas4cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas4cube2d
    raviartthomas4cube2d.hhraviartthomas4cube2dlocalbasis.hh
    raviartthomas4cube2d.hhraviartthomas4cube2dlocalcoefficients.hh
    raviartthomas4cube2d.hhraviartthomas4cube2dlocalinterpolation.hh
    \n+

    raviartthomas → raviartthomas4cube2d Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomas4cube2d
    raviartthomas4cube2d.hhraviartthomas4cube2dlocalbasis.hh
    raviartthomas4cube2d.hhraviartthomas4cube2dlocalcoefficients.hh
    raviartthomas4cube2d.hhraviartthomas4cube2dlocalinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000050.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000050.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas → raviartthomassimplex Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomassimplex
    raviartthomassimplex.hhraviartthomassimplexbasis.hh
    \n+

    raviartthomas → raviartthomassimplex Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/raviartthomas/raviartthomassimplex
    raviartthomassimplex.hhraviartthomassimplexbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000055.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000037_000055.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    raviartthomas → utility Relation

    File in dune/localfunctions/raviartthomasIncludes file in dune/localfunctions/utility
    raviartthomassimplex.hhlocalfunctions/utility/localfiniteelement.hh
    raviartthomassimplex / raviartthomassimplexbasis.hhdefaultbasisfactory.hh
    raviartthomassimplex / raviartthomassimplexinterpolation.hhinterpolationhelper.hh
    raviartthomassimplex / raviartthomassimplexinterpolation.hhpolynomialbasis.hh
    raviartthomassimplex / raviartthomassimplexprebasis.hhpolynomialbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000038_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000038_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas02d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas02dIncludes file in dune/localfunctions/common
    raviartthomas02dlocalbasis.hhcommon/localbasis.hh
    raviartthomas02dlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas02d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas02dIncludes file in dune/localfunctions/common
    raviartthomas02dlocalbasis.hhcommon/localbasis.hh
    raviartthomas02dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000039_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000039_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas03d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas03dIncludes file in dune/localfunctions/common
    raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas03dlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas03d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas03dIncludes file in dune/localfunctions/common
    raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas03dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000040_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000040_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas0cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0cube2dIncludes file in dune/localfunctions/common
    raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas0cube2dall.hhlocalkey.hh
    \n+

    raviartthomas0cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0cube2dIncludes file in dune/localfunctions/common
    raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas0cube2dall.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000041_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000041_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas0cube3d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0cube3dIncludes file in dune/localfunctions/common
    raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas0cube3dall.hhlocalkey.hh
    \n+

    raviartthomas0cube3d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0cube3dIncludes file in dune/localfunctions/common
    raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas0cube3dall.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000042_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000042_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas0prism → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0prismIncludes file in dune/localfunctions/common
    raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas0prism → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0prismIncludes file in dune/localfunctions/common
    raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000043_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000043_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas0pyramid → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0pyramidIncludes file in dune/localfunctions/common
    raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas0pyramid → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0pyramidIncludes file in dune/localfunctions/common
    raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000044_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000044_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas12d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas12dIncludes file in dune/localfunctions/common
    raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas12dlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas12d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas12dIncludes file in dune/localfunctions/common
    raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas12dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000045_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000045_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas1cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas1cube2dIncludes file in dune/localfunctions/common
    raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas1cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas1cube2dIncludes file in dune/localfunctions/common
    raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000046_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000046_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas1cube3d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas1cube3dIncludes file in dune/localfunctions/common
    raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas1cube3d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas1cube3dIncludes file in dune/localfunctions/common
    raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000047_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000047_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas2cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas2cube2dIncludes file in dune/localfunctions/common
    raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas2cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas2cube2dIncludes file in dune/localfunctions/common
    raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000048_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000048_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas3cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas3cube2dIncludes file in dune/localfunctions/common
    raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas3cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas3cube2dIncludes file in dune/localfunctions/common
    raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000049_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000049_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomas4cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas4cube2dIncludes file in dune/localfunctions/common
    raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    \n+

    raviartthomas4cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas4cube2dIncludes file in dune/localfunctions/common
    raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomassimplex → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomassimplexIncludes file in dune/localfunctions/common
    raviartthomassimplexinterpolation.hhlocalkey.hh
    \n+

    raviartthomassimplex → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomassimplexIncludes file in dune/localfunctions/common
    raviartthomassimplexinterpolation.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000030.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000030.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomassimplex → orthonormal Relation

    File in dune/localfunctions/raviartthomas/raviartthomassimplexIncludes file in dune/localfunctions/orthonormal
    raviartthomassimplexinterpolation.hhorthonormalbasis.hh
    \n+

    raviartthomassimplex → orthonormal Relation

    File in dune/localfunctions/raviartthomas/raviartthomassimplexIncludes file in dune/localfunctions/orthonormal
    raviartthomassimplexinterpolation.hhorthonormalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000055.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000055.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    raviartthomassimplex → utility Relation

    File in dune/localfunctions/raviartthomas/raviartthomassimplexIncludes file in dune/localfunctions/utility
    raviartthomassimplexbasis.hhdefaultbasisfactory.hh
    raviartthomassimplexinterpolation.hhinterpolationhelper.hh
    raviartthomassimplexinterpolation.hhpolynomialbasis.hh
    raviartthomassimplexprebasis.hhpolynomialbasis.hh
    \n+

    raviartthomassimplex → utility Relation

    File in dune/localfunctions/raviartthomas/raviartthomassimplexIncludes file in dune/localfunctions/utility
    raviartthomassimplexbasis.hhdefaultbasisfactory.hh
    raviartthomassimplexinterpolation.hhinterpolationhelper.hh
    raviartthomassimplexinterpolation.hhpolynomialbasis.hh
    raviartthomassimplexprebasis.hhpolynomialbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n \n+

    refined → common Relation

    File in dune/localfunctions/refinedIncludes file in dune/localfunctions/common
    refinedp0.hhlocalfiniteelementtraits.hh
    refinedp1.hhlocalfiniteelementtraits.hh
    common / refinedsimplexlocalbasis.hhcommon/localbasis.hh
    refinedp0 / refinedp0localbasis.hhcommon/localbasis.hh
    refinedp0 / refinedp0localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_000022.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_000022.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    refined → lagrange Relation

    File in dune/localfunctions/refinedIncludes file in dune/localfunctions/lagrange
    refinedp0.hhp0.hh
    refinedp1.hhlagrangesimplex.hh
    refinedp1.hhp0.hh
    \n+

    refined → lagrange Relation

    File in dune/localfunctions/refinedIncludes file in dune/localfunctions/lagrange
    refinedp0.hhp0.hh
    refinedp1.hhlagrangesimplex.hh
    refinedp1.hhp0.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_000052.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_000052.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    refined → refinedp0 Relation

    File in dune/localfunctions/refinedIncludes file in dune/localfunctions/refined/refinedp0
    refinedp0.hhrefinedp0localbasis.hh
    refinedp0.hhrefinedp0localcoefficients.hh
    refinedp0.hhrefinedp0localinterpolation.hh
    \n+

    refined → refinedp0 Relation

    File in dune/localfunctions/refinedIncludes file in dune/localfunctions/refined/refinedp0
    refinedp0.hhrefinedp0localbasis.hh
    refinedp0.hhrefinedp0localcoefficients.hh
    refinedp0.hhrefinedp0localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_000053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_000053.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    refined → refinedp1 Relation

    File in dune/localfunctions/refinedIncludes file in dune/localfunctions/refined/refinedp1
    refinedp1.hhrefinedp1localbasis.hh
    \n+

    refined → refinedp1 Relation

    File in dune/localfunctions/refinedIncludes file in dune/localfunctions/refined/refinedp1
    refinedp1.hhrefinedp1localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000052_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000052_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    refinedp0 → common Relation

    File in dune/localfunctions/refined/refinedp0Includes file in dune/localfunctions/common
    refinedp0localbasis.hhcommon/localbasis.hh
    refinedp0localcoefficients.hhlocalkey.hh
    \n+

    refinedp0 → common Relation

    File in dune/localfunctions/refined/refinedp0Includes file in dune/localfunctions/common
    refinedp0localbasis.hhcommon/localbasis.hh
    refinedp0localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000052_000008.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000052_000008.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    refinedp0 → common Relation

    File in dune/localfunctions/refined/refinedp0Includes file in dune/localfunctions/refined/common
    refinedp0localbasis.hhrefinedsimplexlocalbasis.hh
    \n+

    refinedp0 → common Relation

    File in dune/localfunctions/refined/refinedp0Includes file in dune/localfunctions/refined/common
    refinedp0localbasis.hhrefinedsimplexlocalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000053_000008.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000053_000008.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    refinedp1 → common Relation

    File in dune/localfunctions/refined/refinedp1Includes file in dune/localfunctions/refined/common
    refinedp1localbasis.hhrefinedsimplexlocalbasis.hh
    \n+

    refinedp1 → common Relation

    File in dune/localfunctions/refined/refinedp1Includes file in dune/localfunctions/refined/common
    refinedp1localbasis.hhrefinedsimplexlocalbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000054_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000054_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    simplexp1bubble → common Relation

    File in dune/localfunctions/enriched/simplexp1bubbleIncludes file in dune/localfunctions/common
    enriched/simplexp1bubble/localbasis.hhcommon/localbasis.hh
    enriched/simplexp1bubble/localcoefficients.hhlocalkey.hh
    \n+

    simplexp1bubble → common Relation

    File in dune/localfunctions/enriched/simplexp1bubbleIncludes file in dune/localfunctions/common
    enriched/simplexp1bubble/localbasis.hhcommon/localbasis.hh
    enriched/simplexp1bubble/localcoefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000055_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000055_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    utility → common Relation

    File in dune/localfunctions/utilityIncludes file in dune/localfunctions/common
    dglocalcoefficients.hhlocalkey.hh
    localfunctions/utility/localfiniteelement.hhlocalfiniteelementtraits.hh
    polynomialbasis.hhcommon/localbasis.hh
    \n+

    utility → common Relation

    File in dune/localfunctions/utilityIncludes file in dune/localfunctions/common
    dglocalcoefficients.hhlocalkey.hh
    localfunctions/utility/localfiniteelement.hhlocalfiniteelementtraits.hh
    polynomialbasis.hhcommon/localbasis.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000056_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000056_000007.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    whitney → common Relation

    File in dune/localfunctions/whitneyIncludes file in dune/localfunctions/common
    edges0.5 / whitney/edges0.5/basis.hhlocaltoglobaladaptors.hh
    edges0.5 / whitney/edges0.5/coefficients.hhlocalkey.hh
    \n+

    whitney → common Relation

    File in dune/localfunctions/whitneyIncludes file in dune/localfunctions/common
    edges0.5 / whitney/edges0.5/basis.hhlocaltoglobaladaptors.hh
    edges0.5 / whitney/edges0.5/coefficients.hhlocalkey.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000056_000016.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000056_000016.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    whitney → edges0.5 Relation

    File in dune/localfunctions/whitneyIncludes file in dune/localfunctions/whitney/edges0.5
    edges0.5.hhwhitney/edges0.5/basis.hh
    edges0.5.hhwhitney/edges0.5/coefficients.hh
    edges0.5.hhwhitney/edges0.5/interpolation.hh
    \n+

    whitney → edges0.5 Relation

    File in dune/localfunctions/whitneyIncludes file in dune/localfunctions/whitney/edges0.5
    edges0.5.hhwhitney/edges0.5/basis.hh
    edges0.5.hhwhitney/edges0.5/coefficients.hh
    edges0.5.hhwhitney/edges0.5/interpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000056_000022.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000056_000022.html", "unified_diff": "@@ -69,14 +69,14 @@\n \n \n \n
    \n-

    whitney → lagrange Relation

    File in dune/localfunctions/whitneyIncludes file in dune/localfunctions/lagrange
    edges0.5 / whitney/edges0.5/basis.hhlagrangesimplex.hh
    \n+

    whitney → lagrange Relation

    File in dune/localfunctions/whitneyIncludes file in dune/localfunctions/lagrange
    edges0.5 / whitney/edges0.5/basis.hhlagrangesimplex.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_00f4c9da8ab215917e2238f0b0796258.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_00f4c9da8ab215917e2238f0b0796258.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n
    \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas12dlocalbasis.hh
     raviartthomas12dlocalbasis.hh
     
     raviartthomas12dlocalcoefficients.hh
     raviartthomas12dlocalcoefficients.hh
     
     raviartthomas12dlocalinterpolation.hh
     raviartthomas12dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_04dab32f204170fce2c957668ac3e5f5.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_04dab32f204170fce2c957668ac3e5f5.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     basis.hh
     basis.hh
     
     coefficients.hh
     coefficients.hh
     
     interpolation.hh
     interpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_074cf607d40aa196487128d1cd4b7c2b.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_074cf607d40aa196487128d1cd4b7c2b.html", "unified_diff": "@@ -93,19 +93,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomassimplexbasis.hh
     raviartthomassimplexbasis.hh
     
     raviartthomassimplexinterpolation.hh
     raviartthomassimplexinterpolation.hh
     
     raviartthomassimplexprebasis.hh
     raviartthomassimplexprebasis.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_143be598d26ab497b1cf2bfe80fc7779.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_143be598d26ab497b1cf2bfe80fc7779.html", "unified_diff": "@@ -87,16 +87,16 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n

    \n Files

     hierarchicalsimplexp2withelementbubble.hh
     Hierarchical p2 shape functions for the simplex.
     hierarchicalsimplexp2withelementbubble.hh
     Hierarchical p2 shape functions for the simplex.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_15eac88247e25f0f27b13d32b73d619c.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_15eac88247e25f0f27b13d32b73d619c.html", "unified_diff": "@@ -87,16 +87,16 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n

    \n Files

     refinedsimplexlocalbasis.hh
     Contains a base class for LocalBasis classes based on uniform refinement.
     refinedsimplexlocalbasis.hh
     Contains a base class for LocalBasis classes based on uniform refinement.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_1827d78335859fc5128ae8554d7cfd8a.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_1827d78335859fc5128ae8554d7cfd8a.html", "unified_diff": "@@ -101,17 +101,17 @@\n

    \n Directories

    \n  nedelecsimplex\n  \n \n \n-\n+\n \n-\n+\n \n

    \n Files

     nedelec1stkindcube.hh
     nedelec1stkindcube.hh
     
     nedelec1stkindsimplex.hh
     nedelec1stkindsimplex.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_1f1a538a498ce02a82be88987c51ab5d.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_1f1a538a498ce02a82be88987c51ab5d.html", "unified_diff": "@@ -87,15 +87,15 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n

    \n Files

     rannacherturek2dlocalbasis.hh
     rannacherturek2dlocalbasis.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_21dddee0a34e22148b82b7f55eaf3cdb.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_21dddee0a34e22148b82b7f55eaf3cdb.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas2cube2dlocalbasis.hh
     raviartthomas2cube2dlocalbasis.hh
     
     raviartthomas2cube2dlocalcoefficients.hh
     raviartthomas2cube2dlocalcoefficients.hh
     
     raviartthomas2cube2dlocalinterpolation.hh
     raviartthomas2cube2dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_22a3622bb91f1bf42dc2704315301344.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_22a3622bb91f1bf42dc2704315301344.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     brezzidouglasmarini1cube3dlocalbasis.hh
     brezzidouglasmarini1cube3dlocalbasis.hh
     
     brezzidouglasmarini1cube3dlocalcoefficients.hh
     brezzidouglasmarini1cube3dlocalcoefficients.hh
     
     brezzidouglasmarini1cube3dlocalinterpolation.hh
     brezzidouglasmarini1cube3dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_28824a0ee22611676c14160ba27dca19.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_28824a0ee22611676c14160ba27dca19.html", "unified_diff": "@@ -95,15 +95,15 @@\n

    \n Directories

    \n  power\n  \n \n \n-\n+\n \n

    \n Files

     power.hh
     power.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_30041f0f075e04eba93c1e90a93bda5c.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_30041f0f075e04eba93c1e90a93bda5c.html", "unified_diff": "@@ -218,43 +218,43 @@\n  utility\n  \n  whitney\n  \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n-\n+\n+\n \n

    \n Files

     brezzidouglasmarini.hh
     brezzidouglasmarini.hh
     
     crouzeixraviart.hh
     crouzeixraviart.hh
     
     dualmortarbasis.hh
     dualmortarbasis.hh
     
     enriched.hh
     enriched.hh
     
     hierarchical.hh
     Convenience header that includes all available hierarchical LocalFiniteElements.
     hierarchical.hh
     Convenience header that includes all available hierarchical LocalFiniteElements.
     
     lagrange.hh
     Convenience header that includes all implementations of Lagrange finite elements.
     lagrange.hh
     Convenience header that includes all implementations of Lagrange finite elements.
     
     mimetic.hh
     mimetic.hh
     
     monomial.hh
     monomial.hh
     
     nedelec.hh
     nedelec.hh
     
     orthonormal.hh
     orthonormal.hh
     
     rannacherturek.hh
     Convenience header that includes all available Rannacher-Turek LocalFiniteElements.
     rannacherturek.hh
     Convenience header that includes all available Rannacher-Turek LocalFiniteElements.
     
     raviartthomas.hh
     raviartthomas.hh
     
     refined.hh
     Convenience header that includes all available LocalFiniteElements based on uniform element refinement.
     refined.hh
     Convenience header that includes all available LocalFiniteElements based on uniform element refinement.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_382f55a8cedaec4f6094a1f9a7ac5b41.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_382f55a8cedaec4f6094a1f9a7ac5b41.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas4cube2dlocalbasis.hh
     raviartthomas4cube2dlocalbasis.hh
     
     raviartthomas4cube2dlocalcoefficients.hh
     raviartthomas4cube2dlocalcoefficients.hh
     
     raviartthomas4cube2dlocalinterpolation.hh
     raviartthomas4cube2dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_386a5b330ea6d6e23e2617c849e344e3.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_386a5b330ea6d6e23e2617c849e344e3.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas0prismlocalbasis.hh
     raviartthomas0prismlocalbasis.hh
     
     raviartthomas0prismlocalcoefficients.hh
     raviartthomas0prismlocalcoefficients.hh
     
     raviartthomas0prismlocalinterpolation.hh
     raviartthomas0prismlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_4009bb7c6c39619515ed15f75465c5da.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_4009bb7c6c39619515ed15f75465c5da.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas02dlocalbasis.hh
     raviartthomas02dlocalbasis.hh
     
     raviartthomas02dlocalcoefficients.hh
     raviartthomas02dlocalcoefficients.hh
     
     raviartthomas02dlocalinterpolation.hh
     raviartthomas02dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_421d79ad4cafaafb52a5003304930aac.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_421d79ad4cafaafb52a5003304930aac.html", "unified_diff": "@@ -90,21 +90,21 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     basis.hh
     basis.hh
     
     coefficients.hh
     coefficients.hh
     
     common.hh
     common.hh
     
     interpolation.hh
     interpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_4378156c656f282b787cb904a0df684d.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_4378156c656f282b787cb904a0df684d.html", "unified_diff": "@@ -114,18 +114,18 @@\n  refinedp0\n  \n  refinedp1\n  \n \n \n-\n-\n+\n+\n \n-\n+\n \n

    \n Files

     refinedp0.hh
     Piecewise P0 finite element.
     refinedp0.hh
     Piecewise P0 finite element.
     
     refinedp1.hh
     refinedp1.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_49183f7e7ccd69590c9095f18e69e645.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_49183f7e7ccd69590c9095f18e69e645.html", "unified_diff": "@@ -93,19 +93,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     nedelecsimplexbasis.hh
     nedelecsimplexbasis.hh
     
     nedelecsimplexinterpolation.hh
     nedelecsimplexinterpolation.hh
     
     nedelecsimplexprebasis.hh
     nedelecsimplexprebasis.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_53596036ac495f55b7fa1caaab1fea96.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_53596036ac495f55b7fa1caaab1fea96.html", "unified_diff": "@@ -97,15 +97,15 @@\n

    \n Directories

    \n  cube\n  \n \n \n-\n+\n \n

    \n Files

     bdfmcube.hh
     bdfmcube.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_5678718b81d350908b34fc61eb04cbcd.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_5678718b81d350908b34fc61eb04cbcd.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     dualp1localbasis.hh
     dualp1localbasis.hh
     
     dualp1localcoefficients.hh
     dualp1localcoefficients.hh
     
     dualp1localinterpolation.hh
     dualp1localinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_585f2e0fbd475e320aabbc7f7e68ccdc.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_585f2e0fbd475e320aabbc7f7e68ccdc.html", "unified_diff": "@@ -107,19 +107,19 @@\n  dualp1\n  \n  dualq1\n  \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     dualp1.hh
     dualp1.hh
     
     dualpq1factory.hh
     dualpq1factory.hh
     
     dualq1.hh
     dualq1.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_5bc7e90abcdd1dc5d315f05df75ca74d.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_5bc7e90abcdd1dc5d315f05df75ca74d.html", "unified_diff": "@@ -87,43 +87,43 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     basisevaluator.hh
     basisevaluator.hh
     
     basismatrix.hh
     basismatrix.hh
     
     basisprint.hh
     basisprint.hh
     
     coeffmatrix.hh
     coeffmatrix.hh
     
     defaultbasisfactory.hh
     defaultbasisfactory.hh
     
     dglocalcoefficients.hh
     dglocalcoefficients.hh
     
     field.hh
     field.hh
     
     interpolationhelper.hh
     interpolationhelper.hh
     
     l2interpolation.hh
     l2interpolation.hh
     
     lfematrix.hh
     lfematrix.hh
     
     localfiniteelement.hh
     
     monomialbasis.hh
     monomialbasis.hh
     
     multiindex.hh
     multiindex.hh
     
     polynomialbasis.hh
     polynomialbasis.hh
     
     tensor.hh
     tensor.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_67d9ae42291990d542a2d8fc663c58f1.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_67d9ae42291990d542a2d8fc663c58f1.html", "unified_diff": "@@ -89,17 +89,17 @@\n \n \n \n \n \n \n-\n+\n \n-\n+\n \n

    \n Files

     localbasis.hh
     
     localcoefficients.hh
     localcoefficients.hh
     
     localinterpolation.hh
     localinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_6d0910d4679bea49954f0838f12605cd.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_6d0910d4679bea49954f0838f12605cd.html", "unified_diff": "@@ -87,15 +87,15 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n

    \n Files

     mimeticall.hh
     mimeticall.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_6da82cbcb1f843ebe8e0e206103e116b.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_6da82cbcb1f843ebe8e0e206103e116b.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas1cube3dlocalbasis.hh
     raviartthomas1cube3dlocalbasis.hh
     
     raviartthomas1cube3dlocalcoefficients.hh
     raviartthomas1cube3dlocalcoefficients.hh
     
     raviartthomas1cube3dlocalinterpolation.hh
     raviartthomas1cube3dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_6f880762eb1e10610c113be8af692f0c.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_6f880762eb1e10610c113be8af692f0c.html", "unified_diff": "@@ -97,15 +97,15 @@\n

    \n Directories

    \n  simplexp1bubble\n  \n \n \n-\n+\n \n

    \n Files

     simplexp1bubble.hh
     simplexp1bubble.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_71148d455ae2a500a300aa73e3dd12ad.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_71148d455ae2a500a300aa73e3dd12ad.html", "unified_diff": "@@ -87,16 +87,16 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n

    \n Files

     refinedp1localbasis.hh
     Linear Lagrange shape functions on a uniformly refined reference element.
     refinedp1localbasis.hh
     Linear Lagrange shape functions on a uniformly refined reference element.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_71616432e16d5865955af515ad5e0744.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_71616432e16d5865955af515ad5e0744.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     brezzidouglasmarini2cube2dlocalbasis.hh
     brezzidouglasmarini2cube2dlocalbasis.hh
     
     brezzidouglasmarini2cube2dlocalcoefficients.hh
     brezzidouglasmarini2cube2dlocalcoefficients.hh
     
     brezzidouglasmarini2cube2dlocalinterpolation.hh
     brezzidouglasmarini2cube2dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_823b392c71b48b7589adb0f11493ac2f.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_823b392c71b48b7589adb0f11493ac2f.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas3cube2dlocalbasis.hh
     raviartthomas3cube2dlocalbasis.hh
     
     raviartthomas3cube2dlocalcoefficients.hh
     raviartthomas3cube2dlocalcoefficients.hh
     
     raviartthomas3cube2dlocalinterpolation.hh
     raviartthomas3cube2dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_8510acc7be177aaf184222e3a42fbd90.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_8510acc7be177aaf184222e3a42fbd90.html", "unified_diff": "@@ -87,15 +87,15 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n

    \n Files

     raviartthomas0cube3dall.hh
     raviartthomas0cube3dall.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_8970d470433bc1a83f0ff1fce1e45259.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_8970d470433bc1a83f0ff1fce1e45259.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     brezzidouglasmarini1cube2dlocalbasis.hh
     brezzidouglasmarini1cube2dlocalbasis.hh
     
     brezzidouglasmarini1cube2dlocalcoefficients.hh
     brezzidouglasmarini1cube2dlocalcoefficients.hh
     
     brezzidouglasmarini1cube2dlocalinterpolation.hh
     brezzidouglasmarini1cube2dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_8b2e3afc095b41e287925a839e743b61.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_8b2e3afc095b41e287925a839e743b61.html", "unified_diff": "@@ -100,49 +100,49 @@\n

    \n Directories

    \n  p0\n  \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     cache.hh
     cache.hh
     
     emptypoints.hh
     emptypoints.hh
     
     equidistantpoints.hh
     equidistantpoints.hh
     
     interpolation.hh
     interpolation.hh
     
     lagrangebasis.hh
     lagrangebasis.hh
     
     lagrangecoefficients.hh
     lagrangecoefficients.hh
     
     lagrangecube.hh
     lagrangecube.hh
     
     lagrangelfecache.hh
     lagrangelfecache.hh
     
     lagrangeprism.hh
     lagrangeprism.hh
     
     lagrangepyramid.hh
     lagrangepyramid.hh
     
     lagrangesimplex.hh
     lagrangesimplex.hh
     
     p0.hh
     p0.hh
     
     pk1d.hh
     pk1d.hh
     
     pk2d.hh
     pk2d.hh
     
     pq22d.hh
     pq22d.hh
     
     pqkfactory.hh
     pqkfactory.hh
     
     q1.hh
     q1.hh
     
     q2.hh
     q2.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_8fe95ea975fd68f12bc5a405d6e8d523.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_8fe95ea975fd68f12bc5a405d6e8d523.html", "unified_diff": "@@ -117,21 +117,21 @@\n  hierarchicalp2withelementbubble\n  \n  hierarchicalprismp2\n  \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     hierarchicalp1withelementbubble.hh
     hierarchicalp1withelementbubble.hh
     
     hierarchicalp2.hh
     hierarchicalp2.hh
     
     hierarchicalp2withelementbubble.hh
     hierarchicalp2withelementbubble.hh
     
     hierarchicalprismp2.hh
     hierarchicalprismp2.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_9787051b379ebc86022a67dd30e8520b.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_9787051b379ebc86022a67dd30e8520b.html", "unified_diff": "@@ -125,27 +125,27 @@\n  brezzidouglasmarini2cube2d\n  \n  brezzidouglasmarini2simplex2d\n  \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     brezzidouglasmarini1cube2d.hh
     brezzidouglasmarini1cube2d.hh
     
     brezzidouglasmarini1cube3d.hh
     brezzidouglasmarini1cube3d.hh
     
     brezzidouglasmarini1simplex2d.hh
     brezzidouglasmarini1simplex2d.hh
     
     brezzidouglasmarini2cube2d.hh
     brezzidouglasmarini2cube2d.hh
     
     brezzidouglasmarini2simplex2d.hh
     brezzidouglasmarini2simplex2d.hh
     
     brezzidouglasmarinicube.hh
     brezzidouglasmarinicube.hh
     
     brezzidouglasmarinisimplex.hh
     brezzidouglasmarinisimplex.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_a211a3e3ca18278d304a7c542b00b975.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_a211a3e3ca18278d304a7c542b00b975.html", "unified_diff": "@@ -89,17 +89,17 @@\n \n \n \n \n \n \n-\n+\n \n-\n+\n \n

    \n Files

     localbasis.hh
     
     localcoefficients.hh
     localcoefficients.hh
     
     localinterpolation.hh
     localinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_a66338a2012e3f6505c25575a6cea63c.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_a66338a2012e3f6505c25575a6cea63c.html", "unified_diff": "@@ -87,18 +87,18 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n-\n+\n \n

    \n Files

     hierarchicalprismp2localbasis.hh
     Hierarchical prism p2 shape functions for the simplex.
     hierarchicalprismp2localbasis.hh
     Hierarchical prism p2 shape functions for the simplex.
     
     hierarchicalprismp2localinterpolation.hh
     hierarchicalprismp2localinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_ad4ff0c4792f0b7d780add844ab84963.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_ad4ff0c4792f0b7d780add844ab84963.html", "unified_diff": "@@ -84,35 +84,35 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     interface.hh
     interface.hh
     
     interfaceswitch.hh
     interfaceswitch.hh
     
     localbasis.hh
     
     localfiniteelementtraits.hh
     localfiniteelementtraits.hh
     
     localfiniteelementvariant.hh
     localfiniteelementvariant.hh
     
     localfiniteelementvariantcache.hh
     localfiniteelementvariantcache.hh
     
     localinterpolation.hh
     localinterpolation.hh
     
     localkey.hh
     localkey.hh
     
     localtoglobaladaptors.hh
     localtoglobaladaptors.hh
     
     virtualinterface.hh
     virtualinterface.hh
     
     virtualwrappers.hh
     virtualwrappers.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_b2cb14a0d9088cd62579b19ead450892.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_b2cb14a0d9088cd62579b19ead450892.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas03dlocalbasis.hh
     raviartthomas03dlocalbasis.hh
     
     raviartthomas03dlocalcoefficients.hh
     raviartthomas03dlocalcoefficients.hh
     
     raviartthomas03dlocalinterpolation.hh
     raviartthomas03dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_b42558ccc2f3e8caa7410da996ef8620.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_b42558ccc2f3e8caa7410da996ef8620.html", "unified_diff": "@@ -87,15 +87,15 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n

    \n Files

     raviartthomas0cube2dall.hh
     raviartthomas0cube2dall.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_b4d841350442623b4eaf66019ddfb2ac.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_b4d841350442623b4eaf66019ddfb2ac.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     brezzidouglasmarini1simplex2dlocalbasis.hh
     brezzidouglasmarini1simplex2dlocalbasis.hh
     
     brezzidouglasmarini1simplex2dlocalcoefficients.hh
     brezzidouglasmarini1simplex2dlocalcoefficients.hh
     
     brezzidouglasmarini1simplex2dlocalinterpolation.hh
     brezzidouglasmarini1simplex2dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_bc8da33649d02c1ab14da4aa3b67e546.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_bc8da33649d02c1ab14da4aa3b67e546.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas0pyramidlocalbasis.hh
     raviartthomas0pyramidlocalbasis.hh
     
     raviartthomas0pyramidlocalcoefficients.hh
     raviartthomas0pyramidlocalcoefficients.hh
     
     raviartthomas0pyramidlocalinterpolation.hh
     raviartthomas0pyramidlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_c2081a8a248ad2a90294516d63f42c40.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_c2081a8a248ad2a90294516d63f42c40.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     monomiallocalbasis.hh
     monomiallocalbasis.hh
     
     monomiallocalcoefficients.hh
     monomiallocalcoefficients.hh
     
     monomiallocalinterpolation.hh
     monomiallocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_c7c5140b9ab4708447fb7f864f4889ef.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_c7c5140b9ab4708447fb7f864f4889ef.html", "unified_diff": "@@ -87,18 +87,18 @@\n \"\"\n \"\"\n \n \n \n \n-\n-\n+\n+\n \n-\n+\n \n

    \n Files

     hierarchicalsimplexp2localbasis.hh
     Hierarchical p2 shape functions for the simplex.
     hierarchicalsimplexp2localbasis.hh
     Hierarchical p2 shape functions for the simplex.
     
     hierarchicalsimplexp2localinterpolation.hh
     hierarchicalsimplexp2localinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_cf8c45a6df7433502566ea3d2c52438a.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_cf8c45a6df7433502566ea3d2c52438a.html", "unified_diff": "@@ -90,19 +90,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     refinedp0localbasis.hh
     refinedp0localbasis.hh
     
     refinedp0localcoefficients.hh
     refinedp0localcoefficients.hh
     
     refinedp0localinterpolation.hh
     refinedp0localinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_d826de38d8c7978fd2365f5d4044529e.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_d826de38d8c7978fd2365f5d4044529e.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     brezzidouglasmarini2simplex2dlocalbasis.hh
     brezzidouglasmarini2simplex2dlocalbasis.hh
     
     brezzidouglasmarini2simplex2dlocalcoefficients.hh
     brezzidouglasmarini2simplex2dlocalcoefficients.hh
     
     brezzidouglasmarini2simplex2dlocalinterpolation.hh
     brezzidouglasmarini2simplex2dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_d873868af1a480918db2c450e7692ccb.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_d873868af1a480918db2c450e7692ccb.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     p0localbasis.hh
     p0localbasis.hh
     
     p0localcoefficients.hh
     p0localcoefficients.hh
     
     p0localinterpolation.hh
     p0localinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_defe5f8b98cd926511e97660f8302279.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_defe5f8b98cd926511e97660f8302279.html", "unified_diff": "@@ -98,15 +98,15 @@\n

    \n Directories

    \n  edges0.5\n  \n \n \n-\n+\n \n

    \n Files

     edges0.5.hh
     edges0.5.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_df07eea68ef446be83c32717b7e3480c.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_df07eea68ef446be83c32717b7e3480c.html", "unified_diff": "@@ -189,45 +189,45 @@\n  raviartthomas4cube2d\n  \n  raviartthomassimplex\n  \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n-\n+\n+\n \n-\n+\n \n-\n-\n+\n+\n \n

    \n Files

     raviartthomas02d.hh
     raviartthomas02d.hh
     
     raviartthomas03d.hh
     raviartthomas03d.hh
     
     raviartthomas0cube2d.hh
     raviartthomas0cube2d.hh
     
     raviartthomas0cube3d.hh
     raviartthomas0cube3d.hh
     
     raviartthomas0prism.hh
     raviartthomas0prism.hh
     
     raviartthomas0pyramid.hh
     raviartthomas0pyramid.hh
     
     raviartthomas12d.hh
     raviartthomas12d.hh
     
     raviartthomas1cube2d.hh
     raviartthomas1cube2d.hh
     
     raviartthomas1cube3d.hh
     raviartthomas1cube3d.hh
     
     raviartthomas2cube2d.hh
     raviartthomas2cube2d.hh
     
     raviartthomas3cube2d.hh
     raviartthomas3cube2d.hh
     
     raviartthomas4cube2d.hh
     raviartthomas4cube2d.hh
     
     raviartthomascube.hh
     Convenience header that includes all available Raviart-Thomas local finite elements for cubes.
     raviartthomascube.hh
     Convenience header that includes all available Raviart-Thomas local finite elements for cubes.
     
     raviartthomaslfecache.hh
     raviartthomaslfecache.hh
     
     raviartthomassimplex.hh
     Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension.
     raviartthomassimplex.hh
     Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension.
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_e670e0e484f250be25d4a88b80008bd8.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_e670e0e484f250be25d4a88b80008bd8.html", "unified_diff": "@@ -104,21 +104,21 @@\n  rannacherturek2d\n  \n  rannacherturek3d\n  \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     rannacherturek.hh
     rannacherturek.hh
     
     rannachertureklocalbasis.hh
     rannachertureklocalbasis.hh
     
     rannachertureklocalcoefficients.hh
     rannachertureklocalcoefficients.hh
     
     rannachertureklocalinterpolation.hh
     rannachertureklocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_e9e12ace095713dbe635135edab421e8.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_e9e12ace095713dbe635135edab421e8.html", "unified_diff": "@@ -87,15 +87,15 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n

    \n Files

     rannacherturek3dlocalbasis.hh
     rannacherturek3dlocalbasis.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_efe9c42b7995a789e2e3a3951e68c4dc.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_efe9c42b7995a789e2e3a3951e68c4dc.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     raviartthomas1cube2dlocalbasis.hh
     raviartthomas1cube2dlocalbasis.hh
     
     raviartthomas1cube2dlocalcoefficients.hh
     raviartthomas1cube2dlocalcoefficients.hh
     
     raviartthomas1cube2dlocalinterpolation.hh
     raviartthomas1cube2dlocalinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_f2cea2550179f5ef9eb9f9aa69c380e8.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_f2cea2550179f5ef9eb9f9aa69c380e8.html", "unified_diff": "@@ -87,17 +87,17 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n

    \n Files

     orthonormalbasis.hh
     orthonormalbasis.hh
     
     orthonormalcompute.hh
     orthonormalcompute.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_fae6c31a68fd74edf8214423c164f0b4.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_fae6c31a68fd74edf8214423c164f0b4.html", "unified_diff": "@@ -87,19 +87,19 @@\n \"\"\n \"\"\n \n \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     dualq1localbasis.hh
     dualq1localbasis.hh
     
     dualq1localcoefficients.hh
     dualq1localcoefficients.hh
     
     dualq1localinterpolation.hh
     dualq1localinterpolation.hh
     
    \n \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dune-localfunctions.tag.gz", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dune-localfunctions.tag.gz", "unified_diff": null, "details": [{"source1": "dune-localfunctions.tag", "source2": "dune-localfunctions.tag", "unified_diff": null, "details": [{"source1": "dune-localfunctions.tag", "source2": "dune-localfunctions.tag", "unified_diff": "@@ -9,1729 +9,1786 @@\n modules.txt\n /build/reproducible-path/dune-localfunctions-2.10.0/doc/doxygen/\n a00005.html\n \n \n bdfmcube.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasfortinmarini/\n- a00548.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ a00017.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/brezzidouglasfortinmarini/cube/localbasis.hh\n- dune/localfunctions/brezzidouglasfortinmarini/cube/localcoefficients.hh\n- dune/localfunctions/brezzidouglasfortinmarini/cube/localinterpolation.hh\n+ dune/localfunctions/brezzidouglasfortinmarini/cube/localcoefficients.hh\n+ dune/localfunctions/brezzidouglasfortinmarini/cube/localinterpolation.hh\n Dune::BDFMCubeLocalFiniteElement\n Dune\n \n \n+ brezzidouglasfortinmarini/cube/localbasis.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasfortinmarini/cube/\n+ a04538.html\n+ dune/localfunctions/common/localbasis.hh\n+ Dune::BDFMCubeLocalBasis\n+ Dune::BDFMCubeLocalBasis< D, R, 2, 1 >\n+ Dune::BDFMCubeLocalBasis< D, R, 2, 2 >\n+ Dune::BDFMCubeLocalBasis< D, R, 2, 3 >\n+ Dune\n+ \n+ \n+ common/localbasis.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n+ a04541.html\n+ Dune::LocalBasisTraits\n+ Dune\n+ \n+ \n+ enriched/simplexp1bubble/localbasis.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/enriched/simplexp1bubble/\n+ a04544.html\n+ dune/localfunctions/common/localbasis.hh\n+ Dune::SimplexP1BubbleLocalBasis\n+ Dune\n+ \n+ \n+ brezzidouglasfortinmarini/cube/localcoefficients.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasfortinmarini/cube/\n+ a04547.html\n+ dune/localfunctions/common/localkey.hh\n+ Dune::BDFMCubeLocalCoefficients\n+ Dune\n+ \n+ \n+ enriched/simplexp1bubble/localcoefficients.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/enriched/simplexp1bubble/\n+ a04550.html\n+ dune/localfunctions/common/localkey.hh\n+ Dune::SimplexP1BubbleLocalCoefficients\n+ Dune\n+ \n+ \n+ brezzidouglasfortinmarini/cube/localinterpolation.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasfortinmarini/cube/\n+ a04553.html\n+ Dune::BDFMCubeLocalInterpolation\n+ Dune\n+ \n+ \n+ common/localinterpolation.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n+ a04556.html\n+ Dune\n+ \n+ \n+ enriched/simplexp1bubble/localinterpolation.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/enriched/simplexp1bubble/\n+ a04559.html\n+ Dune::SimplexP1BubbleLocalInterpolation\n+ Dune\n+ \n+ \n brezzidouglasmarini.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00233.html\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinisimplex.hh\n+ a00020.html\n+ dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh\n+ dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinisimplex.hh\n \n \n brezzidouglasmarini1cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/\n- a00434.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalbasis.hh\n- brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalcoefficients.hh\n- brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalinterpolation.hh\n+ a00278.html\n+ ../common/localfiniteelementtraits.hh\n+ brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalbasis.hh\n+ brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalcoefficients.hh\n+ brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalinterpolation.hh\n Dune::BDM1Cube2DLocalFiniteElement\n Dune\n \n \n brezzidouglasmarini1cube2dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/\n- a00419.html\n+ a00302.html\n ../../common/localbasis.hh\n Dune::BDM1Cube2DLocalBasis\n Dune\n \n \n brezzidouglasmarini1cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/\n- a00422.html\n- ../../common/localkey.hh\n+ a00299.html\n+ ../../common/localkey.hh\n Dune::BDM1Cube2DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini1cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/\n- a00425.html\n+ a00305.html\n Dune::BDM1Cube2DLocalInterpolation\n Dune\n \n \n brezzidouglasmarini1cube3d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/\n- a00389.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalbasis.hh\n- brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalcoefficients.hh\n- brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalinterpolation.hh\n+ a00326.html\n+ ../common/localfiniteelementtraits.hh\n+ brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalbasis.hh\n+ brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalcoefficients.hh\n+ brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalinterpolation.hh\n Dune::BDM1Cube3DLocalFiniteElement\n Dune\n \n \n brezzidouglasmarini1cube3dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/\n- a00440.html\n+ a00317.html\n ../../common/localbasis.hh\n Dune::BDM1Cube3DLocalBasis\n Dune\n \n \n brezzidouglasmarini1cube3dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/\n- a00437.html\n- ../../common/localkey.hh\n+ a00320.html\n+ ../../common/localkey.hh\n Dune::BDM1Cube3DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini1cube3dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/\n- a00443.html\n+ a00323.html\n Dune::BDM1Cube3DLocalInterpolation\n Dune\n \n \n brezzidouglasmarini1simplex2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/\n- a00431.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalbasis.hh\n- brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalcoefficients.hh\n- brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalinterpolation.hh\n+ a00275.html\n+ ../common/localfiniteelementtraits.hh\n+ brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalbasis.hh\n+ brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalcoefficients.hh\n+ brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalinterpolation.hh\n Dune::BDM1Simplex2DLocalFiniteElement\n Dune\n \n \n brezzidouglasmarini1simplex2dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/\n- a00395.html\n+ a00290.html\n ../../common/localbasis.hh\n Dune::BDM1Simplex2DLocalBasis\n Dune\n \n \n brezzidouglasmarini1simplex2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/\n- a00392.html\n- ../../common/localkey.hh\n+ a00296.html\n+ ../../common/localkey.hh\n Dune::BDM1Simplex2DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini1simplex2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/\n- a00398.html\n+ a00293.html\n Dune::BDM1Simplex2DLocalInterpolation\n Dune\n \n \n brezzidouglasmarini2cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/\n- a00416.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalbasis.hh\n- brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalcoefficients.hh\n- brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalinterpolation.hh\n+ a00311.html\n+ ../common/localfiniteelementtraits.hh\n+ brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalbasis.hh\n+ brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalcoefficients.hh\n+ brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalinterpolation.hh\n Dune::BDM2Cube2DLocalFiniteElement\n Dune\n \n \n brezzidouglasmarini2cube2dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/\n- a00401.html\n+ a00284.html\n ../../common/localbasis.hh\n Dune::BDM2Cube2DLocalBasis\n Dune\n \n \n brezzidouglasmarini2cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/\n- a00404.html\n- ../../common/localkey.hh\n+ a00281.html\n+ ../../common/localkey.hh\n Dune::BDM2Cube2DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini2cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/\n- a00407.html\n+ a00287.html\n Dune::BDM2Cube2DLocalInterpolation\n Dune\n \n \n brezzidouglasmarini2simplex2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/\n- a00428.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalbasis.hh\n- brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalcoefficients.hh\n- brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalinterpolation.hh\n+ a00314.html\n+ ../common/localfiniteelementtraits.hh\n+ brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalbasis.hh\n+ brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalcoefficients.hh\n+ brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalinterpolation.hh\n Dune::BDM2Simplex2DLocalFiniteElement\n Dune\n \n \n brezzidouglasmarini2simplex2dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/\n- a00446.html\n+ a00266.html\n ../../common/localbasis.hh\n Dune::BDM2Simplex2DLocalBasis\n Dune\n \n \n brezzidouglasmarini2simplex2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/\n- a00449.html\n- ../../common/localkey.hh\n+ a00272.html\n+ ../../common/localkey.hh\n Dune::BDM2Simplex2DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini2simplex2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/\n- a00452.html\n+ a00269.html\n Dune::BDM2Simplex2DLocalInterpolation\n Dune\n \n \n brezzidouglasmarinicube.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/\n- a00413.html\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d.hh\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d.hh\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d.hh\n+ a00308.html\n+ dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d.hh\n+ dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d.hh\n+ dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d.hh\n Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 1 >\n Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 2, 2 >\n Dune::BrezziDouglasMariniCubeLocalFiniteElement< D, R, 3, 1 >\n Dune\n \n \n brezzidouglasmarinisimplex.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasmarini/\n- a00410.html\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d.hh\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d.hh\n+ a00263.html\n+ dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d.hh\n+ dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d.hh\n Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 1 >\n Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 2 >\n Dune\n \n \n interface.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a00104.html\n- dune/localfunctions/common/localkey.hh\n+ a00113.html\n+ dune/localfunctions/common/localkey.hh\n Dune::FiniteElementInterface\n Dune::FiniteElementInterface::Traits\n Dune::FiniteElementFactoryInterface\n Dune::BasisInterface\n Dune::BasisInterface::Traits\n Dune::InterpolationInterface\n Dune::CoefficientsInterface\n Dune\n \n \n interfaceswitch.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a00080.html\n+ a00122.html\n Dune::FiniteElementInterfaceSwitch\n Dune::BasisInterfaceSwitch\n Dune\n \n \n- brezzidouglasfortinmarini/cube/localbasis.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasfortinmarini/cube/\n- a04538.html\n- dune/localfunctions/common/localbasis.hh\n- Dune::BDFMCubeLocalBasis\n- Dune::BDFMCubeLocalBasis< D, R, 2, 1 >\n- Dune::BDFMCubeLocalBasis< D, R, 2, 2 >\n- Dune::BDFMCubeLocalBasis< D, R, 2, 3 >\n- Dune\n- \n- \n- common/localbasis.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a04541.html\n- Dune::LocalBasisTraits\n- Dune\n- \n- \n- enriched/simplexp1bubble/localbasis.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/enriched/simplexp1bubble/\n- a04544.html\n- dune/localfunctions/common/localbasis.hh\n- Dune::SimplexP1BubbleLocalBasis\n- Dune\n- \n- \n localfiniteelementtraits.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a00083.html\n+ a00131.html\n Dune::LocalFiniteElementTraits\n Dune\n \n \n localfiniteelementvariant.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a00098.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ a00119.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LocalFiniteElementVariant\n Dune\n \n \n localfiniteelementvariantcache.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a00086.html\n- dune/localfunctions/common/localfiniteelementvariant.hh\n+ a00116.html\n+ dune/localfunctions/common/localfiniteelementvariant.hh\n Dune::LocalFiniteElementVariantCache\n Dune\n \n \n- brezzidouglasfortinmarini/cube/localinterpolation.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasfortinmarini/cube/\n- a04547.html\n- Dune::BDFMCubeLocalInterpolation\n- Dune\n- \n- \n- common/localinterpolation.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a04550.html\n- Dune\n- \n- \n- enriched/simplexp1bubble/localinterpolation.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/enriched/simplexp1bubble/\n- a04553.html\n- Dune::SimplexP1BubbleLocalInterpolation\n- Dune\n- \n- \n localkey.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a00077.html\n+ a00128.html\n Dune::LocalKey\n Dune\n \n \n localtoglobaladaptors.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a00107.html\n+ a00110.html\n Dune::LocalToGlobalBasisAdaptorTraits\n Dune::ScalarLocalToGlobalBasisAdaptor\n Dune::LocalToGlobalInterpolationAdaptor\n Dune::ScalarLocalToGlobalFiniteElementAdaptor\n Dune::ScalarLocalToGlobalFiniteElementAdaptor::Traits\n Dune::ScalarLocalToGlobalFiniteElementAdaptorFactory\n Dune\n \n \n virtualinterface.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a00089.html\n+ a00107.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localkey.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n Dune::LocalBasisVirtualInterface\n Dune::LocalInterpolationVirtualInterfaceBase\n Dune::LocalInterpolationVirtualInterface\n Dune::LocalCoefficientsVirtualInterface\n Dune::LocalFiniteElementVirtualInterface\n Dune\n \n \n virtualwrappers.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/common/\n- a00095.html\n+ a00125.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localkey.hh\n- dune/localfunctions/common/virtualinterface.hh\n+ dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/virtualinterface.hh\n Dune::LocalFiniteElementCloneFactoryHelper\n Dune::LocalFiniteElementCloneFactory\n Dune::LocalBasisVirtualImp\n Dune::LocalInterpolationVirtualImp\n Dune::LocalCoefficientsVirtualImp\n Dune::LocalFiniteElementVirtualImp\n Dune\n \n \n crouzeixraviart.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00497.html\n+ a00197.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::CrouzeixRaviartLocalFiniteElement\n Dune\n \n \n dualmortarbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00542.html\n- dune/localfunctions/dualmortarbasis/dualp1.hh\n- dune/localfunctions/dualmortarbasis/dualq1.hh\n+ a00548.html\n+ dune/localfunctions/dualmortarbasis/dualp1.hh\n+ dune/localfunctions/dualmortarbasis/dualq1.hh\n \n \n dualp1.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/dualmortarbasis/\n- a00539.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dualp1/dualp1localbasis.hh\n- dualp1/dualp1localcoefficients.hh\n- dualp1/dualp1localinterpolation.hh\n+ a00158.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dualp1/dualp1localbasis.hh\n+ dualp1/dualp1localcoefficients.hh\n+ dualp1/dualp1localinterpolation.hh\n Dune::DualP1LocalFiniteElement\n Dune\n \n \n dualp1localbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/dualmortarbasis/dualp1/\n- a00518.html\n+ a00173.html\n dune/localfunctions/common/localbasis.hh\n Dune::DualP1LocalBasis\n Dune\n \n \n dualp1localcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/dualmortarbasis/dualp1/\n- a00515.html\n- dune/localfunctions/common/localkey.hh\n+ a00167.html\n+ dune/localfunctions/common/localkey.hh\n Dune::DualP1LocalCoefficients\n Dune\n \n \n dualp1localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/dualmortarbasis/dualp1/\n- a00521.html\n+ a00170.html\n Dune::DualP1LocalInterpolation\n Dune\n \n \n dualpq1factory.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/dualmortarbasis/\n- a00524.html\n- dune/localfunctions/common/virtualinterface.hh\n- dune/localfunctions/common/virtualwrappers.hh\n- dune/localfunctions/dualmortarbasis.hh\n+ a00161.html\n+ dune/localfunctions/common/virtualinterface.hh\n+ dune/localfunctions/common/virtualwrappers.hh\n+ dune/localfunctions/dualmortarbasis.hh\n Dune::DualPQ1LocalFiniteElementCache\n Dune\n \n \n dualq1.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/dualmortarbasis/\n- a00527.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/lagrange/lagrangecube.hh\n- dualq1/dualq1localbasis.hh\n- dualq1/dualq1localcoefficients.hh\n- dualq1/dualq1localinterpolation.hh\n+ a00164.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/lagrange/lagrangecube.hh\n+ dualq1/dualq1localbasis.hh\n+ dualq1/dualq1localcoefficients.hh\n+ dualq1/dualq1localinterpolation.hh\n Dune::DualQ1LocalFiniteElement\n Dune\n \n \n dualq1localbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/dualmortarbasis/dualq1/\n- a00536.html\n+ a00155.html\n dune/localfunctions/common/localbasis.hh\n Dune::DualQ1LocalBasis\n Dune\n \n \n dualq1localcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/dualmortarbasis/dualq1/\n- a00533.html\n- dune/localfunctions/common/localkey.hh\n+ a00152.html\n+ dune/localfunctions/common/localkey.hh\n Dune::DualQ1LocalCoefficients\n Dune\n \n \n dualq1localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/dualmortarbasis/dualq1/\n- a00530.html\n+ a00149.html\n Dune::DualQ1LocalInterpolation\n Dune\n \n \n enriched.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00386.html\n- dune/localfunctions/enriched/simplexp1bubble.hh\n+ a00377.html\n+ dune/localfunctions/enriched/simplexp1bubble.hh\n \n \n simplexp1bubble.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/enriched/\n- a00158.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ a00374.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/enriched/simplexp1bubble/localbasis.hh\n- dune/localfunctions/enriched/simplexp1bubble/localcoefficients.hh\n- dune/localfunctions/enriched/simplexp1bubble/localinterpolation.hh\n+ dune/localfunctions/enriched/simplexp1bubble/localcoefficients.hh\n+ dune/localfunctions/enriched/simplexp1bubble/localinterpolation.hh\n Dune::SimplexP1BubbleLocalFiniteElement\n Dune\n \n \n- brezzidouglasfortinmarini/cube/localcoefficients.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/brezzidouglasfortinmarini/cube/\n- a04556.html\n- dune/localfunctions/common/localkey.hh\n- Dune::BDFMCubeLocalCoefficients\n- Dune\n- \n- \n- enriched/simplexp1bubble/localcoefficients.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/enriched/simplexp1bubble/\n- a04559.html\n- dune/localfunctions/common/localkey.hh\n- Dune::SimplexP1BubbleLocalCoefficients\n- Dune\n- \n- \n hierarchical.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00188.html\n- dune/localfunctions/hierarchical/hierarchicalp2.hh\n- dune/localfunctions/hierarchical/hierarchicalp2withelementbubble.hh\n- dune/localfunctions/hierarchical/hierarchicalprismp2.hh\n+ a00080.html\n+ dune/localfunctions/hierarchical/hierarchicalp2.hh\n+ dune/localfunctions/hierarchical/hierarchicalp2withelementbubble.hh\n+ dune/localfunctions/hierarchical/hierarchicalprismp2.hh\n \n \n hierarchicalp1withelementbubble.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/hierarchical/\n- a00146.html\n- dune/localfunctions/enriched/simplexp1bubble.hh\n+ a00038.html\n+ dune/localfunctions/enriched/simplexp1bubble.hh\n Dune\n \n \n hierarchicalp2.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/hierarchical/\n- a00143.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n- hierarchicalp2/hierarchicalsimplexp2localbasis.hh\n- hierarchicalp2/hierarchicalsimplexp2localinterpolation.hh\n+ a00044.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n+ hierarchicalp2/hierarchicalsimplexp2localbasis.hh\n+ hierarchicalp2/hierarchicalsimplexp2localinterpolation.hh\n Dune::HierarchicalP2LocalFiniteElement\n Dune\n \n \n hierarchicalsimplexp2localbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/hierarchical/hierarchicalp2/\n- a00140.html\n+ a00026.html\n dune/localfunctions/common/localbasis.hh\n Dune::HierarchicalSimplexP2LocalBasis\n Dune::HierarchicalSimplexP2LocalBasis< D, R, 1 >\n Dune::HierarchicalSimplexP2LocalBasis< D, R, 2 >\n Dune::HierarchicalSimplexP2LocalBasis< D, R, 3 >\n Dune\n \n \n hierarchicalsimplexp2localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/hierarchical/hierarchicalp2/\n- a00137.html\n+ a00029.html\n Dune::HierarchicalSimplexP2LocalInterpolation\n Dune\n \n \n hierarchicalp2withelementbubble.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/hierarchical/\n- a00131.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.hh\n+ a00047.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.hh\n Dune::HierarchicalP2WithElementBubbleLocalFiniteElement\n Dune\n \n \n hierarchicalsimplexp2withelementbubble.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/\n- a00149.html\n+ a00023.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis\n Dune::HierarchicalSimplexP2WithElementBubbleLocalCoefficients\n Dune::HierarchicalSimplexP2WithElementBubbleLocalInterpolation\n Dune\n \n \n hierarchicalprismp2.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/hierarchical/\n- a00134.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/lagrange/lagrangeprism.hh\n- hierarchicalprismp2/hierarchicalprismp2localbasis.hh\n- hierarchicalprismp2/hierarchicalprismp2localinterpolation.hh\n+ a00041.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/lagrange/lagrangeprism.hh\n+ hierarchicalprismp2/hierarchicalprismp2localbasis.hh\n+ hierarchicalprismp2/hierarchicalprismp2localinterpolation.hh\n Dune::HierarchicalPrismP2LocalFiniteElement\n Dune\n \n \n hierarchicalprismp2localbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/hierarchical/hierarchicalprismp2/\n- a00125.html\n+ a00035.html\n dune/localfunctions/common/localbasis.hh\n Dune::HierarchicalPrismP2LocalBasis\n Dune\n \n \n hierarchicalprismp2localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/hierarchical/hierarchicalprismp2/\n- a00128.html\n+ a00032.html\n Dune::HierarchicalPrismP2LocalInterpolation\n Dune\n \n \n lagrange.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00491.html\n+ a00077.html\n dune/localfunctions/utility/localfiniteelement.hh\n- dune/localfunctions/utility/dglocalcoefficients.hh\n- dune/localfunctions/lagrange/lagrangecoefficients.hh\n- dune/localfunctions/lagrange/interpolation.hh\n- dune/localfunctions/lagrange/lagrangebasis.hh\n- dune/localfunctions/lagrange/lagrangecube.hh\n- dune/localfunctions/lagrange/lagrangepyramid.hh\n- dune/localfunctions/lagrange/lagrangeprism.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n- dune/localfunctions/lagrange/p0.hh\n- dune/localfunctions/lagrange/pq22d.hh\n+ dune/localfunctions/utility/dglocalcoefficients.hh\n+ dune/localfunctions/lagrange/lagrangecoefficients.hh\n+ dune/localfunctions/lagrange/interpolation.hh\n+ dune/localfunctions/lagrange/lagrangebasis.hh\n+ dune/localfunctions/lagrange/lagrangecube.hh\n+ dune/localfunctions/lagrange/lagrangepyramid.hh\n+ dune/localfunctions/lagrange/lagrangeprism.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n+ dune/localfunctions/lagrange/p0.hh\n+ dune/localfunctions/lagrange/pq22d.hh\n Dune::LagrangeLocalFiniteElement\n Dune\n \n \n cache.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00017.html\n- dune/localfunctions/lagrange.hh\n- dune/localfunctions/lagrange/equidistantpoints.hh\n- dune/localfunctions/lagrange/lagrangecube.hh\n- dune/localfunctions/lagrange/lagrangelfecache.hh\n- dune/localfunctions/lagrange/lagrangeprism.hh\n- dune/localfunctions/lagrange/lagrangepyramid.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00203.html\n+ dune/localfunctions/lagrange.hh\n+ dune/localfunctions/lagrange/equidistantpoints.hh\n+ dune/localfunctions/lagrange/lagrangecube.hh\n+ dune/localfunctions/lagrange/lagrangelfecache.hh\n+ dune/localfunctions/lagrange/lagrangeprism.hh\n+ dune/localfunctions/lagrange/lagrangepyramid.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n Dune::DynamicLagrangeLocalFiniteElementCache\n Dune::StaticLagrangeLocalFiniteElementCache\n Dune::StaticLagrangeLocalFiniteElementCache< GeometryType::Id(~0u), Domain, Range, dim, order >\n Dune\n \n \n emptypoints.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00029.html\n- dune/localfunctions/common/localkey.hh\n+ a00200.html\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangePoint\n Dune::EmptyPointSet\n Dune\n \n \n equidistantpoints.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00056.html\n- dune/localfunctions/lagrange/emptypoints.hh\n- dune/localfunctions/utility/field.hh\n+ a00254.html\n+ dune/localfunctions/lagrange/emptypoints.hh\n+ dune/localfunctions/utility/field.hh\n Dune::EquidistantPointSet\n Dune\n \n \n- lagrange/interpolation.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a04562.html\n- dune/localfunctions/lagrange/lagrangecoefficients.hh\n- Dune::LocalLagrangeInterpolation\n- Dune::LagrangeInterpolationFactory\n- Dune\n- \n- \n- meta/power/interpolation.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/meta/power/\n- a04565.html\n- Dune::PowerInterpolation\n- Dune\n- \n- \n- whitney/edges0.5/interpolation.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/whitney/edges0.5/\n- a04568.html\n- dune/localfunctions/whitney/edges0.5/common.hh\n- Dune::EdgeS0_5Interpolation\n- Dune\n- \n- \n lagrangebasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00020.html\n- dune/localfunctions/utility/defaultbasisfactory.hh\n- dune/localfunctions/utility/monomialbasis.hh\n- dune/localfunctions/lagrange/interpolation.hh\n+ a00236.html\n+ dune/localfunctions/utility/defaultbasisfactory.hh\n+ dune/localfunctions/utility/monomialbasis.hh\n+ dune/localfunctions/lagrange/interpolation.hh\n Dune::LagrangeBasisFactory\n Dune\n \n \n lagrangecoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00050.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/common/localkey.hh\n+ a00251.html\n+ dune/localfunctions/utility/field.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangeCoefficientsFactory\n Dune\n \n \n lagrangecube.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00023.html\n+ a00209.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangeCubeLocalFiniteElement\n Dune\n \n \n lagrangelfecache.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00038.html\n- dune/localfunctions/lagrange/lagrangecube.hh\n- dune/localfunctions/lagrange/lagrangeprism.hh\n- dune/localfunctions/lagrange/lagrangepyramid.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n- dune/localfunctions/lagrange/p0.hh\n- dune/localfunctions/common/localfiniteelementvariantcache.hh\n+ a00242.html\n+ dune/localfunctions/lagrange/lagrangecube.hh\n+ dune/localfunctions/lagrange/lagrangeprism.hh\n+ dune/localfunctions/lagrange/lagrangepyramid.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n+ dune/localfunctions/lagrange/p0.hh\n+ dune/localfunctions/common/localfiniteelementvariantcache.hh\n Dune\n \n \n lagrangeprism.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00053.html\n+ a00245.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangePrismLocalFiniteElement\n Dune\n \n \n lagrangepyramid.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00026.html\n+ a00239.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangePyramidLocalFiniteElement\n Dune\n \n \n lagrangesimplex.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00014.html\n+ a00248.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangeSimplexLocalFiniteElement\n Dune\n \n \n p0.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00035.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- p0/p0localbasis.hh\n- p0/p0localcoefficients.hh\n- p0/p0localinterpolation.hh\n+ a00218.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ p0/p0localbasis.hh\n+ p0/p0localcoefficients.hh\n+ p0/p0localinterpolation.hh\n Dune::P0LocalFiniteElement\n Dune\n \n \n p0localbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/p0/\n- a00062.html\n+ a00227.html\n dune/localfunctions/common/localbasis.hh\n Dune::P0LocalBasis\n Dune\n \n \n p0localcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/p0/\n- a00068.html\n- dune/localfunctions/common/localkey.hh\n+ a00224.html\n+ dune/localfunctions/common/localkey.hh\n Dune::P0LocalCoefficients\n Dune\n \n \n p0localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/p0/\n- a00065.html\n+ a00221.html\n Dune::P0LocalInterpolation\n Dune\n \n \n pk1d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00059.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localtoglobaladaptors.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00230.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localtoglobaladaptors.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n Dune::Pk1DFiniteElement\n Dune::Pk1DFiniteElement::Traits\n Dune::Pk1DFiniteElementFactory\n Dune\n \n \n pk2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00047.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localtoglobaladaptors.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00233.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localtoglobaladaptors.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n Dune::Pk2DFiniteElement\n Dune::Pk2DFiniteElement::Traits\n Dune::Pk2DFiniteElementFactory\n Dune\n \n \n pq22d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00032.html\n- dune/localfunctions/common/localfiniteelementvariant.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n- dune/localfunctions/lagrange/lagrangecube.hh\n+ a00212.html\n+ dune/localfunctions/common/localfiniteelementvariant.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n+ dune/localfunctions/lagrange/lagrangecube.hh\n Dune::PQ22DLocalFiniteElement\n Dune\n \n \n pqkfactory.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00041.html\n- dune/localfunctions/common/virtualinterface.hh\n- dune/localfunctions/common/virtualwrappers.hh\n- dune/localfunctions/lagrange/lagrangecube.hh\n- dune/localfunctions/lagrange/lagrangeprism.hh\n- dune/localfunctions/lagrange/lagrangepyramid.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n- dune/localfunctions/lagrange/p0.hh\n+ a00206.html\n+ dune/localfunctions/common/virtualinterface.hh\n+ dune/localfunctions/common/virtualwrappers.hh\n+ dune/localfunctions/lagrange/lagrangecube.hh\n+ dune/localfunctions/lagrange/lagrangeprism.hh\n+ dune/localfunctions/lagrange/lagrangepyramid.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n+ dune/localfunctions/lagrange/p0.hh\n Dune::DimSpecificPQkLocalFiniteElementFactory\n Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, 3, k >\n Dune::PQkLocalFiniteElementFactory\n Dune::PQkLocalFiniteElementCache\n Dune\n \n \n q1.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00044.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localtoglobaladaptors.hh\n- dune/localfunctions/lagrange/lagrangecube.hh\n+ a00257.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localtoglobaladaptors.hh\n+ dune/localfunctions/lagrange/lagrangecube.hh\n Dune::Q1FiniteElementFactory\n Dune\n \n \n q2.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n- a00074.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localtoglobaladaptors.hh\n- dune/localfunctions/lagrange/lagrangecube.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00215.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localtoglobaladaptors.hh\n+ dune/localfunctions/lagrange/lagrangecube.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n Dune::Q2FiniteElementFactory\n Dune\n \n \n power.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/meta/\n- a00494.html\n- dune/localfunctions/meta/power/basis.hh\n- dune/localfunctions/meta/power/coefficients.hh\n- dune/localfunctions/meta/power/interpolation.hh\n+ a00065.html\n+ dune/localfunctions/meta/power/basis.hh\n+ dune/localfunctions/meta/power/coefficients.hh\n+ dune/localfunctions/meta/power/interpolation.hh\n Dune::PowerFiniteElement\n Dune::PowerFiniteElement::Traits\n Dune::PowerFiniteElementFactory\n Dune\n \n \n+ meta/power/basis.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/meta/power/\n+ a04562.html\n+ Dune::PowerBasis\n+ Dune::PowerBasis::Traits\n+ Dune\n+ \n+ \n+ whitney/edges0.5/basis.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/whitney/edges0.5/\n+ a04565.html\n+ dune/localfunctions/common/localtoglobaladaptors.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n+ dune/localfunctions/whitney/edges0.5/common.hh\n+ Dune::EdgeS0_5Basis\n+ Dune::EdgeS0_5Basis::Traits\n+ Dune\n+ \n+ \n+ meta/power/coefficients.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/meta/power/\n+ a04568.html\n+ dune/localfunctions/common/localkey.hh\n+ Dune::PowerCoefficients\n+ Dune\n+ \n+ \n+ whitney/edges0.5/coefficients.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/whitney/edges0.5/\n+ a04571.html\n+ dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/whitney/edges0.5/common.hh\n+ Dune::EdgeS0_5Coefficients\n+ Dune\n+ \n+ \n+ lagrange/interpolation.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/lagrange/\n+ a04574.html\n+ dune/localfunctions/lagrange/lagrangecoefficients.hh\n+ Dune::LocalLagrangeInterpolation\n+ Dune::LagrangeInterpolationFactory\n+ Dune\n+ \n+ \n+ meta/power/interpolation.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/meta/power/\n+ a04577.html\n+ Dune::PowerInterpolation\n+ Dune\n+ \n+ \n+ whitney/edges0.5/interpolation.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/whitney/edges0.5/\n+ a04580.html\n+ dune/localfunctions/whitney/edges0.5/common.hh\n+ Dune::EdgeS0_5Interpolation\n+ Dune\n+ \n+ \n mimetic.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00152.html\n- common/localfiniteelementtraits.hh\n- mimetic/mimeticall.hh\n+ a00545.html\n+ common/localfiniteelementtraits.hh\n+ mimetic/mimeticall.hh\n Dune::MimeticLocalFiniteElement\n Dune\n \n \n mimeticall.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/mimetic/\n- a00455.html\n+ a00104.html\n ../common/localbasis.hh\n- ../common/localkey.hh\n+ ../common/localkey.hh\n Dune::MimeticLocalBasis\n Dune::MimeticLocalInterpolation\n Dune::MimeticLocalCoefficients\n Dune\n \n \n monomial.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00011.html\n- common/localfiniteelementtraits.hh\n- common/localtoglobaladaptors.hh\n- monomial/monomiallocalbasis.hh\n- monomial/monomiallocalcoefficients.hh\n- monomial/monomiallocalinterpolation.hh\n+ a00068.html\n+ common/localfiniteelementtraits.hh\n+ common/localtoglobaladaptors.hh\n+ monomial/monomiallocalbasis.hh\n+ monomial/monomiallocalcoefficients.hh\n+ monomial/monomiallocalinterpolation.hh\n Dune::MonomialLocalFiniteElement\n Dune::MonomialFiniteElementFactory\n Dune\n \n \n monomiallocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/monomial/\n- a00182.html\n+ a00536.html\n ../common/localbasis.hh\n Dune::MonomImp::EvalAccess\n Dune::MonomImp::JacobianAccess\n Dune::MonomImp::Evaluate\n Dune::MonomImp::Evaluate< Traits, 1 >\n Dune::MonomialLocalBasis\n Dune\n Dune::MonomImp\n \n \n monomiallocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/monomial/\n- a00179.html\n- ../common/localkey.hh\n+ a00542.html\n+ ../common/localkey.hh\n Dune::MonomialLocalCoefficients\n Dune\n \n \n monomiallocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/monomial/\n- a00176.html\n+ a00539.html\n Dune::MonomialLocalInterpolation\n Dune\n \n \n nedelec.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00110.html\n- dune/localfunctions/nedelec/nedelec1stkindsimplex.hh\n- dune/localfunctions/nedelec/nedelec1stkindcube.hh\n+ a00074.html\n+ dune/localfunctions/nedelec/nedelec1stkindsimplex.hh\n+ dune/localfunctions/nedelec/nedelec1stkindcube.hh\n \n \n nedelec1stkindcube.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/nedelec/\n- a00512.html\n+ a00134.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::Nedelec1stKindCubeLocalFiniteElement\n Dune\n \n \n nedelec1stkindsimplex.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/nedelec/\n- a00509.html\n+ a00146.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::Nedelec1stKindSimplexLocalFiniteElement\n Dune\n \n \n nedelecsimplexbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/nedelec/nedelecsimplex/\n- a00503.html\n- dune/localfunctions/utility/defaultbasisfactory.hh\n- nedelecsimplexinterpolation.hh\n- nedelecsimplexprebasis.hh\n+ a00143.html\n+ dune/localfunctions/utility/defaultbasisfactory.hh\n+ nedelecsimplexinterpolation.hh\n+ nedelecsimplexprebasis.hh\n Dune::NedelecBasisFactory\n Dune\n \n \n nedelecsimplexinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/nedelec/nedelecsimplex/\n- a00500.html\n- dune/localfunctions/common/localkey.hh\n- dune/localfunctions/utility/interpolationhelper.hh\n- dune/localfunctions/utility/polynomialbasis.hh\n- dune/localfunctions/orthonormal/orthonormalbasis.hh\n+ a00140.html\n+ dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/utility/interpolationhelper.hh\n+ dune/localfunctions/utility/polynomialbasis.hh\n+ dune/localfunctions/orthonormal/orthonormalbasis.hh\n Dune::LocalCoefficientsContainer\n Dune::NedelecCoefficientsFactory\n Dune::NedelecL2InterpolationBuilder\n Dune::NedelecL2Interpolation\n Dune::NedelecL2InterpolationFactory\n Dune\n \n \n nedelecsimplexprebasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/nedelec/nedelecsimplex/\n- a00506.html\n- dune/localfunctions/utility/polynomialbasis.hh\n+ a00137.html\n+ dune/localfunctions/utility/polynomialbasis.hh\n Dune::NedelecPreBasisFactory\n Dune::NedelecPreBasisFactory::EvaluationBasisFactory\n Dune::NedelecVecMatrix\n Dune\n \n \n orthonormal.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00545.html\n+ a00083.html\n dune/localfunctions/utility/localfiniteelement.hh\n- dune/localfunctions/utility/dglocalcoefficients.hh\n- dune/localfunctions/utility/l2interpolation.hh\n- dune/localfunctions/orthonormal/orthonormalbasis.hh\n+ dune/localfunctions/utility/dglocalcoefficients.hh\n+ dune/localfunctions/utility/l2interpolation.hh\n+ dune/localfunctions/orthonormal/orthonormalbasis.hh\n Dune::OrthonormalLocalFiniteElement\n Dune\n \n \n orthonormalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/orthonormal/\n- a00119.html\n- dune/localfunctions/utility/polynomialbasis.hh\n- dune/localfunctions/orthonormal/orthonormalcompute.hh\n+ a00050.html\n+ dune/localfunctions/utility/polynomialbasis.hh\n+ dune/localfunctions/orthonormal/orthonormalcompute.hh\n Dune::OrthonormalBasisFactory\n Dune::OrthonormalBasisFactory::EvaluationBasisFactory\n Dune\n \n \n orthonormalcompute.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/orthonormal/\n- a00116.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/utility/monomialbasis.hh\n- dune/localfunctions/utility/multiindex.hh\n+ a00053.html\n+ dune/localfunctions/utility/field.hh\n+ dune/localfunctions/utility/monomialbasis.hh\n+ dune/localfunctions/utility/multiindex.hh\n ONBCompute::Integral\n ONBCompute::ONBMatrix\n ONBCompute\n \n \n rannacherturek.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00113.html\n- dune/localfunctions/rannacherturek/rannacherturek.hh\n+ a00089.html\n+ dune/localfunctions/rannacherturek/rannacherturek.hh\n \n \n rannacherturek/rannacherturek.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/rannacherturek/\n- a04571.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- rannachertureklocalbasis.hh\n- rannachertureklocalcoefficients.hh\n- rannachertureklocalinterpolation.hh\n+ a04583.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ rannachertureklocalbasis.hh\n+ rannachertureklocalcoefficients.hh\n+ rannachertureklocalinterpolation.hh\n Dune::RannacherTurekLocalFiniteElement\n Dune\n \n \n rannacherturek2dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/rannacherturek/rannacherturek2d/\n- a00161.html\n+ a00086.html\n dune/localfunctions/common/localbasis.hh\n Dune::RannacherTurek2DLocalBasis\n Dune\n \n \n rannacherturek3dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/rannacherturek/rannacherturek3d/\n- a00167.html\n+ a00095.html\n dune/localfunctions/common/localbasis.hh\n Dune::RannacherTurek3DLocalBasis\n Dune\n \n \n rannachertureklocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/rannacherturek/\n- a00164.html\n- rannacherturek2d/rannacherturek2dlocalbasis.hh\n- rannacherturek3d/rannacherturek3dlocalbasis.hh\n+ a00098.html\n+ rannacherturek2d/rannacherturek2dlocalbasis.hh\n+ rannacherturek3d/rannacherturek3dlocalbasis.hh\n Dune::RannacherTurekLocalBasis< D, R, 2 >\n Dune::RannacherTurekLocalBasis< D, R, 3 >\n Dune\n \n \n rannachertureklocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/rannacherturek/\n- a00170.html\n- dune/localfunctions/common/localkey.hh\n+ a00092.html\n+ dune/localfunctions/common/localkey.hh\n Dune::RannacherTurekLocalCoefficients\n Dune\n \n \n rannachertureklocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/rannacherturek/\n- a00173.html\n+ a00101.html\n dune/localfunctions/common/localbasis.hh\n Dune::RannacherTurekLocalInterpolation\n Dune\n \n \n raviartthomas.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00185.html\n- dune/localfunctions/raviartthomas/raviartthomascube.hh\n- dune/localfunctions/raviartthomas/raviartthomassimplex.hh\n- dune/localfunctions/raviartthomas/raviartthomas02d.hh\n- dune/localfunctions/raviartthomas/raviartthomas12d.hh\n- dune/localfunctions/raviartthomas/raviartthomas03d.hh\n- dune/localfunctions/raviartthomas/raviartthomas0cube2d.hh\n- dune/localfunctions/raviartthomas/raviartthomas1cube2d.hh\n- dune/localfunctions/raviartthomas/raviartthomas2cube2d.hh\n- dune/localfunctions/raviartthomas/raviartthomas3cube2d.hh\n- dune/localfunctions/raviartthomas/raviartthomas0cube3d.hh\n- dune/localfunctions/raviartthomas/raviartthomas1cube3d.hh\n- dune/localfunctions/raviartthomas/raviartthomas0pyramid.hh\n- dune/localfunctions/raviartthomas/raviartthomas0prism.hh\n+ a00071.html\n+ dune/localfunctions/raviartthomas/raviartthomascube.hh\n+ dune/localfunctions/raviartthomas/raviartthomassimplex.hh\n+ dune/localfunctions/raviartthomas/raviartthomas02d.hh\n+ dune/localfunctions/raviartthomas/raviartthomas12d.hh\n+ dune/localfunctions/raviartthomas/raviartthomas03d.hh\n+ dune/localfunctions/raviartthomas/raviartthomas0cube2d.hh\n+ dune/localfunctions/raviartthomas/raviartthomas1cube2d.hh\n+ dune/localfunctions/raviartthomas/raviartthomas2cube2d.hh\n+ dune/localfunctions/raviartthomas/raviartthomas3cube2d.hh\n+ dune/localfunctions/raviartthomas/raviartthomas0cube3d.hh\n+ dune/localfunctions/raviartthomas/raviartthomas1cube3d.hh\n+ dune/localfunctions/raviartthomas/raviartthomas0pyramid.hh\n+ dune/localfunctions/raviartthomas/raviartthomas0prism.hh\n \n \n raviartthomas02d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00287.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- raviartthomas02d/raviartthomas02dlocalbasis.hh\n- raviartthomas02d/raviartthomas02dlocalcoefficients.hh\n- raviartthomas02d/raviartthomas02dlocalinterpolation.hh\n+ a00458.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ raviartthomas02d/raviartthomas02dlocalbasis.hh\n+ raviartthomas02d/raviartthomas02dlocalcoefficients.hh\n+ raviartthomas02d/raviartthomas02dlocalinterpolation.hh\n Dune::RT02DLocalFiniteElement\n Dune\n \n \n raviartthomas02dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas02d/\n- a00365.html\n+ a00497.html\n dune/localfunctions/common/localbasis.hh\n Dune::RT02DLocalBasis\n Dune\n \n \n raviartthomas02dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas02d/\n- a00359.html\n- dune/localfunctions/common/localkey.hh\n+ a00494.html\n+ dune/localfunctions/common/localkey.hh\n Dune::RT02DLocalCoefficients\n Dune\n \n \n raviartthomas02dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas02d/\n- a00362.html\n+ a00500.html\n Dune::RT02DLocalInterpolation\n Dune\n \n \n raviartthomas03d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00368.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- raviartthomas03d/raviartthomas03dlocalbasis.hh\n- raviartthomas03d/raviartthomas03dlocalcoefficients.hh\n- raviartthomas03d/raviartthomas03dlocalinterpolation.hh\n+ a00461.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ raviartthomas03d/raviartthomas03dlocalbasis.hh\n+ raviartthomas03d/raviartthomas03dlocalcoefficients.hh\n+ raviartthomas03d/raviartthomas03dlocalinterpolation.hh\n Dune::RT03DLocalFiniteElement\n Dune\n \n \n raviartthomas03dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas03d/\n- a00353.html\n+ a00530.html\n dune/localfunctions/common/localbasis.hh\n Dune::RT03DLocalBasis\n Dune\n \n \n raviartthomas03dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas03d/\n- a00347.html\n- dune/localfunctions/common/localkey.hh\n+ a00533.html\n+ dune/localfunctions/common/localkey.hh\n Dune::RT03DLocalCoefficients\n Dune\n \n \n raviartthomas03dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas03d/\n- a00350.html\n+ a00527.html\n Dune::RT03DLocalInterpolation\n Dune\n \n \n raviartthomas0cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00251.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- raviartthomas0cube2d/raviartthomas0cube2dall.hh\n+ a00464.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ raviartthomas0cube2d/raviartthomas0cube2dall.hh\n Dune::RT0Cube2DLocalFiniteElement\n Dune\n \n \n raviartthomas0cube2dall.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas0cube2d/\n- a00236.html\n+ a00410.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::RT0Cube2DLocalBasis\n Dune::RT0Cube2DLocalInterpolation\n Dune::RT0Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas0cube3d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00284.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- raviartthomas0cube3d/raviartthomas0cube3dall.hh\n+ a00428.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ raviartthomas0cube3d/raviartthomas0cube3dall.hh\n Dune::RT0Cube3DLocalFiniteElement\n Dune\n \n \n raviartthomas0cube3dall.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas0cube3d/\n- a00383.html\n+ a00407.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::RT0Cube3DLocalBasis\n Dune::RT0Cube3DLocalInterpolation\n Dune::RT0Cube3DLocalCoefficients\n Dune\n \n \n raviartthomas0prism.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00374.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas0prism/raviartthomas0prismlocalbasis.hh\n- raviartthomas0prism/raviartthomas0prismlocalcoefficients.hh\n- raviartthomas0prism/raviartthomas0prismlocalinterpolation.hh\n+ a00521.html\n+ ../common/localfiniteelementtraits.hh\n+ raviartthomas0prism/raviartthomas0prismlocalbasis.hh\n+ raviartthomas0prism/raviartthomas0prismlocalcoefficients.hh\n+ raviartthomas0prism/raviartthomas0prismlocalinterpolation.hh\n Dune::RT0PrismLocalFiniteElement\n Dune\n \n \n raviartthomas0prismlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas0prism/\n- a00314.html\n+ a00503.html\n ../../common/localbasis.hh\n Dune::RT0PrismLocalBasis\n Dune\n \n \n raviartthomas0prismlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas0prism/\n- a00308.html\n- ../../common/localkey.hh\n+ a00506.html\n+ ../../common/localkey.hh\n Dune::RT0PrismLocalCoefficients\n Dune\n \n \n raviartthomas0prismlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas0prism/\n- a00311.html\n+ a00509.html\n Dune::RT0PrismLocalInterpolation\n Dune\n \n \n raviartthomas0pyramid.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00380.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas0pyramid/raviartthomas0pyramidlocalbasis.hh\n- raviartthomas0pyramid/raviartthomas0pyramidlocalcoefficients.hh\n- raviartthomas0pyramid/raviartthomas0pyramidlocalinterpolation.hh\n+ a00413.html\n+ ../common/localfiniteelementtraits.hh\n+ raviartthomas0pyramid/raviartthomas0pyramidlocalbasis.hh\n+ raviartthomas0pyramid/raviartthomas0pyramidlocalcoefficients.hh\n+ raviartthomas0pyramid/raviartthomas0pyramidlocalinterpolation.hh\n Dune::RT0PyramidLocalFiniteElement\n Dune\n \n \n raviartthomas0pyramidlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas0pyramid/\n- a00245.html\n+ a00470.html\n ../../common/localbasis.hh\n Dune::RT0PyramidLocalBasis\n Dune\n \n \n raviartthomas0pyramidlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas0pyramid/\n- a00248.html\n- ../../common/localkey.hh\n+ a00476.html\n+ ../../common/localkey.hh\n Dune::RT0PyramidLocalCoefficients\n Dune\n \n \n raviartthomas0pyramidlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas0pyramid/\n- a00242.html\n+ a00473.html\n Dune::RT0PyramidLocalInterpolation\n Dune\n \n \n raviartthomas12d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00377.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas12d/raviartthomas12dlocalbasis.hh\n- raviartthomas12d/raviartthomas12dlocalcoefficients.hh\n- raviartthomas12d/raviartthomas12dlocalinterpolation.hh\n+ a00404.html\n+ ../common/localfiniteelementtraits.hh\n+ raviartthomas12d/raviartthomas12dlocalbasis.hh\n+ raviartthomas12d/raviartthomas12dlocalcoefficients.hh\n+ raviartthomas12d/raviartthomas12dlocalinterpolation.hh\n Dune::RT12DLocalFiniteElement\n Dune\n \n \n raviartthomas12dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas12d/\n- a00278.html\n+ a00485.html\n ../../common/localbasis.hh\n Dune::RT12DLocalBasis\n Dune\n \n \n raviartthomas12dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas12d/\n- a00272.html\n- ../../common/localkey.hh\n+ a00491.html\n+ ../../common/localkey.hh\n Dune::RT12DLocalCoefficients\n Dune\n \n \n raviartthomas12dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas12d/\n- a00275.html\n+ a00488.html\n Dune::RT12DLocalInterpolation\n Dune\n \n \n raviartthomas1cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00356.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas1cube2d/raviartthomas1cube2dlocalbasis.hh\n- raviartthomas1cube2d/raviartthomas1cube2dlocalinterpolation.hh\n- raviartthomas1cube2d/raviartthomas1cube2dlocalcoefficients.hh\n+ a00416.html\n+ ../common/localfiniteelementtraits.hh\n+ raviartthomas1cube2d/raviartthomas1cube2dlocalbasis.hh\n+ raviartthomas1cube2d/raviartthomas1cube2dlocalinterpolation.hh\n+ raviartthomas1cube2d/raviartthomas1cube2dlocalcoefficients.hh\n Dune::RT1Cube2DLocalFiniteElement\n Dune\n \n \n raviartthomas1cube2dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas1cube2d/\n- a00263.html\n+ a00512.html\n ../../common/localbasis.hh\n Dune::RT1Cube2DLocalBasis\n Dune\n \n \n raviartthomas1cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas1cube2d/\n- a00266.html\n- ../../common/localkey.hh\n+ a00518.html\n+ ../../common/localkey.hh\n Dune::RT1Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas1cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas1cube2d/\n- a00269.html\n+ a00515.html\n Dune::RT1Cube2DLocalInterpolation\n Dune\n \n \n raviartthomas1cube3d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00371.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas1cube3d/raviartthomas1cube3dlocalbasis.hh\n- raviartthomas1cube3d/raviartthomas1cube3dlocalcoefficients.hh\n- raviartthomas1cube3d/raviartthomas1cube3dlocalinterpolation.hh\n+ a00440.html\n+ ../common/localfiniteelementtraits.hh\n+ raviartthomas1cube3d/raviartthomas1cube3dlocalbasis.hh\n+ raviartthomas1cube3d/raviartthomas1cube3dlocalcoefficients.hh\n+ raviartthomas1cube3d/raviartthomas1cube3dlocalinterpolation.hh\n Dune::RT1Cube3DLocalFiniteElement\n Dune\n \n \n raviartthomas1cube3dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas1cube3d/\n- a00299.html\n+ a00389.html\n ../../common/localbasis.hh\n Dune::RT1Cube3DLocalBasis\n Dune\n \n \n raviartthomas1cube3dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas1cube3d/\n- a00302.html\n- ../../common/localkey.hh\n+ a00392.html\n+ ../../common/localkey.hh\n Dune::RT1Cube3DLocalCoefficients\n Dune\n \n \n raviartthomas1cube3dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas1cube3d/\n- a00305.html\n+ a00386.html\n Dune::RT1Cube3DLocalInterpolation\n Dune\n \n \n raviartthomas2cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00281.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas2cube2d/raviartthomas2cube2dlocalbasis.hh\n- raviartthomas2cube2d/raviartthomas2cube2dlocalcoefficients.hh\n- raviartthomas2cube2d/raviartthomas2cube2dlocalinterpolation.hh\n+ a00482.html\n+ ../common/localfiniteelementtraits.hh\n+ raviartthomas2cube2d/raviartthomas2cube2dlocalbasis.hh\n+ raviartthomas2cube2d/raviartthomas2cube2dlocalcoefficients.hh\n+ raviartthomas2cube2d/raviartthomas2cube2dlocalinterpolation.hh\n Dune::RT2Cube2DLocalFiniteElement\n Dune\n \n \n raviartthomas2cube2dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas2cube2d/\n- a00290.html\n+ a00437.html\n ../../common/localbasis.hh\n Dune::RT2Cube2DLocalBasis\n Dune\n \n \n raviartthomas2cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas2cube2d/\n- a00293.html\n- ../../common/localkey.hh\n+ a00431.html\n+ ../../common/localkey.hh\n Dune::RT2Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas2cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas2cube2d/\n- a00296.html\n+ a00434.html\n Dune::RT2Cube2DLocalInterpolation\n Dune\n \n \n raviartthomas3cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00326.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas3cube2d/raviartthomas3cube2dlocalbasis.hh\n- raviartthomas3cube2d/raviartthomas3cube2dlocalcoefficients.hh\n- raviartthomas3cube2d/raviartthomas3cube2dlocalinterpolation.hh\n+ a00467.html\n+ ../common/localfiniteelementtraits.hh\n+ raviartthomas3cube2d/raviartthomas3cube2dlocalbasis.hh\n+ raviartthomas3cube2d/raviartthomas3cube2dlocalcoefficients.hh\n+ raviartthomas3cube2d/raviartthomas3cube2dlocalinterpolation.hh\n Dune::RT3Cube2DLocalFiniteElement\n Dune\n \n \n raviartthomas3cube2dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas3cube2d/\n- a00254.html\n+ a00401.html\n ../../common/localbasis.hh\n Dune::RT3Cube2DLocalBasis\n Dune\n \n \n raviartthomas3cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas3cube2d/\n- a00257.html\n- ../../common/localkey.hh\n+ a00395.html\n+ ../../common/localkey.hh\n Dune::RT3Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas3cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas3cube2d/\n- a00260.html\n+ a00398.html\n Dune::RT3Cube2DLocalInterpolation\n Dune\n \n \n raviartthomas4cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00329.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas4cube2d/raviartthomas4cube2dlocalbasis.hh\n- raviartthomas4cube2d/raviartthomas4cube2dlocalcoefficients.hh\n- raviartthomas4cube2d/raviartthomas4cube2dlocalinterpolation.hh\n+ a00443.html\n+ ../common/localfiniteelementtraits.hh\n+ raviartthomas4cube2d/raviartthomas4cube2dlocalbasis.hh\n+ raviartthomas4cube2d/raviartthomas4cube2dlocalcoefficients.hh\n+ raviartthomas4cube2d/raviartthomas4cube2dlocalinterpolation.hh\n Dune::RT4Cube2DLocalFiniteElement\n Dune\n \n \n raviartthomas4cube2dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas4cube2d/\n- a00335.html\n+ a00446.html\n ../../common/localbasis.hh\n Dune::RT4Cube2DLocalBasis\n Dune\n \n \n raviartthomas4cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas4cube2d/\n- a00341.html\n- ../../common/localkey.hh\n+ a00452.html\n+ ../../common/localkey.hh\n Dune::RT4Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas4cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomas4cube2d/\n- a00338.html\n+ a00449.html\n Dune::RT4Cube2DLocalInterpolation\n Dune\n \n \n raviartthomascube.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00239.html\n- raviartthomas0cube2d.hh\n- raviartthomas0cube3d.hh\n- raviartthomas1cube2d.hh\n- raviartthomas1cube3d.hh\n- raviartthomas2cube2d.hh\n- raviartthomas3cube2d.hh\n- raviartthomas4cube2d.hh\n+ a00479.html\n+ raviartthomas0cube2d.hh\n+ raviartthomas0cube3d.hh\n+ raviartthomas1cube2d.hh\n+ raviartthomas1cube3d.hh\n+ raviartthomas2cube2d.hh\n+ raviartthomas3cube2d.hh\n+ raviartthomas4cube2d.hh\n Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 0 >\n Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 1 >\n Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 2 >\n Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 3 >\n Dune::RaviartThomasCubeLocalFiniteElement< D, R, 2, 4 >\n Dune::RaviartThomasCubeLocalFiniteElement< D, R, 3, 0 >\n Dune::RaviartThomasCubeLocalFiniteElement< D, R, 3, 1 >\n Dune\n \n \n raviartthomaslfecache.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00332.html\n- dune/localfunctions/raviartthomas.hh\n- dune/localfunctions/common/localfiniteelementvariantcache.hh\n+ a00455.html\n+ dune/localfunctions/raviartthomas.hh\n+ dune/localfunctions/common/localfiniteelementvariantcache.hh\n Dune\n \n \n raviartthomassimplex.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/\n- a00344.html\n+ a00524.html\n dune/localfunctions/utility/localfiniteelement.hh\n- raviartthomassimplex/raviartthomassimplexbasis.hh\n+ raviartthomassimplex/raviartthomassimplexbasis.hh\n Dune::RaviartThomasSimplexLocalFiniteElement\n Dune\n \n \n raviartthomassimplexbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomassimplex/\n- a00320.html\n- dune/localfunctions/utility/defaultbasisfactory.hh\n- raviartthomassimplexinterpolation.hh\n- raviartthomassimplexprebasis.hh\n+ a00425.html\n+ dune/localfunctions/utility/defaultbasisfactory.hh\n+ raviartthomassimplexinterpolation.hh\n+ raviartthomassimplexprebasis.hh\n Dune::RaviartThomasBasisFactory\n Dune\n \n \n raviartthomassimplexinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomassimplex/\n- a00317.html\n- dune/localfunctions/common/localkey.hh\n- dune/localfunctions/utility/interpolationhelper.hh\n- dune/localfunctions/utility/polynomialbasis.hh\n- dune/localfunctions/orthonormal/orthonormalbasis.hh\n+ a00422.html\n+ dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/utility/interpolationhelper.hh\n+ dune/localfunctions/utility/polynomialbasis.hh\n+ dune/localfunctions/orthonormal/orthonormalbasis.hh\n Dune::LocalCoefficientsContainer\n Dune::RaviartThomasCoefficientsFactory\n Dune::RTL2InterpolationBuilder\n Dune::RaviartThomasL2Interpolation\n Dune::RaviartThomasL2InterpolationFactory\n Dune\n \n \n raviartthomassimplexprebasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/raviartthomas/raviartthomassimplex/\n- a00323.html\n- dune/localfunctions/utility/polynomialbasis.hh\n+ a00419.html\n+ dune/localfunctions/utility/polynomialbasis.hh\n Dune::RTPreBasisFactory\n Dune::RTPreBasisFactory::EvaluationBasisFactory\n Dune::RTVecMatrix\n Dune\n \n \n refined.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/\n- a00122.html\n- dune/localfunctions/refined/refinedp0.hh\n- dune/localfunctions/refined/refinedp1.hh\n+ a00260.html\n+ dune/localfunctions/refined/refinedp0.hh\n+ dune/localfunctions/refined/refinedp1.hh\n \n \n refinedsimplexlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/refined/common/\n- a00458.html\n+ a00188.html\n dune/localfunctions/common/localbasis.hh\n Dune::RefinedSimplexLocalBasis\n Dune::RefinedSimplexLocalBasis< D, 1 >\n Dune::RefinedSimplexLocalBasis< D, 2 >\n Dune::RefinedSimplexLocalBasis< D, 3 >\n Dune\n \n \n refinedp0.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/refined/\n- a00473.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/lagrange/p0.hh\n- refinedp0/refinedp0localbasis.hh\n- refinedp0/refinedp0localcoefficients.hh\n- refinedp0/refinedp0localinterpolation.hh\n+ a00185.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/lagrange/p0.hh\n+ refinedp0/refinedp0localbasis.hh\n+ refinedp0/refinedp0localcoefficients.hh\n+ refinedp0/refinedp0localinterpolation.hh\n Dune::RefinedP0LocalFiniteElement\n Dune::RefinedP0LocalFiniteElement< D, R, 1 >\n Dune::RefinedP0LocalFiniteElement< D, R, 2 >\n Dune::RefinedP0LocalFiniteElement< D, R, 3 >\n Dune\n \n \n refinedp0localbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/refined/refinedp0/\n- a00470.html\n+ a00182.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh\n+ dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh\n Dune::RefinedP0LocalBasis\n Dune\n \n \n refinedp0localcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/refined/refinedp0/\n- a00467.html\n- dune/localfunctions/common/localkey.hh\n+ a00176.html\n+ dune/localfunctions/common/localkey.hh\n Dune::RefinedP0LocalCoefficients\n Dune\n \n \n refinedp0localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/refined/refinedp0/\n- a00464.html\n- dune/localfunctions/refined/refinedp0/refinedp0localbasis.hh\n+ a00179.html\n+ dune/localfunctions/refined/refinedp0/refinedp0localbasis.hh\n Dune::RefinedP0LocalInterpolation\n Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > >\n Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > >\n Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > >\n Dune\n \n \n refinedp1.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/refined/\n- a00461.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/lagrange/p0.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n- dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh\n+ a00194.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/lagrange/p0.hh\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n+ dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh\n Dune::RefinedP1LocalFiniteElement\n Dune\n \n \n refinedp1localbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/refined/refinedp1/\n- a00476.html\n- dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh\n+ a00191.html\n+ dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh\n Dune::RefinedP1LocalBasis\n Dune::RefinedP1LocalBasis< D, R, 1 >\n Dune::RefinedP1LocalBasis< D, R, 2 >\n Dune::RefinedP1LocalBasis< D, R, 3 >\n Dune\n \n \n basisevaluator.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00224.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/utility/multiindex.hh\n- dune/localfunctions/utility/tensor.hh\n+ a00347.html\n+ dune/localfunctions/utility/field.hh\n+ dune/localfunctions/utility/multiindex.hh\n+ dune/localfunctions/utility/tensor.hh\n Dune::MonomialEvaluator\n Dune::MonomialEvaluator::Iterator\n Dune::MonomialEvaluator::BaseIterator\n Dune::StandardEvaluator\n Dune::StandardEvaluator::Iterator\n Dune\n \n \n basismatrix.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00200.html\n- dune/localfunctions/utility/monomialbasis.hh\n- dune/localfunctions/utility/polynomialbasis.hh\n+ a00338.html\n+ dune/localfunctions/utility/monomialbasis.hh\n+ dune/localfunctions/utility/polynomialbasis.hh\n Dune::BasisMatrixBase\n Dune::BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field >\n Dune::BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field >\n Dune::BasisMatrix< const PolynomialBasis< Eval, CM, D, R >, Interpolation, Field >\n Dune::BasisMatrix< const PolynomialBasisWithMatrix< Eval, CM >, Interpolation, Field >\n Dune\n \n \n basisprint.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00230.html\n- dune/localfunctions/utility/multiindex.hh\n- dune/localfunctions/utility/polynomialbasis.hh\n+ a00368.html\n+ dune/localfunctions/utility/multiindex.hh\n+ dune/localfunctions/utility/polynomialbasis.hh\n Dune\n \n \n coeffmatrix.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00191.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/utility/tensor.hh\n+ a00359.html\n+ dune/localfunctions/utility/field.hh\n+ dune/localfunctions/utility/tensor.hh\n Dune::Mult\n Dune::Mult< Field, FieldVector< Field2, dimRange > >\n Dune::SparseCoeffMatrix\n Dune\n \n \n defaultbasisfactory.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00194.html\n- dune/localfunctions/utility/basismatrix.hh\n+ a00365.html\n+ dune/localfunctions/utility/basismatrix.hh\n Dune::Identity\n Dune::DefaultBasisFactory\n Dune::DefaultBasisFactory::EvaluationBasisFactory\n Dune\n \n \n dglocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00218.html\n- dune/localfunctions/common/localkey.hh\n+ a00362.html\n+ dune/localfunctions/common/localkey.hh\n Dune::DGLocalCoefficients\n Dune::DGLocalCoefficientsFactory\n Dune\n \n \n field.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00221.html\n+ a00344.html\n Dune::Unity\n Dune::Zero\n Dune::FieldCast\n Dune::FieldCast< F2, Dune::FieldVector< F1, dim > >\n Dune::FieldCast< F2, Dune::FieldMatrix< F1, dim1, dim2 > >\n Dune::Precision< double >\n Dune::Precision< long double >\n Dune::Precision< float >\n Dune::ComputeField\n Dune\n \n \n interpolationhelper.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00227.html\n- dune/localfunctions/utility/field.hh\n+ a00329.html\n+ dune/localfunctions/utility/field.hh\n Dune::InterpolationHelper\n Dune::InterpolationHelper::Helper< Func, Vector, true >\n Dune::InterpolationHelper::Helper< Basis, Matrix, false >\n Dune\n \n \n l2interpolation.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00203.html\n- dune/localfunctions/utility/field.hh\n+ a00356.html\n+ dune/localfunctions/utility/field.hh\n Dune::LocalL2InterpolationBase\n Dune::LocalL2Interpolation< B, Q, true >\n Dune::LocalL2Interpolation< B, Q, false >\n Dune::LocalL2InterpolationFactory\n Dune\n \n \n lfematrix.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00197.html\n- field.hh\n+ a00335.html\n+ field.hh\n Dune::LFEMatrix\n Dune\n \n \n+ localfunctions/utility/localfiniteelement.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n+ a04586.html\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/utility/l2interpolation.hh\n+ dune/localfunctions/utility/dglocalcoefficients.hh\n+ Dune::GenericLocalFiniteElement\n+ Dune::DGLocalFiniteElement\n+ Dune::L2LocalFiniteElement\n+ Dune\n+ \n+ \n+ python/localfunctions/localfiniteelement.hh\n+ /build/reproducible-path/dune-localfunctions-2.10.0/dune/python/localfunctions/\n+ a04589.html\n+ dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/virtualinterface.hh\n+ Dune\n+ Dune::Python\n+ \n+ \n monomialbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00215.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/utility/multiindex.hh\n- dune/localfunctions/utility/tensor.hh\n+ a00332.html\n+ dune/localfunctions/utility/field.hh\n+ dune/localfunctions/utility/multiindex.hh\n+ dune/localfunctions/utility/tensor.hh\n Dune::MonomialBasisSize\n Dune::MonomialBasisHelper\n Dune::MonomialBasisImpl\n Dune::MonomialBasis\n Dune::StandardMonomialBasis\n Dune::StandardBiMonomialBasis\n Dune::VirtualMonomialBasis\n@@ -1741,42 +1798,42 @@\n Dune::MonomialBasisProvider\n Dune::MonomialBasisProvider::EvaluationBasisFactory\n Dune\n \n \n multiindex.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00209.html\n- dune/localfunctions/utility/field.hh\n+ a00341.html\n+ dune/localfunctions/utility/field.hh\n Dune::MultiIndex\n Dune::FieldTraits< MultiIndex< dim, Field > >\n Dune::Unity< MultiIndex< dim, F > >\n Dune::Zero< MultiIndex< dim, F > >\n Dune\n \n \n polynomialbasis.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00206.html\n+ a00371.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/utility/coeffmatrix.hh\n- dune/localfunctions/utility/monomialbasis.hh\n- dune/localfunctions/utility/multiindex.hh\n- dune/localfunctions/utility/basisevaluator.hh\n+ dune/localfunctions/utility/coeffmatrix.hh\n+ dune/localfunctions/utility/monomialbasis.hh\n+ dune/localfunctions/utility/multiindex.hh\n+ dune/localfunctions/utility/basisevaluator.hh\n Dune::PolynomialBasis\n Dune::PolynomialBasis::Convert\n Dune::PolynomialBasis::Convert< dummy, DomainVector >\n Dune::PolynomialBasisWithMatrix\n Dune\n \n \n tensor.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a00212.html\n- dune/localfunctions/utility/field.hh\n+ a00353.html\n+ dune/localfunctions/utility/field.hh\n Dune::LFETensor\n Dune::FieldTraits< LFETensor< F, dimD, deriv > >\n Dune::LFETensor< F, 0, deriv >\n Dune::LFETensor< F, 0, 0 >\n Dune::LFETensor< F, dimD, 0 >\n Dune::FieldTraits< Derivatives< F, dimD, dimR, deriv, layout > >\n Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value >\n@@ -1806,87 +1863,30 @@\n Dune::DerivativeAssign< Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative >, FieldVector< F2, 1 > >\n Dune\n Dune::DerivativeLayoutNS\n \n \n edges0.5.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/whitney/\n- a00488.html\n- dune/localfunctions/whitney/edges0.5/basis.hh\n- dune/localfunctions/whitney/edges0.5/coefficients.hh\n- dune/localfunctions/whitney/edges0.5/interpolation.hh\n+ a00380.html\n+ dune/localfunctions/whitney/edges0.5/basis.hh\n+ dune/localfunctions/whitney/edges0.5/coefficients.hh\n+ dune/localfunctions/whitney/edges0.5/interpolation.hh\n Dune::EdgeS0_5FiniteElement\n Dune::EdgeS0_5FiniteElement::Traits\n Dune::EdgeS0_5FiniteElementFactory\n Dune\n \n \n- meta/power/basis.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/meta/power/\n- a04574.html\n- Dune::PowerBasis\n- Dune::PowerBasis::Traits\n- Dune\n- \n- \n- whitney/edges0.5/basis.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/whitney/edges0.5/\n- a04577.html\n- dune/localfunctions/common/localtoglobaladaptors.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n- dune/localfunctions/whitney/edges0.5/common.hh\n- Dune::EdgeS0_5Basis\n- Dune::EdgeS0_5Basis::Traits\n- Dune\n- \n- \n- meta/power/coefficients.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/meta/power/\n- a04580.html\n- dune/localfunctions/common/localkey.hh\n- Dune::PowerCoefficients\n- Dune\n- \n- \n- whitney/edges0.5/coefficients.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/whitney/edges0.5/\n- a04583.html\n- dune/localfunctions/common/localkey.hh\n- dune/localfunctions/whitney/edges0.5/common.hh\n- Dune::EdgeS0_5Coefficients\n- Dune\n- \n- \n common.hh\n /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/whitney/edges0.5/\n- a00485.html\n+ a00383.html\n Dune::EdgeS0_5Common\n Dune\n \n- \n- localfunctions/utility/localfiniteelement.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/localfunctions/utility/\n- a04586.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/utility/l2interpolation.hh\n- dune/localfunctions/utility/dglocalcoefficients.hh\n- Dune::GenericLocalFiniteElement\n- Dune::DGLocalFiniteElement\n- Dune::L2LocalFiniteElement\n- Dune\n- \n- \n- python/localfunctions/localfiniteelement.hh\n- /build/reproducible-path/dune-localfunctions-2.10.0/dune/python/localfunctions/\n- a04589.html\n- dune/localfunctions/common/localkey.hh\n- dune/localfunctions/common/virtualinterface.hh\n- Dune\n- Dune::Python\n- \n \n Dune::MonomialEvaluator::BaseIterator\n a02606.html\n class Deriv\n \n Deriv\n Derivatives\n"}]}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/files.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/files.html", "unified_diff": "@@ -77,253 +77,253 @@\n   doc\n  doxygen\n   dune\n   localfunctions\n   brezzidouglasfortinmarini\n   cube\n  localbasis.hh\n- localcoefficients.hh\n- localinterpolation.hh\n- bdfmcube.hh\n+ localcoefficients.hh\n+ localinterpolation.hh\n+ bdfmcube.hh\n   brezzidouglasmarini\n   brezzidouglasmarini1cube2d\n- brezzidouglasmarini1cube2dlocalbasis.hh\n- brezzidouglasmarini1cube2dlocalcoefficients.hh\n- brezzidouglasmarini1cube2dlocalinterpolation.hh\n+ brezzidouglasmarini1cube2dlocalbasis.hh\n+ brezzidouglasmarini1cube2dlocalcoefficients.hh\n+ brezzidouglasmarini1cube2dlocalinterpolation.hh\n   brezzidouglasmarini1cube3d\n- brezzidouglasmarini1cube3dlocalbasis.hh\n- brezzidouglasmarini1cube3dlocalcoefficients.hh\n- brezzidouglasmarini1cube3dlocalinterpolation.hh\n+ brezzidouglasmarini1cube3dlocalbasis.hh\n+ brezzidouglasmarini1cube3dlocalcoefficients.hh\n+ brezzidouglasmarini1cube3dlocalinterpolation.hh\n   brezzidouglasmarini1simplex2d\n- brezzidouglasmarini1simplex2dlocalbasis.hh\n- brezzidouglasmarini1simplex2dlocalcoefficients.hh\n- brezzidouglasmarini1simplex2dlocalinterpolation.hh\n+ brezzidouglasmarini1simplex2dlocalbasis.hh\n+ brezzidouglasmarini1simplex2dlocalcoefficients.hh\n+ brezzidouglasmarini1simplex2dlocalinterpolation.hh\n   brezzidouglasmarini2cube2d\n- brezzidouglasmarini2cube2dlocalbasis.hh\n- brezzidouglasmarini2cube2dlocalcoefficients.hh\n- brezzidouglasmarini2cube2dlocalinterpolation.hh\n+ brezzidouglasmarini2cube2dlocalbasis.hh\n+ brezzidouglasmarini2cube2dlocalcoefficients.hh\n+ brezzidouglasmarini2cube2dlocalinterpolation.hh\n   brezzidouglasmarini2simplex2d\n- brezzidouglasmarini2simplex2dlocalbasis.hh\n- brezzidouglasmarini2simplex2dlocalcoefficients.hh\n- brezzidouglasmarini2simplex2dlocalinterpolation.hh\n- brezzidouglasmarini1cube2d.hh\n- brezzidouglasmarini1cube3d.hh\n- brezzidouglasmarini1simplex2d.hh\n- brezzidouglasmarini2cube2d.hh\n- brezzidouglasmarini2simplex2d.hh\n- brezzidouglasmarinicube.hh\n- brezzidouglasmarinisimplex.hh\n+ brezzidouglasmarini2simplex2dlocalbasis.hh\n+ brezzidouglasmarini2simplex2dlocalcoefficients.hh\n+ brezzidouglasmarini2simplex2dlocalinterpolation.hh\n+ brezzidouglasmarini1cube2d.hh\n+ brezzidouglasmarini1cube3d.hh\n+ brezzidouglasmarini1simplex2d.hh\n+ brezzidouglasmarini2cube2d.hh\n+ brezzidouglasmarini2simplex2d.hh\n+ brezzidouglasmarinicube.hh\n+ brezzidouglasmarinisimplex.hh\n   common\n- interface.hh\n- interfaceswitch.hh\n+ interface.hh\n+ interfaceswitch.hh\n  localbasis.hh\n- localfiniteelementtraits.hh\n- localfiniteelementvariant.hh\n- localfiniteelementvariantcache.hh\n- localinterpolation.hh\n- localkey.hh\n- localtoglobaladaptors.hh\n- virtualinterface.hh\n- virtualwrappers.hh\n+ localfiniteelementtraits.hh\n+ localfiniteelementvariant.hh\n+ localfiniteelementvariantcache.hh\n+ localinterpolation.hh\n+ localkey.hh\n+ localtoglobaladaptors.hh\n+ virtualinterface.hh\n+ virtualwrappers.hh\n   dualmortarbasis\n   dualp1\n- dualp1localbasis.hh\n- dualp1localcoefficients.hh\n- dualp1localinterpolation.hh\n+ dualp1localbasis.hh\n+ dualp1localcoefficients.hh\n+ dualp1localinterpolation.hh\n   dualq1\n- dualq1localbasis.hh\n- dualq1localcoefficients.hh\n- dualq1localinterpolation.hh\n- dualp1.hh\n- dualpq1factory.hh\n- dualq1.hh\n+ dualq1localbasis.hh\n+ dualq1localcoefficients.hh\n+ dualq1localinterpolation.hh\n+ dualp1.hh\n+ dualpq1factory.hh\n+ dualq1.hh\n   enriched\n   simplexp1bubble\n  localbasis.hh\n- localcoefficients.hh\n- localinterpolation.hh\n- simplexp1bubble.hh\n+ localcoefficients.hh\n+ localinterpolation.hh\n+ simplexp1bubble.hh\n   hierarchical\n   hierarchicalp2\n- hierarchicalsimplexp2localbasis.hhHierarchical p2 shape functions for the simplex \n- hierarchicalsimplexp2localinterpolation.hh\n+ hierarchicalsimplexp2localbasis.hhHierarchical p2 shape functions for the simplex \n+ hierarchicalsimplexp2localinterpolation.hh\n   hierarchicalp2withelementbubble\n- hierarchicalsimplexp2withelementbubble.hhHierarchical p2 shape functions for the simplex \n+ hierarchicalsimplexp2withelementbubble.hhHierarchical p2 shape functions for the simplex \n   hierarchicalprismp2\n- hierarchicalprismp2localbasis.hhHierarchical prism p2 shape functions for the simplex \n- hierarchicalprismp2localinterpolation.hh\n- hierarchicalp1withelementbubble.hh\n- hierarchicalp2.hh\n- hierarchicalp2withelementbubble.hh\n- hierarchicalprismp2.hh\n+ hierarchicalprismp2localbasis.hhHierarchical prism p2 shape functions for the simplex \n+ hierarchicalprismp2localinterpolation.hh\n+ hierarchicalp1withelementbubble.hh\n+ hierarchicalp2.hh\n+ hierarchicalp2withelementbubble.hh\n+ hierarchicalprismp2.hh\n   lagrange\n   p0\n- p0localbasis.hh\n- p0localcoefficients.hh\n- p0localinterpolation.hh\n- cache.hh\n- emptypoints.hh\n- equidistantpoints.hh\n- interpolation.hh\n- lagrangebasis.hh\n- lagrangecoefficients.hh\n- lagrangecube.hh\n- lagrangelfecache.hh\n- lagrangeprism.hh\n- lagrangepyramid.hh\n- lagrangesimplex.hh\n- p0.hh\n- pk1d.hh\n- pk2d.hh\n- pq22d.hh\n- pqkfactory.hh\n- q1.hh\n- q2.hh\n+ p0localbasis.hh\n+ p0localcoefficients.hh\n+ p0localinterpolation.hh\n+ cache.hh\n+ emptypoints.hh\n+ equidistantpoints.hh\n+ interpolation.hh\n+ lagrangebasis.hh\n+ lagrangecoefficients.hh\n+ lagrangecube.hh\n+ lagrangelfecache.hh\n+ lagrangeprism.hh\n+ lagrangepyramid.hh\n+ lagrangesimplex.hh\n+ p0.hh\n+ pk1d.hh\n+ pk2d.hh\n+ pq22d.hh\n+ pqkfactory.hh\n+ q1.hh\n+ q2.hh\n   meta\n   power\n- basis.hh\n- coefficients.hh\n- interpolation.hh\n- power.hh\n+ basis.hh\n+ coefficients.hh\n+ interpolation.hh\n+ power.hh\n   mimetic\n- mimeticall.hh\n+ mimeticall.hh\n   monomial\n- monomiallocalbasis.hh\n- monomiallocalcoefficients.hh\n- monomiallocalinterpolation.hh\n+ monomiallocalbasis.hh\n+ monomiallocalcoefficients.hh\n+ monomiallocalinterpolation.hh\n   nedelec\n   nedelecsimplex\n- nedelecsimplexbasis.hh\n- nedelecsimplexinterpolation.hh\n- nedelecsimplexprebasis.hh\n- nedelec1stkindcube.hh\n- nedelec1stkindsimplex.hh\n+ nedelecsimplexbasis.hh\n+ nedelecsimplexinterpolation.hh\n+ nedelecsimplexprebasis.hh\n+ nedelec1stkindcube.hh\n+ nedelec1stkindsimplex.hh\n   orthonormal\n- orthonormalbasis.hh\n- orthonormalcompute.hh\n+ orthonormalbasis.hh\n+ orthonormalcompute.hh\n   rannacherturek\n   rannacherturek2d\n- rannacherturek2dlocalbasis.hh\n+ rannacherturek2dlocalbasis.hh\n   rannacherturek3d\n- rannacherturek3dlocalbasis.hh\n- rannacherturek.hh\n- rannachertureklocalbasis.hh\n- rannachertureklocalcoefficients.hh\n- rannachertureklocalinterpolation.hh\n+ rannacherturek3dlocalbasis.hh\n+ rannacherturek.hh\n+ rannachertureklocalbasis.hh\n+ rannachertureklocalcoefficients.hh\n+ rannachertureklocalinterpolation.hh\n   raviartthomas\n   raviartthomas02d\n- raviartthomas02dlocalbasis.hh\n- raviartthomas02dlocalcoefficients.hh\n- raviartthomas02dlocalinterpolation.hh\n+ raviartthomas02dlocalbasis.hh\n+ raviartthomas02dlocalcoefficients.hh\n+ raviartthomas02dlocalinterpolation.hh\n   raviartthomas03d\n- raviartthomas03dlocalbasis.hh\n- raviartthomas03dlocalcoefficients.hh\n- raviartthomas03dlocalinterpolation.hh\n+ raviartthomas03dlocalbasis.hh\n+ raviartthomas03dlocalcoefficients.hh\n+ raviartthomas03dlocalinterpolation.hh\n   raviartthomas0cube2d\n- raviartthomas0cube2dall.hh\n+ raviartthomas0cube2dall.hh\n   raviartthomas0cube3d\n- raviartthomas0cube3dall.hh\n+ raviartthomas0cube3dall.hh\n   raviartthomas0prism\n- raviartthomas0prismlocalbasis.hh\n- raviartthomas0prismlocalcoefficients.hh\n- raviartthomas0prismlocalinterpolation.hh\n+ raviartthomas0prismlocalbasis.hh\n+ raviartthomas0prismlocalcoefficients.hh\n+ raviartthomas0prismlocalinterpolation.hh\n   raviartthomas0pyramid\n- raviartthomas0pyramidlocalbasis.hh\n- raviartthomas0pyramidlocalcoefficients.hh\n- raviartthomas0pyramidlocalinterpolation.hh\n+ raviartthomas0pyramidlocalbasis.hh\n+ raviartthomas0pyramidlocalcoefficients.hh\n+ raviartthomas0pyramidlocalinterpolation.hh\n   raviartthomas12d\n- raviartthomas12dlocalbasis.hh\n- raviartthomas12dlocalcoefficients.hh\n- raviartthomas12dlocalinterpolation.hh\n+ raviartthomas12dlocalbasis.hh\n+ raviartthomas12dlocalcoefficients.hh\n+ raviartthomas12dlocalinterpolation.hh\n   raviartthomas1cube2d\n- raviartthomas1cube2dlocalbasis.hh\n- raviartthomas1cube2dlocalcoefficients.hh\n- raviartthomas1cube2dlocalinterpolation.hh\n+ raviartthomas1cube2dlocalbasis.hh\n+ raviartthomas1cube2dlocalcoefficients.hh\n+ raviartthomas1cube2dlocalinterpolation.hh\n   raviartthomas1cube3d\n- raviartthomas1cube3dlocalbasis.hh\n- raviartthomas1cube3dlocalcoefficients.hh\n- raviartthomas1cube3dlocalinterpolation.hh\n+ raviartthomas1cube3dlocalbasis.hh\n+ raviartthomas1cube3dlocalcoefficients.hh\n+ raviartthomas1cube3dlocalinterpolation.hh\n   raviartthomas2cube2d\n- raviartthomas2cube2dlocalbasis.hh\n- raviartthomas2cube2dlocalcoefficients.hh\n- raviartthomas2cube2dlocalinterpolation.hh\n+ raviartthomas2cube2dlocalbasis.hh\n+ raviartthomas2cube2dlocalcoefficients.hh\n+ raviartthomas2cube2dlocalinterpolation.hh\n   raviartthomas3cube2d\n- raviartthomas3cube2dlocalbasis.hh\n- raviartthomas3cube2dlocalcoefficients.hh\n- raviartthomas3cube2dlocalinterpolation.hh\n+ raviartthomas3cube2dlocalbasis.hh\n+ raviartthomas3cube2dlocalcoefficients.hh\n+ raviartthomas3cube2dlocalinterpolation.hh\n   raviartthomas4cube2d\n- raviartthomas4cube2dlocalbasis.hh\n- raviartthomas4cube2dlocalcoefficients.hh\n- raviartthomas4cube2dlocalinterpolation.hh\n+ raviartthomas4cube2dlocalbasis.hh\n+ raviartthomas4cube2dlocalcoefficients.hh\n+ raviartthomas4cube2dlocalinterpolation.hh\n   raviartthomassimplex\n- raviartthomassimplexbasis.hh\n- raviartthomassimplexinterpolation.hh\n- raviartthomassimplexprebasis.hh\n- raviartthomas02d.hh\n- raviartthomas03d.hh\n- raviartthomas0cube2d.hh\n- raviartthomas0cube3d.hh\n- raviartthomas0prism.hh\n- raviartthomas0pyramid.hh\n- raviartthomas12d.hh\n- raviartthomas1cube2d.hh\n- raviartthomas1cube3d.hh\n- raviartthomas2cube2d.hh\n- raviartthomas3cube2d.hh\n- raviartthomas4cube2d.hh\n- raviartthomascube.hhConvenience header that includes all available Raviart-Thomas local finite elements for cubes \n- raviartthomaslfecache.hh\n- raviartthomassimplex.hhRaviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension \n+ raviartthomassimplexbasis.hh\n+ raviartthomassimplexinterpolation.hh\n+ raviartthomassimplexprebasis.hh\n+ raviartthomas02d.hh\n+ raviartthomas03d.hh\n+ raviartthomas0cube2d.hh\n+ raviartthomas0cube3d.hh\n+ raviartthomas0prism.hh\n+ raviartthomas0pyramid.hh\n+ raviartthomas12d.hh\n+ raviartthomas1cube2d.hh\n+ raviartthomas1cube3d.hh\n+ raviartthomas2cube2d.hh\n+ raviartthomas3cube2d.hh\n+ raviartthomas4cube2d.hh\n+ raviartthomascube.hhConvenience header that includes all available Raviart-Thomas local finite elements for cubes \n+ raviartthomaslfecache.hh\n+ raviartthomassimplex.hhRaviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension \n   refined\n   common\n- refinedsimplexlocalbasis.hhContains a base class for LocalBasis classes based on uniform refinement \n+ refinedsimplexlocalbasis.hhContains a base class for LocalBasis classes based on uniform refinement \n   refinedp0\n- refinedp0localbasis.hh\n- refinedp0localcoefficients.hh\n- refinedp0localinterpolation.hh\n+ refinedp0localbasis.hh\n+ refinedp0localcoefficients.hh\n+ refinedp0localinterpolation.hh\n   refinedp1\n- refinedp1localbasis.hhLinear Lagrange shape functions on a uniformly refined reference element \n- refinedp0.hhPiecewise P0 finite element \n- refinedp1.hh\n+ refinedp1localbasis.hhLinear Lagrange shape functions on a uniformly refined reference element \n+ refinedp0.hhPiecewise P0 finite element \n+ refinedp1.hh\n   utility\n- basisevaluator.hh\n- basismatrix.hh\n- basisprint.hh\n- coeffmatrix.hh\n- defaultbasisfactory.hh\n- dglocalcoefficients.hh\n- field.hh\n- interpolationhelper.hh\n- l2interpolation.hh\n- lfematrix.hh\n+ basisevaluator.hh\n+ basismatrix.hh\n+ basisprint.hh\n+ coeffmatrix.hh\n+ defaultbasisfactory.hh\n+ dglocalcoefficients.hh\n+ field.hh\n+ interpolationhelper.hh\n+ l2interpolation.hh\n+ lfematrix.hh\n  localfiniteelement.hh\n- monomialbasis.hh\n- multiindex.hh\n- polynomialbasis.hh\n- tensor.hh\n+ monomialbasis.hh\n+ multiindex.hh\n+ polynomialbasis.hh\n+ tensor.hh\n   whitney\n   edges0.5\n- basis.hh\n- coefficients.hh\n- common.hh\n- interpolation.hh\n- edges0.5.hh\n- brezzidouglasmarini.hh\n- crouzeixraviart.hh\n- dualmortarbasis.hh\n- enriched.hh\n- hierarchical.hhConvenience header that includes all available hierarchical LocalFiniteElements \n- lagrange.hhConvenience header that includes all implementations of Lagrange finite elements \n- mimetic.hh\n- monomial.hh\n- nedelec.hh\n- orthonormal.hh\n- rannacherturek.hhConvenience header that includes all available Rannacher-Turek LocalFiniteElements \n- raviartthomas.hh\n- refined.hhConvenience header that includes all available LocalFiniteElements based on uniform element refinement \n+ basis.hh\n+ coefficients.hh\n+ common.hh\n+ interpolation.hh\n+ edges0.5.hh\n+ brezzidouglasmarini.hh\n+ crouzeixraviart.hh\n+ dualmortarbasis.hh\n+ enriched.hh\n+ hierarchical.hhConvenience header that includes all available hierarchical LocalFiniteElements \n+ lagrange.hhConvenience header that includes all implementations of Lagrange finite elements \n+ mimetic.hh\n+ monomial.hh\n+ nedelec.hh\n+ orthonormal.hh\n+ rannacherturek.hhConvenience header that includes all available Rannacher-Turek LocalFiniteElements \n+ raviartthomas.hh\n+ refined.hhConvenience header that includes all available LocalFiniteElements based on uniform element refinement \n   python\n   localfunctions\n  localfiniteelement.hh\n \n \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482.html", "comments": ["Files 80% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomial.hh File Reference\n+dune-localfunctions: raviartthomas2cube2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,45 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n-
    monomial.hh File Reference
    \n+
    raviartthomas2cube2d.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <cstddef>
    \n-#include <cstdlib>
    \n-#include <memory>
    \n-#include <vector>
    \n-#include <dune/geometry/type.hh>
    \n-#include "common/localfiniteelementtraits.hh"
    \n-#include "common/localtoglobaladaptors.hh"
    \n-#include "monomial/monomiallocalbasis.hh"
    \n-#include "monomial/monomiallocalcoefficients.hh"
    \n-#include "monomial/monomiallocalinterpolation.hh"
    \n+\n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::MonomialLocalFiniteElement< D, R, d, p >
     Monomial basis for discontinuous Galerkin methods. More...
     
    class  Dune::MonomialFiniteElementFactory< Geometry, RF, p >
     Factory for global-valued MonomFiniteElement objects. More...
    class  Dune::RT2Cube2DLocalFiniteElement< D, R >
     Second order Raviart-Thomas shape functions on cubes. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,32 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-monomial.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n+raviartthomas2cube2d.hh File Reference\n #include \n-#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\"\n-#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+#include \"_\b._\b._\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b,_\b _\bp_\b _\b>\n-\u00a0 Monomial basis for discontinuous Galerkin methods. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bp_\b _\b>\n-\u00a0 Factory for global-valued MonomFiniteElement objects. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n+\u00a0 Second order Raviart-Thomas shape functions on cubes. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479_source.html", "comments": ["Files 92% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomial.hh Source File\n+dune-localfunctions: raviartthomascube.hh Source File\n \n \n \n \n \n \n \n@@ -70,223 +70,213 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    monomial.hh
    \n+
    raviartthomascube.hh
    \n
    \n
    \n-Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5
    \n-
    6#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_MONOMIAL_HH
    \n-
    8
    \n-
    9#include <cassert>
    \n-
    10#include <cstddef>
    \n-
    11#include <cstdlib>
    \n-
    12#include <memory>
    \n-
    13#include <vector>
    \n-
    14
    \n-
    15#include <dune/geometry/type.hh>
    \n-
    16
    \n-\n-\n-\n-\n-\n-
    22
    \n-
    23namespace Dune
    \n-
    24{
    \n-
    25
    \n-
    26
    \n-
    39 template<class D, class R, int d, int p>
    \n-
    \n-\n-
    41 {
    \n-
    42 constexpr static int static_size = MonomialLocalBasis<D,R,d,p>::size();
    \n-
    43
    \n-
    44 public:
    \n-\n-\n-\n-\n-\n-
    52
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH
    \n+
    7
    \n+\n+\n+\n+\n+\n+\n+\n+
    15
    \n+
    22namespace Dune
    \n+
    23{
    \n+
    39 template<class D, class R, unsigned int dim, unsigned int order>
    \n+\n+
    41
    \n+
    45 template<class D, class R>
    \n+
    \n+\n+
    47 : public RT0Cube2DLocalFiniteElement<D, R>
    \n+
    48 {
    \n+
    49 public:
    \n+\n+
    53
    \n
    \n-
    54 MonomialLocalFiniteElement (const GeometryType &gt_)
    \n-
    55 : basis(), interpolation(gt_, basis), gt(gt_)
    \n+\n+\n
    56 {}
    \n
    \n-
    57
    \n-
    \n-
    60 const typename Traits::LocalBasisType& localBasis () const
    \n-
    61 {
    \n-
    62 return basis;
    \n-
    63 }
    \n+
    57 };
    \n
    \n-
    64
    \n+
    58
    \n+
    62 template<class D, class R>
    \n+
    \n+\n+
    64 : public RT1Cube2DLocalFiniteElement<D, R>
    \n+
    65 {
    \n+
    66 public:
    \n
    \n-\n-
    68 {
    \n-
    69 return coefficients;
    \n-
    70 }
    \n-
    \n-
    71
    \n-
    \n-\n-
    75 {
    \n-
    76 return interpolation;
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    80 unsigned int size () const
    \n-
    81 {
    \n-
    82 return basis.size();
    \n-
    83 }
    \n-
    \n-
    84
    \n-
    \n-
    87 GeometryType type () const
    \n-
    88 {
    \n-
    89 return gt;
    \n-
    90 }
    \n-
    \n-
    91
    \n-
    92 private:
    \n-\n-\n-\n-
    96 GeometryType gt;
    \n-
    97 };
    \n-
    \n-
    98
    \n-
    100
    \n-
    112 template<class Geometry, class RF, std::size_t p>
    \n-
    \n-\n-
    114 typedef typename Geometry::ctype DF;
    \n-
    115 static const std::size_t dim = Geometry::mydimension;
    \n-
    116
    \n-\n-
    118
    \n-
    119 std::vector<std::shared_ptr<const LocalFE> > localFEs;
    \n-
    120
    \n-
    121 void init(const GeometryType &gt) {
    \n-
    122 std::size_t index = gt.id() >> 1;
    \n-
    123 if(localFEs.size() <= index)
    \n-
    124 localFEs.resize(index+1);
    \n-
    125 localFEs[index].reset(new LocalFE(gt));
    \n-
    126 }
    \n-
    127
    \n-
    128 public:
    \n-\n-\n-
    131
    \n-
    133
    \n-
    137 template<class ForwardIterator>
    \n-
    \n-
    138 MonomialFiniteElementFactory(const ForwardIterator &begin,
    \n-
    139 const ForwardIterator &end)
    \n-
    140 {
    \n-
    141 for(ForwardIterator it = begin; it != end; ++it)
    \n-
    142 init(*it);
    \n-
    143 }
    \n-
    \n-
    144
    \n-
    146
    \n-
    \n-
    149 MonomialFiniteElementFactory(const GeometryType &gt)
    \n-
    150 { init(gt); }
    \n+\n+\n+
    69 {}
    \n+
    \n+
    70
    \n+\n+
    74 };
    \n+
    \n+
    75
    \n+
    79 template<class D, class R>
    \n+
    \n+\n+
    81 : public RT2Cube2DLocalFiniteElement<D, R>
    \n+
    82 {
    \n+
    83 public:
    \n+\n+
    87
    \n+\n+
    91 };
    \n+
    \n+
    92
    \n+
    96 template<class D, class R>
    \n+
    \n+\n+
    98 : public RT3Cube2DLocalFiniteElement<D, R>
    \n+
    99 {
    \n+
    100 public:
    \n+\n+
    104
    \n+\n+
    108 };
    \n+
    \n+
    109
    \n+
    113 template<class D, class R>
    \n+
    \n+\n+
    115 : public RT4Cube2DLocalFiniteElement<D, R>
    \n+
    116 {
    \n+
    117 public:
    \n+\n+
    121
    \n+\n+
    125 };
    \n+
    \n+
    126
    \n+
    130 template<class D, class R>
    \n+
    \n+\n+
    132 : public RT0Cube3DLocalFiniteElement<D, R>
    \n+
    133 {
    \n+
    134 public:
    \n+\n+
    138
    \n+\n+
    142 };
    \n+
    \n+
    143
    \n+
    147 template<class D, class R>
    \n+
    \n+\n+
    149 : public RT1Cube3DLocalFiniteElement<D, R>
    \n+
    150 {
    \n+
    151 public:
    \n+\n-
    151
    \n-
    153
    \n+
    155
    \n
    \n-\n-
    157 static_assert(dim <= 3, "MonomFiniteElementFactory knows the "
    \n-
    158 "available geometry types only up to dimension 3");
    \n-
    159
    \n-
    160 GeometryType gt;
    \n-
    161 switch(dim) {
    \n-
    162 case 0 :
    \n-
    163 gt = Dune::GeometryTypes::vertex; init(gt);
    \n-
    164 break;
    \n-
    165 case 1 :
    \n-
    166 gt = Dune::GeometryTypes::line; init(gt);
    \n-
    167 break;
    \n-
    168 case 2 :
    \n-
    169 gt = Dune::GeometryTypes::triangle; init(gt);
    \n-
    170 gt = Dune::GeometryTypes::quadrilateral; init(gt);
    \n-
    171 break;
    \n-
    172 case 3 :
    \n-
    173 gt = Dune::GeometryTypes::tetrahedron; init(gt);
    \n-
    174 gt = Dune::GeometryTypes::pyramid; init(gt);
    \n-
    175 gt = Dune::GeometryTypes::prism; init(gt);
    \n-
    176 gt = Dune::GeometryTypes::hexahedron; init(gt);
    \n-
    177 break;
    \n-
    178 default :
    \n-
    179 // this should never happen -- it should be caught by the static
    \n-
    180 // assert above.
    \n-
    181 std::abort();
    \n-
    182 };
    \n-
    183 }
    \n-
    \n-
    184
    \n-
    186
    \n-
    \n-
    196 const FiniteElement make(const Geometry& geometry) {
    \n-
    197 std::size_t index = geometry.type().id() >> 1;
    \n-
    198 assert(localFEs.size() > index && localFEs[index]);
    \n-
    199 return FiniteElement(*localFEs[index], geometry);
    \n-
    200 }
    \n-
    \n-
    201 };
    \n-
    \n-
    202}
    \n-
    203
    \n-
    204#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_HH
    \n-\n-\n-\n-\n-\n+\n+\n+
    158 {}
    \n+
    \n+
    159 };
    \n+
    \n+
    160} // namespace Dune
    \n+
    161
    \n+
    162#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH
    \n+\n+\n+\n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n-
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n-
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n-
    Convert a simple scalar local finite element into a global finite element.
    Definition localtoglobaladaptors.hh:187
    \n-
    GeometryType type() const
    Definition localtoglobaladaptors.hh:229
    \n-
    Monomial basis for discontinuous Galerkin methods.
    Definition monomial.hh:41
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition monomial.hh:80
    \n-
    GeometryType type() const
    Definition monomial.hh:87
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition monomial.hh:74
    \n-
    LocalFiniteElementTraits< MonomialLocalBasis< D, R, d, p >, MonomialLocalCoefficients< static_size >, MonomialLocalInterpolation< MonomialLocalBasis< D, R, d, p >, static_size > > Traits
    Definition monomial.hh:51
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition monomial.hh:67
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition monomial.hh:60
    \n-
    MonomialLocalFiniteElement(const GeometryType &gt_)
    Construct a MonomLocalFiniteElement.
    Definition monomial.hh:54
    \n-
    Factory for global-valued MonomFiniteElement objects.
    Definition monomial.hh:113
    \n-
    MonomialFiniteElementFactory(const ForwardIterator &begin, const ForwardIterator &end)
    construct a MonomialFiniteElementFactory from a list of GeometryType's
    Definition monomial.hh:138
    \n-
    MonomialFiniteElementFactory(const GeometryType &gt)
    construct a MonomialFiniteElementFactory from a single GeometryType
    Definition monomial.hh:149
    \n-
    const FiniteElement make(const Geometry &geometry)
    construct a global-valued MonomFiniteElement
    Definition monomial.hh:196
    \n-
    ScalarLocalToGlobalFiniteElementAdaptor< LocalFE, Geometry > FiniteElement
    Definition monomial.hh:130
    \n-
    MonomialFiniteElementFactory()
    construct a MonomFiniteElementFactory for all applicable GeometryType's
    Definition monomial.hh:156
    \n-
    Definition monomiallocalbasis.hh:202
    \n-
    static constexpr unsigned int size()
    Number of shape functions.
    Definition monomiallocalbasis.hh:217
    \n-
    Definition monomiallocalcoefficients.hh:25
    \n-
    Definition monomiallocalinterpolation.hh:24
    \n+
    Zero order Raviart-Thomas shape functions on rectangles.
    Definition raviartthomas0cube2d.hh:25
    \n+
    Zero order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas0cube3d.hh:25
    \n+
    First order Raviart-Thomas shape functions on quadrilaterals.
    Definition raviartthomas1cube2d.hh:28
    \n+
    First order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas1cube3d.hh:27
    \n+
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas2cube2d.hh:27
    \n+
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas3cube2d.hh:29
    \n+
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas4cube2d.hh:29
    \n+
    Raviart-Thomas local finite elements for cubes.
    Definition raviartthomascube.hh:40
    \n+
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:54
    \n+
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:50
    \n+
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:67
    \n+
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:71
    \n+
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:84
    \n+
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:88
    \n+
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:105
    \n+
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:101
    \n+
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:122
    \n+
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:118
    \n+
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:135
    \n+
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:139
    \n+
    RaviartThomasCubeLocalFiniteElement()
    Definition raviartthomascube.hh:152
    \n+
    RaviartThomasCubeLocalFiniteElement(int s)
    Definition raviartthomascube.hh:156
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,246 +1,221 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-monomial.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomascube.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5\n-6#ifndef DUNE_LOCALFUNCTIONS_MONOMIAL_HH\n-7#define DUNE_LOCALFUNCTIONS_MONOMIAL_HH\n-8\n-9#include \n-10#include \n-11#include \n-12#include \n-13#include \n-14\n-15#include \n-16\n-17#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\"\n-18#include \"_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\"\n-19#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n-20#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n-21#include \"_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\b/_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n-22\n-23namespace _\bD_\bu_\bn_\be\n-24{\n-25\n-26\n-39 template\n-_\b4_\b0 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-41 {\n-42 constexpr static int static_size = _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b>_\b:_\b:_\bs_\bi_\bz_\be();\n-43\n-44 public:\n-47 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n-48 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b>,\n-49 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bs_\bt_\ba_\bt_\bi_\bc_\b__\bs_\bi_\bz_\be_\b>,\n-50 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b>,static_size>\n-_\b5_\b1 > _\bT_\br_\ba_\bi_\bt_\bs;\n-52\n-_\b5_\b4 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (const GeometryType >_)\n-55 : basis(), interpolation(gt_, basis), gt(gt_)\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH\n+7\n+8#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n+9#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\"\n+10#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n+14#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\"\n+15\n+22namespace _\bD_\bu_\bn_\be\n+23{\n+39 template\n+_\b4_\b0 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n+41\n+45 template\n+_\b4_\b6 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+47 : public _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+48 {\n+49 public:\n+_\b5_\b0 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+51 : _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+52 {}\n+53\n+_\b5_\b4 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+55 : _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n 56 {}\n-57\n-_\b6_\b0 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n-61 {\n-62 return basis;\n-63 }\n-64\n-_\b6_\b7 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n-68 {\n-69 return coefficients;\n-70 }\n-71\n-_\b7_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n-75 {\n-76 return interpolation;\n-77 }\n-78\n-_\b8_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-81 {\n-82 return basis.size();\n-83 }\n-84\n-_\b8_\b7 GeometryType _\bt_\by_\bp_\be () const\n-88 {\n-89 return gt;\n-90 }\n-91\n-92 private:\n-93 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b> basis;\n-94 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\bs_\bt_\ba_\bt_\bi_\bc_\b__\bs_\bi_\bz_\be_\b> coefficients;\n-95 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b,_\bd_\b,_\bp_\b>,static_size>\n-interpolation;\n-96 GeometryType gt;\n-97 };\n-98\n-100\n-112 template\n-_\b1_\b1_\b3 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-114 typedef typename Geometry::ctype DF;\n-115 static const std::size_t dim = Geometry::mydimension;\n-116\n-117 typedef _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bD_\bF_\b,_\b _\bR_\bF_\b,_\b _\bd_\bi_\bm_\b,_\b _\bp_\b> _\bL_\bo_\bc_\ba_\bl_\bF_\bE;\n-118\n-119 std::vector > localFEs;\n-120\n-121 void init(const GeometryType >) {\n-122 std::size_t index = gt.id() >> 1;\n-123 if(localFEs.size() <= index)\n-124 localFEs.resize(index+1);\n-125 localFEs[index].reset(new _\bL_\bo_\bc_\ba_\bl_\bF_\bE(gt));\n-126 }\n-127\n-128 public:\n-129 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\bL_\bo_\bc_\ba_\bl_\bF_\bE_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b>\n-_\b1_\b3_\b0 _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-131\n-133\n-137 template\n-_\b1_\b3_\b8 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by(const ForwardIterator &begin,\n-139 const ForwardIterator &end)\n-140 {\n-141 for(ForwardIterator it = begin; it != end; ++it)\n-142 init(*it);\n-143 }\n-144\n-146\n-_\b1_\b4_\b9 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by(const GeometryType >)\n-150 { init(gt); }\n-151\n-153\n-_\b1_\b5_\b6 _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by() {\n-157 static_assert(dim <= 3, \"MonomFiniteElementFactory knows the \"\n-158 \"available geometry types only up to dimension 3\");\n-159\n-160 GeometryType gt;\n-161 switch(dim) {\n-162 case 0 :\n-163 gt = Dune::GeometryTypes::vertex; init(gt);\n-164 break;\n-165 case 1 :\n-166 gt = Dune::GeometryTypes::line; init(gt);\n-167 break;\n-168 case 2 :\n-169 gt = Dune::GeometryTypes::triangle; init(gt);\n-170 gt = Dune::GeometryTypes::quadrilateral; init(gt);\n-171 break;\n-172 case 3 :\n-173 gt = Dune::GeometryTypes::tetrahedron; init(gt);\n-174 gt = Dune::GeometryTypes::pyramid; init(gt);\n-175 gt = Dune::GeometryTypes::prism; init(gt);\n-176 gt = Dune::GeometryTypes::hexahedron; init(gt);\n-177 break;\n-178 default :\n-179 // this should never happen -- it should be caught by the static\n-180 // assert above.\n-181 std::abort();\n-182 };\n-183 }\n-184\n-186\n-_\b1_\b9_\b6 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry) {\n-197 std::size_t index = geometry._\bt_\by_\bp_\be().id() >> 1;\n-198 assert(localFEs.size() > index && localFEs[index]);\n-199 return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(*localFEs[index], geometry);\n-200 }\n-201 };\n-202}\n-203\n-204#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_HH\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n-_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n-_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bm_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+57 };\n+58\n+62 template\n+_\b6_\b3 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+64 : public _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+65 {\n+66 public:\n+_\b6_\b7 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+68 : _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+69 {}\n+70\n+_\b7_\b1 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+72 : _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+73 {}\n+74 };\n+75\n+79 template\n+_\b8_\b0 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+81 : public _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+82 {\n+83 public:\n+_\b8_\b4 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+85 : _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+86 {}\n+87\n+_\b8_\b8 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+89 : _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+90 {}\n+91 };\n+92\n+96 template\n+_\b9_\b7 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+98 : public _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+99 {\n+100 public:\n+_\b1_\b0_\b1 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+102 : _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+103 {}\n+104\n+_\b1_\b0_\b5 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+106 : _\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+107 {}\n+108 };\n+109\n+113 template\n+_\b1_\b1_\b4 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+115 : public _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+116 {\n+117 public:\n+_\b1_\b1_\b8 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+119 : _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+120 {}\n+121\n+_\b1_\b2_\b2 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+123 : _\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+124 {}\n+125 };\n+126\n+130 template\n+_\b1_\b3_\b1 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+132 : public _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+133 {\n+134 public:\n+_\b1_\b3_\b5 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+136 : _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+137 {}\n+138\n+_\b1_\b3_\b9 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+140 : _\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+141 {}\n+142 };\n+143\n+147 template\n+_\b1_\b4_\b8 class _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+149 : public _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+150 {\n+151 public:\n+_\b1_\b5_\b2 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+153 : _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt()\n+154 {}\n+155\n+_\b1_\b5_\b6 _\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(int s)\n+157 : _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt::_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(s)\n+158 {}\n+159 };\n+160} // namespace Dune\n+161\n+162#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b1_\bc_\bu_\bb_\be_\b3_\bd_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b4_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b3_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n-traits helper struct\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n-LB LocalBasisType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n-LC LocalCoefficientsType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n-LI LocalInterpolationType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-Convert a simple scalar local finite element into a global finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:187\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:229\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Monomial basis for discontinuous Galerkin methods.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:41\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-Number of shape functions in this finite element.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-GeometryType type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:87\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:74\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< MonomialLocalBasis< D, R, d, p >,\n-MonomialLocalCoefficients< static_size >, MonomialLocalInterpolation<\n-MonomialLocalBasis< D, R, d, p >, static_size > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:67\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-const Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:60\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-MonomialLocalFiniteElement(const GeometryType >_)\n-Construct a MonomLocalFiniteElement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:54\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for global-valued MonomFiniteElement objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:113\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-MonomialFiniteElementFactory(const ForwardIterator &begin, const\n-ForwardIterator &end)\n-construct a MonomialFiniteElementFactory from a list of GeometryType's\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:138\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-MonomialFiniteElementFactory(const GeometryType >)\n-construct a MonomialFiniteElementFactory from a single GeometryType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const Geometry &geometry)\n-construct a global-valued MonomFiniteElement\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:196\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-ScalarLocalToGlobalFiniteElementAdaptor< LocalFE, Geometry > FiniteElement\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-MonomialFiniteElementFactory()\n-construct a MonomFiniteElementFactory for all applicable GeometryType's\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomial.hh:156\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:202\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-static constexpr unsigned int size()\n-Number of shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:217\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.hh:25\n-_\bD_\bu_\bn_\be_\b:_\b:_\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Zero order Raviart-Thomas shape functions on rectangles.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2d.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Zero order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3d.hh:25\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Raviart-Thomas shape functions on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube2d.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b1_\bC_\bu_\bb_\be_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+First order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b3_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2d.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b4_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2d.hh:29\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Raviart-Thomas local finite elements for cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b0_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement(int s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b0_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:50\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:67\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement(int s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:71\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:84\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b2_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement(int s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:88\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b3_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement(int s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:105\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b3_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:101\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b4_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement(int s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:122\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b,_\b _\b4_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:118\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b0_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:135\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b0_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement(int s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:139\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:152\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b3_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\bR_\ba_\bv_\bi_\ba_\br_\bt_\bT_\bh_\bo_\bm_\ba_\bs_\bC_\bu_\bb_\be_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RaviartThomasCubeLocalFiniteElement(int s)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomascube.hh:156\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00014.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101.html", "comments": ["Files 90% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: lagrangesimplex.hh File Reference\n+dune-localfunctions: rannachertureklocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,36 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    lagrangesimplex.hh File Reference
    \n+
    rannachertureklocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <numeric>
    \n-#include <dune/common/deprecated.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n+
    #include <cassert>
    \n+#include <vector>
    \n #include <dune/common/fvector.hh>
    \n-#include <dune/common/math.hh>
    \n #include <dune/geometry/referenceelements.hh>
    \n #include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n \n \n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::LagrangeSimplexLocalFiniteElement< D, R, d, k >
     Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order. More...
    class  Dune::RannacherTurekLocalInterpolation< D, R, d >
     please doc me More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-lagrangesimplex.hh File Reference\n-#include \n-#include \n-#include \n-#include \n+rannachertureklocalinterpolation.hh File Reference\n+#include \n+#include \n #include \n-#include \n #include \n #include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bS_\bi_\bm_\bp_\bl_\be_\bx_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b,_\b _\bk_\b _\b>\n-\u00a0 Lagrange finite element for simplices with arbitrary compile-time\n- dimension and polynomial order. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n+\u00a0 please doc me _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155.html", "comments": ["Files 79% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: equidistantpoints.hh File Reference\n+dune-localfunctions: dualq1localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,52 +65,42 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    equidistantpoints.hh File Reference
    \n+Namespaces
    \n+
    dualq1localbasis.hh File Reference
    \n \n
    \n-
    #include <cstddef>
    \n-#include <algorithm>
    \n-#include <vector>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/lagrange/emptypoints.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n+
    #include <array>
    \n+#include <numeric>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n \n \n-\n+\n+\n \n

    \n Classes

    class  Dune::EquidistantPointSet< F, dim >
    class  Dune::DualQ1LocalBasis< D, R, dim >
     Dual Lagrange shape functions of order 1 on the reference cube. More...
     
    \n \n \n \n-

    \n Namespaces

    namespace  Dune
     
    \n-\n-\n-\n-\n-\n-\n

    \n-Functions

    std::size_t Dune::numLagrangePoints (const GeometryType &gt, std::size_t order)
     
    template<class ct , unsigned int cdim>
    static unsigned int Dune::equidistantLagrangePoints (const GeometryType &gt, unsigned int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim > *points)
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,34 +1,25 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-equidistantpoints.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\be_\bm_\bp_\bt_\by_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bq_\b1\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+dualq1localbasis.hh File Reference\n+#include \n+#include \n+#include \n+#include \n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b>\n+class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\bi_\bm_\b _\b>\n+\u00a0 Dual Lagrange shape functions of order 1 on the reference cube. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n- std::size_t\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs (const GeometryType >, std::\n- size_t order)\n-\u00a0\n-template\n-static unsigned int\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs (const GeometryType >,\n- unsigned int codim, std::size_t order, unsigned int\n- *count, _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt< ct, cdim > *points)\n-\u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155_source.html", "comments": ["Files 79% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: equidistantpoints.hh Source File\n+dune-localfunctions: dualq1localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,259 +70,171 @@\n
    \n \n \n \n \n \n \n
    \n-
    equidistantpoints.hh
    \n+
    dualq1localbasis.hh
    \n
    \n
    \n-Go to the documentation of this file.
    1// SPDX-FileCopyrightText: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n-
    2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    3#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH
    \n-
    4#define DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH
    \n-
    5
    \n-
    6#include <cstddef>
    \n+Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+
    2// vi: set et ts=4 sw=2 sts=2:
    \n+
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n+
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n+
    5#ifndef DUNE_DUAL_Q1_LOCALBASIS_HH
    \n+
    6#define DUNE_DUAL_Q1_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <algorithm>
    \n-
    9#include <vector>
    \n+
    8#include <array>
    \n+
    9#include <numeric>
    \n
    10
    \n-
    11#include <dune/geometry/referenceelements.hh>
    \n-
    12#include <dune/geometry/type.hh>
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12#include <dune/common/fmatrix.hh>
    \n
    13
    \n-\n-\n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    20 // numLagrangePoints
    \n-
    21 // -----------------
    \n-
    22
    \n-
    \n-
    23 inline std::size_t numLagrangePoints ( const GeometryType& gt, std::size_t order )
    \n-
    24 {
    \n-
    25 const int dim = gt.dim();
    \n-
    26 if( dim > 0 )
    \n-
    27 {
    \n-
    28 const GeometryType baseGeometryType = Impl::getBase( gt );
    \n-
    29 if( gt.isConical() )
    \n-
    30 {
    \n-
    31 std::size_t size = 0;
    \n-
    32 for( unsigned int o = 0; o <= order; ++o )
    \n-
    33 size += numLagrangePoints( baseGeometryType, o );
    \n-
    34 return size;
    \n-
    35 }
    \n-
    36 else
    \n-
    37 return numLagrangePoints( baseGeometryType, order ) * (order+1);
    \n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    28 template<class D, class R, int dim>
    \n+
    \n+\n+
    30 {
    \n+
    31 public:
    \n+
    32 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>,
    \n+
    33 Dune::FieldMatrix<R,1,dim> > Traits;
    \n+
    34
    \n+
    \n+
    35 void setCoefficients(const std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)>& coefficients)
    \n+
    36 {
    \n+
    37 coefficients_ = coefficients;
    \n
    38 }
    \n-
    39 else
    \n-
    40 return 1;
    \n-
    41 }
    \n-
    \n-
    42
    \n-
    43
    \n-
    44
    \n-
    45 // equidistantLagrangePoints
    \n-
    46 // -------------------------
    \n-
    47
    \n-
    48 template< class ct, unsigned int cdim >
    \n-
    \n-
    49 inline static unsigned int equidistantLagrangePoints ( const GeometryType& gt, unsigned int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim > *points )
    \n-
    50 {
    \n-
    51 const unsigned int dim = gt.dim();
    \n-
    52 assert( (0 <= codim) && (codim <= dim) && (dim <= cdim) );
    \n-
    53
    \n-
    54 if( dim > 0 )
    \n-
    55 {
    \n-
    56 const GeometryType baseGeometryType = Impl::getBase( gt );
    \n-
    57 const unsigned int numBaseN = (codim < dim ? Geo::Impl::size( baseGeometryType.id(), baseGeometryType.dim(), codim ) : 0);
    \n-
    58 const unsigned int numBaseM = (codim > 0 ? Geo::Impl::size( baseGeometryType.id(), baseGeometryType.dim(), codim-1 ) : 0);
    \n-
    59
    \n-
    60 if( gt.isPrismatic() )
    \n-
    61 {
    \n-
    62 unsigned int size = 0;
    \n-
    63 if( codim < dim )
    \n-
    64 {
    \n-
    65 for( unsigned int i = 1; i < order; ++i )
    \n-
    66 {
    \n-
    67 const unsigned int n = equidistantLagrangePoints( baseGeometryType, codim, order, count, points );
    \n-
    68 for( unsigned int j = 0; j < n; ++j )
    \n-
    69 {
    \n-
    70 LocalKey &key = points->localKey_;
    \n-
    71 key = LocalKey( key.subEntity(), codim, key.index() );
    \n-
    72 points->point_[ dim-1 ] = ct( i ) / ct( order );
    \n-
    73 ++points;
    \n-
    74 }
    \n-
    75 size += n;
    \n-
    76 }
    \n-
    77 }
    \n-
    78
    \n-
    79 if( codim > 0 )
    \n-
    80 {
    \n-
    81 const unsigned int n = equidistantLagrangePoints( baseGeometryType, codim-1, order, count+numBaseN, points );
    \n-
    82 for( unsigned int j = 0; j < n; ++j )
    \n-
    83 {
    \n-
    84 LocalKey &key = points[ j ].localKey_;
    \n-
    85 key = LocalKey( key.subEntity() + numBaseN, codim, key.index() );
    \n-
    86
    \n-
    87 points[ j + n ].point_ = points[ j ].point_;
    \n-
    88 points[ j + n ].point_[ dim-1 ] = ct( 1 );
    \n-
    89 points[ j + n ].localKey_ = LocalKey( key.subEntity() + numBaseM, codim, key.index() );
    \n-
    90 ++count[ key.subEntity() + numBaseM ];
    \n-
    91 }
    \n-
    92 size += 2*n;
    \n-
    93 }
    \n+
    \n+
    39
    \n+
    \n+
    41 unsigned int size () const
    \n+
    42 {
    \n+
    43 return 1<<dim;
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    \n+
    47 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    48 std::vector<typename Traits::RangeType>& out) const
    \n+
    49 {
    \n+
    50 // compute q1 values
    \n+
    51 std::vector<typename Traits::RangeType> q1Values(size());
    \n+
    52
    \n+
    53 for (size_t i=0; i<size(); i++) {
    \n+
    54
    \n+
    55 q1Values[i] = 1;
    \n+
    56
    \n+
    57 for (int j=0; j<dim; j++)
    \n+
    58 // if j-th bit of i is set multiply with in[j], else with 1-in[j]
    \n+
    59 q1Values[i] *= (i & (1<<j)) ? in[j] : 1-in[j];
    \n+
    60
    \n+
    61 }
    \n+
    62
    \n+
    63 // compute the dual values by using that they are linear combinations of q1 functions
    \n+
    64 out.resize(size());
    \n+
    65 for (size_t i=0; i<size(); i++)
    \n+
    66 out[i] = 0;
    \n+
    67
    \n+
    68 for (size_t i=0; i<size(); i++)
    \n+
    69 for (size_t j=0; j<size(); j++)
    \n+
    70 out[i] += coefficients_[i][j]*q1Values[j];
    \n+
    71
    \n+
    72
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    76 inline void
    \n+
    \n+
    77 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    78 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    79 {
    \n+
    80 // compute q1 jacobians
    \n+
    81 std::vector<typename Traits::JacobianType> q1Jacs(size());
    \n+
    82
    \n+
    83 // Loop over all shape functions
    \n+
    84 for (size_t i=0; i<size(); i++) {
    \n+
    85
    \n+
    86 // Loop over all coordinate directions
    \n+
    87 for (int j=0; j<dim; j++) {
    \n+
    88
    \n+
    89 // Initialize: the overall expression is a product
    \n+
    90 // if j-th bit of i is set to -1, else 1
    \n+
    91 q1Jacs[i][0][j] = (i & (1<<j)) ? 1 : -1;
    \n+
    92
    \n+
    93 for (int k=0; k<dim; k++) {
    \n
    94
    \n-
    95 return size;
    \n-
    96 }
    \n-
    97 else
    \n-
    98 {
    \n-
    99 unsigned int size = (codim > 0 ? equidistantLagrangePoints( baseGeometryType, codim-1, order, count, points ) : 0);
    \n-
    100 LagrangePoint< ct, cdim > *const end = points + size;
    \n-
    101 for( ; points != end; ++points )
    \n-
    102 points->localKey_ = LocalKey( points->localKey_.subEntity(), codim, points->localKey_.index() );
    \n-
    103
    \n-
    104 if( codim < dim )
    \n-
    105 {
    \n-
    106 for( unsigned int i = order-1; i > 0; --i )
    \n-
    107 {
    \n-
    108 const unsigned int n = equidistantLagrangePoints( baseGeometryType, codim, i, count+numBaseM, points );
    \n-
    109 LagrangePoint< ct, cdim > *const end = points + n;
    \n-
    110 for( ; points != end; ++points )
    \n-
    111 {
    \n-
    112 points->localKey_ = LocalKey( points->localKey_.subEntity()+numBaseM, codim, points->localKey_.index() );
    \n-
    113 for( unsigned int j = 0; j < dim-1; ++j )
    \n-
    114 points->point_[ j ] *= ct( i ) / ct( order );
    \n-
    115 points->point_[ dim-1 ] = ct( order - i ) / ct( order );
    \n-
    116 }
    \n-
    117 size += n;
    \n-
    118 }
    \n-
    119 }
    \n-
    120 else
    \n-
    121 {
    \n-
    122 points->localKey_ = LocalKey( numBaseM, dim, count[ numBaseM ]++ );
    \n-
    123 points->point_ = 0;
    \n-
    124 points->point_[ dim-1 ] = ct( 1 );
    \n-
    125 ++size;
    \n-
    126 }
    \n-
    127
    \n-
    128 return size;
    \n-
    129 }
    \n-
    130 }
    \n-
    131 else
    \n-
    132 {
    \n-
    133 points->localKey_ = LocalKey( 0, 0, count[ 0 ]++ );
    \n-
    134 points->point_ = 0;
    \n-
    135 return 1;
    \n-
    136 }
    \n-
    137 }
    \n-
    \n-
    138
    \n-
    139
    \n-
    140
    \n-
    141 // EquidistantPointSet
    \n-
    142 // -------------------
    \n-
    143
    \n-
    144 template< class F, unsigned int dim >
    \n-
    \n-\n-
    146 : public EmptyPointSet< F, dim >
    \n-
    147 {
    \n-\n-
    149
    \n-
    150 public:
    \n-
    151 static const unsigned int dimension = dim;
    \n-
    152
    \n-
    153 using Base::order;
    \n-
    154
    \n-
    155 EquidistantPointSet ( std::size_t order ) : Base( order ) {}
    \n-
    156
    \n-
    \n-
    157 void build ( GeometryType gt )
    \n-
    158 {
    \n-
    159 assert( gt.dim() == dimension );
    \n-
    160 points_.resize( numLagrangePoints( gt, order() ) );
    \n-
    161
    \n-
    162 typename Base::LagrangePoint *p = points_.data();
    \n-
    163 std::vector< unsigned int > count;
    \n-
    164 for( unsigned int mydim = 0; mydim <= dimension; ++mydim )
    \n-
    165 {
    \n-
    166 count.resize( Geo::Impl::size( gt.id(), dimension, dimension-mydim ) );
    \n-
    167 std::fill( count.begin(), count.end(), 0u );
    \n-
    168 p += equidistantLagrangePoints( gt, dimension-mydim, order(), count.data(), p );
    \n-
    169 }
    \n-
    170 const auto &refElement = referenceElement<F,dimension>(gt);
    \n-
    171 F weight = refElement.volume()/F(double(points_.size()));
    \n-
    172 for (auto &p : points_)
    \n-
    173 p.weight_ = weight;
    \n-
    174 }
    \n-
    \n-
    175
    \n-
    176 template< GeometryType::Id geometryId >
    \n-
    \n-
    177 bool build ()
    \n-
    178 {
    \n-
    179 build( GeometryType( geometryId ) );
    \n-
    180 return true;
    \n-
    181 }
    \n-
    \n-
    182
    \n-
    \n-
    183 bool buildCube ()
    \n-
    184 {
    \n-
    185 return build< GeometryTypes::cube(dim) > ();
    \n-
    186 }
    \n-
    \n-
    187
    \n-
    188 static bool supports ( GeometryType, std::size_t /*order*/ ) { return true; }
    \n-
    189 template< GeometryType::Id geometryId>
    \n-
    \n-
    190 static bool supports ( std::size_t order ) {
    \n-
    191 return supports( GeometryType( geometryId ), order );
    \n-
    192 }
    \n-
    \n-
    193
    \n-
    194 private:
    \n-
    195 using Base::points_;
    \n-
    196 };
    \n-
    \n-
    197
    \n-
    198} // namespace Dune
    \n-
    199
    \n-
    200#endif // #ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH
    \n-\n-\n+
    95 if (j!=k)
    \n+
    96 // if k-th bit of i is set multiply with in[j], else with 1-in[j]
    \n+
    97 q1Jacs[i][0][j] *= (i & (1<<k)) ? in[k] : 1-in[k];
    \n+
    98
    \n+
    99 }
    \n+
    100
    \n+
    101 }
    \n+
    102
    \n+
    103 }
    \n+
    104
    \n+
    105 // compute the dual jacobians by using that they are linear combinations of q1 functions
    \n+
    106 out.resize(size());
    \n+
    107 for (size_t i=0; i<size(); i++)
    \n+
    108 out[i] = 0;
    \n+
    109
    \n+
    110 for (size_t i=0; i<size(); i++)
    \n+
    111 for (size_t j=0; j<size(); j++)
    \n+
    112 out[i].axpy(coefficients_[i][j],q1Jacs[j]);
    \n+
    113
    \n+
    114 }
    \n+
    \n+
    115
    \n+
    \n+
    117 void partial (const std::array<unsigned int, dim>& order,
    \n+
    118 const typename Traits::DomainType& in, // position
    \n+
    119 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    120 {
    \n+
    121 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    122 if (totalOrder == 0) {
    \n+
    123 evaluateFunction(in, out);
    \n+
    124 } else {
    \n+
    125 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    126 }
    \n+
    127 }
    \n+
    \n+
    128
    \n+
    \n+
    130 unsigned int order () const
    \n+
    131 {
    \n+
    132 return 1;
    \n+
    133 }
    \n+
    \n+
    134
    \n+
    135 private:
    \n+
    136 std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)> coefficients_;
    \n+
    137 };
    \n+
    \n+
    138}
    \n+
    139#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    std::size_t numLagrangePoints(const GeometryType &gt, std::size_t order)
    Definition equidistantpoints.hh:23
    \n-
    static unsigned int equidistantLagrangePoints(const GeometryType &gt, unsigned int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim > *points)
    Definition equidistantpoints.hh:49
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:24
    \n-
    constexpr unsigned int index() const noexcept
    Return offset within subentity.
    Definition localkey.hh:70
    \n-
    constexpr unsigned int subEntity() const noexcept
    Return number of associated subentity.
    Definition localkey.hh:56
    \n-
    Definition emptypoints.hh:18
    \n-
    Field weight_
    Definition emptypoints.hh:48
    \n-
    Vector point_
    Definition emptypoints.hh:46
    \n-
    LocalKey localKey_
    Definition emptypoints.hh:47
    \n-
    Definition emptypoints.hh:56
    \n-
    std::size_t order() const
    Definition emptypoints.hh:95
    \n-
    std::vector< LagrangePoint > points_
    Definition emptypoints.hh:107
    \n-
    Definition equidistantpoints.hh:147
    \n-
    std::size_t order() const
    Definition emptypoints.hh:95
    \n-
    bool build()
    Definition equidistantpoints.hh:177
    \n-
    static bool supports(std::size_t order)
    Definition equidistantpoints.hh:190
    \n-
    static const unsigned int dimension
    Definition equidistantpoints.hh:151
    \n-
    static bool supports(GeometryType, std::size_t)
    Definition equidistantpoints.hh:188
    \n-
    void build(GeometryType gt)
    Definition equidistantpoints.hh:157
    \n-
    bool buildCube()
    Definition equidistantpoints.hh:183
    \n-
    EquidistantPointSet(std::size_t order)
    Definition equidistantpoints.hh:155
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n+
    Dual Lagrange shape functions of order 1 on the reference cube.
    Definition dualq1localbasis.hh:30
    \n+
    unsigned int size() const
    number of shape functions
    Definition dualq1localbasis.hh:41
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition dualq1localbasis.hh:130
    \n+
    void setCoefficients(const std::array< Dune::FieldVector< R,(1<< dim)>,(1<< dim)> &coefficients)
    Definition dualq1localbasis.hh:35
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition dualq1localbasis.hh:47
    \n+
    LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    Definition dualq1localbasis.hh:33
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition dualq1localbasis.hh:77
    \n+
    void partial(const std::array< unsigned int, dim > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate partial derivatives of all shape functions.
    Definition dualq1localbasis.hh:117
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,294 +1,185 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-equidistantpoints.hh\n+ * _\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs\n+ * _\bd_\bu_\ba_\bl_\bq_\b1\n+dualq1localbasis.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-1// SPDX-FileCopyrightText: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n+1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n+2// vi: set et ts=4 sw=2 sts=2:\n+3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n-2// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-3#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH\n-4#define DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH\n-5\n-6#include \n+4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n+5#ifndef DUNE_DUAL_Q1_LOCALBASIS_HH\n+6#define DUNE_DUAL_Q1_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n+8#include \n+9#include \n 10\n-11#include \n-12#include \n+11#include \n+12#include \n 13\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\be_\bm_\bp_\bt_\by_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh>\n-15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh>\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-19\n-20 // numLagrangePoints\n-21 // -----------------\n-22\n-_\b2_\b3 inline std::size_t _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs ( const GeometryType& gt, std::size_t\n-order )\n-24 {\n-25 const int dim = gt.dim();\n-26 if( dim > 0 )\n-27 {\n-28 const GeometryType baseGeometryType = Impl::getBase( gt );\n-29 if( gt.isConical() )\n+14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+15\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+28 template\n+_\b2_\b9 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n 30 {\n-31 std::size_t size = 0;\n-32 for( unsigned int o = 0; o <= order; ++o )\n-33 size += _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, o );\n-34 return size;\n-35 }\n-36 else\n-37 return _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, order ) * (order+1);\n+31 public:\n+32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\bi_\bm_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\bi_\bm_\b>,R,1,Dune::\n+FieldVector,\n+_\b3_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b5 void _\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const std::array ,\n+(1<& coefficients)\n+36 {\n+37 coefficients_ = coefficients;\n 38 }\n-39 else\n-40 return 1;\n-41 }\n-42\n-43\n-44\n-45 // equidistantLagrangePoints\n-46 // -------------------------\n-47\n-48 template< class ct, unsigned int cdim >\n-_\b4_\b9 inline static unsigned int _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs ( const GeometryType&\n-gt, unsigned int codim, std::size_t order, unsigned int *count, _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<\n-_\bc_\bt_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> *points )\n-50 {\n-51 const unsigned int dim = gt.dim();\n-52 assert( (0 <= codim) && (codim <= dim) && (dim <= cdim) );\n-53\n-54 if( dim > 0 )\n-55 {\n-56 const GeometryType baseGeometryType = Impl::getBase( gt );\n-57 const unsigned int numBaseN = (codim < dim ? Geo::Impl::size\n-( baseGeometryType.id(), baseGeometryType.dim(), codim ) : 0);\n-58 const unsigned int numBaseM = (codim > 0 ? Geo::Impl::size\n-( baseGeometryType.id(), baseGeometryType.dim(), codim-1 ) : 0);\n-59\n-60 if( gt.isPrismatic() )\n-61 {\n-62 unsigned int size = 0;\n-63 if( codim < dim )\n-64 {\n-65 for( unsigned int i = 1; i < order; ++i )\n-66 {\n-67 const unsigned int n = _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, codim,\n-order, count, points );\n-68 for( unsigned int j = 0; j < n; ++j )\n-69 {\n-70 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &key = points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_;\n-71 key = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( key._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by(), codim, key._\bi_\bn_\bd_\be_\bx() );\n-72 points->_\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( i ) / ct( order );\n-73 ++points;\n-74 }\n-75 size += n;\n-76 }\n-77 }\n-78\n-79 if( codim > 0 )\n-80 {\n-81 const unsigned int n = _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, codim-1,\n-order, count+numBaseN, points );\n-82 for( unsigned int j = 0; j < n; ++j )\n-83 {\n-84 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &key = points[ j ]._\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_;\n-85 key = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( key._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by() + numBaseN, codim, key._\bi_\bn_\bd_\be_\bx() );\n-86\n-87 points[ j + n ]._\bp_\bo_\bi_\bn_\bt_\b_ = points[ j ]._\bp_\bo_\bi_\bn_\bt_\b_;\n-88 points[ j + n ]._\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( 1 );\n-89 points[ j + n ]._\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( key._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by() + numBaseM, codim,\n-key._\bi_\bn_\bd_\be_\bx() );\n-90 ++count[ key._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by() + numBaseM ];\n-91 }\n-92 size += 2*n;\n-93 }\n+39\n+_\b4_\b1 unsigned int _\bs_\bi_\bz_\be () const\n+42 {\n+43 return 1<& out) const\n+49 {\n+50 // compute q1 values\n+51 std::vector q1Values(_\bs_\bi_\bz_\be());\n+52\n+53 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++) {\n+54\n+55 q1Values[i] = 1;\n+56\n+57 for (int j=0; j& out) const // return value\n+79 {\n+80 // compute q1 jacobians\n+81 std::vector q1Jacs(_\bs_\bi_\bz_\be());\n+82\n+83 // Loop over all shape functions\n+84 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++) {\n+85\n+86 // Loop over all coordinate directions\n+87 for (int j=0; j 0 ? _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n-( baseGeometryType, codim-1, order, count, points ) : 0);\n-100 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<_\b _\bc_\bt_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> *const end = points + size;\n-101 for( ; points != end; ++points )\n-102 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by(), codim, points-\n->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_._\bi_\bn_\bd_\be_\bx() );\n-103\n-104 if( codim < dim )\n-105 {\n-106 for( unsigned int i = order-1; i > 0; --i )\n-107 {\n-108 const unsigned int n = _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( baseGeometryType, codim,\n-i, count+numBaseM, points );\n-109 _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b<_\b _\bc_\bt_\b,_\b _\bc_\bd_\bi_\bm_\b _\b> *const end = points + n;\n-110 for( ; points != end; ++points )\n-111 {\n-112 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by()+numBaseM,\n-codim, points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_._\bi_\bn_\bd_\be_\bx() );\n-113 for( unsigned int j = 0; j < dim-1; ++j )\n-114 points->_\bp_\bo_\bi_\bn_\bt_\b_[ j ] *= ct( i ) / ct( order );\n-115 points->_\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( order - i ) / ct( order );\n-116 }\n-117 size += n;\n-118 }\n-119 }\n-120 else\n-121 {\n-122 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( numBaseM, dim, count[ numBaseM ]++ );\n-123 points->_\bp_\bo_\bi_\bn_\bt_\b_ = 0;\n-124 points->_\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( 1 );\n-125 ++size;\n+95 if (j!=k)\n+96 // if k-th bit of i is set multiply with in[j], else with 1-in[j]\n+97 q1Jacs[i][0][j] *= (i & (1<& _\bo_\br_\bd_\be_\br,\n+118 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+119 std::vector& out) const // return value\n+120 {\n+121 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+122 if (totalOrder == 0) {\n+123 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+124 } else {\n+125 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n 126 }\n-127\n-128 return size;\n-129 }\n-130 }\n-131 else\n-132 {\n-133 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( 0, 0, count[ 0 ]++ );\n-134 points->_\bp_\bo_\bi_\bn_\bt_\b_ = 0;\n-135 return 1;\n-136 }\n-137 }\n-138\n-139\n-140\n-141 // EquidistantPointSet\n-142 // -------------------\n-143\n-144 template< class F, unsigned int dim >\n-_\b1_\b4_\b5 class _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-146 : public _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt< F, dim >\n-147 {\n-148 typedef _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b<_\b _\bF_\b,_\b _\bd_\bi_\bm_\b _\b> _\bB_\ba_\bs_\be;\n-149\n-150 public:\n-_\b1_\b5_\b1 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-152\n-153 using _\bB_\ba_\bs_\be_\b:_\b:_\bo_\br_\bd_\be_\br;\n-154\n-_\b1_\b5_\b5 _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt ( std::size_t _\bo_\br_\bd_\be_\br ) : _\bB_\ba_\bs_\be( _\bo_\br_\bd_\be_\br ) {}\n-156\n-_\b1_\b5_\b7 void _\bb_\bu_\bi_\bl_\bd ( GeometryType gt )\n-158 {\n-159 assert( gt.dim() == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n-160 points_.resize( _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( gt, _\bo_\br_\bd_\be_\br() ) );\n-161\n-162 typename _\bB_\ba_\bs_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt *p = points_.data();\n-163 std::vector< unsigned int > count;\n-164 for( unsigned int mydim = 0; mydim <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++mydim )\n-165 {\n-166 count.resize( Geo::Impl::size( gt.id(), _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-mydim ) );\n-167 std::fill( count.begin(), count.end(), 0u );\n-168 p += _\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs( gt, _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn-mydim, _\bo_\br_\bd_\be_\br(), count.data(),\n-p );\n-169 }\n-170 const auto &refElement = referenceElement(gt);\n-171 F weight = refElement.volume()/F(double(points_.size()));\n-172 for (auto &p : points_)\n-173 p._\bw_\be_\bi_\bg_\bh_\bt_\b_ = weight;\n-174 }\n-175\n-176 template< GeometryType::Id geometryId >\n-_\b1_\b7_\b7 bool _\bb_\bu_\bi_\bl_\bd ()\n-178 {\n-179 _\bb_\bu_\bi_\bl_\bd( GeometryType( geometryId ) );\n-180 return true;\n-181 }\n-182\n-_\b1_\b8_\b3 bool _\bb_\bu_\bi_\bl_\bd_\bC_\bu_\bb_\be ()\n-184 {\n-185 return build< GeometryTypes::cube(dim) > ();\n-186 }\n-187\n-_\b1_\b8_\b8 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( GeometryType, std::size_t /*order*/ ) { return true;\n-}\n-189 template< GeometryType::Id geometryId>\n-_\b1_\b9_\b0 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( std::size_t _\bo_\br_\bd_\be_\br ) {\n-191 return _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs( GeometryType( geometryId ), _\bo_\br_\bd_\be_\br );\n-192 }\n-193\n-194 private:\n-195 using _\bB_\ba_\bs_\be_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\bs_\b_;\n-196 };\n-197\n-198} // namespace Dune\n-199\n-200#endif // #ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH\n-_\be_\bm_\bp_\bt_\by_\bp_\bo_\bi_\bn_\bt_\bs_\b._\bh_\bh\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+127 }\n+128\n+_\b1_\b3_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n+131 {\n+132 return 1;\n+133 }\n+134\n+135 private:\n+136 std::array ,(1< coefficients_;\n+137 };\n+138}\n+139#endif\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n-std::size_t numLagrangePoints(const GeometryType >, std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\be_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs\n-static unsigned int equidistantLagrangePoints(const GeometryType >, unsigned\n-int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim >\n-*points)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:49\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-Describe position of one degree of freedom.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:24\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-constexpr unsigned int index() const noexcept\n-Return offset within subentity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:70\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by\n-constexpr unsigned int subEntity() const noexcept\n-Return number of associated subentity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bw_\be_\bi_\bg_\bh_\bt_\b_\n-Field weight_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:48\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\b_\n-Vector point_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:46\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_\n-LocalKey localKey_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:47\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:56\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\bs_\b_\n-std::vector< LagrangePoint > points_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:107\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:147\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bo_\br_\bd_\be_\br\n-std::size_t order() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn emptypoints.hh:95\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n-bool build()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:177\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n-static bool supports(std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:190\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn\n-static const unsigned int dimension\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:151\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs\n-static bool supports(GeometryType, std::size_t)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:188\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bb_\bu_\bi_\bl_\bd\n-void build(GeometryType gt)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:157\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bb_\bu_\bi_\bl_\bd_\bC_\bu_\bb_\be\n-bool buildCube()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:183\n-_\bD_\bu_\bn_\be_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt_\b:_\b:_\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-EquidistantPointSet(std::size_t order)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn equidistantpoints.hh:155\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n+Type traits for LocalBasisVirtualInterface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+D DomainType\n+domain type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Dual Lagrange shape functions of order 1 on the reference cube.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:30\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:41\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n+unsigned int order() const\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:130\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+void setCoefficients(const std::array< Dune::FieldVector< R,(1<< dim)>,(1<<\n+dim)> &coefficients)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+void evaluateFunction(const typename Traits::DomainType &in, std::vector<\n+typename Traits::RangeType > &out) const\n+Evaluate all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:47\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector<\n+R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n+void evaluateJacobian(const typename Traits::DomainType &in, std::vector<\n+typename Traits::JacobianType > &out) const\n+Evaluate Jacobian of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:77\n+_\bD_\bu_\bn_\be_\b:_\b:_\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n+void partial(const std::array< unsigned int, dim > &order, const typename\n+Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n+Evaluate partial derivatives of all shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:117\n+_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092.html", "comments": ["Files 83% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: pk1d.hh File Reference\n+dune-localfunctions: rannachertureklocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,36 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    pk1d.hh File Reference
    \n+
    rannachertureklocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localtoglobaladaptors.hh>
    \n-#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n+
    #include <algorithm>
    \n+#include <array>
    \n+#include <cassert>
    \n+#include <cstddef>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n
    \n-

    Go to the source code of this file.

    \n+

    Go to the source code of this file.

    \n \n \n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::Pk1DFiniteElement< Geometry, RF, k >
     Langrange finite element of arbitrary order on triangles. More...
     
    struct  Dune::Pk1DFiniteElement< Geometry, RF, k >::Traits
     
    struct  Dune::Pk1DFiniteElementFactory< Geometry, RF, k >
     Factory for Pk1DFiniteElement objects. More...
    struct  Dune::RannacherTurekLocalCoefficients< d >
     layout for Rannacher-Turek elements More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,24 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-pk1d.hh File Reference\n+rannachertureklocalcoefficients.hh File Reference\n+#include \n+#include \n+#include \n #include \n-#include \n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>\n-\u00a0 Langrange finite element of arbitrary order on triangles. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-\u00a0\n-struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b _\b>\n-\u00a0 Factory for _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt objects. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b<_\b _\bd_\b _\b>\n+\u00a0 layout for Rannacher-Turek elements _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bD_\bu_\bn_\be\n \u00a0\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482_source.html", "comments": ["Files 78% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: pk1d.hh Source File\n+dune-localfunctions: raviartthomas2cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,144 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    pk1d.hh
    \n+
    raviartthomas2cube2d.hh
    \n
    \n
    \n-Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_PK1DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_PK1DLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include <dune/geometry/type.hh>
    \n-
    11
    \n-\n-\n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    19
    \n-
    21
    \n-
    28 template<class Geometry, class RF, std::size_t k>
    \n-
    \n-\n-
    30 typedef typename Geometry::ctype DF;
    \n-
    31 typedef Impl::LagrangeSimplexLocalBasis<DF,RF,1,k> LocalBasis;
    \n-
    32 typedef Impl::LagrangeSimplexLocalInterpolation<LocalBasis> LocalInterpolation;
    \n-
    33
    \n-
    34 public:
    \n-
    \n-
    38 struct Traits {
    \n-\n-\n-
    41 LocalInterpolation,
    \n-
    42 typename Basis::Traits
    \n-\n-
    44 typedef Impl::LagrangeSimplexLocalCoefficients<1,k> Coefficients;
    \n-
    45 };
    \n-
    \n-
    46
    \n-
    47 private:
    \n-
    48 static const GeometryType gt;
    \n-
    49 static const LocalBasis localBasis;
    \n-
    50 static const LocalInterpolation localInterpolation;
    \n-
    51
    \n-
    52 typename Traits::Basis basis_;
    \n-
    53 typename Traits::Interpolation interpolation_;
    \n-
    54 typename Traits::Coefficients coefficients_;
    \n-
    55
    \n-
    56 public:
    \n+
    10#include "../common/localfiniteelementtraits.hh"
    \n+\n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n+
    28
    \n+
    29 public:
    \n+\n+\n+\n+\n+
    34
    \n+\n+
    38
    \n+
    \n+\n+
    45 basis(s),
    \n+
    46 interpolation(s)
    \n+
    47 {}
    \n+
    \n+
    48
    \n+
    \n+
    49 const typename Traits::LocalBasisType& localBasis () const
    \n+
    50 {
    \n+
    51 return basis;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    55 {
    \n+
    56 return coefficients;
    \n+
    57 }
    \n+
    \n
    58
    \n-
    71 template<class VertexOrder>
    \n-
    \n-
    72 Pk1DFiniteElement(const Geometry &geometry,
    \n-
    73 const VertexOrder& vertexOrder) :
    \n-
    74 basis_(localBasis, geometry), interpolation_(localInterpolation),
    \n-
    75 coefficients_(vertexOrder.begin(0, 0))
    \n-
    76 { }
    \n-
    \n-
    77
    \n-
    78 const typename Traits::Basis& basis() const { return basis_; }
    \n-
    \n-
    79 const typename Traits::Interpolation& interpolation() const
    \n-
    80 { return interpolation_; }
    \n-
    \n-
    \n-
    81 const typename Traits::Coefficients& coefficients() const
    \n-
    82 { return coefficients_; }
    \n-
    \n-
    83 const GeometryType &type() const { return gt; }
    \n-
    84 };
    \n-
    \n-
    85
    \n-
    86 template<class Geometry, class RF, std::size_t k>
    \n-
    87 const GeometryType
    \n-
    88 Pk1DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
    \n-
    89
    \n-
    90 template<class Geometry, class RF, std::size_t k>
    \n-
    91 const typename Pk1DFiniteElement<Geometry, RF, k>::LocalBasis
    \n-
    92 Pk1DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
    \n-
    93
    \n-
    94 template<class Geometry, class RF, std::size_t k>
    \n-
    95 const typename Pk1DFiniteElement<Geometry, RF, k>::LocalInterpolation
    \n-
    96 Pk1DFiniteElement<Geometry, RF, k>::localInterpolation =
    \n-
    97 LocalInterpolation();
    \n-
    98
    \n-
    100
    \n-
    110 template<class Geometry, class RF, std::size_t k>
    \n-
    \n-\n-\n-
    113
    \n-
    115
    \n-
    129 template<class VertexOrder>
    \n-
    \n-
    130 const FiniteElement make(const Geometry& geometry,
    \n-
    131 const VertexOrder& vertexOrder)
    \n-
    132 { return FiniteElement(geometry, vertexOrder); }
    \n-
    \n-
    133 };
    \n-
    \n-
    134}
    \n-
    135
    \n-
    136#endif
    \n-\n-\n-\n+
    \n+\n+
    60 {
    \n+
    61 return interpolation;
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    \n+
    65 unsigned int size () const
    \n+
    66 {
    \n+
    67 return basis.size();
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    \n+
    70 static constexpr GeometryType type ()
    \n+
    71 {
    \n+
    72 return GeometryTypes::quadrilateral;
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    75 private:
    \n+\n+
    77 RT2Cube2DLocalCoefficients coefficients;
    \n+\n+
    79 };
    \n+
    \n+
    80}
    \n+
    81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Traits class for local-to-global basis adaptors.
    Definition localtoglobaladaptors.hh:30
    \n-
    Convert a simple scalar local basis into a global basis.
    Definition localtoglobaladaptors.hh:65
    \n-
    Convert a local interpolation into a global interpolation.
    Definition localtoglobaladaptors.hh:149
    \n-
    Langrange finite element of arbitrary order on triangles.
    Definition pk1d.hh:29
    \n-
    Pk1DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct a Pk1DFiniteElement
    Definition pk1d.hh:72
    \n-
    const Traits::Basis & basis() const
    Definition pk1d.hh:78
    \n-
    const GeometryType & type() const
    Definition pk1d.hh:83
    \n-
    const Traits::Coefficients & coefficients() const
    Definition pk1d.hh:81
    \n-
    const Traits::Interpolation & interpolation() const
    Definition pk1d.hh:79
    \n-
    Definition pk1d.hh:38
    \n-
    ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
    Definition pk1d.hh:39
    \n-
    LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
    Definition pk1d.hh:43
    \n-
    Impl::LagrangeSimplexLocalCoefficients< 1, k > Coefficients
    Definition pk1d.hh:44
    \n-
    Factory for Pk1DFiniteElement objects.
    Definition pk1d.hh:111
    \n-
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct Pk1DFiniteElementFactory
    Definition pk1d.hh:130
    \n-
    Pk1DFiniteElement< Geometry, RF, k > FiniteElement
    Definition pk1d.hh:112
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+
    LB LocalBasisType
    Definition localfiniteelementtraits.hh:16
    \n+
    LC LocalCoefficientsType
    Definition localfiniteelementtraits.hh:20
    \n+
    LI LocalInterpolationType
    Definition localfiniteelementtraits.hh:24
    \n+
    Second order Raviart-Thomas shape functions on cubes.
    Definition raviartthomas2cube2d.hh:27
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition raviartthomas2cube2d.hh:49
    \n+
    LocalFiniteElementTraits< RT2Cube2DLocalBasis< D, R >, RT2Cube2DLocalCoefficients, RT2Cube2DLocalInterpolation< RT2Cube2DLocalBasis< D, R > > > Traits
    Definition raviartthomas2cube2d.hh:33
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition raviartthomas2cube2d.hh:54
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition raviartthomas2cube2d.hh:65
    \n+
    static constexpr GeometryType type()
    Definition raviartthomas2cube2d.hh:70
    \n+
    RT2Cube2DLocalFiniteElement(int s)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas2cube2d.hh:44
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition raviartthomas2cube2d.hh:59
    \n+
    RT2Cube2DLocalFiniteElement()
    Standard constructor.
    Definition raviartthomas2cube2d.hh:36
    \n+
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas2cube2dlocalbasis.hh:28
    \n+
    Layout map for Raviart-Thomas-2 elements on quadrilaterals.
    Definition raviartthomas2cube2dlocalcoefficients.hh:23
    \n+
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas2cube2dlocalinterpolation.hh:25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,158 +1,136 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n-pk1d.hh\n+ * _\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs\n+raviartthomas2cube2d.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_PK1DLOCALFINITEELEMENT_HH\n-6#define DUNE_PK1DLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh>\n-13#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh>\n-14#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\b/_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh>\n-15\n-16namespace _\bD_\bu_\bn_\be\n-17{\n-18\n-19\n-21\n-28 template\n-_\b2_\b9 class _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n-30 typedef typename Geometry::ctype DF;\n-31 typedef Impl::LagrangeSimplexLocalBasis LocalBasis;\n-32 typedef Impl::LagrangeSimplexLocalInterpolation\n-LocalInterpolation;\n-33\n-34 public:\n-_\b3_\b8 struct _\bT_\br_\ba_\bi_\bt_\bs {\n-_\b3_\b9 typedef _\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\b<_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b,_\b _\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b> _\bB_\ba_\bs_\bi_\bs;\n-40 typedef _\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br<\n-41 LocalInterpolation,\n-42 typename _\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-_\b4_\b3 > _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-_\b4_\b4 typedef Impl::LagrangeSimplexLocalCoefficients<1,k> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-45 };\n-46\n-47 private:\n-48 static const GeometryType gt;\n-49 static const LocalBasis localBasis;\n-50 static const LocalInterpolation localInterpolation;\n-51\n-52 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n-53 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n-54 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n-55\n-56 public:\n+10#include \"../common/localfiniteelementtraits.hh\"\n+11#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\"\n+12#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\"\n+13#include \"_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\b/_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\"\n+14\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+25 template\n+_\b2_\b6 class _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 {\n+28\n+29 public:\n+30 typedef _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs<\n+31 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b>,\n+32 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs,\n+_\b3_\b3 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b6 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt ()\n+37 {}\n+38\n+_\b4_\b4 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt (int s) :\n+45 basis(s),\n+46 interpolation(s)\n+47 {}\n+48\n+_\b4_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs () const\n+50 {\n+51 return basis;\n+52 }\n+53\n+_\b5_\b4 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () const\n+55 {\n+56 return coefficients;\n+57 }\n 58\n-71 template\n-_\b7_\b2 _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry &geometry,\n-73 const VertexOrder& vertexOrder) :\n-74 basis_(localBasis, geometry), interpolation_(localInterpolation),\n-75 coefficients_(vertexOrder.begin(0, 0))\n-76 { }\n-77\n-_\b7_\b8 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\n-_\b7_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn& _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const\n-80 { return interpolation_; }\n-_\b8_\b1 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs& _\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() const\n-82 { return coefficients_; }\n-_\b8_\b3 const GeometryType &_\bt_\by_\bp_\be() const { return gt; }\n-84 };\n-85\n-86 template\n-87 const GeometryType\n-88 Pk1DFiniteElement::gt(GeometryTypes::simplex(2));\n-89\n-90 template\n-91 const typename Pk1DFiniteElement::LocalBasis\n-92 Pk1DFiniteElement::localBasis = LocalBasis();\n-93\n-94 template\n-95 const typename Pk1DFiniteElement::LocalInterpolation\n-96 Pk1DFiniteElement::localInterpolation =\n-97 LocalInterpolation();\n-98\n-100\n-110 template\n-_\b1_\b1_\b1 struct _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-_\b1_\b1_\b2 typedef _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b<_\bG_\be_\bo_\bm_\be_\bt_\br_\by_\b,_\b _\bR_\bF_\b,_\b _\bk_\b> _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt;\n-113\n-115\n-129 template\n-_\b1_\b3_\b0 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n-131 const VertexOrder& vertexOrder)\n-132 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n-133 };\n-134}\n-135\n-136#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bf_\bi_\bn_\bi_\bt_\be_\be_\bl_\be_\bm_\be_\bn_\bt_\bt_\br_\ba_\bi_\bt_\bs_\b._\bh_\bh\n-_\bl_\bo_\bc_\ba_\bl_\bt_\bo_\bg_\bl_\bo_\bb_\ba_\bl_\ba_\bd_\ba_\bp_\bt_\bo_\br_\bs_\b._\bh_\bh\n+_\b5_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be& _\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn () const\n+60 {\n+61 return interpolation;\n+62 }\n+63\n+_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+66 {\n+67 return basis.size();\n+68 }\n+69\n+_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+71 {\n+72 return GeometryTypes::quadrilateral;\n+73 }\n+74\n+75 private:\n+76 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> basis;\n+77 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients;\n+78 _\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b<_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\bD_\b,_\bR_\b> > interpolation;\n+79 };\n+80}\n+81#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\br_\ba_\bv_\bi_\ba_\br_\bt_\bt_\bh_\bo_\bm_\ba_\bs_\b2_\bc_\bu_\bb_\be_\b2_\bd_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br_\bT_\br_\ba_\bi_\bt_\bs\n-Traits class for local-to-global basis adaptors.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:30\n-_\bD_\bu_\bn_\be_\b:_\b:_\bS_\bc_\ba_\bl_\ba_\br_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-Convert a simple scalar local basis into a global basis.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:65\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bT_\bo_\bG_\bl_\bo_\bb_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bA_\bd_\ba_\bp_\bt_\bo_\br\n-Convert a local interpolation into a global interpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localtoglobaladaptors.hh:149\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Langrange finite element of arbitrary order on triangles.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:29\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Pk1DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)\n-construct a Pk1DFiniteElement\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bb_\ba_\bs_\bi_\bs\n-const Traits::Basis & basis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:78\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n-const GeometryType & type() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:83\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-const Traits::Coefficients & coefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:81\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-const Traits::Interpolation & interpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:79\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs\n-ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:39\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits >\n-Interpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-Impl::LagrangeSimplexLocalCoefficients< 1, k > Coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for Pk1DFiniteElement objects.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:111\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bm_\ba_\bk_\be\n-const FiniteElement make(const Geometry &geometry, const VertexOrder\n-&vertexOrder)\n-construct Pk1DFiniteElementFactory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:130\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-Pk1DFiniteElement< Geometry, RF, k > FiniteElement\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pk1d.hh:112\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs\n+traits helper struct\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:13\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\by_\bp_\be\n+LB LocalBasisType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:16\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\bT_\by_\bp_\be\n+LC LocalCoefficientsType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:20\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be\n+LI LocalInterpolationType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localfiniteelementtraits.hh:24\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+Second order Raviart-Thomas shape functions on cubes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:27\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+const Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:49\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< RT2Cube2DLocalBasis< D, R >,\n+RT2Cube2DLocalCoefficients, RT2Cube2DLocalInterpolation< RT2Cube2DLocalBasis<\n+D, R > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:33\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+const Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:54\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bs_\bi_\bz_\be\n+unsigned int size() const\n+Number of shape functions in this finite element.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:65\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bt_\by_\bp_\be\n+static constexpr GeometryType type()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:70\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT2Cube2DLocalFiniteElement(int s)\n+Make set number s, where 0 <= s < 16.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bl_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+const Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:59\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+RT2Cube2DLocalFiniteElement()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2d.hh:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Second order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalbasis.hh:28\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+Layout map for Raviart-Thomas-2 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalcoefficients.hh:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Second order Raviart-Thomas shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalinterpolation.hh:25\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101_source.html", "comments": ["Files 85% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: p0localbasis.hh Source File\n+dune-localfunctions: rannachertureklocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,108 +70,84 @@\n
    \n \n \n \n \n \n \n
    \n-
    p0localbasis.hh
    \n+
    rannachertureklocalinterpolation.hh
    \n
    \n
    \n-Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n+Go to the documentation of this file.
    1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    \n
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright \u00a9 DUNE Project contributors, see file LICENSE.md in module root
    \n
    4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n-
    5#ifndef DUNE_P0LOCALBASIS_HH
    \n-
    6#define DUNE_P0LOCALBASIS_HH
    \n+
    5#ifndef DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n-
    11
    \n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    29 template<class D, class R, int d>
    \n+
    8#include <cassert>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12
    \n+
    13#include <dune/geometry/referenceelements.hh>
    \n+
    14
    \n+\n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    29 template< class D, class R, unsigned int d >
    \n
    \n-\n+\n
    31 {
    \n-
    32 public:
    \n-
    34 typedef LocalBasisTraits<D,d,Dune::FieldVector<D,d>,R,1,Dune::FieldVector<R,1>,
    \n-
    35 Dune::FieldMatrix<R,1,d> > Traits;
    \n-
    36
    \n+\n+
    33 R, 1, FieldVector< R, 1 >,
    \n+
    34 FieldMatrix< R, 1, d > > Traits;
    \n+
    35
    \n+
    36 public:
    \n+
    37 template< class F, class C >
    \n
    \n-
    38 unsigned int size () const
    \n+
    38 void interpolate ( const F &f, std::vector< C > &out ) const
    \n
    39 {
    \n-
    40 return 1;
    \n-
    41 }
    \n-
    \n-
    42
    \n-
    \n-
    44 inline void evaluateFunction (const typename Traits::DomainType&,
    \n-
    45 std::vector<typename Traits::RangeType>& out) const
    \n-
    46 {
    \n-
    47 out.resize(1);
    \n-
    48 out[0] = 1;
    \n-
    49 }
    \n-
    \n+
    40 typedef typename Traits::DomainType DomainType;
    \n+
    41
    \n+
    42 // get cubic reference element
    \n+
    43 auto referenceElement = ReferenceElements< D, d >::cube();
    \n+
    44
    \n+
    45 const int size = 2*d;
    \n+
    46 assert( size == referenceElement.size( 1 ) );
    \n+
    47
    \n+
    48 // resize vector
    \n+
    49 out.resize( size );
    \n
    50
    \n-
    52 inline void
    \n-
    \n-
    53 evaluateJacobian (const typename Traits::DomainType&, // position
    \n-
    54 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    55 {
    \n-
    56 out.resize(1);
    \n-
    57 for (int i=0; i<d; i++)
    \n-
    58 out[0][0][i] = 0;
    \n-
    59 }
    \n+
    51 // evaluate local function in barycenter of codim 1 subentities
    \n+
    52 for( int i = 0; i < size; ++i )
    \n+
    53 {
    \n+
    54 const DomainType &x = referenceElement.position( i, 1 );
    \n+
    55 out[ i ] = f(x);
    \n+
    56 }
    \n+
    57 }
    \n+
    \n+
    58
    \n+
    59 };
    \n
    \n
    60
    \n-
    \n-
    66 void partial(const std::array<unsigned int,d>& order,
    \n-
    67 const typename Traits::DomainType& in,
    \n-
    68 std::vector<typename Traits::RangeType>& out) const
    \n-
    69 {
    \n-
    70 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    71 if (totalOrder == 0) {
    \n-
    72 evaluateFunction(in, out);
    \n-
    73 } else {
    \n-
    74 out.resize(1);
    \n-
    75 out[0] = 0;
    \n-
    76 }
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    80 unsigned int order () const
    \n-
    81 {
    \n-
    82 return 0;
    \n-
    83 }
    \n-
    \n-
    84 };
    \n-
    \n-
    85
    \n-
    86}
    \n-
    87
    \n-
    88#endif
    \n+
    61} // namespace Dune
    \n+
    62
    \n+
    63#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:35
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:43
    \n-
    Definition p0localbasis.hh:31
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition p0localbasis.hh:80
    \n-
    void evaluateJacobian(const typename Traits::DomainType &, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition p0localbasis.hh:53
    \n-
    void evaluateFunction(const typename Traits::DomainType &, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition p0localbasis.hh:44
    \n-
    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 p0localbasis.hh:66
    \n-
    unsigned int size() const
    number of shape functions
    Definition p0localbasis.hh:38
    \n-
    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 p0localbasis.hh:35
    \n+
    please doc me
    Definition rannachertureklocalinterpolation.hh:31
    \n+
    void interpolate(const F &f, std::vector< C > &out) const
    Definition rannachertureklocalinterpolation.hh:38
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,119 +1,82 @@\n dune-localfunctions\u00a02.10\n Loading...\n Searching...\n No Matches\n * _\bd_\bu_\bn_\be\n * _\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n- * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n- * _\bp_\b0\n-p0localbasis.hh\n+ * _\br_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+rannachertureklocalinterpolation.hh\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright \u00c2\u00a9 DUNE Project contributors, see file\n LICENSE.md in module root\n 4// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n-5#ifndef DUNE_P0LOCALBASIS_HH\n-6#define DUNE_P0LOCALBASIS_HH\n+5#ifndef DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH\n+6#define DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH\n 7\n-8#include \n-9\n-10#include \n-11\n-12#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-29 template\n-_\b3_\b0 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+8#include \n+9#include \n+10\n+11#include \n+12\n+13#include \n+14\n+15#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+29 template< class D, class R, unsigned int d >\n+_\b3_\b0 class _\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n 31 {\n-32 public:\n-34 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\bD_\b,_\bd_\b,_\bD_\bu_\bn_\be_\b:_\b:_\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\bD_\b,_\bd_\b>,R,1,Dune::\n-FieldVector,\n-_\b3_\b5 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-36\n-_\b3_\b8 unsigned int _\bs_\bi_\bz_\be () const\n+32 typedef _\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b<_\b _\bD_\b,_\b _\bd_\b,_\b _\bF_\bi_\be_\bl_\bd_\bV_\be_\bc_\bt_\bo_\br_\b<_\b _\bD_\b,_\b _\bd_\b _\b>,\n+33 R, 1, FieldVector< R, 1 >,\n+34 FieldMatrix< R, 1, d > > _\bT_\br_\ba_\bi_\bt_\bs;\n+35\n+36 public:\n+37 template< class F, class C >\n+_\b3_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const F &f, std::vector< C > &out ) const\n 39 {\n-40 return 1;\n-41 }\n-42\n-_\b4_\b4 inline void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be&,\n-45 std::vector& out) const\n-46 {\n-47 out.resize(1);\n-48 out[0] = 1;\n-49 }\n+40 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be DomainType;\n+41\n+42 // get cubic reference element\n+43 auto referenceElement = ReferenceElements< D, d >::cube();\n+44\n+45 const int size = 2*d;\n+46 assert( size == referenceElement.size( 1 ) );\n+47\n+48 // resize vector\n+49 out.resize( size );\n 50\n-52 inline void\n-_\b5_\b3 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn (const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be&, // position\n-54 std::vector& out) const // return value\n-55 {\n-56 out.resize(1);\n-57 for (int i=0; i& _\bo_\br_\bd_\be_\br,\n-67 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-68 std::vector& out) const\n-69 {\n-70 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-71 if (totalOrder == 0) {\n-72 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-73 } else {\n-74 out.resize(1);\n-75 out[0] = 0;\n-76 }\n-77 }\n-78\n-_\b8_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n-81 {\n-82 return 0;\n-83 }\n-84 };\n-85\n-86}\n-87\n-88#endif\n+61} // namespace Dune\n+62\n+63#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH\n _\bD_\bu_\bn_\be\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn bdfmcube.hh:18\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs\n Type traits for LocalBasisVirtualInterface.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:35\n _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n D DomainType\n domain type\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:43\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:31\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bo_\br_\bd_\be_\br\n-unsigned int order() const\n-Polynomial order of the shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn\n-void evaluateJacobian(const typename Traits::DomainType &, std::vector<\n-typename Traits::JacobianType > &out) const\n-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:53\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n-void evaluateFunction(const typename Traits::DomainType &, std::vector<\n-typename Traits::RangeType > &out) const\n-Evaluate all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bp_\ba_\br_\bt_\bi_\ba_\bl\n-void partial(const std::array< unsigned int, d > &order, const typename\n-Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const\n-Evaluate partial derivatives of any order of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:66\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-number of shape functions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:38\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-LocalBasisTraits< D, d, Dune::FieldVector< D, d >, R, 1, Dune::FieldVector< R,\n-1 >, Dune::FieldMatrix< R, 1, d > > Traits\n-export type traits for function signature\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:35\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+please doc me\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalinterpolation.hh:31\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\ba_\bn_\bn_\ba_\bc_\bh_\be_\br_\bT_\bu_\br_\be_\bk_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &f, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalinterpolation.hh:38\n _\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}]}]}]}]}